Quellcode durchsuchen

* Added a small portion of official Malangdo Episode scripts.
* Updated quest_db with translated Malangdo entries.
* Fixed strmobinfo() to output empty strings for 'name' instead of zeros (partly follow-up r17055).

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

euphyy vor 12 Jahren
Ursprung
Commit
96e8979569

+ 93 - 12
db/quest_db.txt

@@ -20,6 +20,17 @@
 1014,0,0,0,0,0,0,0,"Job Change to Swordman"
 1015,0,0,0,0,0,0,0,"Your first quest"
 1016,0,0,0,0,0,0,0,"Gaining base levels"
+1145,0,0,0,0,0,0,0,"Help the poor cat"
+1146,0,0,0,0,0,0,0,"Help the poor cat"
+1147,0,0,0,0,0,0,0,"Help the poor cat"
+1148,0,0,0,0,0,0,0,"Help the poor cat"
+1149,0,0,0,0,0,0,0,"Help the poor cat"
+1150,0,0,0,0,0,0,0,"Help the poor cat"
+1151,0,0,0,0,0,0,0,"Help the poor cat"
+1152,86400,0,0,0,0,0,0,"Help the poor cat"
+1153,0,0,0,0,0,0,0,"Help the poor cat"
+1154,0,2197,20,0,0,0,0,"Help the poor cat"
+1155,0,0,0,0,0,0,0,"Help the poor cat"
 2000,0,0,0,0,0,0,0,"Job Change to Blacksmith"
 2001,0,0,0,0,0,0,0,"Job Change to Blacksmith"
 2002,0,0,0,0,0,0,0,"Job Change to Blacksmith"
@@ -448,7 +459,6 @@
 
 5000,0,0,0,0,0,0,0,"The Crow of the Fate - 7"
 
-// Dewata [Euphy]
 5035,0,0,0,0,0,0,0,"Help the old man!"
 5036,0,0,0,0,0,0,0,"Help the old man!"
 5037,0,0,0,0,0,0,0,"Help the old man!"
@@ -469,17 +479,31 @@
 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"
-9155,0,0,0,0,0,0,0,"Getting materials for the Jaty Crown"
-9156,0,0,0,0,0,0,0,"Make the Jaty Crown"
-9157,0,0,0,0,0,0,0,"Reward from Sage, Kasyapa"
-9158,0,0,0,0,0,0,0,"Delivery of Good News(1)"
-9159,0,0,0,0,0,0,0,"Back to Paiko"
-9160,0,0,0,0,0,0,0,"Delivery of Good News(2)"
-9161,0,0,0,0,0,0,0,"Back to Paiko"
-9162,0,0,0,0,0,0,0,"Delivery of Good News(3)"
-9163,0,0,0,0,0,0,0,"Back to Paiko"
-9164,0,0,0,0,0,0,0,"Delivery of Good News(4)"
-9165,0,0,0,0,0,0,0,"Reward from Paiko for success of Jaty Crown"
+5058,0,0,0,0,0,0,0,"State of mind-(1)"
+5059,0,0,0,0,0,0,0,"State of mind-(1)"
+5060,180,0,0,0,0,0,0,"Cat Shock"
+5061,0,0,0,0,0,0,0,"State of mind-(1)"
+5062,0,0,0,0,0,0,0,"State of mind-(1)"
+5063,0,0,0,0,0,0,0,"State of mind-(1)"
+5064,0,0,0,0,0,0,0,"State of mind-(1)"
+5065,0,0,0,0,0,0,0,"State of mind-(1)"
+5066,0,0,0,0,0,0,0,"State of mind-(1)"
+5067,0,0,0,0,0,0,0,"State of mind-(1)"
+5068,72000,0,0,0,0,0,0,"State of mind-(1)"
+5069,3600,0,0,0,0,0,0,"State of mind-(1)"
+5070,86400,0,0,0,0,0,0,"Rock Paper Scissors"
+5071,86400,0,0,0,0,0,0,"Chamchamcham"
+5072,86400,0,0,0,0,0,0,"Kkongnyangkkong"
+5073,86400,0,0,0,0,0,0,"Sub Quest Games"
+5074,0,0,0,0,0,0,0,"Sub Quest Games"
+5075,0,0,0,0,0,0,0,"Sub Quest Games"
+5076,0,1282,30,0,0,0,0,"Sub Quest Games"
+5077,0,1209,10,0,0,0,0,"Sub Quest Games"
+5078,0,1019,50,0,0,0,0,"Sub Quest Games"
+5079,0,0,0,0,0,0,0,"Sub Quest Games"
+5080,0,0,0,0,0,0,0,"Sub Quest Games"
+5081,0,0,0,0,0,0,0,"Sub Quest Games"
+5082,0,0,0,0,0,0,0,"Sub Quest Games"
 5092,0,0,0,0,0,0,0,"Unlocking the Ultimate Mediocrity"
 5093,0,0,0,0,0,0,0,"Unlocking the Ultimate Mediocrity"
 5094,0,1002,1000,0,0,0,0,"Unlocking the Ultimate Mediocrity"
@@ -744,6 +768,15 @@
 7240,0,0,0,0,0,0,0,"Strengthening Equipment"
 7241,86400,0,0,0,0,0,0,"Toren's Errands - Tomorrow"
 
+7260,0,0,0,0,0,0,0,"Occurrence of insect origin"
+7261,0,0,0,0,0,0,0,"Cat Cookies - Table"
+7262,0,0,0,0,0,0,0,"Cat Cookies - Mattress"
+7263,0,0,0,0,0,0,0,"Cat Cookies - Grill"
+7264,0,0,0,0,0,0,0,"Cat Chef"
+7265,0,0,0,0,0,0,0,"Cat Chef Anger"
+7266,0,0,0,0,0,0,0,"Cat Chef Intentions"
+7276,86400,0,0,0,0,0,0,"Food delivery promise"
+
 8000,0,0,0,0,0,0,0,"Quitting Job Change"
 8001,0,0,0,0,0,0,0,"Job Change to Assassin"
 8002,0,0,0,0,0,0,0,"Job Change to Assassin"
@@ -1057,6 +1090,18 @@
 9031,0,0,0,0,0,0,0,"Find a puppy"
 9032,86400,0,0,0,0,0,0,"Find a puppy"
 
+9155,0,0,0,0,0,0,0,"Getting materials for the Jaty Crown"
+9156,0,0,0,0,0,0,0,"Make the Jaty Crown"
+9157,0,0,0,0,0,0,0,"Reward from Sage, Kasyapa"
+9158,0,0,0,0,0,0,0,"Delivery of Good News(1)"
+9159,0,0,0,0,0,0,0,"Back to Paiko"
+9160,0,0,0,0,0,0,0,"Delivery of Good News(2)"
+9161,0,0,0,0,0,0,0,"Back to Paiko"
+9162,0,0,0,0,0,0,0,"Delivery of Good News(3)"
+9163,0,0,0,0,0,0,0,"Back to Paiko"
+9164,0,0,0,0,0,0,0,"Delivery of Good News(4)"
+9165,0,0,0,0,0,0,0,"Reward from Paiko for success of Jaty Crown"
+
 10000,0,0,0,0,0,0,0,"To the Prontera Royal Court"
 10001,0,0,0,0,0,0,0,"Qualification Test"
 10002,0,0,0,0,0,0,0,"Qualification Review"
@@ -1354,6 +1399,42 @@
 11175,7200,0,0,0,0,0,0,"Supply Shortage"
 11176,0,0,0,0,0,0,0,"For my friends"
 
+11209,0,0,0,0,0,0,0,"Hardships of Thomas"
+11210,0,0,0,0,0,0,0,"Malangdo Reunion"
+11211,0,0,0,0,0,0,0,"Malangdo Reunion"
+11212,0,0,0,0,0,0,0,"Malangdo Reunion"
+11213,0,0,0,0,0,0,0,"Malangdo Reunion"
+11214,0,0,0,0,0,0,0,"Malangdo Reunion"
+11215,0,0,0,0,0,0,0,"Malangdo Reunion"
+11216,0,0,0,0,0,0,0,"Malangdo Reunion"
+11217,0,0,0,0,0,0,0,"Malangdo Reunion"
+11218,0,0,0,0,0,0,0,"Malangdo Reunion"
+11219,0,0,0,0,0,0,0,"Malangdo Reunion"
+11220,0,0,0,0,0,0,0,"Malangdo Reunion"
+11221,0,0,0,0,0,0,0,"Repair of cracks"
+11222,0,0,0,0,0,0,0,"Repair of cracks"
+11223,0,0,0,0,0,0,0,"Repair of cracks"
+11224,0,0,0,0,0,0,0,"Repair of cracks"
+11225,0,0,0,0,0,0,0,"Repair of cracks"
+11226,0,0,0,0,0,0,0,"Repair of cracks"
+11227,0,0,0,0,0,0,0,"Repair of cracks"
+11228,0,0,0,0,0,0,0,"Repair of cracks"
+11229,0,0,0,0,0,0,0,"Repair of cracks"
+11230,0,0,0,0,0,0,0,"Repair of cracks"
+11231,0,0,0,0,0,0,0,"Repair of cracks"
+11232,0,0,0,0,0,0,0,"Repair of cracks"
+11233,0,0,0,0,0,0,0,"Repair of cracks"
+11234,0,0,0,0,0,0,0,"Repair of cracks"
+11235,0,0,0,0,0,0,0,"Repair of cracks"
+11236,0,0,0,0,0,0,0,"Repair of cracks"
+11237,0,0,0,0,0,0,0,"Repair of cracks"
+11238,0,0,0,0,0,0,0,"Malangdo Fruits"
+11239,86400,0,0,0,0,0,0,"Malangdo Fruits"
+11240,0,0,0,0,0,0,0,"Repair of cracks"
+11241,0,0,0,0,0,0,0,"Repair of cracks"
+11242,0,0,0,0,0,0,0,"Repair of cracks"
+11243,86400,0,0,0,0,0,0,"Repair of cracks"
+
 12000,0,0,0,0,0,0,0,"An old friend"
 12001,0,0,0,0,0,0,0,"Digotz, Maku's old friend"
 12002,0,0,0,0,0,0,0,"Messenger of Friendship"

+ 1 - 1
npc/custom/breeder.txt

@@ -33,7 +33,7 @@ prontera,124,201,1	script	Universal Rental NPC	726,{
 	else {
 		message strcharinfo(0),"You do not meet requirements to rent.";
 		close; }
-	specialeffect2 276;
+	specialeffect2 EF_TEIHIT3;
 	close;
 }
 

+ 3 - 3
npc/custom/healer.txt

@@ -21,13 +21,13 @@
 	if (.@Price) {
 		message strcharinfo(0),"Healing costs "+.@Price+" Zeny.";
 		if (Zeny < .@Price) end;
-		if(select("^0055FFHeal^000000:^777777Cancel^000000")==2) close;
+		if(select("^0055FFHeal^000000:^777777Cancel^000000") == 2) close;
 		set Zeny, Zeny-.@Price;
 	}
 	specialeffect2 313; percentheal 100,100;
 	if (.@Buffs) {
-		specialeffect2 37; sc_start SC_INCREASEAGI,240000,10;
-		specialeffect2 42; sc_start SC_BLESSING,240000,10;
+		specialeffect2 EF_INCAGILITY; sc_start SC_INCREASEAGI,240000,10;
+		specialeffect2 EF_BLESSING; sc_start SC_BLESSING,240000,10;
 	}
 	if (.@Delay) set @HD, gettimetick(2)+.@Delay;
 	close;

+ 1 - 1
npc/custom/itemmall.txt

@@ -3,7 +3,7 @@
 //===== By: ==================================================
 //= Masao
 //===== Current Version: =====================================
-//= 1.0 [Masao]
+//= 1.0
 //===== Compatible With: =====================================
 //= rAthena SVN
 //===== Description: =========================================

+ 46 - 25
npc/custom/jobmaster.txt

@@ -20,13 +20,16 @@ function Job_Menu; function A_An;
 	mes "[Job Master]";
 	if (Class > 4049) {
 		mes "No more jobs are available.";
-		close; }
+		close;
+	}
 	if (checkfalcon() || checkcart() || checkriding() || ismounting()) {
 		mes "Please remove your "+((checkfalcon())?"falcon":"")+((checkcart())?"cart":"")+((checkriding())?"Peco":"")+((ismounting())?"mount":"")+" before proceeding.";
-		close; }
+		close;
+	}
 	if (.SkillPointCheck && SkillPoint) {
 		mes "Please use all your skill points before proceeding.";
-		close; }
+		close;
+	}
 
 	set .@eac, eaclass();
 	set .@i, ((.ThirdClass)?roclass(.@eac&EAJ_UPPERMASK):Class);
@@ -34,12 +37,14 @@ function Job_Menu; function A_An;
 		if (BaseLevel < .Rebirth[0] || JobLevel < .Rebirth[1]) {
 			set .@blvl, .Rebirth[0]-BaseLevel; set .@jlvl, .Rebirth[1]-JobLevel;
 			mes "You need "+((.@blvl>0)?.@blvl+" more base levels "+((.@jlvl>0)?"/ ":""):"")+((.@jlvl>0)?.@jlvl+" more job levels ":"")+"to continue.";
-			close; }
+			close;
+		}
 		if (Class > 21) {
 			mes "Switch to third class?";
 			next;
 			Job_Menu(roclass(.@eac|EAJL_THIRD));
-			close; }
+			close;
+		}
 		while(1) {
 			mes "Select an option.";
 			next;
@@ -49,7 +54,9 @@ function Job_Menu; function A_An;
 			mes "Are you sure?";
 			next;
 			Job_Menu(((.@i==1)?4001:roclass(.@eac|EAJL_THIRD)));
-			mes "[Job Master]"; } }
+			mes "[Job Master]";
+		}
+	}
 	set .@j1, roclass(.@eac|EAJL_2_1); set .@j2,roclass(.@eac|EAJL_2_2);
 	if ((.@eac&EAJ_UPPERMASK) == EAJ_SUPER_NOVICE) setarray .@exp[0],roclass(.@eac|EAJL_THIRD),99;
 	if (Class == Job_Ninja) setarray .@exp[0],.@j1,70;
@@ -57,28 +64,33 @@ function Job_Menu; function A_An;
 		if (BaseLevel < .Rebirth[0] || JobLevel < .@exp[1]) {
 			set .@blvl, .Rebirth[0]-BaseLevel; set .@jlvl, .@exp[1]-JobLevel;
 			mes "You need "+((.@blvl>0)?.@blvl+" more base levels "+((.@jlvl>0)?"/ ":""):"")+((.@jlvl>0)?.@jlvl+" more job levels ":"")+"to continue.";
-			close; }
+			close;
+		}
 		mes "Switch to "+jobname(.@exp[0])+"?";
 		next;
 		Job_Menu(.@exp[0]);
-		close; }
+		close;
+	}
 	if (.@eac&EAJL_2)
 		if (.@eac&(EAJL_UPPER|EAJL_BABY) || roclass(.@eac|EAJL_UPPER) == -1) {
 			mes "No more jobs are available.";
-			close; }
+			close;
+		}
 	if ((.@eac&EAJ_BASEMASK) == EAJ_NOVICE) {
 		if (JobLevel < .JobReq[0])
 			mes "A job level of "+.JobReq[0]+" is required to change into the 1st Class.";
 		else if (Class == 4001 && .LastJob && lastJob) {
 			mes "Switch classes now?";
 			next;
-			Job_Menu(roclass((eaclass(lastJob)&EAJ_BASEMASK)|EAJL_UPPER)); }
-		else switch(Class) {
+			Job_Menu(roclass((eaclass(lastJob)&EAJ_BASEMASK)|EAJL_UPPER));
+		} else switch(Class) {
 			case 0: Job_Menu(1,2,3,4,5,6,23,4046,24,25,4023);
 			case 4001: Job_Menu(4002,4003,4004,4005,4006,4007);
 			case 4023: Job_Menu(4024,4025,4026,4027,4028,4029,4045);
-			default: mes "An error has occurred."; break; }
-		close; }
+			default: mes "An error has occurred."; break;
+		}
+		close;
+	}
 	if (roclass(.@eac|EAJL_2_1) == -1 || roclass(.@eac|EAJL_2_2) == -1)
 		mes "No more jobs are available.";
 	else if (!(.@eac&EAJL_2) && JobLevel < .JobReq[1])
@@ -86,8 +98,9 @@ function Job_Menu; function A_An;
 	else if (.LastJob && lastJob && (.@eac&EAJL_UPPER)) {
 		mes "Switch classes now?";
 		next;
-		Job_Menu(lastJob+4001); }
-	else Job_Menu(.@j1,.@j2);
+		Job_Menu(lastJob+4001);
+	} else
+		Job_Menu(.@j1,.@j2);
 	close;
 
 function Job_Menu {
@@ -104,12 +117,14 @@ function Job_Menu {
 			if ((.@i == 23 || .@i == 4045) && BaseLevel < .SNovice) {
 				mes "[Job Master]";
 				mes "A base level of "+.SNovice+" is required to turn into a "+jobname(.@i)+".";
-				close; }
+				close;
+			}
 			mes "[Job Master]";
 			mes "Are you sure?";
-			next; }
-		else set .@i, getarg(0);
-		if (select(" ~ Change into ^0055FF"+jobname(.@i)+"^000000 class: ~ ^777777"+((getargcount() > 1)?"Go back":"Cancel")+"^000000")==1) {
+			next;
+		} else
+			set .@i, getarg(0);
+		if (select(" ~ Change into ^0055FF"+jobname(.@i)+"^000000 class: ~ ^777777"+((getargcount() > 1)?"Go back":"Cancel")+"^000000") == 1) {
 			mes "[Job Master]";
 			mes "You are now "+A_An(jobname(.@i))+"!";
 			if (.@i==4001 && .LastJob) set lastJob, Class;
@@ -117,17 +132,21 @@ function Job_Menu {
 			if (.@i==4001 || .@i==4023) resetlvl(1);
 			specialeffect2 338; specialeffect2 432;
 			if (.Platinum) callsub Get_Platinum;
-			close; }
+			close;
+		}
 		if (getargcount() == 1) return;
-		mes "[Job Master]"; }
-	end; }
+		mes "[Job Master]";
+	}
+	end;
+}
 
 function A_An {
 	setarray .@A$[0],"a","e","i","o","u";
 	set .@B$, "_"+getarg(0);
 	for(set .@i,0; .@i<5; set .@i,.@i+1)
 		if (compare(.@B$,"_"+.@A$[.@i])) return "an "+getarg(0);
-	return "a "+getarg(0); }
+	return "a "+getarg(0);
+}
 
 Get_Platinum:
 	skill 142,1,0;
@@ -139,7 +158,8 @@ Get_Platinum:
 		case 4: skill 156,1,0; break;
 		case 5: skill 153,1,0; skill 154,1,0; skill 155,1,0; break;
 		case 6: skill 149,1,0; skill 150,1,0; skill 151,1,0; skill 152,1,0; break;
-		default: break; }
+		default: break;
+	}
 	switch(BaseJob) {
 		case 7: skill 1001,1,0; break;
 		case 8: skill 1014,1,0; break;
@@ -154,7 +174,8 @@ Get_Platinum:
 		case 18: skill 238,1,0; break;
 		case 19: skill 1010,1,0; break;
 		case 20: skill 1011,1,0; break;
-		default: break; }
+		default: break;
+	}
 	return;
 
 OnInit:

+ 2 - 2
npc/custom/quests/hunting_missions.txt

@@ -225,7 +225,7 @@ OnNPCKillEvent:
 	if (!getcharid(1) || !.Party) {
 		if (!#Mission_Count || !Mission0) end;
 		for (set .@i, 0; .@i<.Quests; set .@i,.@i+1) {
-			if (""+strmobinfo(1,killedrid) == strmobinfo(1,getd("Mission"+.@i))) {
+			if (strmobinfo(1,killedrid) == strmobinfo(1,getd("Mission"+.@i))) {
 				if (getd("Mission"+.@i+"_") < #Mission_Count) {
 					dispbottom "[Hunting Mission] Killed "+(set(getd("Mission"+.@i+"_"),getd("Mission"+.@i+"_")+1))+" of "+#Mission_Count+" "+strmobinfo(1,killedrid)+".";
 					end;
@@ -244,7 +244,7 @@ OnNPCKillEvent:
 					getmapxy(.@map2$,.@x2,.@y2,0);
 					if ((.@map1$ == .@map2$ || .Party == 1) && (distance(.@x1,.@y1,.@x2,.@y2) <= 30 || .Party < 3)) {
 						for(set .@j,0; .@j<.Quests; set .@j,.@j+1) {
-							if (""+strmobinfo(1,.@mob) == strmobinfo(1,getd("Mission"+.@j))) {
+							if (strmobinfo(1,.@mob) == strmobinfo(1,getd("Mission"+.@j))) {
 								if (getd("Mission"+.@j+"_") < #Mission_Count) {
 									dispbottom "[Hunting Mission] Killed "+(set(getd("Mission"+.@j+"_"),getd("Mission"+.@j+"_")+1))+" of "+#Mission_Count+" "+strmobinfo(1,.@mob)+".";
 									break;

+ 5 - 3
npc/custom/stylist.txt

@@ -17,7 +17,8 @@ prontera,170,180,1	script	Stylist#custom_stylist	122,{
 	setarray .@Styles[1],getbattleflag("max_cloth_color"),getbattleflag("max_hair_style"),getbattleflag("max_hair_color");
 	setarray .@Look[1],7,1,6;
 	set .@s, select(" ~ Cloth color: ~ Hairstyle: ~ Hair color");
-	set .@Revert, getlook(.@Look[.@s]); set .@Style,1;
+	set .@Revert, getlook(.@Look[.@s]);
+	set .@Style,1;
 	while(1) {
 		setlook .@Look[.@s], .@Style;
 		message strcharinfo(0),"This is style #"+.@Style+".";
@@ -29,6 +30,7 @@ prontera,170,180,1	script	Stylist#custom_stylist	122,{
 				input .@Style,0,.@Styles[.@s];
 				if (!.@Style) set .@Style, rand(1,.@Styles[.@s]);
 				break;
-			case 4: set .@Style, .@Revert; setlook .@Look[.@s], .@Revert; break; }
-	} end;
+			case 4: set .@Style, .@Revert; setlook .@Look[.@s], .@Revert; break;
+		}
+	}
 }

+ 12 - 7
npc/custom/warper.txt

@@ -45,24 +45,29 @@ menu	"Last Warp ^777777["+lastwarp$+"]^000000",-,
 function Go {
 	warp getarg(0),getarg(1,0),getarg(2,0);
 	getmapxy(lastwarp$,lastwarpx,lastwarpy,0);
-	close; }
+	close;
+}
 function Disp {
 	set @menu$,"";
 	if(getarg(0)=="") {
 		set @menu$,getarg(1);
-		return; }
+		return;
+	}
 	for(set .@i,getarg(1); .@i<=getarg(2); set .@i,.@i+1)
 		set @menu$, @menu$+getarg(0)+" "+.@i+":";
-	return; }
+	return;
+}
 function Pick {
 	if(getarg(0)=="") {
 		set .@i, select(@menu$);
-		warp getarg(.@i),@c[.@i*2],@c[.@i*2+1]; }
-	else {
+		warp getarg(.@i),@c[.@i*2],@c[.@i*2+1];
+	} else {
 		set .@i, select(@menu$)-getarg(1,0);
-		warp getarg(0)+((.@i<10)?"0":"")+.@i,@c[.@i*2],@c[.@i*2+1]; }
+		warp getarg(0)+((.@i<10)?"0":"")+.@i,@c[.@i*2],@c[.@i*2+1];
+	}
 	getmapxy(lastwarp$,lastwarpx,lastwarpy,0);
-	close; }
+	close;
+}
 
 // --------------------------------------------------
 	Towns:

+ 124 - 0
npc/re/cities/malangdo.txt

@@ -0,0 +1,124 @@
+//===== rAthena Script ======================================= 
+//= Malangdo Town
+//===== By: ================================================== 
+//= Muad_Dib
+//===== Current Version: ===================================== 
+//= 1.0
+//===== Compatible With: ===================================== 
+//= rAthena SVN
+//===== Description: ========================================= 
+//= Malangdo Town Script
+//===== Additional Comments: ================================= 
+//= 1.0 First version. [Euphy]
+//============================================================
+
+// Town NPCs :: malang_tre
+//============================================================
+malangdo,147,117,3	script	Innkeeper#malang	554,{
+	mes "Can see a lazy cat standing on a chair.";
+	mes "Thought it is an Innkeeper, but do not looks like that having a business.";
+	next;
+	switch(select("Can I rest in hammock?:Want to store in inn.:Looks free at the moment.")) {
+	case 1:
+		mes "[Innkeeper]";
+		mes "You can use hammock as you want but give me ^FF00005 pieces of Malang Sp Can^000000, then will make you stress out.";
+		next;
+		switch(select("Give the can.:No need.")) {
+		case 1:
+			if (countitem(12636) > 4) {
+				delitem 12636,5; //Malang_Sp_Can
+				percentheal 100,100;
+				specialeffect EF_HEALSP;
+				mes "[Innkeeper]";
+				mes "Take a relaxation.";
+				emotion e_kis;
+				warp "malangdo", 140, 121;
+				close;
+			}
+			mes "[Innkeeper]";
+			mes "It looks like lack of cans.";
+			close;
+		case 2:
+			mes "[Innkeeper]";
+			mes "You are strong man than appearance.";
+			close;
+		}
+	case 2:
+		mes "[Innkeeper]";
+		mes "Storation is done. We should keep company haha.";
+		savepoint "malangdo",142,118;
+		close;
+	case 3:
+		mes "[Innkeeper]";
+		mes "A busy moment make you hurry and laziness makes you lazy.";
+		next;
+		mes "- Wonder if there is work time. -";
+		close;
+	}
+	close;
+}
+
+malangdo,151,120,3	script	Wandering Minstrel#mal	479,{
+	mes "[Wandering Minstrel]";
+	mes "I have a sleepy momnet whenever seeing that innkeeper. So comfortable...";
+	close;
+}
+
+malangdo,149,120,5	script	Wandering Wanderer#mal	485,5,1,{
+	mes "[Wandering Wanderer]";
+	mes "Cats living in here is so energetic.";
+	mes "And it makes me dance~";
+	close;
+OnTouch:
+	switch(rand(5)) {
+	case 0:
+		soundeffect "ring_of_nibelungen.wav",0;
+		break;
+	case 1:
+		soundeffect "dont_forget_me_not.wav",0;
+		break;
+	case 2:
+		soundeffect "humming.wav",0;
+		break;
+	case 3:
+		soundeffect "assassin_of_sunset.wav",0;
+		break;
+	case 4: 
+		emotion e_ho;
+		emotion e_ho,0,"Wandering Minstrel#mal";
+		break;
+	}
+	end;
+}
+
+malangdo,216,168,3	script	Cat Trainer#mal1	558,0,8,{
+	emotion e_awsm;
+	mes "[Cat Trainer]";
+	mes "Phh there is a tail and butt with soft and tender!";
+	mes "Can't stand, this is heaven~~!!";
+	next;
+	emotion e_gg;
+	mes "[Cat Trainer]";
+	mes "My hidden card ^FF0000<Silvervine Fruit>^000000 can make all cats in Meow Meow Island as my slaves~ haha!";
+	next;
+	select("^FF0000<Silvervine Fruit>^000000?");
+	mes "[Cat Trainer]";
+	mes "Silvervine Fruit is a rare item!";
+	mes "I can barely get it.";
+	mes "But every cat must love this one with no complaint.";
+	next;
+	select("Where can I get ^FF0000<Silvervine Fruit>^000000?");
+	mes "[Cat Trainer]";
+	mes "How do you get it that I could have it barely?";
+	mes "This can't be taken even with ^3131FFall the zeny in this world^000000!";
+	next;
+	emotion e_gg;
+	mes "[Cat Trainer]";
+	mes "Cats in Meow Meow Island is mine...! And it should be done haha~";
+	mes "^FF0000<Silvervine Fruit>^000000! I can be a king in Meow Meow Island~ ohhhh!!!";
+	close;
+OnTouch:
+	emotion e_flash;
+	end;
+}
+malangdo,164,203,3	duplicate(Cat Trainer#mal1)	Cat Trainer#mal2	853,5,8

+ 825 - 0
npc/re/quests/quests_malangdo.txt

@@ -0,0 +1,825 @@
+//===== rAthena Script =======================================
+//= Malangdo Quest NPCs
+//===== By: ==================================================
+//= Muad_Dib
+//===== Current Version: =====================================
+//= 1.0
+//===== Compatible With: =====================================
+//= rAthena SVN
+//===== Description: =========================================
+//= Quest NPCs related to Malangdo.
+//===== Additional Comments: =================================
+//= 1.0 First version. [Euphy]
+//============================================================
+
+// Help the bad cats in danger :: mal_bad_guys
+//============================================================
+malangdo,175,206,3	script	Gobonge#ml	561,{
+	if (checkweight(1201,1) == 0) {
+		mes "- Can't go next step due to having too many items. -";
+		close;
+	}
+	if (checkquest(1152,PLAYTIME) == 1) {
+		mes "[Gobonge]";
+		mes "Hmm, investigation is not enough.";
+		mes "We need go back to basic point.";
+		mes "Come again tomorrow.";
+		mes "I might be in pain of stomach";
+		mes "like usual.";
+		close;
+	} else if (checkquest(1152,PLAYTIME) == 2) {
+		erasequest 1152;
+		set malang_bad_guys,0;
+	} else if (checkquest(1152,PLAYTIME) == 3) {
+		completequest 1152;
+		erasequest 1152;
+		set malang_bad_guys,0;
+	}
+	if (BaseLevel < 60) {
+		mes "[Gobonge]";
+		mes "Are you here to get help";
+		mes "or to get help?";
+		mes "You look so weak, haha...";
+		mes "Go and hunt more Porings!";
+		close;
+	}
+	if (malang_bad_guys == 0) {
+		mes "[Gobonge]";
+		mes "Will you listen my sorrow?";
+		next;
+		switch(select("Sure I will.:No, I won't.")) {
+		case 1:
+			mes "[Gobonge]";
+			mes "This is a sad story.";
+			mes "As usual, I unpacked the bag";
+			mes "to see strange cats";
+			mes "to show them.";
+			next;
+			mes "[Gobonge]";
+			mes "There were lots of cans.";
+			mes "I thougt it was new due to different shape";
+			mes "but it was bad cans!";
+			mes "I ate too much and";
+			mes "got in bed right away";
+			mes "so I can't do anything...";
+			next;
+			mes "[Gobonge]";
+			mes "And by the way, you have...";
+			mes "nice colthes.";
+			mes "I can't let you go,";
+			mes "that hurts me so badly!";
+			emotion e_sob;
+			next;
+			switch(select("You deserve the pain!:Need help?")) {
+			case 1:
+				mes "[Gobonge]";
+				mes "Yes you are!";
+				close;
+			case 2:
+				mes "[Gobonge]";
+				mes "You know what care is.";
+				mes "Please find the bad provider";
+				mes "and revenge our enemy!";
+				next;
+				switch(select("No, I don't want to!:Yes, I'll do it!")) {
+				case 1:
+					mes "[" + strcharinfo(0) + "]";
+					mes "For the peace in Malangdo,";
+					mes "just lay in bed forever.";
+					next;
+					mes "[Gobonge]";
+					mes "I will!";
+					mes "I will have your peace first once I get well!";
+					close;
+				case 2:
+					mes "[Gobonge]";
+					mes "Okay, you can do it?";
+					mes "The enemy must be near the dock";
+					mes "where we got the bundle.";
+					mes "We should get them to help";
+					mes "our cats' well-being!";
+					setquest 1145;
+					set malang_bad_guys,1;
+					close;
+				}
+			}
+		case 2:
+			mes "[Gobonge]";
+			mes "Why are you here!";
+			mes "If I am usual, I will engrave something";
+			mes "with your tear...";
+			mes "Let your bag be here instead!";
+			emotion e_sob;
+			close;
+		}
+	} else if (malang_bad_guys == 1) {
+		mes "[Gobonge]";
+		mes "The enemy must be near the dock";
+		mes "where we got the bundle.";
+		mes "We should get them to help";
+		mes "our cats' well-being!";
+		close;
+	} else if (malang_bad_guys > 1 && malang_bad_guys < 7) {
+		mes "[Gobonge]";
+		mes "I am so tired due to";
+		mes "lack of forbidden bad activity.";
+		close;
+	} else if (malang_bad_guys == 7) {
+		if (countitem(6426) > 29) {
+			mes "[Gobonge]";
+			mes "Was it from raccoon that made us pain in stomach?";
+			mes "Oh bad raccoon!";
+			mes "I feel stomachache again from this anger!";
+			mes "All right, I will show my power once";
+			mes "I can get out of bed.";
+			next;
+			mes "[Gobonge]";
+			mes "I need time to concentrate on my stomachache.";
+			mes "You can go now!";
+			erasequest 1151;
+			set malang_bad_guys,8;
+			getitem Malang_Sp_Can, 20; //Unknown_Item
+			delitem Bad_Can_Sack, 1; //Unknown_Item
+			delitem Bad_Can, 30; //Bad_Canned_Food
+			close;
+		}
+		mes "[Gobonge]";
+		mes "How do you know the source of bad can?";
+		mes "Do you have time to do slow at the moment?";
+		emotion e_sob;
+		close;
+	} else if (malang_bad_guys == 8) {
+		mes "[Gobonge]";
+		mes "The Patrol Leader wants to go back to";
+		mes "bad world as soon as possible.";
+		mes "I want you to go first to soothe him instead.";
+		mes "How about it?";
+		next;
+		switch(select("It's troublsome, I quit.:Sure I will!")) {
+		case 1:
+			mes "[Gobonge]";
+			mes "Haha, you think it is a bad word.";
+			mes "I want you to be one of our staffs.";
+			next;
+			mes "[Gobonge]";
+			mes "Sorry, but you should go now";
+			mes "so that I can concentrate on my stomachache.";
+			setquest 1152;
+			set malang_bad_guys,9;
+			close;
+		case 2:
+			mes "[Gobonge]";
+			mes "All right, then I will have time";
+			mes "to concentrate on my stomachache.";
+			setquest 1153;
+			set malang_bad_guys,10;
+			close;
+		}
+	} else if (malang_bad_guys == 9) {
+		mes "[Gobonge]";
+		mes "Hmm, investigation is not enough.";
+		mes "We need go back to basic point.";
+		mes "Come again tomorrow.";
+		mes "I might be in pain of stomach";
+		mes "like usual.";
+		close;
+	} else if (malang_bad_guys > 9 && malang_bad_guys < 12) {
+		mes "[Gobonge]";
+		mes "Go and have fun with the Patrol Leader!";
+		close;
+	} else if (malang_bad_guys == 12) {
+		mes "[Gobonge]";
+		mes "Instead of us, you did bad behavior.";
+		mes "Good to hear that?";
+		mes "This is what teacher see best pupil?";
+		emotion e_swt;
+		next;
+		mes "[Gobonge]";
+		mes "You deserve a reward!";
+		mes "I need to get some more rest,";
+		mes "so let's investigate tomorrow!";
+		erasequest 1155;
+		setquest 1152;
+		set malang_bad_guys,13;
+		getitem 6422,5; //Egrade_Coin
+		close;
+	} else if (malang_bad_guys == 13) {
+		mes "[Gobonge]";
+		mes "Come again tomorrow.";
+		mes "I might be in pain of stomach";
+		mes "like usual.";
+		close;
+	}
+OnEnable:
+	enablenpc "Gobonge#ml";
+	close;
+OnDisable:
+	disablenpc "Gobonge#ml";
+	close;
+}
+
+malangdo,181,205,3	script	Gobulee#ml1	547,{
+	mes "[Gobulee]";
+	mes "Why do you come now?";
+	mes "You should have come when we were healthy.";
+	mes "So, you want to me take out what you have?";
+	close;
+}
+
+malangdo,180,202,3	script	Gobyungee#ml1	547,{
+	mes "[Gobyungee]";
+	mes "I can't see other cats because";
+	mes "I could't have time to do bad behavior...";
+	close;
+}
+
+malangdo,186,201,3	script	Gosigee#ml1	547,{
+	mes "[Gosigee]";
+	mes "I am desperate for pill of stomachache,";
+	mes "cap is only thinking of finding out criminal";
+	mes "and to revenge!";
+	mes "...";
+	next;
+	mes "[Gosigee]";
+	mes "How can we follow him as a cap...!";
+	close;
+}
+
+malangdo,177,202,3	script	Gonanee#ml2	547,{
+	mes "[Gonanee]";
+	mes "We are only bad circle in Malangdo";
+	mes "and we are very proud.";
+	mes "Can't just lie in bed.";
+	close;
+}
+
+malangdo,183,202,3	script	Godoree#ml3	547,{
+	mes "[Godoree]";
+	mes "I saw unfamiliar cats around";
+	mes "the dock frequently.";
+	mes "Are they tourists?";
+	mes "We should check their pockets";
+	mes "once I get well...";
+	close;
+}
+
+malangdo,203,116,5	script	Suspious Dealer#ml	543,{
+	mes "On listening to the story for";
+	mes "a while, he pretends to be indifferent once hearing someone's noise.";
+	next;
+	mes "[Suspious Dealer]";
+	mes "Oh my body, too much pain...";
+	close;
+}
+
+malangdo,205,116,3	script	Very Suspious Dealer#ml1	543,{
+	mes "On listening to the story for";
+	mes "a while, he pretends to be indifferent once hearing someone's noise.";
+	next;
+	mes "[Very Suspious Dealer]";
+	mes "The weather is so dirty...";
+	close;
+}
+
+malangdo,197,120,5	script	Foolish Cat#ml	546,{
+	mes "[Foolish Cat]";
+	mes "If you stay here, you";
+	mes "can hear all they're saying.";
+	mes "Don't know exactly what, but";
+	mes "you do hear everything.";
+	mes "Hehehe...";
+	close;
+}
+
+malangdo,196,120,0	script	#ml1	-1,2,2,{
+OnTouch:
+	if (malang_bad_guys == 1 || malang_bad_guys == 2) {
+		mes "You hear a conversation between the Suspious Dealers.";
+		next;
+		mes "[Suspious Dealer]";
+		mes "Because unexpected robbery at that moment...";
+		mes "our great work has delayed.";
+		next;
+		mes "[Very Suspious Dealer]";
+		mes "Do not worry about the thing, I placed it near balloon bag where";
+		mes "Ship Navi is in the north, and I hid it perfectly.";
+		next;
+		mes "You need to check a place near north of balloon bag in ship Navi.";
+		if (malang_bad_guys == 1) {
+			erasequest 1145;
+			setquest 1146;
+			set malang_bad_guys,2;
+		}
+		close;
+	} else if (malang_bad_guys > 2 && malang_bad_guys < 8) {
+		mes "You still hear a suspicious conversation.";
+		next;
+		mes "[Suspious Dealer]";
+		mes "But near the balloon bag is still";
+		mes "worrying so much!";
+		next;
+		mes "[Very Suspious Dealer]";
+		mes "Oh how cowardly you are!";
+		mes "I hid it in ship Navi perfectly.";
+		mes "Relax!";
+		next;
+		mes "[Suspious Dealer]";
+		mes "The rest of part is in staffs.";
+		mes "We should believe.";
+		next;
+		mes "We need to investigate Navi first.";
+		mes "Let's see other guys in ship Navi.";
+		if (malang_bad_guys == 3) {
+			erasequest 1147;
+			setquest 1148;
+			set malang_bad_guys,4;
+		}
+		close;
+	} else if (malang_bad_guys > 7) {
+		mes "You still hear a suspicious conversation.";
+		next;
+		mes "[Suspious Dealer]";
+		mes "Star candy is still healthy,";
+		mes "what happens?";
+		next;
+		mes "[Very Suspious Dealer]";
+		mes "No way...";
+		mes "We should get more bad cans.";
+		close;
+	}
+	end;
+}
+
+malangdo,155,179,0	script	#ml2	-1,2,2,{
+OnTouch:
+	if (malang_bad_guys == 2 || malang_bad_guys == 3) {
+		mes "There's a memo.";
+		next;
+		mes "[Memo]";
+		mes "Here is not what we wanted, huh!";
+		next;
+		mes "...do listen the conversation of merchant.";
+		if (malang_bad_guys == 2) {
+			erasequest 1146;
+			setquest 1147;
+			set malang_bad_guys,3;
+		}
+		close;
+	}
+	end;
+}
+
+malangdo,171,163,3	script	Awfully Suspious Dealer	543,{
+	if (malang_bad_guys < 4) {
+		mes "[Awfully Suspious Dealer]";
+		mes "We quit our sales,";
+		mes "find the other merchant!";
+		close;
+	} else if (malang_bad_guys == 4) {
+		mes "[Awfully Suspious Dealer]";
+		mes "Bad cans?";
+		mes "Due to lots of work in here";
+		mes "can't have a short time to talk?";
+		next;
+		switch(select("Look suspicious?:I knew all things here!")) {
+		case 1:
+			mes "[Awfully Suspious Dealer]";
+			mes "I have a same boat with you!";
+			close;
+		case 2:
+			mes "[Awfully Suspious Dealer]";
+			mes "...";
+			mes "You searched the lounge of ship Navi?";
+			mes "...";
+			next;
+			mes "[Awfully Suspious Dealer]";
+			mes "It looks wrong place~";
+			mes "Go and do other things~!";
+			next;
+			mes "You need to search lounge of ship Navi?";
+			erasequest 1148;
+			setquest 1149;
+			set malang_bad_guys,5;
+			close;
+		}
+	} else if (malang_bad_guys == 5) {
+		mes "[Awfully Suspious Dealer]";
+		mes "A thought to search Gozangee around ship Navi";
+		mes "is like to ride a skill";
+		mes "with frying pan, it is idiot things.";
+		mes "I do not recommend.";
+		close;
+	} else if (malang_bad_guys == 6) {
+		if (countitem(6427) == 0) {
+			mes "[Awfully Suspious Dealer]";
+			mes "You searched the lounge of ship Navi?";
+			mes "But still nothing in hand.";
+			mes "I told you there's nothing.";
+			mes "...";
+			next;
+			mes "[Awfully Suspious Dealer]";
+			mes "...there must be something...";
+			close;
+		}
+		mes "[Awfully Suspious Dealer]";
+		mes "Oh! That's ^0000FFa sack of bad cans^000000, isn't it?";
+		mes "Where did you get it? Amazing!";
+		next;
+		switch(select("Do not pretend not to know!:Need to show them our general!")) {
+		case 1:
+			mes "[Awfully Suspious Dealer]";
+			mes "It just looks wonderful.";
+			mes "There's nothing more to have?";
+			emotion e_ho;
+			close;
+		case 2:
+			mes "[Awfully Suspious Dealer]";
+			mes "Relax!";
+			mes "Let's have smile and fun with only ours.";
+			next;
+			mes "[Awfully Suspious Dealer]";
+			mes "To be honest, I am a member of raccoon hurray team.";
+			mes "A homeless community of raccoons";
+			mes "became a black market group.";
+			mes "I will make headquater of raccoon hurray team here";
+			mes "after kick out group of cats.";
+			next;
+			switch(select("Are you the leader?:Let me clear the usage of bad can.:Can it be worked as you want?")) {
+			case 1:
+				mes "[Awfully Suspious Dealer]";
+				mes "This is thankful misunderstanding,";
+				mes "I am just little staff.";
+				mes "I don't know who the leader is.";
+				close;
+			case 2:
+				mes "[Awfully Suspious Dealer]";
+				mes "That is...";
+				mes "for food...";
+				mes "Don't ask me more, please!";
+				close;
+			case 3:
+				mes "[Awfully Suspious Dealer]";
+				mes "You look down out raccoon hurray team?";
+				mes "Look more! To my star candy who stands island";
+				mes "I will make them have stomachache";
+				mes "with lots of bad cans.";
+				mes "Aren't you expecting?";
+				next;
+				mes "[Awfully Suspious Dealer]";
+				mes "I can't make him eat with my hand,";
+				mes "to creature in shining coral area that is basic food of star candy";
+				mes "I am still feeding them with bad cans.";
+				mes "You must see amazing reaction, just wait!";
+				next;
+				mes "The situation is serious.";
+				mes "Once the cats figure out,";
+				mes "you might be confused.";
+				mes "Let's withdraw the bad cans first,";
+				mes "located in the shining coral area.";
+				erasequest 1150;
+				setquest 1151;
+				set malang_bad_guys,7;
+				close;
+			}
+		}
+	} else if (malang_bad_guys == 7) {
+		mes "[Awfully Suspious Dealer]";
+		mes "Plese forget what I have told you.";
+		mes "Please...";
+		mes "After you got 30 pcs of bad cans";
+		mes "in shining coral area";
+		mes "do not tell the cats";
+		mes "or report this fact!";
+		close;
+	}
+	mes "[Awfully Suspious Dealer]";
+	mes "So you reported all things?";
+	mes "...";
+	mes "Now it's time to live a new life";
+	mes "of group for hair tufts...";
+	close;
+}
+
+mal_in02,184,72,3	script	Gozangee#ml	547,{
+	mes "[Gozangee]";
+	mes "I have too much pain in my stomach...";
+	mes "Should endure myself!";
+	mes "...do bad activity...";
+	close;
+}
+
+mal_in02,184,77,0	script	#ml3	-1,2,2,{
+OnTouch:
+	if (checkweight(1201,1) == 0) {
+		mes "- You have too many items. -";
+		close;
+	}
+	if (malang_bad_guys == 4) {
+		mes "I came to...";
+		mes "know a thing that shouldn't be";
+		mes "appeared to anyone.";
+		mes "Just pretend that I didn't see this.";
+		close;
+	} else if (malang_bad_guys == 5) {
+		mes "This is...!";
+		mes "...";
+		next;
+		mes "A sack that carrying bad cans.";
+		next;
+		mes "Let's bring this to a guy who";
+		mes "is in Awfully Suspious Dealer in deck.";
+		erasequest 1149;
+		setquest 1150;
+		set malang_bad_guys,6;
+		getitem 6427,1; //Bad_Can_Sack
+		close;
+	} else if (malang_bad_guys == 6) {
+		mes "I saw a sack of bad cans.";
+		mes "located on the deck.";
+		mes "Let's bring this to a guy who";
+		mes "is in Awfully Suspious Dealer in deck.";
+		close;
+	}
+	end;
+}
+
+malangdo,125,147,3	script	Patrol Leader#ml	545,{
+	if (checkweight(1201,1) == 0) {
+		mes "- Can't go next step due to having too many items. -";
+		close;
+	}
+	if (malang_bad_guys < 10) {
+		mes "[Patrol Leader]";
+		mes "Be careful of distribution for";
+		mes "bad cans recently in here";
+		mes "so should be noticed.";
+		close;
+	} else if (malang_bad_guys == 10) {
+		mes "[Patrol Leader]";
+		mes "So you are going to do bad activity instead of";
+		mes "group of hair tufts lying in bed?";
+		mes "It's gonna be exciting!";
+		mes "So excited...";
+		next;
+		mes "[Patrol Leader]";
+		mes "Gobonge and his friends";
+		mes "liked to torment ^0000FFRed Eruma^000000 in shining";
+		mes "coral area more than anything.";
+		next;
+		mes "[Patrol Leader]";
+		mes "Report to me after tormenting 20 ^0000FFRed Eruma^000000";
+		mes "for a while.";
+		mes "I will scold you as Patrol Leader!";
+		next;
+		switch(select("What Patrol Leader do like this?:Cheer up!!")) {
+		case 1:
+			mes "[Patrol Leader]";
+			mes "This is what my flavor to do this!";
+			close;
+		case 2:
+			mes "[Patrol Leader]";
+			mes "I will expect various bad activities.";
+			erasequest 1153;
+			setquest 1154;
+			set malang_bad_guys,11;
+			close;
+		}
+	} else if (malang_bad_guys == 11) {
+		if (checkquest(1154,HUNTING) == 2) {
+			mes "[Patrol Leader]";
+			mes "Wow, you did to ^0000FFRed Eruma^000000 so badly!";
+			mes "I am impressed at your work.";
+			next;
+			mes "[Crime Prevention Staff]";
+			mes "Captain, we have work again, right?";
+			emotion e_sob;
+			emotion e_sob,0,"Crime Prevention Staff#ml";
+			next;
+			mes "[Patrol Leader]";
+			mes "Hide your tears and save your tears!";
+			mes "You should cry when having a clue for bad activity";
+			mes "at crime spot!";
+			emotion e_sob;
+			emotion e_sob,0,"Crime Prevention Staff#ml";
+			next;
+			mes "[Patrol Leader]";
+			mes "I will scold you once the investigation is over!";
+			mes "Visit Gobonge now.";
+			erasequest 1154;
+			setquest 1155;
+			set malang_bad_guys,12;
+			close;
+		}
+		mes "[Patrol Leader]";
+		mes "Inside of starry coral area,";
+		mes "report to me after tormenting 20 ^0000FFRed Eruma^000000";
+		mes "for a while.";
+		mes "I will scold you as Patrol Leader!";
+		close;
+	}
+	mes "[Patrol Leader]";
+	mes "I will scold you once the investigation";
+	mes "is over!";
+	mes "visit Gobonge now.";
+	close;
+}
+
+malangdo,129,146,3	script	Crime Prevention Staff	545,{
+	if (malang_bad_guys > 11) {
+		mes "[Crime Prevention Staff]";
+		mes "A work to do means happy things!";
+		mes "I ask you to do various bad activities!";
+		close;
+	}
+	mes "[Crime Prevention Staff]";
+	mes "A group of cats that";
+	mes "ate bad cans got";
+	mes "pain in stomache.";
+	mes "They are lying at the north";
+	mes "of place but still rolling with anger.";
+	next;
+	mes "[Crime Prevention Staff]";
+	mes "Haha... the village is becoming";
+	mes "peaceful and calm, but feels";
+	mes "somewhat empty. This is not";
+	mes "usual scene that we can have.";
+	mes "Let's see there?";
+	close;
+}
+
+/*
+malangdo,3,1,3	script	Guidance for quest#ml	543,{
+	input .@input,1,9999;
+	if (.@input != 1854) {
+		mes "[Helper]";
+		mes "What is this security code?";
+		mes "Go away!";
+		close;
+	}
+	mes "[Helper]";
+	mes "Choose now, hurry!";
+	next;
+	switch(select("NPC appear!:NPC walkout!:Reset setitem:30 pcs of bad cans:Just before collecting cans:Start quest for Patrol Leader")) {
+	case 1:
+		donpcevent "Gobonge#ml::OnEnable";
+		mes "[Helper]";
+		mes "First appearance!";
+		close;
+	case 2:
+		donpcevent "Gobonge#ml::OnDisable";
+		mes "[Helper]";
+		mes "Walk out!";
+		close;
+	case 3:
+		mes "[Helper]";
+		mes "Yap!";
+		set malang_bad_guys,0;
+		erasequest 1152;
+		close;
+	case 4:
+		mes "[Helper]";
+		mes "Owing?";
+		getitem 6426,30; //Bad_Can
+		close;
+	case 5:
+		mes "[Helper]";
+		mes "Yap!";
+		erasequest 1150;
+		setquest 1151;
+		set malang_bad_guys,7;
+		close;
+	case 6:
+		mes "[Helper]";
+		mes "Yap!";
+		set malang_bad_guys,10;
+		close;
+	}
+}
+*/
+
+// Pipielle :: mal_ppl
+//============================================================
+malangdo,137,200,6	script	Pipielle	549,{
+	if (checkweight(1201,1) == 0 || MaxWeight - Weight < 1000) {
+		mes "You have too many items, please try again after reducing your weight.";
+		close;
+	}
+	if (BaseLevel < 60) {
+		mes "[Pipielle]";
+		mes "Wow this is nice weather, do you like this kind of weather too? I like it too but I need to my work now.";
+		next;
+		mes "[Pipielle]";
+		mes "I would ask for your help if you were a stronger advanturer...";
+		next;
+		mes "^770099This cat is working on something, she asks for help above LV60.^000000";
+		close;
+	}
+	set .@fish_ss1, "What are you doing??";
+	if (countitem(6451) > 29)
+		set .@fish_ss2, "I caught a lot of strange fishes!";
+	else {
+		set .@fish_num, 30-countitem(6451); //Unknown_Fish
+		set .@fish_ss2, "Remaining " + .@fish_num + " of ^bbbbbbUnidentified Fish are required.^000000";
+	}
+	if (ma_tomas == 100)
+		set .@fish_ss3, "I met a Admiral Thomas...";
+	mes "[Pipielle]";
+	mes "Would you come here and open your bag for me?";
+	next;
+	switch(select(.@fish_ss1,.@fish_ss2,.@fish_ss3)) {
+	case 1:
+		mes "[Pipielle]";
+		mes "There are many beautiful fishes around here. So I feel my heard beating when I standing here.";
+		next;
+		select("Of course, my heart will beat up too if I see delicious thing!");
+		mes "[Pipielle]";
+		mes "How come you only know about eating!! My heart don't beat up because of I see the delicious thing. Don't treat me the same as others.";
+		next;
+		mes "[Pipielle]";
+		mes "I used to study from scholar from uno same as human. And I am good at human language as well. Don't treat me same as others.";
+		next;
+		mes "[Pipielle]";
+		mes "I am a scholar who researches fish in here. It's little funny that cat research fish but it's true.";
+		next;
+		select("Are you originally a scholar?");
+		mes "[Pipielle]";
+		mes "Originally I used to mate of admiral Thomas. But our ship never to back to sea after we has arrived here.";
+		next;
+		mes "[Pipielle]";
+		mes "The mate from ship that never voyage is lonely.";
+		next;
+		mes "[Pipielle]";
+		mes "The scholar from Uno came here for research and he thought it is amazing thing that cat speaks human language. Therefore he started teach me.";
+		next;
+		select("But now everyone speaks human language.");
+		mes "[Pipielle]";
+		mes "Oh yes, there were only little cat speaks human language. That's why he treated me special.";
+		next;
+		mes "[Pipielle]";
+		mes "Anyways, now I collect specimens to be ichthyologist. I hope you can help me.";
+		next;
+		if(select("How can I help you?:I would say no.") == 2) {
+			mes "[Pipielle]";
+			mes "Oh, okay. If you change your mind, please come again.";
+			close;
+		}
+		mes "[Pipielle]";
+		mes "There is a Pouring who's eating all fishes in Octopus and Culvert dungeon.";
+		next;
+		mes "[Pipielle]";
+		mes "It used to not live there, but he might came here for winter, so could you collect the specimens unidentified fish after get rid of it.";
+		next;
+		mes "[Pipielle]";
+		mes "You can get identified fishes from Pouring, so please collect about 30 pieces.";
+		close;
+	case 2:
+		if (countitem(6451) > 29) {
+			//saveppl Unknown_Fish
+			delitem 6451,30; //Unknown_Fish
+			mes "[Pipielle]";
+			mes "Oh, thank you! I will take these specimens.";
+			next;
+			mes "[Pipielle]";
+			mes "I want to give you something, but last one is out of stock now so I will just write your name here.";
+			next;
+			mes "[Pipielle]";
+			mes "I can give you good new even from far distance, but it's only possible if I am really lucky...";
+			close;
+		}
+		mes "[Pipielle]";
+		mes "I'm sorry, but please collect 30 pieces of unidentified fishes specimens.";
+		close;
+	case 3:
+		mes "[Pipielle]";
+		mes "Oh, you have met admiral Thomas... how was it?";
+		next;
+		if(select("He looks gentle:He looks terrible") == 2) {
+			mes "[Pipielle]";
+			mes "Hmm...";
+			mes "Frankly speaking, I was a real fan of Admiral Thomas. Can you take a responsibility of your word?";
+			next;
+			if(select("Just kidding!:Oh yes, he was really terrible!") == 2) {
+				mes "[Pipielle]";
+				mes "Is he?";
+				mes "Okay, it really depends on personal taste...";
+				close;
+			}
+		}
+		mes "[Pipielle]";
+		mes "Is he?";
+		mes "I knew you would say so.";
+		next;
+		mes "[Pipielle]";
+		mes "Admiral Thomas is a legendary figure who has voyaged to this island with leading all of us. I think it was the most happiest moment in my life.";
+		next;
+		mes "[Pipielle]";
+		mes "Please help him a lot. There are not many people to trust. This is my personal request.";
+		next;
+		mes "[Pipielle]";
+		mes "And this is small gift for ask you to look after admiral Thomas.";
+		set ma_tomas,101;
+		getitem 6422,200; //Egrade_Coin
+		mes "^0000ffReceived 200 E Class Coins.^000000";
+		close;
+	}
+}

+ 2 - 0
npc/re/scripts_athena.conf

@@ -12,6 +12,7 @@ npc: npc/re/cities/dewata.txt
 npc: npc/re/cities/dicastes.txt
 npc: npc/re/cities/izlude.txt
 npc: npc/re/cities/jawaii.txt
+npc: npc/re/cities/malangdo.txt
 npc: npc/re/cities/mora.txt
 
 // --------------------------- Guides ---------------------------
@@ -78,3 +79,4 @@ npc: npc/re/quests/quests_dewata.txt
 npc: npc/re/quests/quests_dicastes.txt
 npc: npc/re/quests/quests_izlude.txt
 npc: npc/re/quests/quests_lighthalzen.txt
+npc: npc/re/quests/quests_malangdo.txt

+ 4 - 1
src/map/script.c

@@ -11647,7 +11647,10 @@ BUILDIN_FUNC(strmobinfo)
 
 	if(!mobdb_checkid(class_))
 	{
-		script_pushint(st,0);
+		if (num < 3) //requested a string
+			script_pushconststr(st,"");
+		else
+			script_pushint(st,0);
 		return 0;
 	}