فهرست منبع

> Follow-up r17048:
- Renamed 'useskilltopc' to 'npcskill';
- Removed cast time from NPC objects, code by mkbu95 (suspected official behavior);
- Documented 'npcskill';
- Replaced all instances in scripts.
* Fixed max level bypass, code by malufett (bugreport:5800).
* Updated Malangdo spawns to official.
* Some standardization of npc/quests/first_class/.

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

euphyy 12 سال پیش
والد
کامیت
bb5364c2d1

+ 19 - 3
doc/script_commands.txt

@@ -6336,9 +6336,8 @@ Example:
 This command will send the message to the server console (map-server window). It 
 will not be displayed anywhere else.
 
-    debugmes strcharinfo(0)+" has just done this that and the other";
-    // You would see in the map-server window "NAME has just done this that and 
-    // the other"
+    // Displays "NAME has clicked me!" in the map-server window.
+    debugmes strcharinfo(0)+" has clicked me!";
 
 ---------------------------------------
 
@@ -6623,6 +6622,23 @@ For the position, the x and y are given in the unitSkillUsePos.
 
 ---------------------------------------
 
+*npcskill <skill id>,<skill lvl>,<stat point>,<NPC level>;
+*npcskill "<skill name>",<skill lvl>,<stat point>,<NPC level>;
+
+This command causes the attached NPC object to cast a skill on the attached
+player. The skill will have no cast time or cooldown. The player must be
+within the default skill range or the command will fail silently.
+
+The "stat point" parameter temporarily sets all NPC stats to the given value,
+and "NPC level" is the temporary level of the NPC (used in some skills).
+Neither value can be greater than the max level defined in config.
+
+    // Casts Level 10 Heal on the attached player, calculated with
+    // all stats 99 and base level 60.
+    npcskill "AL_HEAL",10,99,60;
+
+---------------------------------------
+
 *day;
 *night;
 

+ 3 - 3
npc/merchants/inn.txt

@@ -4,7 +4,7 @@
 //= Darkchild (1.1)
 //= Playtester (1.2)
 //===== Current Version: =====================================
-//= 2.9
+//= 2.9a
 //===== Compatible With: =====================================
 //= rAthena SVN
 //===== Description: =========================================
@@ -44,6 +44,7 @@
 //= 2.7 Removed Morroc Inns as per episode 12.1. [L0ne_W0lf]
 //= 2.8 Removed Moscovia Inn; Its in quests/quest_moscovia.txt [Kisuka]
 //= 2.9 Added switch menus, updated to match AEGIS scripts. [Kisuka]
+//= 2.9a Added 'npcskill' command. [Euphy]
 //============================================================
 
 
@@ -147,8 +148,7 @@ lhz_in02,230,284,4	script	Hotel Employee#01	86,{
 		close2;
 		warp "lhz_in02",219,150;
 		percentheal 100,100;
-		sc_start SC_BLESSING,240000,10;
-		skilleffect AL_BLESSING,0;
+		npcskill "AL_BLESSING",10,99,99;
 		end;
 	case 3:
 		mes "[Hotel Employee]";

+ 41 - 59
npc/quests/first_class/tu_acolyte.txt

@@ -3,7 +3,7 @@
 //===== By: ================================================== 
 //= Fix up by Jukka
 //===== Current Version: ===================================== 
-//= 1.6
+//= 1.6a
 //===== Compatible With: ===================================== 
 //= rAthena SVN (Testet in Trunk 88xx)
 //===== Description: ========================================= 
@@ -17,10 +17,11 @@
 //= 1.4 Misc. updates. [L0ne_W0lf]
 //= 1.5 Adjusted EXP gains to Renewal values.
 //= 1.6 Fixed a wrong placed curly bracket. [Joseph]
+//= 1.6a Added 'npcskill' command. [Euphy]
 //============================================================ 
 
-
-//=================================================Priest Praupin====================================================
+// Priest Praupin
+//============================================================
 prt_church,179,15,1	script	Priest Praupin	110,{
 	mes "[Priest Praupin]";
 	if(BaseClass != Job_Acolyte){
@@ -52,7 +53,6 @@ prt_church,179,15,1	script	Priest Praupin	110,{
 			mes "[Priest Praupin]";
 			mes "Seeing your eyes filled with such determination assures me. But if you run into any trouble, feel free to ask me for help. Good bye for now, blessed child.";
 			close;
-			break;
 		case 2:
 			mes "[Priest Praupin]";
 			mes "There is a convent northeast";
@@ -81,7 +81,6 @@ prt_church,179,15,1	script	Priest Praupin	110,{
 				mes "you need help, come to me.";
 				close;
 			}
-			break;
 		}
 	case 7:
 		mes "You're looking for someone";
@@ -91,7 +90,6 @@ prt_church,179,15,1	script	Priest Praupin	110,{
 		mes "[Priest Praupin]";
 		mes "Ah, he's away at the convent right now. If you want to meet Bishop Maugins in the Saint Capitolina Convent, travel ^3131FFnorth^000000, ^3131FFeast^000000, ^3131FFeast^000000 and then ^3131FFeast^000000 from Prontera.";
 		close;
-		break;
 	case 22:
 		if(countitem(7181) > 0){	// Receipt_01
 			emotion e_gasp;
@@ -173,7 +171,8 @@ prt_church,179,15,1	script	Priest Praupin	110,{
 	close;
 }
 
-//=================================================Asthe====================================================
+// Asthe
+//============================================================
 prt_monk,230,106,3	script	Asthe#tu	79,{
 	mes "[Asthe]";
 	switch(tu_acolyte01){
@@ -291,14 +290,13 @@ prt_monk,230,106,3	script	Asthe#tu	79,{
 		next;
 		mes "[Asthe]";
 		mes "HEAL !!";
-		unitskilluseid getcharid(3),28,10;
+		npcskill "AL_HEAL",10,99,60;
 		set tu_acolyte01, 3;
 		if(getskilllv("AL_HEAL") == 0){
 			getexp 0,10;
 			specialeffect2 EF_CONE;
 		}
 		close;
-		break;
 	case 3:
 		mes "I would like to give you an assignment, but what do you";
 		mes "think? I believe learning the basics is your most important";
@@ -371,10 +369,7 @@ prt_monk,230,106,3	script	Asthe#tu	79,{
 				mes "[Asthe]";
 				mes "Would you like me to take the mace away from your inventory now?";
 				next;
-				switch(select("Sure.:Let me check again.")) {
-				case 1:
-					break;
-				case 2:
+				if(select("Sure.:Let me check again.") == 2) {
 					mes "[Asthe]";
 					mes "Okay, no problem.";
 					mes "Please make sure that you do not carry any ^FF0000Mace with an elemental Property^000000.";
@@ -386,15 +381,12 @@ prt_monk,230,106,3	script	Asthe#tu	79,{
 				emotion e_heh;
 				set tu_acolyte01, 5;
 				delitem 1504, 1; //Mace
-				if(Class == Job_Acolyte_High){
+				if(Class == Job_Acolyte_High)
 					getexp 200,100;
-					specialeffect2 EF_CONE;
-					close;
-				} else {
+				else
 					getexp 100,50;
-					specialeffect2 EF_CONE;
-					close;
-				}
+				specialeffect2 EF_CONE;
+				close;
 			} else {
 				mes "Oh my!";
 				mes "Welcome back~";
@@ -415,7 +407,6 @@ prt_monk,230,106,3	script	Asthe#tu	79,{
 		mes "The basics are crucial to gaining mastery of the more advanced skills that you'll learn later. Just keep in mind that all of your efforts and suffering will become glory";
 		mes "and happiness.";
 		close;
-		break;
 	case 5:
 		mes "I suppose I can tell you a little more about the Acolyte job. You already know that Novices must train and go to Prontera Church to become an Acolyte, your First Job Class.";
 		next;
@@ -440,7 +431,6 @@ prt_monk,230,106,3	script	Asthe#tu	79,{
 		mes "Ho ho ho~ No need to try to remember everything right now. You'll get the hang of it.";
 		set tu_acolyte01, 6;
 		close;
-		break;
 	case 6:
 		mes ""+strcharinfo(0)+",";
 		mes "I just received this letter, but it seems to have been a mistake.";
@@ -453,7 +443,6 @@ prt_monk,230,106,3	script	Asthe#tu	79,{
 		set tu_acolyte01,7;
 		getitem 7148,1; //Mother_Letter
 		close;
-		break;
 	case 7:
 		mes "Would you please";
 		mes "deliver this letter";
@@ -461,13 +450,12 @@ prt_monk,230,106,3	script	Asthe#tu	79,{
 		mes "You can find him in the";
 		mes "building nearby.";
 		close;
-		break;
 	case 9:
 		mes "You went to Prontera on behalf of the convent for Priest Gardron? That must have been tough...";
 		next;
 		mes "[Asthe]";
 		mes "Blessing!";
-		unitskilluseid getcharid(3),34,10;
+		npcskill "AL_BLESSING",10,0,0;
 		next;
 		mes "[Asthe]";
 		mes "Now I'm going to teach you";
@@ -502,7 +490,6 @@ prt_monk,230,106,3	script	Asthe#tu	79,{
 		mes "you some dog food.^000000";
 		set tu_acolyte01, 10;
 		close;
-		break;
 	case 11:
 	case 12:
 		mes "How to expel";
@@ -524,7 +511,6 @@ prt_monk,230,106,3	script	Asthe#tu	79,{
 		mes "and it will come.";
 		set tu_acolyte01, 12;
 		close;
-		break;
 	case 13:
 		mes "You remember that";
 		mes "you can learn Divine";
@@ -554,7 +540,6 @@ prt_monk,230,106,3	script	Asthe#tu	79,{
 		mes "alright? I'll be right here.";
 		set tu_acolyte01, 14;
 		close;
-		break;
 	case 14:
 		mes "Now it's time";
 		mes "for your next lesson.";
@@ -576,9 +561,8 @@ prt_monk,230,106,3	script	Asthe#tu	79,{
 		mes "Try it for";
 		mes "yourself, okay?";
 		set tu_acolyte01, 15;
-		unitskilluseid getcharid(3),29,10;
+		npcskill "AL_INCAGI",10,0,0;
 		close;
-		break;
 	case 15:
 		mes "Once you learn";
 		mes "Level 1 Increase AGI,";
@@ -605,7 +589,6 @@ prt_monk,230,106,3	script	Asthe#tu	79,{
 		mes "by learning the Heal skill.";
 		set tu_acolyte01, 16;
 		close;
-		break;
 	case 16:
 		mes "You've been learning";
 		mes "really quickly. I'm glad";
@@ -667,15 +650,13 @@ prt_monk,230,106,3	script	Asthe#tu	79,{
 			mes "Alright,";
 			mes "give me a moment";
 			mes "to catch my breath~";
-			close;
 		} else {
 			mes "[Asthe]";
 			mes "Ho ho!";
 			mes "What a smart Acolyte~";
 			set tu_acolyte01, 17;
-			close;
 		}
-		break;
+		close;
 	case 17:
 		mes "Oh dear...!";
 		mes "All of these things were delivered to me by accident! And some of these packages were supposed to";
@@ -713,7 +694,6 @@ prt_monk,230,106,3	script	Asthe#tu	79,{
 			getitem 7148,1; //Mother_Letter
 		}
 		close;
-		break;
 	case 18:
 	case 19:
 	case 20:
@@ -735,7 +715,6 @@ prt_monk,230,106,3	script	Asthe#tu	79,{
 		mes "[Asthe]";
 		mes "Oh, and this last delivery is a receipt for ^3131FFPriest Praupin^000000, the priest who told you about me. Alright, have a safe trip~";
 		close;
-		break;
 	case 23:
 		mes "Ah, you're finishing";
 		mes "making all of those deliveries? Thank you very much! How was it meeting Priest Praupin after such";
@@ -760,7 +739,6 @@ prt_monk,230,106,3	script	Asthe#tu	79,{
 		mes "you my final lesson.";
 		set tu_acolyte01, 24;
 		close;
-		break;
 	case 24:
 		mes "The last skill";
 		mes "I will teach you";
@@ -813,7 +791,8 @@ prt_monk,230,106,3	script	Asthe#tu	79,{
 }
 
 
-//=================================================Priest Gardron====================================================
+// Priest Gardron
+//============================================================
 monk_in,18,38,6	script	Priest Gardron#tu	110,{
 	mes "[Priest Gardron]";
 	if(tu_acolyte01 == 7){
@@ -921,7 +900,8 @@ monk_in,18,38,6	script	Priest Gardron#tu	110,{
 	close;
 }
 
-//=================================================Dog====================================================
+// Dog
+//============================================================
 prt_monk,235,245,5	script	Dog#tu	81,{
 	mes "[Dog]";
 	mes "^CDB79EBark bark!";
@@ -968,7 +948,8 @@ prt_monk,235,245,5	script	Dog#tu	81,{
 	close;
 }
 
-//=================================================Boy====================================================
+// Boy
+//============================================================
 prt_monk,243,238,5	script	Boy#boy_voi	139,5,5,{
 OnTouch_:
 	if(tu_acolyte01 != 10)end;
@@ -978,7 +959,8 @@ OnTouch_:
 	close;
 }
 
-//=================================================Ill Girl====================================================
+// Ill Girl
+//============================================================
 prt_monk,226,257,6	script	Ill Girl#tu	93,{
 	mes "[Angelic]";
 	if(tu_acolyte01 > 12){
@@ -1056,15 +1038,13 @@ prt_monk,226,257,6	script	Ill Girl#tu	93,{
 		mes "For sure.";
 		set tu_acolyte01, 11;
 		close;
-	} else
-	if(tu_acolyte01 == 11){
+	} else if(tu_acolyte01 == 11){
 		next;
 		mes "[Angelic]";
 		mes "It hurts...!";
 		mes "I... I can't...!";
 		close;
-	} else
-	if(tu_acolyte01 == 12){
+	} else if(tu_acolyte01 == 12){
 		next;
 		mes "^3355FFYou go towards";
 		mes "the girl, place your hands";
@@ -1136,12 +1116,10 @@ prt_monk,226,257,6	script	Ill Girl#tu	93,{
 				mes "not able to use it for now.^000000";
 				close;
 			}
-			break;
 		case 4:
 			mes "^3355FFThis isn't a skill";
 			mes "that Acolytes can use...^000000";
 			close;
-			break;
 		case 5:
 			if(getskilllv("AL_CRUCIS") > 0){
 				mes "["+strcharinfo(0)+"]";
@@ -1159,12 +1137,10 @@ prt_monk,226,257,6	script	Ill Girl#tu	93,{
 				mes "not able to use it for now.^000000";
 				close;
 			}
-			break;
 		case 6:
 			mes "^3355FFThis isn't a skill";
 			mes "that Acolytes can use...^000000";
 			close;
-			break;
 		}
 
 		mes "[Angelic]";
@@ -1182,7 +1158,8 @@ prt_monk,226,257,6	script	Ill Girl#tu	93,{
 	close;
 }
 
-//=================================================Veiner====================================================
+// Veiner
+//============================================================
 prt_monk,197,228,3	script	Veiner	89,{
 	mes "[Veiner]";
 	if(countitem(1081) && tu_acolyte01 == 18){
@@ -1225,7 +1202,8 @@ prt_monk,197,228,3	script	Veiner	89,{
 	close;
 }
 
-//=================================================Hedrick====================================================
+// Hedrick
+//============================================================
 prt_monk,28,260,5	script	Hedrick	50,{
 	mes "[Hedrick]";
 	mes "^333333*Whew!*^000000";
@@ -1260,7 +1238,8 @@ prt_monk,28,260,5	script	Hedrick	50,{
 	close;
 }
 
-//=================================================Weapon Merchant====================================================
+// Weapon Merchant
+//============================================================
 prt_monk,136,261,0	script	Weapon Merchant#tu	139,9,9,{
 OnTouch:
 	if(tu_acolyte01 != 20 || countitem(1081)==0) end;
@@ -1277,7 +1256,8 @@ OnTouch:
 	close;
 }
 
-//=================================================Karven====================================================
+// Karven
+//============================================================
 monk_in,103,176,7	script	Karven	60,{
 	mes "[Karven]";
 	mes "May you rest";
@@ -1310,7 +1290,8 @@ monk_in,103,176,7	script	Karven	60,{
 	close;
 }
 
-//=================================================Gloria====================================================
+// Gloria
+//============================================================
 prt_monk,219,164,3	script	Gloria#tu	95,{
 	mes "[Gloria]";
 	if(BaseJob != Job_Acolyte){
@@ -1365,7 +1346,6 @@ prt_monk,219,164,3	script	Gloria#tu	95,{
 			mes "Wow, I'm touched!";
 			emotion e_sob;
 			close;
-			break;
 		case 2:
 			mes "[Gloria]";
 			mes "Leave it to me!";
@@ -1374,7 +1354,6 @@ prt_monk,219,164,3	script	Gloria#tu	95,{
 			close2;
 			warp "prontera",116,72;
 			end;
-			break;
 		}
 	}
 	mes "Wow...";
@@ -1384,7 +1363,8 @@ prt_monk,219,164,3	script	Gloria#tu	95,{
 	close;
 }
 
-//=================================================Cleope Verce====================================================  
+// Cleope Verce
+//============================================================
 prt_monk,153,210,3	script	Cleope Verce	95,{
 	mes "[Cleope Verce]";
 	if(BaseJob != Job_Acolyte){
@@ -1557,7 +1537,8 @@ prt_monk,153,210,3	script	Cleope Verce	95,{
 	mes "weather today...";
 	close;
 }
-//=================================================Range NPC====================================================  
+// Range NPC
+//============================================================
 prt_monk,217,123,0	script	#tu_monk	139,10,10,{
 OnTouch_:
 	if(BaseJob == Job_Acolyte){
@@ -1577,7 +1558,8 @@ OnTouch_:
 	end;
 }
 
-//=================================================Eavesdrop====================================================  
+// Eavesdrop
+//============================================================
 prt_monk,223,123,3	script	Eavesdrop#tu	111,{
 	if(BaseJob != Job_Acolyte){
 		mes "^3355FFThere's nothing here.^000000";

+ 65 - 119
npc/quests/first_class/tu_archer.txt

@@ -3,7 +3,7 @@
 //===== By: ================================================== 
 //= Fix up by Jukka
 //===== Current Version: ===================================== 
-//= 1.9
+//= 1.9a
 //===== Compatible With: ===================================== 
 //= rAthena SVN (Testet in Trunk 88xx)
 //===== Description: ========================================= 
@@ -20,10 +20,11 @@
 //= 1.7 Added 10.3 dialog and moved Arpesto to hunter skill quest. [Kisuka]
 //= 1.8 Updated slightly, removed additional emotions from Reiden. [L0ne_W0lf]
 //= 1.9 Misc. updates. [L0ne_W0lf]
+//= 1.9a Added 'npcskill' command. [Euphy]
 //============================================================ 
 
-
-//=================================================Bard Jet====================================================
+// Bard Jet
+//============================================================
 payon_in02,67,65,3	script	Bard Jet#tu	51,{
 	mes "[Jet]";
 	mes "Every god never grows old";
@@ -158,7 +159,8 @@ payon_in02,67,65,3	script	Bard Jet#tu	51,{
 	close;
 }
 
-//=================================================Sign====================================================
+// Sign
+//============================================================
 pay_arche,127,154,4	script	Sign#arc	835,{
 	mes " ";
 	mes " Archer Job Change Office ---> ";
@@ -167,7 +169,8 @@ pay_arche,127,154,4	script	Sign#arc	835,{
 	close;
 }
 
-//=================================================Master Kavaruk====================================================
+// Master Kavaruk
+//============================================================
 payon_in02,54,13,3	script	Master Kavaruk	55,{
 	mes "[Master Kavaruk]";
 	mes "Hello, young one.";
@@ -366,7 +369,6 @@ payon_in02,54,13,3	script	Master Kavaruk	55,{
 				mes "extremely capable. I believe";
 				mes "that you can learn much from her.";
 				close;
-				break;
 			case 2:
 				mes "[Master Kavaruk]";
 				mes "Ah, I see. Well,";
@@ -375,7 +377,6 @@ payon_in02,54,13,3	script	Master Kavaruk	55,{
 				mes "ever change your mind, feel";
 				mes "free to come back.";
 				close;
-				break;
 			}
 		} else if(tu_archer01 == 1 || tu_archer01 == 2){
 			mes "Hmm...?";
@@ -411,7 +412,8 @@ payon_in02,54,13,3	script	Master Kavaruk	55,{
 	close;
 }
 
-//=================================================Reidin Corse====================================================
+// Reidin Corse
+//============================================================
 pay_arche,103,165,5	script	Reidin Corse#tu	832,{
 	mes "[Reidin Corse]";
 	if(MaxWeight - Weight < 2000){
@@ -445,7 +447,6 @@ pay_arche,103,165,5	script	Reidin Corse#tu	832,{
 				mes "to ask me? You had";
 				mes "that look, you know?";
 				close;
-				break;
 			}
 			mes "[Reidin Corse]";
 			mes "Fine. I'm an incredibly";
@@ -477,7 +478,6 @@ pay_arche,103,165,5	script	Reidin Corse#tu	832,{
 				mes "back, I'll reconsider";
 				mes "teaching you.";
 				close;
-				break;
 			}
 			mes "[Reidin Corse]";
 			mes "Let's see...";
@@ -577,7 +577,6 @@ pay_arche,103,165,5	script	Reidin Corse#tu	832,{
 							close2;
 							warp "morocc",156,46;
 							end;
-							break;
 						case 2:
 							mes "[Reidin Corse]";
 							mes "Hm...?";
@@ -586,9 +585,7 @@ pay_arche,103,165,5	script	Reidin Corse#tu	832,{
 							mes "do whatever it is you";
 							mes "need to do...";
 							close;
-							break;
 						}
-						break;
 					case 2:
 						emotion e_an;
 						mes "[Reidin Corse]";
@@ -598,7 +595,6 @@ pay_arche,103,165,5	script	Reidin Corse#tu	832,{
 						mes "you come here, you better";
 						mes "know Level 3 Owl's Eye!";
 						close;
-						break;
 					}
 
 				} else {
@@ -617,7 +613,6 @@ pay_arche,103,165,5	script	Reidin Corse#tu	832,{
 				mes "teach you all my";
 				mes "archery secrets!";
 				close;
-				break;
 			}
 		} else if(tu_archer01 == 6){
 			set .@owl, getskilllv(43);
@@ -745,14 +740,12 @@ pay_arche,103,165,5	script	Reidin Corse#tu	832,{
 					close2;
 					warp "geffen",120,39;
 					end;
-					break;
 				case 2:
 					mes "[Reidin Corse]";
 					mes "You still need";
 					mes "to get ready?";
 					mes "Hurry it up!";
 					close;
-					break;
 				}
 			} else {
 				mes "Eh?";
@@ -785,14 +778,12 @@ pay_arche,103,165,5	script	Reidin Corse#tu	832,{
 					close2;
 					warp "geffen",120,39;
 					end;
-					break;
 				case 2:
 					mes "[Reidin Corse]";
 					mes "You still need";
 					mes "to get ready?";
 					mes "Hurry it up!";
 					close;
-					break;
 				}
 			} else {
 				mes "Ah, so you've learned";
@@ -1096,7 +1087,8 @@ pay_arche,103,165,5	script	Reidin Corse#tu	832,{
 	close;
 }
 
-//=================================================Seisner====================================================
+// Seisner
+//============================================================
 pay_arche,84,139,3	script	Seisner	727,{
 	specialeffect EF_HIT2,"#Target";
 	mes "[Seisner]";
@@ -1273,7 +1265,6 @@ pay_arche,84,139,3	script	Seisner	727,{
 				mes "[Seisner]";
 				mes "Someday, I'd like to become a great Archer and use my skills for the good of Rune-Midgard.";
 				close;
-				break;
 			}
 		}
 	} else if(tu_archer01 == 2){
@@ -1302,10 +1293,12 @@ pay_arche,84,139,3	script	Seisner	727,{
 	close;
 }
 
-//=================================================Target====================================================
+// Target
+//============================================================
 pay_arche,76,135,3	script	Target#Target	111,{ end; }	// empty NPC?? [Jukka]
 
-//=================================================Acolyte====================================================
+// Acolyte
+//============================================================
 pay_fild08,40,83,5	script	Acolyte#tu	95,{
 	mes "[Acolyte]";
 	if(tu_archer01 == 14){
@@ -1340,7 +1333,6 @@ pay_fild08,40,83,5	script	Acolyte#tu	95,{
 				mes "I''ll try my very best!";
 				set tu_archer01, 15;
 				close;
-				break;
 			case 2:
 				mes "[Acolyte]";
 				mes "Oh... Oh.";
@@ -1350,7 +1342,6 @@ pay_fild08,40,83,5	script	Acolyte#tu	95,{
 				mes "that's alright...";
 				emotion e_sob;
 				close;
-				break;
 			case 3:
 				mes "[Acolyte]";
 				mes "Eh?!";
@@ -1380,7 +1371,6 @@ pay_fild08,40,83,5	script	Acolyte#tu	95,{
 					set tu_archer01, 15;
 					close;
 				}
-				break;
 			}
 			end;
 		} else {
@@ -1393,32 +1383,21 @@ pay_fild08,40,83,5	script	Acolyte#tu	95,{
 			mes "Wait, I know...";
 			mes "Y-you're... ^666666*Yawn*^000000";
 			mes "So sleepy. Take this for now...";
-			set .@kurae_heal, rand(1,4);
-			if(.@kurae_heal == 1){
-				unitskilluseid getcharid(3),28,3;
-			} else if(.@kurae_heal == 2){
-				unitskilluseid getcharid(3),28,9;
-			} else if(.@kurae_heal == 3){
-				unitskilluseid getcharid(3),28,10;
-			} else if(.@kurae_heal == 4){
+			switch(rand(4)) {
+				case 0: npcskill "AL_HEAL",3,90,62; break;
+				case 1: npcskill "AL_HEAL",9,90,62; break;
+				case 2: npcskill "AL_HEAL",8,90,62; break;
+				case 3: break;
 			}
-
-			set .@kurae_agi, rand(1,3);
-			if(.@kurae_agi == 1){
-				unitskilluseid getcharid(3),29,0;
-			} else if(.@kurae_agi == 2){
-				unitskilluseid getcharid(3),29,5;
-			} else if(.@kurae_agi == 3){
-				unitskilluseid getcharid(3),29,10;
+			switch(rand(3)) {
+				case 0: npcskill "AL_INCAGI",1,0,0; break;
+				case 1: npcskill "AL_INCAGI",5,0,0; break;
+				case 2: npcskill "AL_INCAGI",10,0,0; break;
 			}
-
-			set .@kurae_bls, rand(1,3);
-			if(.@kurae_bls == 1){
-				unitskilluseid getcharid(3),34,0;
-			} else if(.@kurae_bls == 2){
-				unitskilluseid getcharid(3),34,5;
-			} else if(.@kurae_bls == 3){
-				unitskilluseid getcharid(3),34,10;
+			switch(rand(3)) {
+				case 0: npcskill "AL_BLESSING",1,0,0; break;
+				case 1: npcskill "AL_BLESSING",5,0,0; break;
+				case 2: npcskill "AL_BLESSING",10,0,0; break;
 			}
 			close;
 		}
@@ -1439,64 +1418,29 @@ pay_fild08,40,83,5	script	Acolyte#tu	95,{
 			mes "^666666Zzzz^000000--Oooh!";
 			mes "J-just take this before";
 			mes "I fall asleep again~! ^666666*Yawn*^000000";
-
-			set .@kurae_heal, rand(1,4);
-			if(.@kurae_heal == 1){
-				unitskilluseid getcharid(3),28,3;
-			} else if(.@kurae_heal == 2){
-				unitskilluseid getcharid(3),28,10;
-			} else if(.@kurae_heal == 3){
-				unitskilluseid getcharid(3),28,8;
-			}
-
-			set .@kurae_agi, rand(1,3);
-			if(.@kurae_agi == 1){
-				unitskilluseid getcharid(3),29,0;
-			} else if(.@kurae_agi == 2){
-				unitskilluseid getcharid(3),29,5;
-			} else if(.@kurae_agi == 3){
-				unitskilluseid getcharid(3),29,10;
-			}
-
-			set .@kurae_bls, rand(1,3);
-			if(.@kurae_bls == 1){
-				unitskilluseid getcharid(3),34,0;
-			} else if(.@kurae_bls == 2){
-				unitskilluseid getcharid(3),34,5;
-			} else if(.@kurae_bls == 3){
-				unitskilluseid getcharid(3),34,10;
-			}
-			close;
 		} else {
 			mes "Okay~!";
 			mes "Let me try";
 			mes "casting a spell";
 			mes "to help you! Yaa~p!";
-
-			set .@kurae_heal, rand(1,3);
-			if(.@kurae_heal == 1){
-				unitskilluseid getcharid(3),28,3;
-			} else if(.@kurae_heal == 2){
-				unitskilluseid getcharid(3),28,10;
-			} else if(.@kurae_heal == 3){
-				unitskilluseid getcharid(3),28,8;
-			}
-
-			set .@kurae_agi, rand(1,2);
-			if(.@kurae_agi == 1){
-				unitskilluseid getcharid(3),29,10;
-			} else if(.@kurae_agi == 2){
-				unitskilluseid getcharid(3),29,5;
-			}
-
-			set .@kurae_bls, rand(1,2);
-			if(.@kurae_bls == 1){
-				unitskilluseid getcharid(3),34,10;
-			} else if(.@kurae_bls == 2){
-				unitskilluseid getcharid(3),34,5;
-			}
-			close;
 		}
+		switch(rand(4)) {
+			case 0: npcskill "AL_HEAL",3,90,62; break;
+			case 1: npcskill "AL_HEAL",10,90,62; break;
+			case 2: npcskill "AL_HEAL",8,90,62; break;
+			case 3: break;
+		}
+		switch(rand(3)) {
+			case 0: npcskill "AL_INCAGI",1,0,0; break;
+			case 1: npcskill "AL_INCAGI",5,0,0; break;
+			case 2: npcskill "AL_INCAGI",10,0,0; break;
+		}
+		switch(rand(3)) {
+			case 0: npcskill "AL_BLESSING",1,0,0; break;
+			case 1: npcskill "AL_BLESSING",5,0,0; break;
+			case 2: npcskill "AL_BLESSING",10,0,0; break;
+		}
+		close;
 	}
 	mes "...";
 	mes "W-why does";
@@ -1507,7 +1451,8 @@ pay_fild08,40,83,5	script	Acolyte#tu	95,{
 	close;
 }
 
-//=================================================Alchemist Guildmember====================================================
+// Alchemist Guildmember
+//============================================================
 pay_arche,130,113,3	script	Alchemist Guildmember#tu	740,{
 	mes "[Alchemist Guildmember]";
 	if(tu_archer02 > 0){
@@ -1550,7 +1495,6 @@ pay_arche,130,113,3	script	Alchemist Guildmember#tu	740,{
 				}
 				set Zeny,Zeny+.@total_zeny;
 				close;
-				break;
 			case 2:
 				mes "[Alchemist Guildmember]";
 				mes "Seriously...";
@@ -1558,7 +1502,6 @@ pay_arche,130,113,3	script	Alchemist Guildmember#tu	740,{
 				mes "The Alchemist Guild really needs lots of new supplies to keep our Flora field running!";
 				emotion e_sob;
 				close;
-				break;
 			}
 		} else {
 			mes "I don't know if you've heard";
@@ -1582,7 +1525,8 @@ pay_arche,130,113,3	script	Alchemist Guildmember#tu	740,{
 	close;
 }
 
-//=================================================Arthail====================================================
+// Arthail
+//============================================================
 prontera,126,335,5	script	Arthail	51,{
 	mes "[Arthail]";
 	if(tu_archer02 < 3){
@@ -1724,8 +1668,7 @@ prontera,126,335,5	script	Arthail	51,{
 		mes "I'd better go check";
 		mes "this out on my own.";
 		set tu_archer02, 5;
-		close2;
-		end;
+		close;
 
 	} else if(tu_archer02 > 4 && tu_archer02 < 7){
 		mes "^333333Zzzzz...^000000";
@@ -1756,16 +1699,15 @@ prontera,126,335,5	script	Arthail	51,{
 		mes "have a song that";
 		mes "I can share with you.";
 		set tu_archer02, 9;
-		close2;
-		end;
+		close;
 	}
 	mes "...";
 	mes "......";
-	close2;
-	end;
+	close;
 }
 
-//=================================================New Guild Master====================================================
+// New Guild Master
+//============================================================
 prontera,167,281,3	script	New Guild Master#tu	753,{
 	mes "[New Guild Master]";
 	mes "Hearken, all";
@@ -1787,7 +1729,8 @@ prontera,167,281,3	script	New Guild Master#tu	753,{
 	close;
 }
 
-//=================================================Mage====================================================
+// Mage
+//============================================================
 prontera,144,301,5	script	Mage#tu	123,{
 	mes "[Mage]";
 	mes "Did you see that";
@@ -1814,7 +1757,8 @@ prontera,144,301,5	script	Mage#tu	123,{
 	close;
 }
 
-//=================================================Minister====================================================
+// Minister
+//============================================================
 prt_castle,76,165,6	script	Minister#tu	55,{
 	mes "[Minister]";
 	mes "The royal family";
@@ -1873,7 +1817,8 @@ prt_castle,76,165,6	script	Minister#tu	55,{
 	close;
 }
 
-//=================================================Range NPC====================================================
+// Range NPC
+//============================================================
 prt_castle,94,150,4	script	#sound_tu	139,6,6,{
 OnTouch_:
 	if(tu_archer02 == 6) {
@@ -1887,7 +1832,8 @@ OnTouch_:
 	end;
 }
 
-//=================================================Bishop Maugins====================================================
+// Bishop Maugins
+//============================================================
 monk_in,19,43,1	script	Bishop Maugins	60,{
 	mes "[Bishop Maugins]";
 	if(tu_archer02 == 7){
@@ -1922,8 +1868,8 @@ monk_in,19,43,1	script	Bishop Maugins	60,{
 		mes "Good luck on";
 		mes "your journeys,";
 		mes "brave adventurer.";
-		unitskilluseid getcharid(3),29,10;
-		unitskilluseid getcharid(3),34,10;
+		npcskill "AL_INCAGI",10,0,0;
+		npcskill "AL_BLESSING",10,0,0;
 		close;
 	}
 	mes "I'm sorry, but I have";

+ 32 - 33
npc/quests/first_class/tu_ma_th01.txt

@@ -16,8 +16,8 @@
 //= 1.3 Misc. updates. [L0ne_W0lf]
 //============================================================ 
 
-
-//=================================================Battle Traces 1====================================================
+// Battle Traces 1
+//============================================================
 moc_fild12,166,369,0	script	Trace of Battle#1	844,{
 	if(BaseClass == Job_Thief){
 		if(tu_thief01 < 5){
@@ -107,7 +107,8 @@ moc_fild12,166,369,0	script	Trace of Battle#1	844,{
 	close;
 }
 
-//=================================================Battle Traces 2====================================================
+// Battle Traces 2
+//============================================================
 moc_fild12,173,215,0	script	Trace of Battle#2	844,{
 	if(BaseClass == Job_Thief){
 		if(tu_thief01 < 9){
@@ -156,7 +157,8 @@ moc_fild12,173,215,0	script	Trace of Battle#2	844,{
 	close;
 }
 
-//=================================================Battle Traces 3====================================================
+// Battle Traces 3
+//============================================================
 moc_fild12,276,165,0	script	Trace of Battle#3	844,{
 	if(BaseClass == Job_Thief){
 		if(tu_thief01 < 10){
@@ -208,7 +210,8 @@ moc_fild12,276,165,0	script	Trace of Battle#3	844,{
 	close;
 }
 
-//=================================================Battle Traces 4====================================================
+// Battle Traces 4
+//============================================================
 moc_fild11,39,163,0	script	Trace of Battle#4	844,{
 	if(BaseClass == Job_Thief){
 		if(tu_thief01 < 11){
@@ -267,7 +270,8 @@ moc_fild11,39,163,0	script	Trace of Battle#4	844,{
 	close;
 }
 
-//=================================================Battle Traces 5====================================================
+// Battle Traces 5
+//============================================================
 moc_fild11,205,52,0	script	Trace of Battle#5	844,{
 	if(BaseClass == Job_Thief){
 		if(tu_thief01 < 12){
@@ -305,7 +309,6 @@ moc_fild11,205,52,0	script	Trace of Battle#5	844,{
 						mes "is nothing to be";
 						mes "concerned about.";
 						close;
-						break;
 					case 2:
 						mes "["+strcharinfo(0)+"]";
 						mes "Hey... There's";
@@ -320,9 +323,7 @@ moc_fild11,205,52,0	script	Trace of Battle#5	844,{
 						mes "of cloth from the puddle";
 						mes "of poison and keep it with you.^000000";
 						close;
-						break;
 					}
-					break;
 				case 2:
 					mes "["+strcharinfo(0)+"]";
 					mes "Hmm...";
@@ -331,7 +332,6 @@ moc_fild11,205,52,0	script	Trace of Battle#5	844,{
 					mes "trail, rather than stop to";
 					mes "investigate this scene.";
 					close;
-					break;
 				}
 			}
 		} else {
@@ -378,7 +378,6 @@ moc_fild11,205,52,0	script	Trace of Battle#5	844,{
 						mes "is nothing to be";
 						mes "concerned about.";
 						close;
-						break;
 					case 2:
 						mes "["+strcharinfo(0)+"]";
 						mes "Hey... There's";
@@ -393,9 +392,7 @@ moc_fild11,205,52,0	script	Trace of Battle#5	844,{
 						mes "of cloth from the puddle";
 						mes "of poison and keep it with you.^000000";
 						close;
-						break;
 					}
-					break;
 				case 2:
 					mes "["+strcharinfo(0)+"]";
 					mes "Hmm...";
@@ -404,7 +401,6 @@ moc_fild11,205,52,0	script	Trace of Battle#5	844,{
 					mes "trail, rather than stop to";
 					mes "investigate this scene.";
 					close;
-					break;
 				}
 			}
 		} else {
@@ -423,7 +419,8 @@ moc_fild11,205,52,0	script	Trace of Battle#5	844,{
 	close;
 }
 
-//=================================================Battle Traces 6====================================================
+// Battle Traces 6
+//============================================================
 moc_fild11,226,235,0	script	Trace of Battle#6	844,{
 	if(BaseClass == Job_Thief){
 		if(tu_thief01 < 13){
@@ -465,7 +462,8 @@ moc_fild11,226,235,0	script	Trace of Battle#6	844,{
 	close;
 }
 
-//=================================================Battle Traces 7====================================================
+// Battle Traces 7
+//============================================================
 moc_fild11,184,342,0	script	Trace of Battle#7	844,{
 	if(BaseClass == Job_Thief){
 		if(tu_thief01 < 13){
@@ -505,7 +503,8 @@ moc_fild11,184,342,0	script	Trace of Battle#7	844,{
 	close;
 }
 
-//=================================================Battle Traces 8====================================================
+// Battle Traces 8
+//============================================================
 moc_fild17,213,358,0	script	Trace of Battle#8	844,{
 	if(BaseClass == Job_Thief){
 		if(tu_thief01 < 13){
@@ -565,7 +564,8 @@ moc_fild17,213,358,0	script	Trace of Battle#8	844,{
 	close;
 }
 
-//=================================================Battle Traces 9====================================================
+// Battle Traces 9
+//============================================================
 moc_fild17,228,274,0	script	Trace of Battle#9	844,{
 	if(BaseClass == Job_Thief){
 		if(tu_thief01 < 14){
@@ -659,7 +659,8 @@ moc_fild17,228,274,0	script	Trace of Battle#9	844,{
 	close;
 }
 
-//=================================================Battle Traces 10====================================================
+// Battle Traces 10
+//============================================================
 moc_fild17,34,292,0	script	Trace of Battle#10	844,{
 	if(BaseClass == Job_Thief){
 		if(tu_thief01 < 16){
@@ -711,7 +712,8 @@ moc_fild17,34,292,0	script	Trace of Battle#10	844,{
 	close;
 }
 
-//=================================================Battle Traces 11====================================================
+// Battle Traces 11
+//============================================================
 moc_fild18,346,296,0	script	Trace of Battle#11	844,{
 	if(BaseClass == Job_Thief){
 		if(tu_thief01 < 17){
@@ -767,7 +769,8 @@ moc_fild18,346,296,0	script	Trace of Battle#11	844,{
 	close;
 }
 
-//=================================================Battle Traces 12====================================================
+// Battle Traces 12
+//============================================================
 moc_fild18,309,257,0	script	Trace of Battle#12	844,{
 	if(BaseClass == Job_Thief){
 		if(tu_thief01 < 18){
@@ -819,7 +822,8 @@ moc_fild18,309,257,0	script	Trace of Battle#12	844,{
 	close;
 }
 
-//=================================================Battle Traces 13====================================================
+// Battle Traces 13
+//============================================================
 moc_fild18,177,333,0	script	Trace of Battle#13	844,{
 	if(BaseClass == Job_Thief){
 		if(tu_thief01 < 19){
@@ -872,7 +876,8 @@ moc_fild18,177,333,0	script	Trace of Battle#13	844,{
 	close;
 }
 
-//=================================================Battle Traces 14====================================================
+// Battle Traces 14
+//============================================================
 moc_fild18,111,303,0	script	Trace of Battle#14	844,{
 	if(BaseClass == Job_Thief){
 		if(tu_thief01 < 20){
@@ -924,7 +929,8 @@ moc_fild18,111,303,0	script	Trace of Battle#14	844,{
 	close;
 }
 
-//=================================================Battle Traces 15====================================================
+// Battle Traces 15
+//============================================================
 moc_fild18,109,197,0	script	Trace of Battle#15	844,{
 	if(BaseClass == Job_Thief){
 		if(tu_thief01 < 21){
@@ -948,7 +954,6 @@ moc_fild18,109,197,0	script	Trace of Battle#15	844,{
 				mes "in which the battle";
 				mes "continues...^000000";
 				close;
-				break;
 			case 2:
 				mes "^3355FFYou find a bunch of";
 				mes "traps that use different";
@@ -958,7 +963,6 @@ moc_fild18,109,197,0	script	Trace of Battle#15	844,{
 				mes "haven't been triggered.^000000";
 				set tu_thief01, 22;
 				close;
-				break;
 			}
 		} else if(tu_thief01 == 22){
 			set .@trap_tm, rand(1,3);
@@ -988,14 +992,12 @@ moc_fild18,109,197,0	script	Trace of Battle#15	844,{
 						set tu_thief01, 23;
 						close;
 					}
-					break;
 				case 2:
 					mes "["+strcharinfo(0)+"]";
 					mes "I guess...";
 					mes "I'll try investigating";
 					mes "this area a little more?";
 					close;
-					break;
 				}
 			} else {
 				mes "^3355FFBy sheer accident,";
@@ -1106,7 +1108,6 @@ moc_fild18,109,197,0	script	Trace of Battle#15	844,{
 				mes "in which the battle";
 				mes "continues...^000000";
 				close;
-				break;
 			case 2:
 				mes "^3355FFYou find a bunch of";
 				mes "traps that use different";
@@ -1116,7 +1117,6 @@ moc_fild18,109,197,0	script	Trace of Battle#15	844,{
 				mes "haven't been triggered.^000000";
 				set tu_magician01, 22;
 				close;
-				break;
 			}
 		} else if(tu_magician01 == 22){
 			set .@trap_tm, rand(1,3);
@@ -1146,14 +1146,12 @@ moc_fild18,109,197,0	script	Trace of Battle#15	844,{
 						set tu_magician01, 23;
 						close;
 					}
-					break;
 				case 2:
 					mes "["+strcharinfo(0)+"]";
 					mes "I guess...";
 					mes "I'll try investigating";
 					mes "this area a little more?";
 					close;
-					break;
 				}
 			} else {
 				mes "^3355FFBy sheer accident,";
@@ -1254,7 +1252,8 @@ moc_fild18,109,197,0	script	Trace of Battle#15	844,{
 	close;
 }
 
-//=================================================Battle Traces 16====================================================
+// Battle Traces 16
+//============================================================
 moc_fild18,156,96,0	script	Trace of Battle#16	844,{
 	if(BaseClass == Job_Thief){
 		if(tu_thief01 < 25){

+ 5 - 15
npc/quests/first_class/tu_magician01.txt

@@ -16,15 +16,15 @@
 //= 1.3 Misc. updates. [L0ne_W0lf]
 //============================================================ 
 
-
-//=================================================Sign====================================================
+// Sign
+//============================================================
 geffen,61,174,4	script	Sign#M	111,{
 	mes "- Mage Job Change -";
 	close;
 }
 
-
-//=================================================New Mage Manager====================================================
+// New Mage Manager
+//============================================================
 geffen,67,180,4	script	New Mage Manager#M	102,{
 	mes "[Mana]";
 	if(Class == Job_Novice){
@@ -129,9 +129,8 @@ geffen,67,180,4	script	New Mage Manager#M	102,{
 		mes "continue this later, okay?";
 		set tu_magician01, 1;
 		getexp BaseLevel*3,BaseLevel*2;
-		//misceffect EF_HIT5;
+		specialeffect2 EF_HIT5;
 		close;
-		break;
 	case 1:
 		mes "Are you ready";
 		mes "to continue our";
@@ -387,7 +386,6 @@ geffen,67,180,4	script	New Mage Manager#M	102,{
 					set tu_mana,0;
 				}
 				close;
-				break;
 			}
 		}
 		break;
@@ -469,9 +467,7 @@ geffen,67,180,4	script	New Mage Manager#M	102,{
 		set tu_magician01, 3;
 		getexp 40,20;
 		specialeffect2 EF_HIT5;
-
 		close;
-		break;
 	case 3:
 		mes "Ah, you're back?";
 		mes "Let's see if you gathered";
@@ -501,7 +497,6 @@ geffen,67,180,4	script	New Mage Manager#M	102,{
 			specialeffect2 EF_HIT5;
 			close;
 		}
-		break;
 	case 4:
 		mes "So...";
 		mes "Did you get";
@@ -530,7 +525,6 @@ geffen,67,180,4	script	New Mage Manager#M	102,{
 			specialeffect2 EF_HIT5;
 			close;
 		}
-		break;
 	case 5:
 		mes "Now I'll tell you";
 		mes "what I know about the";
@@ -735,7 +729,6 @@ geffen,67,180,4	script	New Mage Manager#M	102,{
 			}
 		}
 		close;
-		break;
 	case 6:
 		mes "Oh good, you're back.";
 		mes "Let me tell you about";
@@ -780,7 +773,6 @@ geffen,67,180,4	script	New Mage Manager#M	102,{
 			mes "and ask me later, okay?";
 			close;
 		}
-		break;
 	case 7:
 		mes "I don't know";
 		mes "what kind of work";
@@ -788,7 +780,6 @@ geffen,67,180,4	script	New Mage Manager#M	102,{
 		mes "for you, but hopefully";
 		mes "it won't be too difficult.";
 		close;
-		break;
 	case 27:
 		mes "Yierhan just sent me";
 		mes "a message, saying that";
@@ -821,7 +812,6 @@ geffen,67,180,4	script	New Mage Manager#M	102,{
 		set Zeny, Zeny + 3000;
 		getexp 300,100;
 		close;
-		break;
 	default:
 		if(tu_magician01 < 27){
 			mes "So...";

+ 13 - 54
npc/quests/first_class/tu_merchant.txt

@@ -16,8 +16,8 @@
 //= 1.3 Misc. updates. [L0ne_W0lf]
 //============================================================ 
 
-
-//=================================================Guarnien====================================================
+// Guarnien
+//============================================================
 alberta_in,70,51,5	script	Guarnien	98,{
 	mes "[Guarnien]";
 	if(Class != Job_Merchant && Class != Job_Baby_Merchant){
@@ -48,7 +48,6 @@ alberta_in,70,51,5	script	Guarnien	98,{
 		mes "If you can be sincerely kind to everyone that you meet, you'll";
 		mes "have no problem.";
 		close;
-		break;
 	case 16:
 		mes "So...";
 		mes "How much have";
@@ -93,7 +92,6 @@ alberta_in,70,51,5	script	Guarnien	98,{
 		mes "the mood strikes you.";
 		mes "Good luck to you~";
 		close;
-		break;
 	case 15:
 		mes "I believe it's time";
 		mes "for my final lecture.";
@@ -140,7 +138,6 @@ alberta_in,70,51,5	script	Guarnien	98,{
 			set tu_merchant, 17;
 			completequest 8239;
 			getexp 199,69;
-
 			next;
 		} else {
 			mes "[Guarnien]";
@@ -166,7 +163,6 @@ alberta_in,70,51,5	script	Guarnien	98,{
 		mes "the mood strikes you.";
 		mes "Good luck to you~";
 		close;
-		break;
 	case 14:
 		mes "So, have you";
 		mes "learned Push Cart up";
@@ -208,7 +204,6 @@ alberta_in,70,51,5	script	Guarnien	98,{
 			mes "Cart skill. I hope that helps.";
 			close;
 		}
-		break;
 	case 13:
 		mes "Now to talk about";
 		mes "^871F78Push Cart^000000. First off, you need to know Level 5 Increase Weight Limit before you can even learn the Push Cart skill.";
@@ -252,7 +247,6 @@ alberta_in,70,51,5	script	Guarnien	98,{
 			erasequest 8237;
 			setquest 8238;
 			getexp 186,60;
-
 			next;
 			mes "[Guarnien]";
 			mes "Next time, I'll talk about the skill that sets Merchants apart from all the other classes: ^871F78Vending^000000. So don't miss it!";
@@ -267,7 +261,6 @@ alberta_in,70,51,5	script	Guarnien	98,{
 			set tu_merchant, 14;
 			close;
 		}
-		break;
 	case 12:
 		mes "So...";
 		mes "How is it going";
@@ -312,7 +305,6 @@ alberta_in,70,51,5	script	Guarnien	98,{
 			mes "There's no rush, but I won't be able to lecture on anything until you finish this little task.";
 			close;
 		}
-		break;
 	case 11:
 		mes "Ah, ready to";
 		mes "learn already,";
@@ -365,7 +357,6 @@ alberta_in,70,51,5	script	Guarnien	98,{
 			mes "Do your best~";
 			close;
 		}
-		break;
 	case 10:
 		mes "Let me see those";
 		mes "Red Potions. Now,";
@@ -386,7 +377,6 @@ alberta_in,70,51,5	script	Guarnien	98,{
 		mes "Now, why don't you go to Prontera and try to buy 10 Red Potions from an NPC for the cheapest price again?";
 		set tu_merchant, rand(6,8);
 		close;
-		break;
 	case 9:
 		mes "Let me see those";
 		mes "Red Potions. Ah, it seems you researched the market and bought the cheapest ones! Great work!";
@@ -398,7 +388,6 @@ alberta_in,70,51,5	script	Guarnien	98,{
 		mes "Alright, next time, we'll talk about the skill that you can learn after knowing how to Discount:";
 		mes "^871F78Over Charge^000000.";
 		close;
-		break;
 	case 6:
 	case 7:
 	case 8:
@@ -412,7 +401,6 @@ alberta_in,70,51,5	script	Guarnien	98,{
 		mes "[Guarnien]";
 		mes "First, you'll probably want to research the market price for Red Potions. And always, be careful of scammers and cheats!";
 		close;
-		break;
 	case 5:
 		mes "Alright...";
 		mes "I've given it some thought and I've come up with a little challenge for you. Bring me... 10 Red Potions!";
@@ -433,7 +421,6 @@ alberta_in,70,51,5	script	Guarnien	98,{
 		set tu_merchant, rand(6,8);
 		warp "prontera",155,46;
 		end;
-		break;
 	case 4:
 		mes "So, how is it going with learning the Discount skill? Like I always say, if you can't make a bargain, you can't be a Merchant!";
 		next;
@@ -467,7 +454,6 @@ alberta_in,70,51,5	script	Guarnien	98,{
 			mes "Well, you should be able to reach that goal soon. After all, it's one of the basics of being a Merchant!";
 			close;
 		}
-		break;
 	case 3:
 		mes "Ah, you're back!";
 		mes "Now, I was going";
@@ -525,7 +511,6 @@ alberta_in,70,51,5	script	Guarnien	98,{
 			setquest 8232;
 			close;
 		}
-		break;
 	case 2:
 		mes "Ah, you've come back to learn more. Let's see, what was I going to tell you about... Right, Mammonite!";
 		next;
@@ -560,7 +545,6 @@ alberta_in,70,51,5	script	Guarnien	98,{
 			setquest 8231;
 			close;
 		}
-		break;
 	case 1:
 		mes "So...";
 		mes "Did you learn the";
@@ -690,8 +674,9 @@ alberta_in,70,51,5	script	Guarnien	98,{
 		close;
 	}
 }
-	
-//=================================================Sagle====================================================
+
+// Sagle
+//============================================================
 prontera,66,111,3	script	Sagle	82,{
 	mes "[Sagle]";
 	if(tu_merchant == 8){
@@ -731,7 +716,6 @@ prontera,66,111,3	script	Sagle	82,{
 				getitem 501,10; //Red_Potion
 				close;
 			}
-			break;
 		case 2:
 			mes "[Sagle]";
 			mes "Alright...";
@@ -740,7 +724,6 @@ prontera,66,111,3	script	Sagle	82,{
 			mes "these potions";
 			mes "are sold out!";
 			close;
-			break;
 		}
 	}
 	if(tu_merchant == 7){
@@ -781,7 +764,6 @@ prontera,66,111,3	script	Sagle	82,{
 				getitem 501,10; //Red_Potion
 				close;
 			}
-			break;
 		case 2:
 			mes "[Sagle]";
 			mes "Alright...";
@@ -790,7 +772,6 @@ prontera,66,111,3	script	Sagle	82,{
 			mes "these potions";
 			mes "are sold out!";
 			close;
-			break;
 		}
 	}
 	if(tu_merchant == 6){
@@ -830,7 +811,6 @@ prontera,66,111,3	script	Sagle	82,{
 				getitem 501,10; //Red_Potion
 				close;
 			}
-			break;
 		case 2:
 			mes "[Sagle]";
 			mes "Alright...";
@@ -839,7 +819,6 @@ prontera,66,111,3	script	Sagle	82,{
 			mes "these potions";
 			mes "are sold out!";
 			close;
-			break;
 		}
 	}
 	mes "It's on the tip";
@@ -855,7 +834,8 @@ prontera,66,111,3	script	Sagle	82,{
 	close;
 }
 
-//=================================================Kellion====================================================
+// Kellion
+//============================================================
 prontera,93,330,3	script	Kellion	97,{
 	mes "[Kellion]";
 	if(tu_merchant == 8){
@@ -888,7 +868,6 @@ prontera,93,330,3	script	Kellion	97,{
 				getitem 569,10; //Novice_Potion
 				close;
 			}
-			break;
 		case 2:
 			mes "[Kellion]";
 			mes "Well, I'm sorry";
@@ -896,7 +875,6 @@ prontera,93,330,3	script	Kellion	97,{
 			mes "I guess I'll see";
 			mes "you later.";
 			close;
-			break;
 		}
 	}
 	if(tu_merchant == 7){
@@ -929,7 +907,6 @@ prontera,93,330,3	script	Kellion	97,{
 				getitem 501,10; //Red_Potion
 				close;
 			}
-			break;
 		case 2:
 			mes "[Kellion]";
 			mes "Well, I'm sorry";
@@ -937,7 +914,6 @@ prontera,93,330,3	script	Kellion	97,{
 			mes "I guess I'll see";
 			mes "you later.";
 			close;
-			break;
 		}
 	}
 	if(tu_merchant == 6){
@@ -970,7 +946,6 @@ prontera,93,330,3	script	Kellion	97,{
 				getitem 501,10; //Red_Potion
 				close;
 			}
-			break;
 		case 2:
 			mes "[Kellion]";
 			mes "Well, I'm sorry";
@@ -978,7 +953,6 @@ prontera,93,330,3	script	Kellion	97,{
 			mes "I guess I'll see";
 			mes "you later.";
 			close;
-			break;
 		}
 	}
 	mes "Recently, I hear that something";
@@ -994,7 +968,8 @@ prontera,93,330,3	script	Kellion	97,{
 	close;
 }
 	
-//=================================================Aigie====================================================
+// Aigie
+//============================================================
 prt_in,169,11,3	script	Aigie	92,{
 	if(tu_merchant == 8){
 		mes "[Aigie]";
@@ -1031,7 +1006,6 @@ prt_in,169,11,3	script	Aigie	92,{
 				getitem 501,10; //Red_Potion
 				close;
 			}
-			break;
 		case 2:
 			mes "[Aigie]";
 			mes "I understand.";
@@ -1040,7 +1014,6 @@ prt_in,169,11,3	script	Aigie	92,{
 			mes "you a really good price.";
 			mes "^666666*Sniff Sniff*^000000";
 			close;
-			break;
 		}
 	}
 	if(tu_merchant == 7){
@@ -1078,7 +1051,6 @@ prt_in,169,11,3	script	Aigie	92,{
 				getitem 501,10; //Red_Potion
 				close;
 			}
-			break;
 		case 2:
 			mes "[Aigie]";
 			mes "I understand.";
@@ -1087,7 +1059,6 @@ prt_in,169,11,3	script	Aigie	92,{
 			mes "you a really good price.";
 			mes "^666666*Sniff Sniff*^000000";
 			close;
-			break;
 		}
 	}
 	if(tu_merchant == 6){
@@ -1125,7 +1096,6 @@ prt_in,169,11,3	script	Aigie	92,{
 				getitem 569,10; //Novice_Potion
 				close;
 			}
-			break;
 		case 2:
 			mes "[Aigie]";
 			mes "I understand.";
@@ -1134,7 +1104,6 @@ prt_in,169,11,3	script	Aigie	92,{
 			mes "you a really good price.";
 			mes "^666666*Sniff Sniff*^000000";
 			close;
-			break;
 		}
 	}
 	mes "[Aigie]";
@@ -1145,7 +1114,8 @@ prt_in,169,11,3	script	Aigie	92,{
 	close;
 }
 	
-//=================================================Jayon====================================================
+// Jayon
+//============================================================
 prontera,247,129,3	script	Jayon	85,{
 	if(tu_merchant == 8){
 		mes "[Jayon]";
@@ -1181,7 +1151,6 @@ prontera,247,129,3	script	Jayon	85,{
 				getitem 501,10; //Red_Potion
 				close;
 			}
-			break;
 		case 2:
 			mes "[Jayon]";
 			mes "Just looking";
@@ -1191,7 +1160,6 @@ prontera,247,129,3	script	Jayon	85,{
 			mes "advantage of a real";
 			mes "deal when you see one!";
 			close;
-			break;
 		}
 	}
 
@@ -1229,7 +1197,6 @@ prontera,247,129,3	script	Jayon	85,{
 				getitem 501,10; //Red_Potion
 				close;
 			}
-			break;
 		case 2:
 			mes "[Jayon]";
 			mes "Just looking";
@@ -1240,7 +1207,6 @@ prontera,247,129,3	script	Jayon	85,{
 			mes "deal when you see one!";
 			close2;
 			end;
-			break;
 		}
 	}
 
@@ -1278,7 +1244,6 @@ prontera,247,129,3	script	Jayon	85,{
 				getitem 501,10; //Red_Potion
 				close;
 			}
-			break;
 		case 2:
 			mes "[Jayon]";
 			mes "Just looking";
@@ -1288,7 +1253,6 @@ prontera,247,129,3	script	Jayon	85,{
 			mes "advantage of a real";
 			mes "deal when you see one!";
 			close;
-			break;
 		}
 	}
 
@@ -1302,7 +1266,8 @@ prontera,247,129,3	script	Jayon	85,{
 	close;
 }
 
-//=================================================Maos====================================================
+// Maos
+//============================================================
 prt_in,251,129,3	script	Maos	709,{
 	if(tu_merchant == 8){
 		mes "[Maos]";
@@ -1334,12 +1299,10 @@ prt_in,251,129,3	script	Maos	709,{
 				getitem 501,10; //Red_Potion
 				close;
 			}
-			break;
 		case 2:
 			mes "[Maos]";
 			mes "Well, I can't force you to buy these, but I'm telling you that you're passing up a real bargain!";
 			close;
-			break;
 		}
 	}
 	if(tu_merchant == 7){
@@ -1371,12 +1334,10 @@ prt_in,251,129,3	script	Maos	709,{
 				getitem 501,10; //Red_Potion
 				close;
 			}
-			break;
 		case 2:
 			mes "[Maos]";
 			mes "Well, I can't force you to buy these, but I'm telling you that you're passing up a real bargain!";
 			close;
-			break;
 		}
 	}
 	if(tu_merchant == 6){
@@ -1408,12 +1369,10 @@ prt_in,251,129,3	script	Maos	709,{
 				getitem 501,10; //Red_Potion
 				close;
 			}
-			break;
 		case 2:
 			mes "[Maos]";
 			mes "Well, I can't force you to buy these, but I'm telling you that you're passing up a real bargain!";
 			close;
-			break;
 		}
 	}
 	mes "[Maos]";

+ 12 - 76
npc/quests/first_class/tu_sword.txt

@@ -17,8 +17,8 @@
 //= 1.4 Misc. updates. [L0ne_W0lf]
 //============================================================ 
 
-
-//=================================================Shurank====================================================
+// Shurank
+//============================================================
 izlude_in,82,163,3	script	Shurank	733,{
 	mes "[Shurank]";
 	if(Class == Job_Novice || Class == Job_Baby){
@@ -80,7 +80,6 @@ izlude_in,82,163,3	script	Shurank	733,{
 		mes "To improve your skills,";
 		mes "you must explore this vast world and experience all sorts of battle situations. And always commit yourself to your training.";
 		close;
-		break;
 	case 22:
 		mes "This will be my";
 		mes "final lecture to you.";
@@ -167,7 +166,6 @@ izlude_in,82,163,3	script	Shurank	733,{
 		completequest 8228;
 		getitem 1113,1; //Scimiter
 		close;
-		break;
 	case 21:
 		mes "Ah, you've returned. I've just received a communique from";
 		mes "Dequ'ee. It seems you've been working very hard and that you've made the most of this experience.";
@@ -210,11 +208,9 @@ izlude_in,82,163,3	script	Shurank	733,{
 		mes "I'll be here when you're ready to learn more.";
 		set tu_swordman, 22;
 		close;
-		break;
 	case 13:
 		mes "You should leave as soon as possible to meet Dequ'ee in Geffen. You do remember where to find him, don't you?";
 		close;
-		break;
 	case 12:
 		mes "So how has your";
 		mes "training for the Endure";
@@ -246,7 +242,6 @@ izlude_in,82,163,3	script	Shurank	733,{
 			mes "you to double your efforts!";
 			close;
 		}
-		break;
 	case 11:
 		mes "So have you";
 		mes "learned how to use";
@@ -306,7 +301,6 @@ izlude_in,82,163,3	script	Shurank	733,{
 			mes "I recommend that you learn it as soon as you can. Endure is an invaluable skill for any Swordman to have!";
 			close;
 		}
-		break;
 	case 10:
 		mes "The time has come";
 		mes "for me to tell you";
@@ -379,7 +373,6 @@ izlude_in,82,163,3	script	Shurank	733,{
 			mes "Hurry and meet with Dequ'ee and return to me when you complete whatever it is that he wishes for you to do.";
 			close;
 		}
-		break;
 	case 9:
 		mes "So have you been";
 		mes "learning more about";
@@ -416,7 +409,6 @@ izlude_in,82,163,3	script	Shurank	733,{
 			mes "I can continue my lectures.";
 			close;
 		}
-		break;
 	case 8:
 		mes "Ah, you've returned.";
 		mes "So how has your training";
@@ -477,7 +469,6 @@ izlude_in,82,163,3	script	Shurank	733,{
 			mes "Still haven't learned Provoke, eh? As a Swordman, I believe that it's important that you at least be able to use Provoke!";
 			close;
 		}
-		break;
 	case 7:
 		mes "Ah, you've returned. For a new Swordman, you are doing quite";
 		mes "well. So what is the message";
@@ -575,7 +566,6 @@ izlude_in,82,163,3	script	Shurank	733,{
 			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;
 		}
-		break;
 	case 6:
 		mes "I wish for you to find a Knight named ^5D478BDequ'ee^000000 in ^5D478BGeffen^000000. Listen carefully, this is the message";
 		mes "I want you to give him.";
@@ -597,7 +587,6 @@ izlude_in,82,163,3	script	Shurank	733,{
 		next;
 		warp "gef_fild07",35,192;
 		close;
-		break;
 	case 5:
 		mes "Ah, you've returned. I know I said that I would teach you what I know about the Provoke skill, but...";
 		next;
@@ -626,7 +615,6 @@ izlude_in,82,163,3	script	Shurank	733,{
 		set tu_swordman, 6;
 		changequest 8215,8216;
 		close;
-		break;
 	case 4:
 		mes "Since you've mastered Bash,";
 		mes "I feel that you're ready to learn more about Swordman skills.";
@@ -683,7 +671,6 @@ izlude_in,82,163,3	script	Shurank	733,{
 		mes "[Shurank]";
 		mes "By now, I believe that you know enough about the Increase HP Recovery skill. Next time, I shall teach you what I know about the Provoke skill.";
 		close;
-		break;
 	case 3:
 		mes "If you want to be";
 		mes "able to use the full";
@@ -711,7 +698,6 @@ izlude_in,82,163,3	script	Shurank	733,{
 			mes "use Bash quite well, but you are not a master of it yet. I encourage you to master Bash in order to unleash its true potential!";
 			close;
 		}
-		break;
 	case 2:
 		mes "I hope you've been";
 		mes "training yourself in using";
@@ -758,7 +744,6 @@ izlude_in,82,163,3	script	Shurank	733,{
 			mes "use Bash quite well, but you are not a master of it yet. I encourage you to master Bash in order to unleash its true potential!";
 			close;
 		}
-		break;
 	case 1:
 		mes "Have you been learning";
 		mes "the art of using Bash? I fervently believe that the Bash skill is the essense of Swordmanship!";
@@ -839,7 +824,6 @@ izlude_in,82,163,3	script	Shurank	733,{
 			mes "that skill!";
 			close;
 		}
-		break;
 	case 0:
 		mes "Ah, a comrade in arms.";
 		mes "Allow me to introduce myself. I am Shurank Chainlier, a Knight in the service of the Prontera Chivalry.";
@@ -933,14 +917,14 @@ izlude_in,82,163,3	script	Shurank	733,{
 			getitem 2503,1; //Muffler
 			close;
 		}
-		break;
 	}
 	mes "...";
 	mes "......";
 	close;
 }
 
-//=================================================Daqu'ee====================================================
+// Daqu'ee
+//============================================================
 geffen,154,143,3	script	Dequ'ee	734,{
 	if(BaseJob == Job_Novice){
 		mes "[Dequ'ee]";
@@ -1063,7 +1047,6 @@ geffen,154,143,3	script	Dequ'ee	734,{
 			mes "made up. You've got";
 			mes "to try it again!";
 			close;
-			break;
 		case 2:
 			mes "[Dequ'ee]";
 			mes "Bankley...?";
@@ -1084,7 +1067,6 @@ geffen,154,143,3	script	Dequ'ee	734,{
 			close2;
 			warp "moc_fild07",359,201;
 			end;
-			break;
 		case 3:
 			mes "[Dequ'ee]";
 			mes "Geil...?";
@@ -1094,7 +1076,6 @@ geffen,154,143,3	script	Dequ'ee	734,{
 			mes "made up. You've got";
 			mes "to try it again!";
 			close;
-			break;
 		case 4:
 			mes "[Dequ'ee]";
 			mes "Muetro...?";
@@ -1104,7 +1085,6 @@ geffen,154,143,3	script	Dequ'ee	734,{
 			mes "made up. You've got";
 			mes "to try it again!";
 			close;
-			break;
 		}
 	}
 	if(tu_swordman == 16){
@@ -1154,7 +1134,6 @@ geffen,154,143,3	script	Dequ'ee	734,{
 					mes "way it is now. Let's";
 					mes "try another combination.";
 					close;
-					break;
 				case 2:
 					mes "[Dequ'ee]";
 					mes "Muetro, Hans,";
@@ -1176,9 +1155,7 @@ geffen,154,143,3	script	Dequ'ee	734,{
 					mes "way it is now. Let's";
 					mes "try another combination.";
 					close;
-					break;
 				}
-				break;
 			case 2:
 				mes "[Dequ'ee]";
 				mes "Geil's...?";
@@ -1209,7 +1186,6 @@ geffen,154,143,3	script	Dequ'ee	734,{
 					mes "way it is now. Let's";
 					mes "try another combination.";
 					close;
-					break;
 				case 2:
 					mes "[Dequ'ee]";
 					mes "Muetro, Geil,";
@@ -1231,9 +1207,7 @@ geffen,154,143,3	script	Dequ'ee	734,{
 					mes "way it is now. Let's";
 					mes "try another combination.";
 					close;
-					break;
 				}
-				break;
 			case 3:
 				mes "[Dequ'ee]";
 				mes "Bankley's...?";
@@ -1264,7 +1238,6 @@ geffen,154,143,3	script	Dequ'ee	734,{
 					mes "way it is now. Let's";
 					mes "try another combination.";
 					close;
-					break;
 				case 2:
 					mes "[Dequ'ee]";
 					mes "Muetro, Bankley,";
@@ -1286,9 +1259,7 @@ geffen,154,143,3	script	Dequ'ee	734,{
 					mes "way it is now. Let's";
 					mes "try another combination.";
 					close;
-					break;
 				}
-				break;
 			}
 			break;
 		case 2:
@@ -1330,7 +1301,6 @@ geffen,154,143,3	script	Dequ'ee	734,{
 					mes "way it is now. Let's";
 					mes "try another combination.";
 					close;
-					break;
 				case 2:
 					mes "[Dequ'ee]";
 					mes "Hans, Muetro,";
@@ -1352,9 +1322,7 @@ geffen,154,143,3	script	Dequ'ee	734,{
 					mes "way it is now. Let's";
 					mes "try another combination.";
 					close;
-					break;
 				}
-				break;
 			case 2:
 				mes "[Dequ'ee]";
 				mes "Geil's...?";
@@ -1385,7 +1353,6 @@ geffen,154,143,3	script	Dequ'ee	734,{
 					mes "way it is now. Let's";
 					mes "try another combination.";
 					close;
-					break;
 				case 2:
 					mes "[Dequ'ee]";
 					mes "Hans, Geil,";
@@ -1407,9 +1374,7 @@ geffen,154,143,3	script	Dequ'ee	734,{
 					mes "way it is now. Let's";
 					mes "try another combination.";
 					close;
-					break;
 				}
-				break;
 			case 3:
 				mes "[Dequ'ee]";
 				mes "Bankley's...?";
@@ -1440,7 +1405,6 @@ geffen,154,143,3	script	Dequ'ee	734,{
 					mes "way it is now. Let's";
 					mes "try another combination.";
 					close;
-					break;
 				case 2:
 					mes "[Dequ'ee]";
 					mes "Hans, Bankley,";
@@ -1462,9 +1426,7 @@ geffen,154,143,3	script	Dequ'ee	734,{
 					mes "way it is now. Let's";
 					mes "try another combination.";
 					close;
-					break;
 				}
-				break;
 			}
 			break;
 		case 3:
@@ -1513,7 +1475,6 @@ geffen,154,143,3	script	Dequ'ee	734,{
 					mes "to formulate an algorithm!";
 					set tu_swordman, 17;
 					close;
-					break;
 				case 2:
 					mes "[Dequ'ee]";
 					mes "Geil, Muetro,";
@@ -1535,9 +1496,7 @@ geffen,154,143,3	script	Dequ'ee	734,{
 					mes "way it is now. Let's";
 					mes "try another combination.";
 					close;
-					break;
 				}
-				break;
 			case 2:
 				mes "[Dequ'ee]";
 				mes "Han's...?";
@@ -1568,7 +1527,6 @@ geffen,154,143,3	script	Dequ'ee	734,{
 					mes "way it is now. Let's";
 					mes "try another combination.";
 					close;
-					break;
 				case 2:
 					mes "[Dequ'ee]";
 					mes "Geil, Hans,";
@@ -1590,9 +1548,7 @@ geffen,154,143,3	script	Dequ'ee	734,{
 					mes "way it is now. Let's";
 					mes "try another combination.";
 					close;
-					break;
 				}
-				break;
 			case 3:
 				mes "[Dequ'ee]";
 				mes "Bankley's...?";
@@ -1623,7 +1579,6 @@ geffen,154,143,3	script	Dequ'ee	734,{
 					mes "way it is now. Let's";
 					mes "try another combination.";
 					close;
-					break;
 				case 2:
 					mes "[Dequ'ee]";
 					mes "Geil, Bankley,";
@@ -1645,9 +1600,7 @@ geffen,154,143,3	script	Dequ'ee	734,{
 					mes "way it is now. Let's";
 					mes "try another combination.";
 					close;
-					break;
 				}
-				break;
 			}
 			break;
 		case 4:
@@ -1689,7 +1642,6 @@ geffen,154,143,3	script	Dequ'ee	734,{
 					mes "way it is now. Let's";
 					mes "try another combination.";
 					close;
-					break;
 				case 2:
 					mes "[Dequ'ee]";
 					mes "Bankley, Muetro,";
@@ -1711,9 +1663,7 @@ geffen,154,143,3	script	Dequ'ee	734,{
 					mes "way it is now. Let's";
 					mes "try another combination.";
 					close;
-					break;
 				}
-				break;
 			case 2:
 				mes "[Dequ'ee]";
 				mes "Hans's...?";
@@ -1744,7 +1694,6 @@ geffen,154,143,3	script	Dequ'ee	734,{
 					mes "way it is now. Let's";
 					mes "try another combination.";
 					close;
-					break;
 				case 2:
 					mes "[Dequ'ee]";
 					mes "Bankley, Hans,";
@@ -1764,9 +1713,7 @@ geffen,154,143,3	script	Dequ'ee	734,{
 					mes "way it is now. Let's";
 					mes "try another combination.";
 					close;
-					break;
 				}
-				break;
 			case 3:
 				mes "[Dequ'ee]";
 				mes "Geil's...?";
@@ -1804,7 +1751,6 @@ geffen,154,143,3	script	Dequ'ee	734,{
 					mes "to formulate an algorithm!";
 					set tu_swordman, 18;
 					close;
-					break;
 				case 2:
 					mes "[Dequ'ee]";
 					mes "Bankley, Geil,";
@@ -1826,9 +1772,7 @@ geffen,154,143,3	script	Dequ'ee	734,{
 					mes "way it is now. Let's";
 					mes "try another combination.";
 					close;
-					break;
 				}
-				break;
 			}
 			break;
 		}
@@ -2044,7 +1988,6 @@ geffen,154,143,3	script	Dequ'ee	734,{
 					mes "be the message I'm supposed to receive from Shurack. I need his exact message or I can't send";
 					mes "a response...";
 					close;
-					break;
 				case 2:
 					mes "[" + strcharinfo(0) + "]";
 					mes "What are we";
@@ -2061,9 +2004,7 @@ geffen,154,143,3	script	Dequ'ee	734,{
 					mes "be the message I'm supposed to receive from Shurack. I need his exact message or I can't send";
 					mes "a response...";
 					close;
-					break;
 				}
-				break;
 			case 2:
 				mes "[" + strcharinfo(0) + "]";
 				mes "Did you figure out";
@@ -2087,7 +2028,6 @@ geffen,154,143,3	script	Dequ'ee	734,{
 					mes "be the message I'm supposed to receive from Shurack. I need his exact message or I can't send";
 					mes "a response...";
 					close;
-					break;
 				case 2:
 					mes "[" + strcharinfo(0) + "]";
 					mes "What are we";
@@ -2104,9 +2044,7 @@ geffen,154,143,3	script	Dequ'ee	734,{
 					mes "be the message I'm supposed to receive from Shurack. I need his exact message or I can't send";
 					mes "a response...";
 					close;
-					break;
 				}
-				break;
 			}
 			break;
 		case 2:
@@ -2141,7 +2079,6 @@ geffen,154,143,3	script	Dequ'ee	734,{
 					mes "be the message I'm supposed to receive from Shurack. I need his exact message or I can't send";
 					mes "a response...";
 					close;
-					break;
 				case 2:
 					mes "[" + strcharinfo(0) + "]";
 					mes "What are we";
@@ -2181,9 +2118,7 @@ geffen,154,143,3	script	Dequ'ee	734,{
 					next;
 					warp "izlude",35,78;
 					close;
-					break;
 				}
-				break;
 			case 2:
 				mes "[" + strcharinfo(0) + "]";
 				mes "Did you figure out";
@@ -2209,7 +2144,6 @@ geffen,154,143,3	script	Dequ'ee	734,{
 					mes "be the message I'm supposed to receive from Shurack. I need his exact message or I can't send";
 					mes "a response...";
 					close;
-					break;
 				case 2:
 					mes "[" + strcharinfo(0) + "]";
 					mes "What are we";
@@ -2229,9 +2163,7 @@ geffen,154,143,3	script	Dequ'ee	734,{
 					mes "be the message I'm supposed to receive from Shurack. I need his exact message or I can't send";
 					mes "a response...";
 					close;
-					break;
 				}
-				break;
 			}
 			break;
 		}
@@ -2243,7 +2175,8 @@ geffen,154,143,3	script	Dequ'ee	734,{
 	close;
 }
 
-//=================================================Geil====================================================
+// Geil
+//============================================================
 morocc_in,51,101,3	script	Geil	89,{
 	mes "[Geil]";
 	if(tu_swordman == 15){
@@ -2293,7 +2226,8 @@ morocc_in,51,101,3	script	Geil	89,{
 	close;
 }
 
-//=================================================Meutro====================================================
+// Meutro
+//============================================================
 morocc,82,292,5	script	Muetro	84,{
 	mes "[Muetro]";
 	if(tu_swordman == 15){
@@ -2333,7 +2267,8 @@ morocc,82,292,5	script	Muetro	84,{
 	close;
 }
 
-//=================================================Hans====================================================
+// Hans
+//============================================================
 morocc,240,72,3	script	Hans	86,{
 	mes "[Hans]";
 	if(tu_swordman == 15){
@@ -2390,7 +2325,8 @@ morocc,240,72,3	script	Hans	86,{
 	close;
 }
 
-//=================================================Bankley====================================================
+// Bankley
+//============================================================
 morocc_in,12,156,3	script	Bankley	97,{
 	if(tu_swordman > 19){
 		mes "^3355FFBankley had a pitiable";

+ 4 - 16
npc/quests/first_class/tu_thief01.txt

@@ -17,7 +17,8 @@
 //= 1.4 Misc. updates. [L0ne_W0lf]
 //============================================================ 
 
-//=================================================Thief Trainer====================================================
+// Thief Trainer
+//============================================================
 moc_ruins,66,164,4	script	Thief Trainer#T	84,{
 	mes "[Yierhan]";
 	if(Class == Job_Novice){
@@ -68,7 +69,6 @@ moc_ruins,66,164,4	script	Thief Trainer#T	84,{
 				mes "Yeah, right now!";
 				mes "But if you're not ready for some reason, I guess I can wait.";
 				close;
-				break;
 			}
 			mes "[Yierhan]";
 			mes "Alright, first of all, Thieves use melee attacks. Well, most of us do. There are a few who like using long range Bows. But all of us are good at bein' fast!";
@@ -91,7 +91,6 @@ moc_ruins,66,164,4	script	Thief Trainer#T	84,{
 				getexp 20,10;
 				specialeffect2 EF_HIT5;
 				close;
-				break;
 			case 2:
 				mes "[Yierhan]";
 				mes "Yeah, that's right! If you wanna increase your damage, you need";
@@ -108,7 +107,6 @@ moc_ruins,66,164,4	script	Thief Trainer#T	84,{
 				getexp 40,20;
 				specialeffect2 EF_HIT5;
 				close;
-				break;
 			case 3:
 				mes "[Yierhan]";
 				mes "Say whaaat? ^23238EDEX^000000 affects";
@@ -124,7 +122,6 @@ moc_ruins,66,164,4	script	Thief Trainer#T	84,{
 				getexp 20,10;
 				specialeffect2 EF_HIT5;
 				close;
-				break;
 			}
 		} else if(tu_thief01 == 1){
 			mes "Alright, enough about stats.";
@@ -350,7 +347,6 @@ moc_ruins,66,164,4	script	Thief Trainer#T	84,{
 						getexp 30,10;
 					}
 					close;
-					break;
 				}
 			}
 		} else if(tu_thief01 == 4){
@@ -427,7 +423,6 @@ moc_ruins,66,164,4	script	Thief Trainer#T	84,{
 						getexp 100,50;
 						specialeffect2 EF_HIT5;
 						close;
-						break;
 					case 2:
 						mes "[Yierhan]";
 						mes "Good!";
@@ -438,7 +433,6 @@ moc_ruins,66,164,4	script	Thief Trainer#T	84,{
 						getexp 50,20;
 						specialeffect2 EF_HIT5;
 						close;
-						break;
 					}
 				} else {
 					switch(select("It was nice to meet you.:Nope.")) {
@@ -458,7 +452,6 @@ moc_ruins,66,164,4	script	Thief Trainer#T	84,{
 						getexp 50,20;
 						specialeffect2 EF_HIT5;
 						close;
-						break;
 					case 2:
 						mes "[Yierhan]";
 						mes "Good!";
@@ -469,7 +462,6 @@ moc_ruins,66,164,4	script	Thief Trainer#T	84,{
 						getexp 50,20;
 						specialeffect2 EF_HIT5;
 						close;
-						break;
 					}
 				}
 			}
@@ -552,7 +544,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...?";
@@ -560,7 +551,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...!";
@@ -599,7 +589,6 @@ moc_ruins,66,164,4	script	Thief Trainer#T	84,{
 				set Zeny, Zeny + 5000;
 				getexp 800,300;
 				close;
-				break;
 			}
 		} else {
 			mes "[Yierhan]";
@@ -612,7 +601,7 @@ moc_ruins,66,164,4	script	Thief Trainer#T	84,{
 			next;
 			mes "[Yierhan]";
 			mes "I just like telling people to follow their dreams. So do it. Life without anything to look forward to is pretty boring, doncha think?";
-			close2;
+			close;
 		}
 	} else if(Class == Job_Mage || Class == Job_Mage_High || Class == Job_Wizard || Class == Job_High_Wizard || Class == Job_Sage || Class == Job_Professor){
 		if(tu_magician01 < 7){
@@ -724,8 +713,7 @@ moc_ruins,66,164,4	script	Thief Trainer#T	84,{
 				set tu_magician01, 27;
 				set Zeny, Zeny + 5000;
 				getexp 500,200;
-				close2;
-				break;
+				close;
 			}
 		} else {
 			mes "Just as I thought,";

+ 3 - 3
npc/quests/quests_13_1.txt

@@ -3,7 +3,7 @@
 //===== By: ================================================== 
 //= L0ne_W0lf
 //===== Current Version: ===================================== 
-//= 2.6
+//= 2.6a
 //===== Compatible With: ===================================== 
 //= rAthena SVN
 //===== Description: ========================================= 
@@ -44,6 +44,7 @@
 //= 2.5 Yet more optimization (-22kb). [Euphy]
 //= 2.5a Minor fixes. [Euphy]
 //= 2.6 Disabled "Ash Vacuum Warper" as it's no longer in iRO. [Euphy]
+//= 2.6a Added 'npcskill' command. [Euphy]
 //============================================================ 
 
 // Onward to the New World
@@ -8545,8 +8546,7 @@ mid_camp,69,144,0	script	Ferocious Gorurug	421,{
 			}
 		}
 		else if ((ep13_yong1 > 59) && (ep13_yong1 < 300)) {
-			skilleffect "AL_HEAL",816;
-			heal 816,0;
+			npcskill "AL_HEAL",8,50,50;
 			if (countitem(6039) > 9) {
 				mes "[Ferocious Gorurug]";
 				mes "You've brough Pieces of Fish!";

+ 3 - 4
npc/quests/thana_quest.txt

@@ -3,7 +3,7 @@
 //===== By: ==================================================
 //= Muad_Dib
 //===== Current Version: =====================================
-//= 1.0
+//= 1.0a
 //===== Compatible With: =====================================
 //= rAthena SVN
 //===== Description: =========================================
@@ -11,6 +11,7 @@
 //= Episode 13.1 Thanatos Tower quest.
 //===== Additional Comments: =================================
 //= 1.0 Adapted from official release. [Euphy]
+//= 1.0a Added 'npcskill' command. [Euphy]
 //============================================================
 
 hu_fild01,140,163,5	script	Tower Keeper	852,3,3,{
@@ -822,9 +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.";
-//				UseSkillToPC 28 10 50 70
-				percentheal 50,70;
-				specialeffect2 EF_HEAL;
+				npcskill "AL_HEAL",10,50,70;
 			}
 			close;
 		}

+ 3 - 4
npc/re/jobs/3-1/guillotine_cross.txt

@@ -3,7 +3,7 @@
 //===== By: ================================================== 
 //= Muad_Dib
 //===== Current Version: ===================================== 
-//= 1.0
+//= 1.0a
 //===== Compatible With: ===================================== 
 //= rAthena SVN r16945+
 //===== Description: ========================================= 
@@ -11,6 +11,7 @@
 //= Job change Quest from Assassin / Assassin Cross -> Guillotine Cross.
 //===== Additional Comments: ================================= 
 //= 1.0 Adapted from original script. [Euphy]
+//= 1.0a Added 'npcskill' command. [Euphy]
 //============================================================
 
 que_job01,75,96,3	script	Guild Member#3rdgc01	997,{
@@ -2482,9 +2483,7 @@ OnTouch:
 	select("......");
 	mes "[A man with black clothes]";
 	mes "May the goddess bless you eternally...";
-//	UseSkillToPC 34 0 0 0
-	specialeffect2 EF_BLESSING;
-	sc_start SC_BLESSING,60000,1;
+	npcskill "AL_BLESSING",10,0,0;
 	next;
 	emotion e_gasp;
 	mes "[A man with black clothes]";

+ 12 - 25
npc/re/jobs/3-1/rune_knight.txt

@@ -3,7 +3,7 @@
 //===== By: ==================================================
 //= L0ne_W0lf, Muad_Dib
 //===== Current Version: =====================================
-//= 1.3
+//= 1.3a
 //===== Compatible With: =====================================
 //= rAthena SVN
 //===== Description: =========================================
@@ -13,6 +13,7 @@
 //= 1.1 Added forgoten Header. [Masao]
 //= 1.2 Added Energy Rune item reward. [Masao]
 //= 1.3 Updated script, optimized. [Euphy]
+//= 1.3a Added 'npcskill' command. [Euphy]
 //============================================================
 
 prt_in,162,24,3	script	Splendid-Looking Knight	470,2,2,{
@@ -1810,15 +1811,12 @@ job3_rune02,34,46,5	script	Captain Tigris#jrt1	470,2,2,{
 	switch(rand(6)) {
 	case 0:
 		mapannounce "job3_rune02","Captain Tigris : May Beljeve bless you!",bc_map,"0xFFFF00"; //FW_NORMAL 12 0 0
-//		UseSkillToPC 34 0 0 0
-		unitskilluseid getnpcid(0),"AL_BLESSING",10,getcharid(3);
+		npcskill "AL_BLESSING",1,0,0;
 		break;
 	case 1:
 	case 2:
 		mapannounce "job3_rune02","Captain Tigris : The Spark of life... may flame again.",bc_map,"0xFFFF00"; //FW_NORMAL 12 0 0
-//		UseSkillToPC 28 8 70 99
-		percentheal 100,100;
-		skilleffect "AL_HEAL",9999;
+		npcskill "AL_HEAL",8,70,99;
 		break;
 	case 3:
 		mapannounce "job3_rune02","Captain Tigris : Evil demons! I will send you back to your graves!",bc_map,"0xFFFF00"; //FW_NORMAL 12 0 0
@@ -1859,20 +1857,16 @@ job3_rune02,43,46,3	script	Rune Knight Lunarea#jrt1	469,2,2,{
 	switch(rand(6)) {
 	case 0:
 		mapannounce "job3_rune02","Rune Knight Lunarea : Quickly... find and strike at the enemy's weakness!",bc_map,"0xFFFF00"; //FW_NORMAL 12 0 0
-//		UseSkillToPC 29 0 0 0
-		unitskilluseid getnpcid(0),"AL_INCAGI",10,getcharid(3);
+		npcskill "AL_INCAGI",1,0,0;
 		break;
 	case 1:
 	case 2:
 		mapannounce "job3_rune02","Rune Knight Lunarea : It's not over... you need more power...",bc_map,"0xFFFF00"; //FW_NORMAL 12 0 0
-//		UseSkillToPC 28 8 60 90
-		percentheal 100,100;
-		skilleffect "AL_HEAL",9999;
+		npcskill "AL_HEAL",8,60,90;
 		break;
 	case 3:
 		mapannounce "job3_rune02","Rune Knight Lunarea : Everything starts from the beginning!",bc_map,"0xFFFF00"; //FW_NORMAL 12 0 0
-//		UseSkillToPC 35 0 0 0
-		unitskilluseid getnpcid(0),"AL_CURE",1,getcharid(3);
+		npcskill "AL_CURE",1,0,0;
 		break;
 	case 4:
 		mapannounce "job3_rune02","Rune Knight Lunarea : There can't be growth without a trial.",bc_map,"0xFFFF00"; //FW_NORMAL 12 0 0
@@ -1908,15 +1902,12 @@ job3_rune02,43,34,1	script	Rune Knight Renoa#jrt1	469,2,2,{
 	switch(rand(6)) {
 	case 0:
 		mapannounce "job3_rune02","Rune Knight Renoa : The rune of Wind! May it give you strength!",bc_map,"0xFFFF00"; //FW_NORMAL 12 0 0
-//		UseSkillToPC 29 0 0 0
-		unitskilluseid getnpcid(0),"AL_INCAGI",10,getcharid(3);
+		npcskill "AL_INCAGI",1,0,0;
 		break;
 	case 1:
 	case 2:
 		mapannounce "job3_rune02","Rune Knight Renoa : The rune of Birth! May give you the power of life!",bc_map,"0xFFFF00"; //FW_NORMAL 12 0 0
-//		UseSkillToPC 28 8 60 90
-		percentheal 100,100;
-		skilleffect "AL_HEAL",9999;
+		npcskill "AL_HEAL",8,60,90;
 		break;
 	case 3:
 		mapannounce "job3_rune02","Rune Knight Renoa : I am faster than all of them! Different then the others!",bc_map,"0xFFFF00"; //FW_NORMAL 12 0 0
@@ -1957,20 +1948,16 @@ job3_rune02,34,34,7	script	Rune Knight Velpino#jrt1	468,2,2,{
 	switch(rand(6)) {
 	case 0:
 		mapannounce "job3_rune02","Rune Knight Velpino : You are not one who gets to fall down in this kind of place.",bc_map,"0xFFFF00"; //FW_NORMAL 12 0 0
-//		UseSkillToPC 28 8 60 90
-		percentheal 100,100;
-		skilleffect "AL_HEAL",9999;
+		npcskill "AL_HEAL",8,60,90;
 		break;
 	case 1:
 	case 2:
 		mapannounce "job3_rune02","Rune Knight Velpino : Move on! There are obstacles to overcome.",bc_map,"0xFFFF00"; //FW_NORMAL 12 0 0
-//		UseSkillToPC 29 0 0 0
-		unitskilluseid getnpcid(0),"AL_INCAGI",10,getcharid(3);
+		npcskill "AL_INCAGI",1,0,0;
 		break;
 	case 3:
 		mapannounce "job3_rune02","Rune Knight Velpino : You are not alone. We are by your side.",bc_map,"0xFFFF00"; //FW_NORMAL 12 0 0
-//		UseSkillToPC 34 0 0 0
-		unitskilluseid getnpcid(0),"AL_BLESSING",10,getcharid(3);
+		npcskill "AL_BLESSING",1,0,0;
 		break;
 	case 4:
 		mapannounce "job3_rune02","Rune Knight Velpino : Fight and win! Don't give in to the pain!",bc_map,"0xFFFF00"; //FW_NORMAL 12 0 0

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

@@ -3,7 +3,7 @@
 //===== By: ==================================================
 //= Kisuka
 //===== Current Version: =====================================
-//= 1.4
+//= 1.4a
 //===== Compatible With: =====================================
 //= rAthena SVN
 //===== Description: =========================================
@@ -15,6 +15,7 @@
 //= 1.2 Cleaning. [Euphy]
 //= 1.3 Fixed Eden Group Officer's level requirement. [Joseph]
 //= 1.4 Fixed checkquest to check quest accordingly. [Joseph]
+//= 1.4a Added 'npcskill' command. [Euphy]
 //============================================================
 
 // Sprakki (Stard of Novice Training Ground, Outside Castle)
@@ -932,8 +933,7 @@ 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.";
-		percentheal 100,100;
-		skilleffect 28,9999;
+		npcskill "AL_HEAL",10,99,60;
 		close;
 	}
 	mes "[Brade]";
@@ -946,8 +946,7 @@ 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.";
-	percentheal 100,100;
-	skilleffect 28,9999;
+	npcskill "AL_HEAL",10,99,60;
 	close;
 }
 

+ 8 - 8
npc/re/mobs/dungeons/mal_dun.txt

@@ -3,22 +3,22 @@
 //===== By: ==================================================
 //= Chilly
 //===== Current Version: =====================================
-//= 1.0
+//= 1.1
 //===== Compatible With: =====================================
 //= rAthena SVN
 //===== Description: =========================================
 //= Official kRO monster spawns
 //===== Additional Comments: =================================
 //= 1.0 First Release
+//= 1.1 Updated to official script. [Euphy]
 //============================================================
 
 //==================================================
 // mal_dun01 - Lagoon in the Stars
 //==================================================
-mal_dun01,0,0,0,0	monster	Crab	1073,20,0,0,0
-mal_dun01,0,0,0,0	monster	Shellfish	1074,20,0,0,0
-mal_dun01,0,0,0,0	monster	Aster	1266,20,0,0,0
-mal_dun01,0,0,0,0	monster	Red Eruma	2197,120,0,0,0
-mal_dun01,0,0,0,0	monster	Siorava	2199,80,0,0,0
-mal_dun01,0,0,0,0	monster	Wild Rider	2208,1,20000,10000,1
-mal_dun01,0,0,0,0	monster	King Dramoh	2198,1,30000,20000,1
+mal_dun01,0,0,0,0	monster	Crab	1073,10,5000,0,0
+mal_dun01,0,0,0,0	monster	Shellfish	1074,10,5000,0,0
+mal_dun01,0,0,0,0	monster	Aster	1266,20,5000,0,0
+mal_dun01,0,0,0,0	monster	Red Eruma	2197,60,5000,0,0
+mal_dun01,0,0,0,0	monster	Siorava	2199,45,5000,0,0
+mal_dun01,0,0,0,0	monster	Wild Rider	2208,1,5000,0,0

+ 20 - 19
npc/re/quests/eden/eden_quests.txt

@@ -3,7 +3,7 @@
 //===== By: ==================================================
 //= L0ne_W0lf
 //===== Current Version: =====================================
-//= 1.3
+//= 1.4a
 //===== Compatible With: =====================================
 //= rAthena SVN
 //===== Description: =========================================
@@ -16,6 +16,7 @@
 //= 1.3 Added Instructor Ur and the new Quests which come
 //= alongside him. Special thanks to Chilly for the base. [Masao]
 //= 1.4 Partial cleaning and bug fixing. [Euphy]
+//= 1.4a Added 'npcskill' command. [Euphy]
 //============================================================
 
 moc_para01,25,35,4	script	Instructor Boya#para01	469,{
@@ -1182,7 +1183,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.-";
-//		UseSkillToPC 28 10 99 60;
+		npcskill "AL_HEAL",10,99,60;
 		percentheal 100,100;
 		close;
 	}
@@ -1220,7 +1221,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.-";
-//		UseSkillToPC 28 10 99 60;
+		npcskill "AL_HEAL",10,99,60;
 		percentheal 100,100;
 		close;
 	}
@@ -1276,7 +1277,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.-";
-//		UseSkillToPC 28 10 99 60;
+		npcskill "AL_HEAL",10,99,60;
 		percentheal 100,100;
 		close;
 	}
@@ -1422,7 +1423,7 @@ 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.";
-//		UseSkillToPC 28 10 99 60;
+		npcskill "AL_HEAL",10,99,60;
 		percentheal 0,100;
 		close;
 	}
@@ -1460,7 +1461,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..";
-//		UseSkillToPC 28 10 99 60;
+		npcskill "AL_HEAL",10,99,60;
 		percentheal 100,100;
 		close;
 	}
@@ -1495,7 +1496,7 @@ 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..";
-//		UseSkillToPC 28 10 99 60;
+		npcskill "AL_HEAL",10,99,60;
 		percentheal 0,100;
 		close;
 	}
@@ -1607,7 +1608,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.";
-//		UseSkillToPC 28 10 99 60;
+		npcskill "AL_HEAL",10,99,60;
 		percentheal 100,100;
 		close;
 	}
@@ -1638,7 +1639,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.";
-//		UseSkillToPC 28 10 99 60;
+		npcskill "AL_HEAL",10,99,60;
 		percentheal 0,100;
 		close;
 	}
@@ -1761,7 +1762,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.";
-//		UseSkillToPC 28 10 99 60;
+		npcskill "AL_HEAL",10,99,60;
 		percentheal 100,100;
 		close;
 	}
@@ -1800,7 +1801,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.";
-//		UseSkillToPC 28 10 99 60;
+		npcskill "AL_HEAL",10,99,60;
 		percentheal 100,100;
 		close;
 	}
@@ -1828,7 +1829,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.";
-//		UseSkillToPC 28 10 99 60;
+		npcskill "AL_HEAL",10,99,60;
 		percentheal 100,100;
 		close;
 	}
@@ -1943,7 +1944,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.";
-//		UseSkillToPC 28 10 99 60;
+		npcskill "AL_HEAL",10,99,60;
 		percentheal 100,100;
 		close;
 	}
@@ -1974,7 +1975,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.";
-//		UseSkillToPC 28 10 99 60;
+		npcskill "AL_HEAL",10,99,60;
 		percentheal 100,100;
 		close;
 	}
@@ -2000,7 +2001,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.";
-//		UseSkillToPC 28 10 99 60;
+		npcskill "AL_HEAL",10,99,60;
 		percentheal 100,100;
 		close;
 	}
@@ -2073,7 +2074,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.";
-//		UseSkillToPC 28 10 99 60;
+		npcskill "AL_HEAL",10,99,60;
 		percentheal 100,100;
 		close;
 	}
@@ -2097,7 +2098,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.";
-//		UseSkillToPC 28 10 99 60;
+		npcskill "AL_HEAL",10,99,60;
 		percentheal 100,100;
 		close;
 	}
@@ -2201,7 +2202,7 @@ 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.";
-//		UseSkillToPC 28 10 99 60;
+		npcskill "AL_HEAL",10,99,60;
 		percentheal 0,100;
 		close;
 	}
@@ -2235,7 +2236,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.";
-//		UseSkillToPC 28 10 99 60
+		npcskill "AL_HEAL",10,99,60;
 		percentheal 100,100;
 		close;
 	}

+ 11 - 0
src/map/pc.c

@@ -7231,6 +7231,17 @@ int pc_jobchange(struct map_session_data *sd,int job, int upper)
 	sd->class_ = (unsigned short)b_class;
 	sd->status.job_level=1;
 	sd->status.job_exp=0;
+
+	if (sd->status.base_level > pc_maxbaselv(sd)) {
+		sd->status.base_level = pc_maxbaselv(sd);
+		sd->status.base_exp=0;
+		pc_resetstate(sd);
+		clif_updatestatus(sd,SP_STATUSPOINT);
+		clif_updatestatus(sd,SP_BASELEVEL);
+		clif_updatestatus(sd,SP_BASEEXP);
+		clif_updatestatus(sd,SP_NEXTBASEEXP);
+	}
+
 	clif_updatestatus(sd,SP_JOBLEVEL);
 	clif_updatestatus(sd,SP_JOBEXP);
 	clif_updatestatus(sd,SP_NEXTJOBEXP);

+ 6 - 6
src/map/script.c

@@ -17268,9 +17268,9 @@ BUILDIN_FUNC(cleanmap)
 	return 0;
 }
 /* Cast a skill on the attached player.
- * useskilltopc <skill_id>, <skill_level>, <stat_point>, <npc_level>;
- * useskilltopc "<skill_name>", <skill_level>, <stat_point>, <npc_level>; */
-BUILDIN_FUNC(useskilltopc)
+ * npcskill <skill id>, <skill lvl>, <stat point>, <NPC level>;
+ * npcskill "<skill name>", <skill lvl>, <stat point>, <NPC level>; */
+BUILDIN_FUNC(npcskill)
 {
 	unsigned int skill_id;
 	unsigned short skill_level;
@@ -17287,11 +17287,11 @@ BUILDIN_FUNC(useskilltopc)
 	nd			= (struct npc_data *)map_id2bl(sd->npc_id);
 
 	if (stat_point > battle_config.max_third_parameter) {
-		ShowError("useskilltopc: stat point exceeded maximum of %d.\n",battle_config.max_third_parameter );
+		ShowError("npcskill: stat point exceeded maximum of %d.\n",battle_config.max_third_parameter );
 		return 1;
 	}
 	if (npc_level > MAX_LEVEL) {
-		ShowError("useskilltopc: level exceeded maximum of %d.\n", MAX_LEVEL);
+		ShowError("npcskill: level exceeded maximum of %d.\n", MAX_LEVEL);
 		return 1;
 	}
 	if (sd == NULL || nd == NULL) { //ain't possible, but I don't trust people.
@@ -17758,7 +17758,7 @@ struct script_function buildin_func[] = {
 	BUILDIN_DEF(getrandgroupitem,"ii"),
 	BUILDIN_DEF(cleanmap,"s"),
 	BUILDIN_DEF2(cleanmap,"cleanarea","siiii"),
-	BUILDIN_DEF(useskilltopc,"viii"),
+	BUILDIN_DEF(npcskill,"viii"),
 	/**
 	 * @commands (script based)
 	 **/

+ 7 - 0
src/map/unit.c

@@ -1276,6 +1276,10 @@ int unit_skilluse_id2(struct block_list *src, int target_id, short skill_num, sh
 	casttime = skill_vfcastfix(src, casttime, skill_num, skill_lv);
 #endif
 
+	if (src->type == BL_NPC) { // NPC-objects do not have cast time
+		casttime = 0;
+	}
+
 	if(!ud->state.running) //need TK_RUN or WUGDASH handler to be done before that, see bugreport:6026
 		unit_stop_walking(src,1);// eventhough this is not how official works but this will do the trick. bugreport:6829
 	// in official this is triggered even if no cast time.
@@ -1439,6 +1443,9 @@ int unit_skilluse_pos2( struct block_list *src, short skill_x, short skill_y, sh
 	casttime = skill_vfcastfix(src, casttime, skill_num, skill_lv );
 #endif
 
+	if (src->type == BL_NPC) { // NPC-objects do not have cast time
+		casttime = 0;
+	}
 
 	ud->state.skillcastcancel = castcancel&&casttime>0?1:0;
 	if( !sd || sd->skillitem != skill_num || skill_get_cast(skill_num,skill_lv) )