summaryrefslogtreecommitdiff
path: root/npc
diff options
context:
space:
mode:
authoreuphyy <euphyy@54d463be-8e91-2dee-dedb-b68131a5f0ec>2012-12-28 08:38:28 +0000
committereuphyy <euphyy@54d463be-8e91-2dee-dedb-b68131a5f0ec>2012-12-28 08:38:28 +0000
commite9d2315e89adb7610a67d610bb99fd78fd403c37 (patch)
tree55b9666e1a9c5e8739b36f9cdd3ace5576298e0d /npc
parent382f0b77bf009b938e578286b1048ccf8038d443 (diff)
downloadhercules-e9d2315e89adb7610a67d610bb99fd78fd403c37.tar.gz
hercules-e9d2315e89adb7610a67d610bb99fd78fd403c37.tar.bz2
hercules-e9d2315e89adb7610a67d610bb99fd78fd403c37.tar.xz
hercules-e9d2315e89adb7610a67d610bb99fd78fd403c37.zip
* 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://rathena.svn.sourceforge.net/svnroot/rathena/trunk@17056 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'npc')
-rw-r--r--npc/custom/breeder.txt2
-rw-r--r--npc/custom/healer.txt6
-rw-r--r--npc/custom/itemmall.txt2
-rw-r--r--npc/custom/jobmaster.txt71
-rw-r--r--npc/custom/quests/hunting_missions.txt4
-rw-r--r--npc/custom/stylist.txt8
-rw-r--r--npc/custom/warper.txt19
-rw-r--r--npc/re/cities/malangdo.txt124
-rw-r--r--npc/re/quests/quests_malangdo.txt825
-rw-r--r--npc/re/scripts_athena.conf2
10 files changed, 1021 insertions, 42 deletions
diff --git a/npc/custom/breeder.txt b/npc/custom/breeder.txt
index c280fae73..de4460cd3 100644
--- a/npc/custom/breeder.txt
+++ b/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;
}
diff --git a/npc/custom/healer.txt b/npc/custom/healer.txt
index 5ed3f7579..ab7eb9f55 100644
--- a/npc/custom/healer.txt
+++ b/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;
diff --git a/npc/custom/itemmall.txt b/npc/custom/itemmall.txt
index aeff0e1fd..84775e488 100644
--- a/npc/custom/itemmall.txt
+++ b/npc/custom/itemmall.txt
@@ -3,7 +3,7 @@
//===== By: ==================================================
//= Masao
//===== Current Version: =====================================
-//= 1.0 [Masao]
+//= 1.0
//===== Compatible With: =====================================
//= rAthena SVN
//===== Description: =========================================
diff --git a/npc/custom/jobmaster.txt b/npc/custom/jobmaster.txt
index e072ee4b9..c4c259b64 100644
--- a/npc/custom/jobmaster.txt
+++ b/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:
diff --git a/npc/custom/quests/hunting_missions.txt b/npc/custom/quests/hunting_missions.txt
index 5f09c19fd..438444a14 100644
--- a/npc/custom/quests/hunting_missions.txt
+++ b/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;
diff --git a/npc/custom/stylist.txt b/npc/custom/stylist.txt
index fa552ce6d..77bbf7bdb 100644
--- a/npc/custom/stylist.txt
+++ b/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;
+ }
+ }
}
diff --git a/npc/custom/warper.txt b/npc/custom/warper.txt
index f374f9e9a..b0fb07a66 100644
--- a/npc/custom/warper.txt
+++ b/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:
diff --git a/npc/re/cities/malangdo.txt b/npc/re/cities/malangdo.txt
new file mode 100644
index 000000000..45643ba13
--- /dev/null
+++ b/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 \ No newline at end of file
diff --git a/npc/re/quests/quests_malangdo.txt b/npc/re/quests/quests_malangdo.txt
new file mode 100644
index 000000000..bd6ed3370
--- /dev/null
+++ b/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;
+ }
+} \ No newline at end of file
diff --git a/npc/re/scripts_athena.conf b/npc/re/scripts_athena.conf
index 4c9fb5975..5231a3980 100644
--- a/npc/re/scripts_athena.conf
+++ b/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