summaryrefslogtreecommitdiff
path: root/npc
diff options
context:
space:
mode:
authorj-tkay <joseph.tk.ea@gmail.com>2013-07-04 05:15:48 +0800
committerj-tkay <joseph.tk.ea@gmail.com>2013-07-04 05:15:48 +0800
commit28a9fec0916db3d92629ae6e6cd62b5777b09e73 (patch)
tree4babff20dd0a68025a489f410ebf96b8c1cc09af /npc
parent8489dbf3b58d3bff70b27ea42884a14d5229430a (diff)
downloadhercules-28a9fec0916db3d92629ae6e6cd62b5777b09e73.tar.gz
hercules-28a9fec0916db3d92629ae6e6cd62b5777b09e73.tar.bz2
hercules-28a9fec0916db3d92629ae6e6cd62b5777b09e73.tar.xz
hercules-28a9fec0916db3d92629ae6e6cd62b5777b09e73.zip
Merged/Updated/Added scripts from rAthena.
- Fixed Bug #7400 Signed-off-by: j-tkay <joseph.tk.ea@gmail.com>
Diffstat (limited to 'npc')
-rw-r--r--npc/cities/louyang.txt6
-rw-r--r--npc/custom/healer.txt54
-rw-r--r--npc/custom/quests/hunting_missions.txt30
-rw-r--r--npc/custom/quests/quest_shop.txt30
-rw-r--r--npc/custom/warper.txt512
-rw-r--r--npc/events/RWC_2011.txt535
-rw-r--r--npc/events/RWC_2012.txt328
-rw-r--r--npc/merchants/advanced_refiner.txt15
-rw-r--r--npc/merchants/refine.txt12
-rw-r--r--npc/quests/quests_13_1.txt3
-rw-r--r--npc/quests/quests_morocc.txt2
-rw-r--r--npc/quests/seals/mjolnir_seal.txt10
-rw-r--r--npc/quests/the_sign_quest.txt7
-rw-r--r--npc/re/cities/eclage.txt487
-rw-r--r--npc/re/cities/malaya.txt2
-rw-r--r--npc/re/cities/mora.txt1351
-rw-r--r--npc/re/guides/guides_eclage.txt51
-rw-r--r--npc/re/instances/MalangdoCulvert.txt1084
-rw-r--r--npc/re/instances/OctopusCave.txt721
-rw-r--r--npc/re/merchants/blessed_refiner.txt173
-rw-r--r--npc/re/merchants/coin_exchange.txt352
-rw-r--r--npc/re/merchants/enchan_mora.txt751
-rw-r--r--npc/re/merchants/hd_refiner.txt308
-rw-r--r--npc/re/merchants/refine.txt420
-rw-r--r--npc/re/merchants/ticket_refiner.txt162
-rw-r--r--npc/re/quests/eden/86-90.txt231
-rw-r--r--npc/re/quests/eden/91-99.txt249
-rw-r--r--npc/re/quests/eden/eden_quests.txt483
-rw-r--r--npc/re/quests/pile_bunker.txt29
-rw-r--r--npc/re/quests/quests_dicastes.txt27
-rw-r--r--npc/re/quests/quests_eclage.txt1839
-rw-r--r--npc/re/quests/quests_malangdo.txt8
-rw-r--r--npc/re/quests/quests_malaya.txt982
-rw-r--r--npc/re/quests/quests_mora.txt1
-rw-r--r--npc/re/quests/quests_morocc.txt213
-rw-r--r--npc/re/scripts.conf13
-rw-r--r--npc/re/scripts_guild.conf8
-rw-r--r--npc/re/scripts_main.conf1
-rw-r--r--npc/re/scripts_warps.conf1
-rw-r--r--npc/re/warps/dungeons/moc_pryd.txt16
-rw-r--r--npc/re/warps/fields/bra_fild.txt3
-rw-r--r--npc/scripts.conf5
-rw-r--r--npc/warps/dungeons/tha_t.txt4
43 files changed, 9713 insertions, 1806 deletions
diff --git a/npc/cities/louyang.txt b/npc/cities/louyang.txt
index 9f4b41f80..ac6d92307 100644
--- a/npc/cities/louyang.txt
+++ b/npc/cities/louyang.txt
@@ -1,5 +1,5 @@
//===== Hercules Script ======================================
-//= Louyang City NPC's
+//= Louyang City NPCs
//===== By: ==================================================
//= Vidar (1.0)
//= Mass Zero (1.1)
@@ -10,14 +10,14 @@
//===== Current Version: =====================================
//= 3.0
//===== Description: =========================================
-//= [Aegis Conversion]
+//= [Official Conversion]
//= Louyang Town Script
//===== Additional Comments: =================================
//= 2.9 Rescripted to Aegis 10.3 Standards. [L0ne_W0lf]
//= 3.0 Moved Alberta NPC to pre-re/re paths. [Euphy]
//============================================================
-// Louyang Transportaion
+// Louyang Transportation
//============================================================
- script ::Girl_louyang -1,{
mes "[Girl]";
diff --git a/npc/custom/healer.txt b/npc/custom/healer.txt
index a6f028e8a..7bd9119b2 100644
--- a/npc/custom/healer.txt
+++ b/npc/custom/healer.txt
@@ -3,67 +3,77 @@
//===== By: ==================================================
//= Euphy
//===== Current Version: =====================================
-//= 1.0
+//= 1.1
//===== Compatible With: =====================================
//= Hercules
//===== Description: =========================================
//= Basic healer script.
+//===== Additional Comments: =================================
+//= 1.0 Initial script.
+//= 1.1 Aligned coordinates with @go.
//============================================================
- script Healer -1,{
-
+
set .@Price,0; // Zeny required for heal
set .@Buffs,0; // Also buff players? (1: yes / 0: no)
set .@Delay,0; // Heal delay, in seconds
- callfunc "F_ClearGarbage",0;
if (@HD > gettimetick(2)) end;
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) end;
set Zeny, Zeny-.@Price;
}
- specialeffect2 313; percentheal 100,100;
+ specialeffect2 EF_HEAL2; percentheal 100,100;
if (.@Buffs) {
- specialeffect2 EF_INCAGILITY; sc_start SC_INC_AGI,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;
end;
}
+
+// Duplicates
+//============================================================
alberta,25,240,6 duplicate(Healer) Healer#alb 909
aldebaran,135,118,6 duplicate(Healer) Healer#alde 909
amatsu,200,79,4 duplicate(Healer) Healer#ama 909
ayothaya,207,169,6 duplicate(Healer) Healer#ayo 909
-brasilis,194,221,6 duplicate(Healer) Healer#bra 909
comodo,184,158,6 duplicate(Healer) Healer#com 909
-dewata,193,175,6 duplicate(Healer) Healer#dew 909
-eclage,105,35,4 duplicate(Healer) Healer#ecl 909
-einbech,142,244,4 duplicate(Healer) Healer#einbe 909
+einbech,57,36,6 duplicate(Healer) Healer#einbe 909
einbroch,57,202,6 duplicate(Healer) Healer#einbr 909
-dicastes01,201,194,4 duplicate(Healer) Healer#dic 909
geffen,115,72,6 duplicate(Healer) Healer#gef 909
gonryun,156,122,6 duplicate(Healer) Healer#gon 909
hugel,89,150,6 duplicate(Healer) Healer#hug 909
izlude,125,118,5 duplicate(Healer) Healer#izl 909
-lighthalzen,149,103,6 duplicate(Healer) Healer#li 909
-louyang,225,103,4 duplicate(Healer) Healer#lou 909
-malangdo,226,188,4 duplicate(Healer) Healer#mal 909
-malaya,205,205,6 duplicate(Healer) Healer#malay 909
-manuk,256,176,6 duplicate(Healer) Healer#man 909
+jawaii,250,139,4 duplicate(Healer) Healer#jaw 909
+lighthalzen,152,100,6 duplicate(Healer) Healer#lhz 909
+louyang,226,103,4 duplicate(Healer) Healer#lou 909
+manuk,272,144,6 duplicate(Healer) Healer#man 909
mid_camp,203,289,6 duplicate(Healer) Healer#mid 909
-mora,106,100,6 duplicate(Healer) Healer#mora 909
+moc_ruins,72,164,4 duplicate(Healer) Healer#moc 909
morocc,153,97,6 duplicate(Healer) Healer#mor 909
-moscovia,215,194,6 duplicate(Healer) Healer#mos 909
-niflheim,188,180,5 duplicate(Healer) Healer#nif 909
+moscovia,220,191,4 duplicate(Healer) Healer#mos 909
+niflheim,212,182,5 duplicate(Healer) Healer#nif 909
payon,179,106,4 duplicate(Healer) Healer#pay 909
-prontera,162,193,4 duplicate(Healer) Healer#pront 909
+prontera,162,193,4 duplicate(Healer) Healer#prt 909
rachel,125,116,6 duplicate(Healer) Healer#rac 909
splendide,201,153,4 duplicate(Healer) Healer#spl 909
thor_camp,249,74,4 duplicate(Healer) Healer#thor 909
-umbala,129,132,4 duplicate(Healer) Healer#umb 909
+umbala,105,148,3 duplicate(Healer) Healer#umb 909
veins,217,121,4 duplicate(Healer) Healer#ve 909
-xmas,143,136,6 duplicate(Healer) Healer#xmas 909
+xmas,143,136,4 duplicate(Healer) Healer#xmas 909
yuno,164,45,4 duplicate(Healer) Healer#yuno 909
+
+// Duplicates (Renewal)
+//============================================================
+brasilis,194,221,6 duplicate(Healer) Healer#bra 909
+dewata,195,187,4 duplicate(Healer) Healer#dew 909
+dicastes01,201,194,4 duplicate(Healer) Healer#dic 909
+ecl_in01,45,60,4 duplicate(Healer) Healer#ecl 909
+malangdo,132,114,6 duplicate(Healer) Healer#mal 909
+malaya,205,205,6 duplicate(Healer) Healer#ma 909
+mora,55,152,4 duplicate(Healer) Healer#mora 909
diff --git a/npc/custom/quests/hunting_missions.txt b/npc/custom/quests/hunting_missions.txt
index fd07b8de6..8ce85bc7a 100644
--- a/npc/custom/quests/hunting_missions.txt
+++ b/npc/custom/quests/hunting_missions.txt
@@ -3,12 +3,19 @@
//===== By: ==================================================
//= Euphy
//===== Current Version: =====================================
-//= 1.3
+//= 1.3a
//===== Compatible With: =====================================
//= Hercules
//===== Description: =========================================
//= Random hunting missions.
//= Rewards are based on quest difficulty.
+//===== Additional Comments: =================================
+//= 1.0 Initial script.
+//= 1.1 Small improvements and fixes.
+//= 1.2 Added party support and replaced blacklists with an
+//= SQL query, both thanks to AnnieRuru.
+//= 1.3 Re-added a blacklist adapted for the SQL query.
+//= 1.3a Added mission reset options.
//============================================================
prontera,152,187,6 script Hunting Missions 951,{
@@ -72,10 +79,24 @@ function Chk; function Cm;
mes "[Hunting Missions]";
mes "Do you really want to";
mes "abandon your mission?";
- if (.Delay) mes "Your delay time will not be reset.";
+ if (.Reset < 0 && .Delay)
+ mes "Your delay time will not be reset.";
+ else if (.Reset > 0)
+ mes "It will cost "+Cm(.Reset)+" Zeny.";
next;
switch(select(" ~ Abandon...: ~ ^777777Cancel^000000")) {
case 1:
+ if (.Reset > 0) {
+ if (Zeny < .Reset) {
+ mes "[Hunting Missions]";
+ mes "You don't have enough";
+ mes "Zeny to drop this mission.";
+ emotion e_sry;
+ close;
+ }
+ set Zeny, Zeny-.Reset;
+ emotion e_cash;
+ }
mes "[Hunting Missions]";
mes "Alright, I've dropped";
mes "your current mission.";
@@ -85,7 +106,7 @@ function Chk; function Cm;
setd "Mission"+.@i+"_",0;
}
set #Mission_Count,0;
- if (.Delay) set #Mission_Delay, gettimetick(2)+(.Delay*3600);
+ if (.Reset < 0 && .Delay) set #Mission_Delay, gettimetick(2)+(.Delay*3600);
close;
case 2:
mes "[Hunting Missions]";
@@ -262,6 +283,7 @@ OnInit:
set .Delay,12; // Quest delay, in hours (0 to disable).
set .Quests,4; // Number of subquests per mission (increases rewards).
set .Party,3; // Party options: 0 (exclude party kills), 1 (include party kills), 2 (same map only), 3 (screen area only)
+ set .Reset,-1; // Reset options: -1 (abandoning mission sets delay time), 0 (no delay time), [Zeny] (cost to abandon mission, no delay time)
setarray .Count[0], // Min and max monsters per subquest (increases rewards).
40,70;
setarray .Modifier[0], // Multipliers for Base Exp, Job Exp, and Zeny rewards.
@@ -280,4 +302,4 @@ OnInit:
npcshopadditem "mission_shop", .Shop[.@i], .Shop[.@i+1];
end;
}
-- shop mission_shop -1,512:-1 \ No newline at end of file
+- shop mission_shop -1,512:-1
diff --git a/npc/custom/quests/quest_shop.txt b/npc/custom/quests/quest_shop.txt
index 3f69c73ef..3395ac102 100644
--- a/npc/custom/quests/quest_shop.txt
+++ b/npc/custom/quests/quest_shop.txt
@@ -3,13 +3,21 @@
//===== By: ==================================================
//= Euphy
//===== Current Version: =====================================
-//= 1.6
+//= 1.6a
//===== Compatible With: =====================================
//= Hercules
//===== Description: =========================================
//= A dynamic quest shop based on Lunar's, with easier config.
//= Includes support for multiple shops & cashpoints.
//= Item Preview script by ToastOfDoom.
+//===== Additional Comments: =================================
+//= 1.0 Initial script.
+//= 1.2 Added category support.
+//= 1.3 More options and fixes.
+//= 1.4 Added debug settings.
+//= 1.5 Replaced categories with shop IDs.
+//= 1.6 Added support for purchasing stackables.
+//= 1.6a Added support for previewing costumes and robes.
//============================================================
// Shop NPCs -- supplying no argument displays entire menu.
@@ -116,11 +124,11 @@ OnBuyItem:
mes " > "+Chk(countitem(.@q[.@i]),.@q[.@i+1]*.@q[1])+((.ShowID)?"{"+.@q[.@i]+"} ":"")+Slot(.@q[.@i])+" ("+countitem(.@q[.@i])+"/"+(.@q[.@i+1]*.@q[1])+")^000000";
next;
setarray @qe[1], getiteminfo(.@q[0],5), getiteminfo(.@q[0],11);
- if (((@qe[1] & 1) || (@qe[1] & 256) || (@qe[1] & 512)) && @qe[2] > 0)
+ if (@qe[2] > 0 && ((@qe[1] & 1) || (@qe[1] & 256) || (@qe[1] & 512) || (@qe[1] & 1024) || (@qe[1] & 2048) || (@qe[1] & 4096) || (@qe[1] & 4) || (@qe[1] & 8192)))
set .@preview,1;
addtimer 1000, strnpcinfo(0)+"::OnEnd";
while(1) {
- switch(select(" ~ Purchase ^0055FF"+getitemname(.@q[0])+"^000000:"+((.@preview && !@qe[6])?" ~ Preview...":"")+": ~ ^777777Cancel^000000")) {
+ switch(select(" ~ Purchase ^0055FF"+getitemname(.@q[0])+"^000000:"+((.@preview && !@qe[7])?" ~ Preview...":"")+": ~ ^777777Cancel^000000")) {
case 1:
if (@qe[0]) {
mes "[Quest Shop]";
@@ -138,13 +146,14 @@ OnBuyItem:
delitem .@q[.@i],.@q[.@i+1]*.@q[1];
getitem .@q[0],.@q[2];
if (.Announce) announce strcharinfo(0)+" has created "+((.@q[2] > 1)?.@q[2]+"x "+getitemname(.@q[0]):A_An(getitemname(.@q[0])))+"!",0;
- specialeffect2 699;
+ specialeffect2 EF_FLOWERLEAF;
close;
case 2:
- setarray @qe[3], getlook(LOOK_HEAD_BOTTOM), getlook(LOOK_HEAD_TOP), getlook(LOOK_HEAD_MID), 1;
- if (@qe[1] & 1) changelook LOOK_HEAD_BOTTOM, @qe[2];
- if (@qe[1] & 256) changelook LOOK_HEAD_TOP, @qe[2];
- if (@qe[1] & 512) changelook LOOK_HEAD_MID, @qe[2];
+ setarray @qe[3], getlook(LOOK_HEAD_BOTTOM), getlook(LOOK_HEAD_TOP), getlook(LOOK_HEAD_MID), getlook(LOOK_ROBE), 1;
+ if ((@qe[1] & 1) || (@qe[1] & 4096)) changelook LOOK_HEAD_BOTTOM, @qe[2];
+ else if ((@qe[1] & 256) || (@qe[1] & 1024)) changelook LOOK_HEAD_TOP, @qe[2];
+ else if ((@qe[1] & 512) || (@qe[1] & 2048)) changelook LOOK_HEAD_MID, @qe[2];
+ else if ((@qe[1] & 4) || (@qe[1] & 8192)) changelook LOOK_ROBE, @qe[2];
break;
case 3:
close;
@@ -152,12 +161,13 @@ OnBuyItem:
}
OnEnd:
- if (@qe[6]) {
+ if (@qe[7]) {
changelook LOOK_HEAD_BOTTOM, @qe[3];
changelook LOOK_HEAD_TOP, @qe[4];
changelook LOOK_HEAD_MID, @qe[5];
+ changelook LOOK_ROBE, @qe[6];
}
- deletearray @qe[0],7;
+ deletearray @qe[0],8;
end;
function Add {
diff --git a/npc/custom/warper.txt b/npc/custom/warper.txt
index 14dcfebf0..72d3bafac 100644
--- a/npc/custom/warper.txt
+++ b/npc/custom/warper.txt
@@ -3,16 +3,23 @@
//===== By: ==================================================
//= Euphy
//===== Current Version: =====================================
-//= 1.2
+//= 1.4
//===== Compatible With: =====================================
//= Hercules
//===== Description: =========================================
//= A complete - but very condensed - warper script.
-//= Coordinates written largely by Tekno-Kanix and ToastOfDoom.
+//= Some coordinates written by Tekno-Kanix and ToastOfDoom.
+//===== Additional Comments: =================================
+//= 1.0 Initial script.
+//= 1.1 Added missing duplicates and fixed coordinates.
+//= 1.2 Added new episodes and simplified functions.
+//= 1.3 Added Renewal checks and Instances menu.
+//= Aligned coordinates with @go.
+//= 1.4 Added new Guild Dungeons.
//============================================================
- script Warper -1,{
-function Go; function Disp; function Pick;
+function Go; function Disp; function Pick; function Restrict;
// --------------------------------------------------
// Main Menu:
@@ -20,21 +27,31 @@ function Go; function Disp; function Pick;
menu "Last Warp ^777777["+lastwarp$+"]^000000",-,
" ~ Towns",Towns, " ~ Fields",Fields, " ~ Dungeons",Dungeons,
- " ~ Guild Castles",Castles, " ~ Special Areas",Special;
+ " ~ Guild Castles",Castles, " ~ Guild Dungeons",Guild_Dungeons,
+ " ~ Instances",Instances, " ~ Special Areas",Special;
- if (lastwarp$ == "") dispbottom "You have not warped anywhere yet.";
- else warp lastwarp$,lastwarpx,lastwarpy;
- close;
+ if (lastwarp$ == "")
+ message strcharinfo(0),"You haven't warped anywhere yet.";
+ else
+ warp lastwarp$,lastwarpx,lastwarpy;
+ end;
// ------------------- Functions -------------------
// * Go("<map>",<x>,<y>);
// ~ Warps directly to a map.
+//
// * Disp("<Menu Option>",<first option>,<last option>);
// * Pick("<map_prefix>"{,<index offset>});
-// ~ Dynamic menu and map selection.
-// * Disp("","<Option 1>:<Option 2>:<etc.>");
+// ~ Dynamic menu and map selection (auto-numbered).
+//
+// * Disp("<Option 1>:<Option 2>:<etc.>");
// * Pick("","<map1>","<map2>","<etc.>");
-// ~ Manual menu and map selection.
+// ~ Manual menu and map selection (listed).
+//
+// * Restrict("<RE | Pre-RE>"{,<menu option numbers>});
+// ~ Only allows map for Renewal or Pre-Renewal modes.
+// If menu option numbers are given, only those maps
+// will be restricted (i.e. not for "Go").
//
// Other notes:
// ~ Array @c[] holds all (x,y) coordinates.
@@ -45,150 +62,194 @@ menu "Last Warp ^777777["+lastwarp$+"]^000000",-,
function Go {
warp getarg(0),getarg(1,0),getarg(2,0);
getmapxy(lastwarp$,lastwarpx,lastwarpy,0);
- close;
+ end;
}
function Disp {
- set @menu$,"";
- if(getarg(0)=="") {
- set @menu$,getarg(1);
- return;
+ if (getargcount() < 3)
+ set @menu$, getarg(0);
+ else {
+ set @menu$,"";
+ for(set .@i,getarg(1); .@i<=getarg(2); set .@i,.@i+1)
+ set @menu$, @menu$+getarg(0)+" "+.@i+":";
}
- for(set .@i,getarg(1); .@i<=getarg(2); set .@i,.@i+1)
- set @menu$, @menu$+getarg(0)+" "+.@i+":";
return;
}
function Pick {
- if(getarg(0)=="") {
- set .@i, select(@menu$);
- warp getarg(.@i),@c[.@i*2],@c[.@i*2+1];
+ set .@warp_block,@warp_block;
+ set @warp_block,0;
+ if (getarg(0) == "") {
+ set .@select, select(@menu$);
+ set .@i, .@select;
+ set .@map$, getarg(.@i);
} else {
- set .@i, select(@menu$)-getarg(1,0);
- warp getarg(0)+((.@i<10)?"0":"")+.@i,@c[.@i*2],@c[.@i*2+1];
+ set .@select, select(@menu$);
+ set .@i, .@select-getarg(1,0);
+ set .@map$, getarg(0)+((.@i<10)?"0":"")+.@i;
+ }
+ if (.@warp_block & (1<<.@select)) {
+ message strcharinfo(0),"This map is not enabled in "+((checkre(0))?"":"Pre-")+"Renewal.";
+ end;
}
+ warp .@map$,@c[.@i*2],@c[.@i*2+1];
getmapxy(lastwarp$,lastwarpx,lastwarpy,0);
- close;
+ deletearray @c[0],getarraysize(@c);
+ end;
+}
+function Restrict {
+ if ((getarg(0) == "RE" && !checkre(0)) || (getarg(0) == "Pre-RE" && checkre(0))) {
+ if (getarg(1,0)) {
+ set @warp_block,0;
+ for(set .@i,1; .@i<getargcount(); set .@i,.@i+1)
+ set @warp_block, @warp_block | (1<<getarg(.@i));
+ } else {
+ message strcharinfo(0),"This map is not enabled in "+((checkre(0))?"":"Pre-")+"Renewal.";
+ end;
+ }
+ }
+ return;
}
// --------------------------------------------------
Towns:
// --------------------------------------------------
menu "Prontera",T1, "Alberta",T2, "Aldebaran",T3, "Amatsu",T4, "Ayothaya",T5,
- "Brasilis",T6, "Comodo",T7, "Dewata",T33, "Eclage",T34, "Einbech",T8,
- "Einbroch",T9, "El Dicastes",T10, "Geffen",T11, "Gonryun",T12, "Hugel",T13,
- "Izlude",T14, "Jawaii",T15, "Lighthalzen",T16, "Louyang",T17, "Lutie",T18,
- "Malangdo",T35, "Malaya",T36, "Manuk",T19, "Midgarts Expedition Camp",T20,
- "Mora",T21, "Morroc",T22, "Moscovia",T23, "Nameless Island",T24,
- "Niflheim",T25, "Payon",T26, "Rachel",T27, "Splendide",T28, "Thor Camp",T29,
- "Umbala",T30, "Veins",T31, "Yuno",T32;
+ "Brasilis",T6, "Comodo",T7, "Dewata",T8, "Eclage",T9, "Einbech",T10,
+ "Einbroch",T11, "El Dicastes",T12, "Geffen",T13, "Gonryun",T14, "Hugel",T15,
+ "Izlude",T16, "Jawaii",T17, "Lighthalzen",T18, "Louyang",T19, "Lutie",T20,
+ "Malangdo",T21, "Malaya",T22, "Manuk",T23, "Midgarts Expedition Camp",T24,
+ "Mora",T25, "Morroc",T26, "Moscovia",T27, "Nameless Island",T28,
+ "Niflheim",T29, "Payon",T30, "Rachel",T31, "Splendide",T32, "Thor Camp",T33,
+ "Umbala",T34, "Veins",T35, "Yuno",T36;
T1: Go("prontera",155,183);
T2: Go("alberta",28,234);
T3: Go("aldebaran",140,131);
T4: Go("amatsu",198,84);
T5: Go("ayothaya",208,166);
-T6: Go("brasilis",195,220);
+T6: Restrict("RE");
+ Go("brasilis",196,217);
T7: Go("comodo",209,143);
-T8: Go("einbech",138,243);
-T9: Go("einbroch",64,200);
-T10: Go("dicastes01",197,187);
-T11: Go("geffen",120,68);
-T12: Go("gonryun",160,121);
-T13: Go("hugel",96,145);
-T14: Go("izlude",128,114);
-T15: Go("jawaii",213,230);
-T16: Go("lighthalzen",158,92);
-T17: Go("louyang",217,100);
-T18: Go("xmas",147,134);
-T19: Go("manuk",260,175);
-T20: Go("mid_camp",210,288);
-T21: Go("mora",111,97);
-T22: Go("morocc",156,93);
-T23: Go("moscovia",219,193);
-T24: Go("nameless_n",256,215);
-T25: Go("niflheim",202,174);
-T26: Go("payon",179,100);
-T27: Go("rachel",130,111);
-T28: Go("splendide",200,153);
-T29: Go("thor_camp",246,68);
-T30: Go("umbala",127,128);
-T31: Go("veins",216,123);
-T32: Go("yuno",157,51);
-T33: Go("dewata",199,179);
-T34: Go("eclage",111,39);
-T35: Go("malangdo",224,184);
-T36: Go("malaya",212,206);
+T8: Restrict("RE");
+ Go("dewata",200,180);
+T9: Restrict("RE");
+ Go("ecl_in01",48,53);
+T10: Go("einbech",63,35);
+T11: Go("einbroch",64,200);
+T12: Restrict("RE");
+ Go("dicastes01",198,187);
+T13: Go("geffen",119,59);
+T14: Go("gonryun",160,120);
+T15: Go("hugel",96,145);
+T16: Go("izlude",128,114);
+T17: Go("jawaii",251,132);
+T18: Go("lighthalzen",158,92);
+T19: Go("louyang",217,100);
+T20: Go("xmas",147,134);
+T21: Restrict("RE");
+ Go("malangdo",140,114);
+T22: Restrict("RE");
+ Go("malaya",212,206);
+T23: Go("manuk",282,138);
+T24: Go("mid_camp",210,288);
+T25: Restrict("RE");
+ Go("mora",55,146);
+T26: Go("morocc",156,93);
+T27: Go("moscovia",223,184);
+T28: Go("nameless_n",256,215);
+T29: Go("niflheim",202,174);
+T30: Go("payon",179,100);
+T31: Go("rachel",130,110);
+T32: Go("splendide",201,147);
+T33: Go("thor_camp",246,68);
+T34: Go("umbala",97,153);
+T35: Go("veins",216,123);
+T36: Go("yuno",157,51);
// --------------------------------------------------
Fields:
// --------------------------------------------------
menu "Amatsu Fields",F1, "Ayothaya Fields",F2, "Bifrost Fields", F3,
- "Brasilis Fields",F4, "Comodo Fields",F5, "Dewata Fields",F26,
- "Eclage Fields",F27, "Einbroch Fields",F6, "El Dicastes Fields",F7,
- "Geffen Fields",F8, "Gonryun Fields",F9, "Hugel Fields",F10,
- "Lighthalzen Fields",F11, "Louyang Field",F12, "Lutie Field",F13,
- "Malaya Fields",F28, "Manuk Fields",F14, "Mjolnir Fields",F15,
- "Moscovia Fields",F16, "Niflheim Fields",F17, "Payon Forests",F18,
- "Prontera Fields",F19, "Rachel Fields",F20, "Sograt Deserts",F21,
- "Splendide Fields",F22, "Umbala Fields",F23, "Veins Fields",F24,
- "Yuno Fields",F25;
+ "Brasilis Fields",F4, "Comodo Fields",F5, "Dewata Fields",F6,
+ "Eclage Fields",F7, "Einbroch Fields",F8, "El Dicastes Fields",F9,
+ "Geffen Fields",F10, "Gonryun Fields",F11, "Hugel Fields",F12,
+ "Lighthalzen Fields",F13, "Louyang Field",F14, "Lutie Field",F15,
+ "Malaya Fields",F16, "Manuk Fields",F17, "Mjolnir Fields",F18,
+ "Moscovia Fields",F19, "Niflheim Fields",F20, "Payon Forests",F21,
+ "Prontera Fields",F22, "Rachel Fields",F23, "Sograt Deserts",F24,
+ "Splendide Fields",F25, "Umbala Fields",F26, "Veins Fields",F27,
+ "Yuno Fields",F28;
F1: setarray @c[2],190,197;
Disp("Amatsu Field",1,1); Pick("ama_fild");
F2: setarray @c[2],173,134,212,150;
Disp("Ayothaya Field",1,2); Pick("ayo_fild");
-F3: setarray @c[2],193,220,220,187;
+F3: Restrict("RE");
+ setarray @c[2],193,220,220,187;
Disp("Bifrost Field",1,2); Pick("bif_fild");
-F4: setarray @c[2],74,32;
+F4: Restrict("RE");
+ setarray @c[2],74,32;
Disp("Brasilis Field",1,1); Pick("bra_fild");
-F5: setarray @c[2],180,178,231,160,191,172,228,194,224,203,190,223,234,177,194,175,172,172;
+F5: Restrict("Pre-RE",5);
+ setarray @c[2],180,178,231,160,191,172,228,194,224,203,190,223,234,177,194,175,172,172;
Disp("Comodo Field",1,9); Pick("cmd_fild");
-F6: setarray @c[2],142,225,182,141,187,228,185,173,216,173,195,148,272,220,173,214,207,174,196,200;
+F6: Restrict("RE");
+ setarray @c[2],371,212;
+ Disp("Dewata Field",1,1); Pick("dew_fild");
+F7: Restrict("RE");
+ setarray @c[2],97,314;
+ Disp("Eclage Field",1,1); Pick("ecl_fild");
+F8: Restrict("Pre-RE",2,10);
+ setarray @c[2],142,225,182,141,187,228,185,173,216,173,195,148,272,220,173,214,207,174,196,200;
Disp("Einbroch Field",1,10); Pick("ein_fild");
-F7: setarray @c[2],143,132,143,217;
+F9: Restrict("RE");
+ setarray @c[2],143,132,143,217;
Disp("El Dicastes Field",1,2); Pick("dic_fild");
-F8: setarray @c[0],46,199,213,204,195,212,257,192,188,171,166,263,248,158,195,191,186,183,221,117,178,218,136,328,240,181,235,235,211,185;
+F10: Restrict("Pre-RE",13,15);
+ setarray @c[0],46,199,213,204,195,212,257,192,188,171,166,263,248,158,195,191,186,183,221,117,178,218,136,328,240,181,235,235,211,185;
Disp("Geffen Field",0,14); Pick("gef_fild",1);
-F9: setarray @c[2],220,227;
+F11: setarray @c[2],220,227;
Disp("Gonryun Field",1,1); Pick("gon_fild");
-F10: setarray @c[2],268,101,222,193,232,185,252,189,196,106,216,220,227,197;
+F12: Restrict("Pre-RE",3,7);
+ setarray @c[2],268,101,222,193,232,185,252,189,196,106,216,220,227,197;
Disp("Hugel Field",1,7); Pick("hu_fild");
-F11: setarray @c[2],240,179,185,235,240,226;
+F13: setarray @c[2],240,179,185,235,240,226;
Disp("Lighthalzen Field",1,3); Pick("lhz_fild");
-F12: setarray @c[2],229,187;
+F14: setarray @c[2],229,187;
Disp("Louyang Field",1,1); Pick("lou_fild");
-F13: setarray @c[2],115,145;
+F15: setarray @c[2],115,145;
Disp("Lutie Field",1,1); Pick("xmas_fild");
-F14: setarray @c[2],35,236,35,262,84,365;
+F16: Restrict("RE");
+ setarray @c[2],40,272,207,180;
+ Disp("Malaya Field",1,2); Pick("ma_fild");
+F17: setarray @c[2],35,236,35,262,84,365;
Disp("Manuk Field",1,3); Pick("man_fild");
-F15: setarray @c[2],204,120,175,193,208,213,179,180,181,240,195,270,235,202,188,215,205,144,245,223,180,206,196,208;
+F18: setarray @c[2],204,120,175,193,208,213,179,180,181,240,195,270,235,202,188,215,205,144,245,223,180,206,196,208;
Disp("Mjolnir Field",1,12); Pick("mjolnir_");
-F16: setarray @c[2],82,104,131,147;
+F19: setarray @c[2],82,104,131,147;
Disp("Moscovia Field",1,2); Pick("mosk_fild");
-F17: setarray @c[2],215,229,167,234;
+F20: setarray @c[2],215,229,167,234;
Disp("Niflheim Field",1,2); Pick("nif_fild");
-F18: setarray @c[2],158,206,151,219,205,148,186,247,134,204,193,235,200,177,137,189,201,224,160,205,194,150;
+F21: Restrict("Pre-RE",5,11);
+ setarray @c[2],158,206,151,219,205,148,186,247,134,204,193,235,200,177,137,189,201,224,160,205,194,150;
Disp("Payon Forest",1,11); Pick("pay_fild");
-F19: setarray @c[0],208,227,190,206,240,206,190,143,307,252,239,213,185,188,193,194,187,218,210,183,195,149,198,164;
+F22: setarray @c[0],208,227,190,206,240,206,190,143,307,252,239,213,185,188,193,194,187,218,210,183,195,149,198,164;
Disp("Prontera Field",0,11); Pick("prt_fild",1);
-F20: setarray @c[2],192,162,235,166,202,206,202,208,225,202,202,214,263,196,217,201,87,121,277,181,221,185,175,200,174,197;
+F23: Restrict("Pre-RE",2,7,9,10,11,13);
+ setarray @c[2],192,162,235,166,202,206,202,208,225,202,202,214,263,196,217,201,87,121,277,181,221,185,175,200,174,197;
Disp("Rachel Field",1,13); Pick("ra_fild");
-F21: setarray @c[2],219,205,177,206,194,182,224,170,198,216,156,187,185,263,206,228,208,238,209,223,85,97,207,202,31,195,38,195;
- Disp("","Sograt Desert 1:Sograt Desert 2:Sograt Desert 3:Sograt Desert 7:Sograt Desert 11:Sograt Desert 12:Sograt Desert 13:Sograt Desert 16:Sograt Desert 17:Sograt Desert 18:Sograt Desert 19:Sograt Desert 20:Sograt Desert 21:Sograt Desert 22");
+F24: setarray @c[2],219,205,177,206,194,182,224,170,198,216,156,187,185,263,206,228,208,238,209,223,85,97,207,202,31,195,38,195;
+ Disp("Sograt Desert 1:Sograt Desert 2:Sograt Desert 3:Sograt Desert 7:Sograt Desert 11:Sograt Desert 12:Sograt Desert 13:Sograt Desert 16:Sograt Desert 17:Sograt Desert 18:Sograt Desert 19:Sograt Desert 20:Sograt Desert 21:Sograt Desert 22");
Pick("","moc_fild01","moc_fild02","moc_fild03","moc_fild07","moc_fild11","moc_fild12","moc_fild13","moc_fild16","moc_fild17","moc_fild18","moc_fild19","moc_fild20","moc_fild21","moc_fild22");
-F22: setarray @c[2],175,186,236,184,188,204;
+F25: setarray @c[2],175,186,236,184,188,204;
Disp("Splendide Field",1,3); Pick("spl_fild");
-F23: setarray @c[2],217,206,223,221,237,215,202,197;
+F26: setarray @c[2],217,206,223,221,237,215,202,197;
Disp("Umbala Field",1,4); Pick("um_fild");
-F24: setarray @c[2],186,175,196,370,222,45,51,250,202,324,150,223,149,307;
+F27: Restrict("Pre-RE",5);
+ setarray @c[2],186,175,196,370,222,45,51,250,202,324,150,223,149,307;
Disp("Veins Field",1,7); Pick("ve_fild");
-F25: setarray @c[2],189,224,192,207,221,157,226,199,223,177,187,232,231,174,196,203,183,214,200,124,195,226,210,304;
+F28: Restrict("Pre-RE",5,10);
+ setarray @c[2],189,224,192,207,221,157,226,199,223,177,187,232,231,174,196,203,183,214,200,124,195,226,210,304;
Disp("Yuno Field",1,12); Pick("yuno_fild");
-F26: setarray @c[2],371,212;
- Disp("Dewata Field",1,1); Pick("dew_fild");
-F27: setarray @c[2],97,314;
- Disp("Eclage Field",1,1); Pick("ecl_fild");
-F28: setarray @c[2],40,272,207,180;
- Disp("Malaya Field",1,2); Pick("ma_fild");
// --------------------------------------------------
Dungeons:
@@ -196,16 +257,15 @@ F28: setarray @c[2],40,272,207,180;
menu "Abyss Lakes",D1, "Amatsu Dungeon",D2, "Anthell",D3,
"Ayothaya Dungeon",D4, "Beach Dungeon",D5, "Bio Labs",D6,
"Brasilis Dungeon",D7, "Byalan Dungeon",D8, "Clock Tower",D9,
- "Coal Mines",D10, "Culvert",D11, "Cursed Abbey",D12, "Dewata Dungeon",D41,
- "Einbroch Dungeon",D13, "Endless Tower",D14, "Gefenia",D15,
- "Geffen Dungeon",D16, "Glast Heim",D17, "Gonryun Dungeon",D18,
- "Guild Dungeons",GD, "Hidden Dungeon",D19, "Ice Dungeon",D20,
- "Juperos",D21, "Kiel Dungeon",D22, "Louyang Dungeon",D23,
- "Magma Dungeon",D24, "Malangdo Dungeon",D42, "Moscovia Dungeon",D25,
- "Nidhogg's Dungeon",D26, "Odin Temple",D27, "Orc Dungeon",D28, "Payon Dungeon",D29,
- "Pyramids",D30, "Rachel Sanctuary",D31, "Scaraba Hole",D32, "Sealed Shrine",D33,
- "Sphinx",D34, "Sunken Ship",D35, "Thanatos Tower",D36, "Thor Volcano",D37,
- "Toy Factory",D38, "Turtle Dungeon",D39, "Umbala Dungeon",D40;
+ "Coal Mines",D10, "Culvert",D11, "Cursed Abbey",D12, "Dewata Dungeon",D13,
+ "Einbroch Dungeon",D14, "Gefenia",D15, "Geffen Dungeon",D16,
+ "Glast Heim",D17, "Gonryun Dungeon",D18, "Hidden Dungeon",D19,
+ "Ice Dungeon",D20, "Juperos",D21, "Kiel Dungeon",D22, "Louyang Dungeon",D23,
+ "Magma Dungeon",D24, "Malangdo Dungeon",D25, "Moscovia Dungeon",D26,
+ "Nidhogg's Dungeon",D27, "Odin Temple",D28, "Orc Dungeon",D29,
+ "Payon Dungeon",D30, "Pyramids",D31, "Rachel Sanctuary",D32,
+ "Scaraba Hole",D33, "Sphinx",D34, "Sunken Ship",D35, "Thanatos Tower",D36,
+ "Thor Volcano",D37, "Toy Factory",D38, "Turtle Dungeon",D39, "Umbala Dungeon",D40;
D1: setarray @c[2],261,272,275,270,116,27;
Disp("Abyss Lakes",1,3); Pick("abyss_");
@@ -214,17 +274,20 @@ D2: setarray @c[2],228,11,34,41,119,14;
D3: setarray @c[2],35,262,168,170;
Disp("Anthell",1,2); Pick("anthell");
D4: setarray @c[2],275,19,24,26;
- Disp("","Ancient Shrine Maze:Inside Ancient Shrine"); Pick("ayo_dun");
+ Disp("Ancient Shrine Maze:Inside Ancient Shrine"); Pick("ayo_dun");
D5: setarray @c[2],266,67,255,244,23,260;
Disp("Beach Dungeon",1,3); Pick("","beach_dun","beach_dun2","beach_dun3");
-D6: setarray @c[2],150,288,150,18,140,134;
- Disp("Bio Lab",1,3); Pick("lhz_dun");
-D7: setarray @c[2],87,47,262,262;
+D6: Restrict("RE",4);
+ setarray @c[2],150,288,150,18,140,134,244,52;
+ Disp("Bio Lab",1,4); Pick("lhz_dun");
+D7: Restrict("RE");
+ setarray @c[2],87,47,262,262;
Disp("Brasilis Dungeon",1,2); Pick("bra_dun");
-D8: setarray @c[0],168,168,253,252,236,204,32,63,26,27;
- Disp("Byalan Dungeon",1,5); Pick("iz_dun",1);
+D8: Restrict("RE",6);
+ setarray @c[0],168,168,253,252,236,204,32,63,26,27,141,187;
+ Disp("Byalan Dungeon",1,6); Pick("iz_dun",1);
D9: setarray @c[2],199,159,148,283,65,147,56,155,297,25,127,169,277,178,268,74;
- Disp("","Clock Tower 1:Clock Tower 2:Clock Tower 3:Clock Tower 4:Basement 1:Basement 2:Basement 3:Basement 4");
+ Disp("Clock Tower 1:Clock Tower 2:Clock Tower 3:Clock Tower 4:Basement 1:Basement 2:Basement 3:Basement 4");
Pick("","c_tower1","c_tower2","c_tower3","c_tower4","alde_dun01","alde_dun02","alde_dun03","alde_dun04");
D10: setarray @c[2],52,17,381,343,302,262;
Disp("Coal Mines",1,3); Pick("mjo_dun");
@@ -232,16 +295,17 @@ D11: setarray @c[2],131,247,19,19,180,169,100,92;
Disp("Culvert",1,4); Pick("","prt_sewb1","prt_sewb2","prt_sewb3","prt_sewb4");
D12: setarray @c[2],51,14,150,11,120,10;
Disp("Cursed Abbey",1,3); Pick("abbey");
-D13: setarray @c[2],22,14,292,290;
+D13: Restrict("RE");
+ setarray @c[2],285,160,299,29;
+ Disp("Dewata Dungeon",1,2); Pick("dew_dun");
+D14: setarray @c[2],22,14,292,290;
Disp("Einbroch Dungeon",1,2); Pick("ein_dun");
-D14: setarray @c[2],72,112;
- Disp("","Misty Island"); Pick("","e_tower");
D15: setarray @c[2],40,103,203,34,266,168,130,272;
Disp("Gefenia",1,4); Pick("gefenia",0);
D16: setarray @c[0],104,99,115,236,106,132,203,200;
Disp("Geffen Dungeon",1,4); Pick("gef_dun",1);
-D17: setarray @c[2],375,304,199,29,104,25,150,15,157,287,147,15,258,255,108,291,171,283,68,277,156,7,12,7,133,271,224,274,14,70,150,14;
- Disp("","Entrance:Castle 1:Castle 2:Chivalry 1:Chivalry 2:Churchyard:Culvert 1:Culvert 2:Culvert 3:Culvert 4:St. Abbey:Staircase Dungeon:Underground Cave 1:Underground Cave 2:Underground Prison 1:Underground Prison 2");
+D17: setarray @c[2],370,304,199,29,104,25,150,15,157,287,147,15,258,255,108,291,171,283,68,277,156,7,12,7,133,271,224,274,14,70,150,14;
+ Disp("Entrance:Castle 1:Castle 2:Chivalry 1:Chivalry 2:Churchyard:Culvert 1:Culvert 2:Culvert 3:Culvert 4:St. Abbey:Staircase Dungeon:Underground Cave 1:Underground Cave 2:Underground Prison 1:Underground Prison 2");
Pick("","glast_01","gl_cas01","gl_cas02","gl_knt01","gl_knt02","gl_chyard","gl_sew01","gl_sew02","gl_sew03","gl_sew04","gl_church","gl_step","gl_dun01","gl_dun02","gl_prison","gl_prison1");
D18: setarray @c[2],153,53,28,113,68,16;
Disp("Gonryun Dungeon",1,3); Pick("gon_dun");
@@ -250,32 +314,34 @@ D19: setarray @c[2],176,7,93,20,23,8;
D20: setarray @c[2],157,14,151,155,149,22,33,158;
Disp("Ice Dungeon",1,4); Pick("ice_dun");
D21: setarray @c[2],140,51,53,247,37,63,150,285;
- Disp("","Entrance:Juperos 1:Juperos 2:Core");
+ Disp("Entrance:Juperos 1:Juperos 2:Core");
Pick("","jupe_cave","juperos_01","juperos_02","jupe_core");
D22: setarray @c[2],28,226,41,198;
Disp("Kiel Dungeon",1,2); Pick("kh_dun");
D23: setarray @c[2],218,196,282,20,165,38;
- Disp("","The Royal Tomb:Inside the Royal Tomb:Suei Long Gon"); Pick("lou_dun");
+ Disp("The Royal Tomb:Inside the Royal Tomb:Suei Long Gon"); Pick("lou_dun");
D24: setarray @c[2],126,68,47,30;
Disp("Magma Dungeon",1,2); Pick("mag_dun");
-D25: setarray @c[2],189,48,165,30,32,135;
+D25: Restrict("RE");
+ setarray @c[2],33,230;
+ Disp("Malangdo Dungeon",1,1); Pick("mal_dun");
+D26: setarray @c[2],189,48,165,30,32,135;
Disp("Moscovia Dungeon",1,3); Pick("mosk_dun");
-D26: setarray @c[2],61,239,60,271;
+D27: setarray @c[2],61,239,60,271;
Disp("Nidhogg's Dungeon",1,2); Pick("nyd_dun");
-D27: setarray @c[2],298,167,224,149,266,280;
+D28: setarray @c[2],298,167,224,149,266,280;
Disp("Odin Temple",1,3); Pick("odin_tem");
-D28: setarray @c[2],32,170,21,185;
+D29: setarray @c[2],32,170,21,185;
Disp("Orc Dungeon",1,2); Pick("orcsdun");
-D29: setarray @c[0],21,183,19,33,19,63,155,159,201,204;
+D30: setarray @c[0],21,183,19,33,19,63,155,159,201,204;
Disp("Payon Dungeon",1,5); Pick("pay_dun",1);
-D30: setarray @c[2],192,9,10,192,100,92,181,11,94,96,192,8;
- Disp("","Pyramids 1:Pyramids 2:Pyramids 3:Pyramids 4:Basement 1:Basement 2"); Pick("moc_pryd");
-D31: setarray @c[2],140,11,32,21,4,149,204,218,150,9;
+D31: setarray @c[2],192,9,10,192,100,92,181,11,94,96,192,8;
+ Disp("Pyramids 1:Pyramids 2:Pyramids 3:Pyramids 4:Basement 1:Basement 2"); Pick("moc_pryd");
+D32: setarray @c[2],140,11,32,21,4,149,204,218,150,9;
Disp("Rachel Sanctuary",1,5); Pick("ra_san");
-D32: setarray @c[2],364,44,101,141;
+D33: Restrict("RE");
+ setarray @c[2],364,44,101,141;
Disp("Scaraba Hole",1,2); Pick("dic_dun");
-D33: setarray @c[2],306,143;
- Disp("","Friar Patrick"); Pick("","monk_test");
D34: setarray @c[2],288,9,149,81,210,54,10,222,100,99;
Disp("Sphinx",1,5); Pick("","in_sphinx1","in_sphinx2","in_sphinx3","in_sphinx4","in_sphinx5");
D35: setarray @c[2],69,24,102,27;
@@ -287,17 +353,11 @@ D37: setarray @c[2],21,228,75,205,34,272;
D38: setarray @c[2],205,15,129,133;
Disp("Toy Factory",1,2); Pick("xmas_dun");
D39: setarray @c[2],154,49,148,261,132,189,100,192;
- Disp("","Entrance:Turtle Dungeon 1:Turtle Dungeon 2:Turtle Dungeon 3"); Pick("tur_dun");
-D40: setarray @c[2],42,31,48,30,204,78;
- Disp("","Carpenter's Shop in the Tree:Passage to a Foreign World:Hvergermil's Fountain");
+ Disp("Entrance:Turtle Dungeon 1:Turtle Dungeon 2:Turtle Dungeon 3"); Pick("tur_dun");
+D40: Restrict("Pre-RE",1,2);
+ setarray @c[2],42,31,48,30,204,78;
+ Disp("Carpenter's Shop in the Tree:Passage to a Foreign World:Hvergermil's Fountain");
Pick("","um_dun01","um_dun02","yggdrasil01");
-D41: setarray @c[2],285,160,299,29;
- Disp("Dewata Dungeon",1,2); Pick("dew_dun");
-D42: setarray @c[2],33,230;
- Disp("Malangdo Dungeon",1,1); Pick("mal_dun");
-GD: setarray @c[2],119,93,39,161,50,44,116,45,199,195,200,124;
- Disp("","Baldur:Luina:Valkyrie:Britoniah:Arunafeltz:Schwaltzvalt");
- Pick("","gld_dun01","gld_dun02","gld_dun03","gld_dun04","arug_dun01","schg_dun01");
// --------------------------------------------------
Castles:
@@ -306,86 +366,132 @@ menu "Aldebaran Castles",C1, "Geffen Castles",C2, "Payon Castles",C3,
"Prontera Castles",C4, "Arunafeltz Castles",C5, "Schwaltzvalt Castles",C6;
C1: setarray @c[2],48,83,95,249,142,85,239,242,264,90;
- Disp("","Neuschwanstein:Hohenschwangau:Nuenberg:Wuerzburg:Rothenburg");
+ Disp("Neuschwanstein:Hohenschwangau:Nuenberg:Wuerzburg:Rothenburg");
Pick("","alde_gld","alde_gld","alde_gld","alde_gld","alde_gld");
C2: setarray @c[2],214,75,308,240,143,240,193,278,305,87;
- Disp("","Repherion:Eeyolbriggar:Yesnelph:Bergel:Mersetzdeitz");
+ Disp("Repherion:Eeyolbriggar:Yesnelph:Bergel:Mersetzdeitz");
Pick("","gef_fild13","gef_fild13","gef_fild13","gef_fild13","gef_fild13");
C3: setarray @c[2],121,233,295,116,317,293,140,160,204,266;
- Disp("","Bright Arbor:Scarlet Palace:Holy Shadow:Sacred Altar:Bamboo Grove Hill");
+ Disp("Bright Arbor:Scarlet Palace:Holy Shadow:Sacred Altar:Bamboo Grove Hill");
Pick("","pay_gld","pay_gld","pay_gld","pay_gld","pay_gld");
C4: setarray @c[2],134,65,240,128,153,137,111,240,208,240;
- Disp("","Kriemhild:Swanhild:Fadhgridh:Skoegul:Gondul");
+ Disp("Kriemhild:Swanhild:Fadhgridh:Skoegul:Gondul");
Pick("","prt_gld","prt_gld","prt_gld","prt_gld","prt_gld");
C5: setarray @c[2],158,272,83,47,68,155,299,345,292,107;
- Disp("","Mardol:Cyr:Horn:Gefn:Banadis");
+ Disp("Mardol:Cyr:Horn:Gefn:Banadis");
Pick("","aru_gld","aru_gld","aru_gld","aru_gld","aru_gld");
C6: setarray @c[2],293,100,288,252,97,196,137,90,71,315;
- Disp("","Himinn:Andlangr:Viblainn:Hljod:Skidbladnir");
+ Disp("Himinn:Andlangr:Viblainn:Hljod:Skidbladnir");
Pick("","sch_gld","sch_gld","sch_gld","sch_gld","sch_gld");
// --------------------------------------------------
+ Guild_Dungeons:
+// --------------------------------------------------
+menu "Baldur",G1, "Luina",G2, "Valkyrie",G3, "Britoniah",G4,
+ "Arunafeltz",G5, "Schwaltzvalt",G6;
+
+G1: Restrict("RE",2,3);
+ setarray @c[2],119,93,119,93,120,130;
+ Disp("Baldur F1:Baldur F2:Hall of Abyss");
+ Pick("","gld_dun01","gld_dun01_2","gld2_pay");
+G2: Restrict("RE",2,3);
+ setarray @c[2],39,161,39,161,147,155;
+ Disp("Luina F1:Luina F2:Hall of Abyss");
+ Pick("","gld_dun02","gld_dun02_2","gld2_ald");
+G3: Restrict("RE",2,3);
+ setarray @c[2],50,44,50,44,140,132;
+ Disp("Valkyrie F1:Valkyrie F2:Hall of Abyss");
+ Pick("","gld_dun03","gld_dun03_2","gld2_prt");
+G4: Restrict("RE",2,3);
+ setarray @c[2],116,45,116,45,152,118;
+ Disp("Britoniah F1:Britoniah F2:Hall of Abyss");
+ Pick("","gld_dun04","gld_dun04_2","gld2_gef");
+G5: Go("arug_dun01",199,195);
+G6: Go("schg_dun01",200,124);
+
+// --------------------------------------------------
+ Instances:
+// --------------------------------------------------
+
+menu "Endless Tower",I1, "Hazy Forest",I2, "Malangdo Culvert",I3,
+ "Nidhoggur's Nest",I4, "Octopus Cave",I5, "Orc's Memory",I6, "Sealed Shrine",I7;
+
+I1: Go("e_tower",72,112);
+I2: Restrict("RE");
+ Go("bif_fild01",161,334);
+I3: Restrict("RE");
+ Go("mal_in01",164,21);
+I4: Go("nyd_dun02",95,193);
+I5: Restrict("RE");
+ Go("mal_dun01",152,230);
+I6: Go("gef_fild10",240,198);
+I7: Go("monk_test",306,143);
+
+// --------------------------------------------------
Special:
// --------------------------------------------------
-menu "Auction Hall",S1, "Battlegrounds",S2, "Casino",S3, "Gonryun Arena",S4,
- "Izlude Arena",S5, "Monster Race Arena",S6, "Turbo Track",S7;
+menu "Auction Hall",S1, "Battlegrounds",S2, "Casino",S3, "Eden Group Headquarters",S4,
+ "Gonryun Arena",S5, "Izlude Arena",S6, "Monster Race Arena",S7, "Turbo Track",S8;
S1: Go("auction_01",22,68);
S2: Go("bat_room",154,150);
S3: Go("cmd_in02",179,129);
-S4: Go("gon_test",48,10);
-S5: Go("arena_room",100,88);
-S6: Go("p_track01",62,41);
-S7: Go("turbo_room",99,114);
+S4: Restrict("RE");
+ Go("moc_para01",31,14);
+S5: Go("gon_test",48,10);
+S6: Go("arena_room",100,88);
+S7: Go("p_track01",62,41);
+S8: Go("turbo_room",99,114);
}
// --------------------------------------------------
// Duplicates:
// --------------------------------------------------
-prontera,159,192,4 duplicate(Warper) Warper#1 811
-rachel,135,116,4 duplicate(Warper) Warper#2 811
-alberta,28,240,4 duplicate(Warper) Warper#3 811
-aldebaran,145,118,4 duplicate(Warper) Warper#4 811
-amatsu,203,87,4 duplicate(Warper) Warper#5 811
-ayothaya,209,169,6 duplicate(Warper) Warper#6 811
-comodo,194,158,4 duplicate(Warper) Warper#7 811
-einbech,142,246,4 duplicate(Warper) Warper#8 811
-einbroch,69,202,4 duplicate(Warper) Warper#9 811
-hugel,101,151,4 duplicate(Warper) Warper#10 811
-lighthalzen,151,101,6 duplicate(Warper) Warper#11 811
-geffen,124,72,4 duplicate(Warper) Warper#12 811
-izlude,132,120,4 duplicate(Warper) Warper#13 811
-xmas,150,136,4 duplicate(Warper) Warper#14 811
-morocc,159,97,4 duplicate(Warper) Warper#15 811
-payon,182,108,4 duplicate(Warper) Warper#16 811
-yuno,162,47,4 duplicate(Warper) Warper#17 811
-moc_fild04,207,331,4 duplicate(Warper) Warper#18 811
-izlu2dun,104,82,4 duplicate(Warper) Warper#19 811
-mjolnir_02,85,363,4 duplicate(Warper) Warper#20 811
-prt_fild05,273,215,4 duplicate(Warper) Warper#21 811
-glast_01,370,308,4 duplicate(Warper) Warper#22 811
-yuno_fild03,37,135,4 duplicate(Warper) Warper#23 811
-gef_fild10,71,339,4 duplicate(Warper) Warper#24 811
-pay_arche,39,135,4 duplicate(Warper) Warper#25 811
-moc_ruins,64,166,4 duplicate(Warper) Warper#26 811
-moc_fild19,106,97,4 duplicate(Warper) Warper#27 811
-alb2trea,73,101,4 duplicate(Warper) Warper#28 811
-tur_dun01,148,239,4 duplicate(Warper) Warper#29 811
-gonryun,162,122,4 duplicate(Warper) Warper#30 811
-louyang,208,103,6 duplicate(Warper) Warper#31 811
-umbala,132,130,4 duplicate(Warper) Warper#32 811
-brasilis,201,222,4 duplicate(Warper) Warper#33 811
-manuk,262,177,4 duplicate(Warper) Warper#34 811
-splendide,205,153,4 duplicate(Warper) Warper#35 811
-mid_camp,216,288,4 duplicate(Warper) Warper#36 811
-dicastes01,194,194,6 duplicate(Warper) Warper#37 811
-mora,110,100,4 duplicate(Warper) Warper#38 811
-moscovia,216,196,6 duplicate(Warper) Warper#39 811
-nameless_n,259,213,4 duplicate(Warper) Warper#40 811
-niflheim,205,179,4 duplicate(Warper) Warper#41 811
-thor_camp,249,76,4 duplicate(Warper) Warper#42 811
-veins,214,123,4 duplicate(Warper) Warper#43 811
-dewata,194,178,6 duplicate(Warper) Warper#44 811
-eclage,107,37,4 duplicate(Warper) Warper#45 811
-malaya,210,205,4 duplicate(Warper) Warper#46 811
-malangdo,220,188,6 duplicate(Warper) Warper#47 811
+alb2trea,57,70,6 duplicate(Warper) Warper#tre 811
+alberta,28,240,4 duplicate(Warper) Warper#alb 811
+aldebaran,145,118,4 duplicate(Warper) Warper#alde 811
+amatsu,203,87,4 duplicate(Warper) Warper#ama 811
+ayothaya,209,169,6 duplicate(Warper) Warper#ayo 811
+comodo,194,158,4 duplicate(Warper) Warper#com 811
+einbech,59,38,6 duplicate(Warper) Warper#einbe 811
+einbroch,69,202,4 duplicate(Warper) Warper#einbr 811
+gef_fild10,71,339,4 duplicate(Warper) Warper#orc 811
+geffen,124,72,4 duplicate(Warper) Warper#gef 811
+glast_01,372,308,4 duplicate(Warper) Warper#glh 811
+gonryun,162,122,4 duplicate(Warper) Warper#gon 811
+hugel,101,151,4 duplicate(Warper) Warper#hug 811
+izlu2dun,110,92,4 duplicate(Warper) Warper#izd 811
+izlude,132,120,4 duplicate(Warper) Warper#izl 811
+jawaii,253,138,4 duplicate(Warper) Warper#jaw 811
+lighthalzen,162,102,4 duplicate(Warper) Warper#lhz 811
+louyang,208,103,6 duplicate(Warper) Warper#lou 811
+manuk,274,146,6 duplicate(Warper) Warper#man 811
+mid_camp,216,288,4 duplicate(Warper) Warper#mid 811
+mjolnir_02,85,364,4 duplicate(Warper) Warper#mjo 811
+moc_ruins,64,164,4 duplicate(Warper) Warper#moc 811
+morocc,159,97,4 duplicate(Warper) Warper#mor 811
+moscovia,229,191,4 duplicate(Warper) Warper#mos 811
+nameless_n,259,213,4 duplicate(Warper) Warper#nam 811
+niflheim,205,179,4 duplicate(Warper) Warper#nif 811
+pay_arche,42,134,4 duplicate(Warper) Warper#arc 811
+payon,182,108,4 duplicate(Warper) Warper#pay 811
+prontera,159,192,4 duplicate(Warper) Warper#prt 811
+prt_fild05,279,223,6 duplicate(Warper) Warper#cul 811
+rachel,135,116,4 duplicate(Warper) Warper#rac 811
+splendide,205,153,4 duplicate(Warper) Warper#spl 811
+thor_camp,249,76,4 duplicate(Warper) Warper#thor 811
+umbala,106,150,3 duplicate(Warper) Warper#umb 811
+veins,214,123,4 duplicate(Warper) Warper#ve 811
+xmas,150,136,6 duplicate(Warper) Warper#xmas 811
+yuno,162,47,4 duplicate(Warper) Warper#yuno 811
+
+// --------------------------------------------------
+// Duplicates (Renewal):
+// --------------------------------------------------
+brasilis,201,222,4 duplicate(Warper) Warper#bra 811
+dewata,204,186,6 duplicate(Warper) Warper#dew 811
+dicastes01,194,194,6 duplicate(Warper) Warper#dic 811
+ecl_in01,51,60,4 duplicate(Warper) Warper#ecl 811
+malangdo,134,117,6 duplicate(Warper) Warper#mal 811
+malaya,210,205,4 duplicate(Warper) Warper#ma 811
+mora,57,152,4 duplicate(Warper) Warper#mora 811
diff --git a/npc/events/RWC_2011.txt b/npc/events/RWC_2011.txt
new file mode 100644
index 000000000..560b11f3d
--- /dev/null
+++ b/npc/events/RWC_2011.txt
@@ -0,0 +1,535 @@
+//===== rAthena Script =======================================
+//= RWC 2011 Golden Poring
+//===== By: ==================================================
+//= Euphy
+//===== Current Version: =====================================
+//= 1.0
+//===== Compatible With: =====================================
+//= rAthena SVN
+//===== Description: =========================================
+//= [Official Conversion]
+//= Collect blue cards dropped by Golden Porings to spell out
+//= 'RWC2011' and win a prize!
+//===== Additional Comments: =================================
+//= 1.0 First Version. [Euphy]
+//============================================================
+
+prontera,114,81,5 script RWC2011 Agent#2 407,{
+ if (checkweight(1201,1) == 0 || MaxWeight - Weight < 500) {
+ mes "[New Agent]";
+ mes "You have too many items. Please make room in your inventory and come back.";
+ close;
+ }
+ if (oversea_event == 0) {
+ mes "[New Agent]";
+ mes "Wow~ Finally!! It's the season we've all been waiting for!";
+ emotion e_lv2;
+ next;
+ mes "[New Agent]";
+ mes "It's RWC time!";
+ next;
+ set .@loop,1;
+ while(.@loop) {
+ switch(select("What is RWC?:Are you a New Agent?:I don't care.")) {
+ case 1:
+ mes "[New Agent]";
+ if (BaseLevel < 70)
+ mes "You must be a new adventurer. I will kindly explain it to you.";
+ else
+ mes "It seems you've traveled quite enough but you're not good with hearing the news around the world.";
+ next;
+ mes "[New Agent]";
+ mes "There are few adventurers in Rune-Midgard whose lives are dedicated to battle, who never skip their training, live in seclusion, and are experts in their art.";
+ next;
+ mes "[New Agent]";
+ mes "The RWC is the festival where those adventurers can compete with each other and find out who is the best!";
+ next;
+ mes "[New Agent]";
+ mes "But this cannot be achieved all alone. Your friends will have a huge role in the competition.";
+ next;
+ mes "[New Agent]";
+ mes "If you're interested in this festival, start looking for friends you can trust!";
+ next;
+ break;
+ case 2:
+ mes "[New Agent]";
+ mes "Many events are organized for RWC promotion every year.";
+ next;
+ mes "[New Agent]";
+ mes "And this year, a special mission has been entrusted to a new agent... myself!";
+ next;
+ mes "[New Agent]";
+ mes "I am supposed to attach blue cards with the letters RWC2011 all over the world to promote the event. But... but...";
+ next;
+ mes "- He thought of something and then looked at your eyes. -";
+ next;
+ mes "[New Agent]";
+ mes "Would you like to listen to my story?";
+ next;
+ if(select("Sure, let me hear it.:No, thank you.") == 2) {
+ mes "[New Agent]";
+ mes "Arrgg!! Are you ignoring me because I'm new? Usually people listen...";
+ next;
+ mes "- New Agent is looking at you with pitiable eyes. -";
+ next;
+ mes "- His brimming small eyes seem to tell you something. ^FF0000Please talk to me again...^000000 -";
+ close;
+ }
+ set .@loop,0;
+ break;
+ case 3:
+ mes "[New Agent]";
+ mes "This is my first mission but people's reaction is not good.";
+ next;
+ mes "- New Agent is looking at you with pitiable eyes. -";
+ next;
+ mes "- His twinkling small eyes seem to tell you something. ^FF0000Please talk to me again...^000000 -";
+ close;
+ }
+ }
+ mes "[New Agent]";
+ mes "I used to be a very normal boy in Morocc.";
+ mes "I am not an adventurer and I don't even know how to buy/sell things. Sometimes I'm just very happy to see adventurers. You know... I am just an ordinary boy.";
+ next;
+ mes "[New Agent]";
+ mes "People used to tell me that since I was very shy.";
+ mes "I would spend my life in a suburb.";
+ next;
+ mes "[New Agent]";
+ mes "But eventually, my patience and restrained personality motivated me to become an agent for RWC2011!";
+ mes "I was so happy that I couldn't sleep! I would finally have a chance to meet lots of adventurers and get to know them.";
+ next;
+ mes "[New Agent]";
+ mes "This mission was so important to me,";
+ mes "I was afraid of being attacked by monsters when attaching the blue cards for RWC2011 in the streets.";
+ next;
+ mes "[New Agent]";
+ mes "......";
+ next;
+ mes "[New Agent]";
+ mes "And you know what?";
+ mes "^FF0000It really happened!^000000";
+ next;
+ select("Are you serious!?");
+ mes "[New Agent]";
+ mes "I had turned off the light and was trying to get some sleep, then I saw this bright light through the window.";
+ mes "Suddenly, the window was broken and it appeared!";
+ next;
+ select("It?");
+ mes "[New Agent]";
+ mes "It was a shining poring! And it ate all blue cards I had prepared in less than a second!";
+ next;
+ mes "[New Agent]";
+ mes "I was so shocked, I tried to calm down and think... I had neither heard about nor seen any shining poring!";
+ next;
+ mes "[New Agent]";
+ mes "^FF0000Yes! It must be a dream!^000000 That's the conclusion I came up with and went back to sleep.";
+ next;
+ mes "[New Agent]";
+ mes "But it wasn't a dream. When I woke up, I realized all the blue cards were gone...";
+ next;
+ mes "[New Agent]";
+ mes "If I ruin this promotion, I might lose the job and have to go back to where I used to live alone...";
+ next;
+ mes "[New Agent]";
+ mes "If you see the Golden Poring, could you please find the precious blue cards for me?";
+ next;
+ emotion e_sob;
+ mes "- He looks at you with imploring eyes. -";
+ next;
+ if(select("Ok, I will help you!:How much money can you offer me?") == 2) {
+ mes "[New Agent]";
+ mes "Have you decided to help me? Well, I will prepare some gifts. I'm sure you'll like them.";
+ next;
+ }
+ mes "[New Agent]";
+ mes "What you are looking for are large cards with the letters ^FF0000RWC2011^000000. Some of them might already be digested though.";
+ next;
+ mes "[New Agent]";
+ mes "Try to gather remaining cards until you make the word, 'RWC2011'.";
+ next;
+ mes "[New Agent]";
+ mes "Please help me out!! My life is in your hands!";
+ set oversea_event,1;
+ setquest 13000;
+ close;
+ } else if (oversea_event == 1) {
+ if (countitem(6485) && countitem(6486) && countitem(6487) > 1 && countitem(7602) && countitem(7470) && countitem(6012)) {
+ mes "[RWC2011 Agent]";
+ mes "Have you gathered all the cards?";
+ next;
+ mes "[RWC2011 Agent]";
+ mes "Wow~ You bring light in my life again!";
+ next;
+ mes "[RWC2011 Agent]";
+ mes "Here are the gifts I promised... Let's see...";
+ next;
+ delitem 6485,1; //BlueCard_2
+ delitem 6486,1; //BlueCard_0
+ delitem 6487,2; //BlueCard_1
+ delitem 7602,1; //BlueCard_R
+ delitem 7470,1; //BlueCard_W
+ delitem 6012,1; //Blue_Card_C
+ //SavePPL BlueCard_2
+ set oversea_event,2;
+ erasequest 13000;
+ setquest 13001;
+ set .@i, rand(1,100);
+ if (.@i == 1) getitem 12690,1; //Old_C_Album_Helm
+ else if (.@i == 2) getitem 12691,1; //Old_C_Album_Armor
+ else if (.@i == 3) getitem 12693,1; //Old_C_Album_Garment
+ else if (.@i == 4) getitem 12694,1; //Old_C_Album_Shoes
+ else if (.@i == 5) getitem 12698,1; //Old_C_Album_Weapon
+ else if (.@i == 6) getitem 12695,1; //Old_C_Album_Acc
+ else if (.@i == 7) getitem 12692,1; //Old_C_Album_Shield
+ else if (.@i < 28) getitem 547,10; //White_Slim_Potion
+ else if (.@i < 38) getitem 607,1; //Yggdrasilberry
+ else if (.@i < 51) getitem 608,1; //Seed_Of_Yggdrasil
+ else {
+ getitem 12696,5; //RWC_Cele_Fire
+ getitem 12697,5; //RWC_Cele_Fire2
+ }
+ mes "[RWC2011 Agent]";
+ mes "It's not much but please keep it! Haha, we still have lots of cards to be found. I hope you can help me tomorrow as well.";
+ next;
+ mes "[RWC2011 Agent]";
+ mes "Thank you!! I can continue working now. Nothing is impossible when we have great adventurers like you in this world!";
+ next;
+ mes "[RWC2011 Agent]";
+ mes "ADIOS!";
+ next;
+ mes "- Agent muttered something to himself. -";
+ close;
+ } else {
+ mes "[RWC2011 Agent]";
+ mes "Mmmm~ not yet? We're short-handed... Please help me.";
+ next;
+ mes "[RWC2011 Agent]";
+ mes "I'm just saying that out of concern for you. You need TWO ^FF0000Blue 1 Card^000000. It's \"2011\"... Got it?";
+ close;
+ }
+ } else if (oversea_event == 2) {
+ set .@playtime, checkquest(13001,PLAYTIME);
+ if (.@playtime == 0 || .@playtime == 1) {
+ mes "[RWC2011 Agent]";
+ mes "First, I will start attaching cards you found... I'll take the rest of cards tomorrow.";
+ mes "Please come back tomorrow.";
+ close;
+ } else if (.@playtime == 2)
+ erasequest 13001;
+ mes "[RWC2011 Agent]";
+ mes "Thanks for the last time.";
+ mes "I must keep on promoting the event so I want to ask you again~!";
+ set oversea_event,3;
+ close;
+ } else if (oversea_event == 3) {
+ mes "[RWC2011 Agent]";
+ mes "You've come again~";
+ mes "Thanks for the last time! We still have lots of cards to find. Could you help me out?";
+ next;
+ switch(select("Ok!:I'm busy now.")) {
+ case 1:
+ mes "[RWC2011 Agent]";
+ mes "It's the same mission as before.";
+ mes "Try to gather blue cards and make the word, ^FF0000R W C 2 0 1 1 ^000000.";
+ mes "Good Luck!";
+ set oversea_event,1;
+ setquest 13000;
+ close;
+ case 2:
+ mes "[RWC2011 Agent]";
+ mes "...I see...";
+ mes "I still have lots of cards to find so if you have time, please come back and help again.";
+ close;
+ }
+ } else {
+ mes "[RWC2011 Agent]";
+ mes "... huh...?";
+ mes "I am... a new agent.";
+ close;
+ }
+}
+
+// Monster Spawns
+//============================================================
+dic_dun03,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+dew_fild01,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+dew_dun01,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+dew_dun02,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+mal_dun01,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+iz_dun05,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+man_fild01,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+man_fild03,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+spl_fild02,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+spl_fild03,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+man_fild02,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+spl_fild01,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+nyd_dun01,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+bra_fild01,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+bra_dun01,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+bra_dun02,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+dic_fild01,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+dic_fild02,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+dic_dun01,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+dic_dun02,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+bif_fild01,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+bif_fild02,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+abbey01,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+abbey02,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+abbey03,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+abyss_01,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+abyss_02,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+abyss_03,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+alde_dun01,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+alde_dun02,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+alde_dun03,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+alde_dun04,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+ama_dun01,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+ama_dun02,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+ama_dun03,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+ama_fild01,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+anthell01,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+anthell02,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+ayo_dun01,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+ayo_dun02,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+ayo_fild01,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+ayo_fild02,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+beach_dun,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+beach_dun2,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+beach_dun3,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+c_tower1,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+c_tower2,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+c_tower3,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+c_tower4,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+cmd_fild01,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+cmd_fild02,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+cmd_fild03,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+cmd_fild04,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+cmd_fild06,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+cmd_fild07,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+cmd_fild08,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+cmd_fild09,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+ein_dun01,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+ein_dun02,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+ein_fild03,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+ein_fild04,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+ein_fild05,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+ein_fild06,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+ein_fild07,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+ein_fild08,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+ein_fild09,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+gef_dun00,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+gef_dun01,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+gef_dun02,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+gef_fild00,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+gef_fild01,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+gef_fild02,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+gef_fild03,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+gef_fild04,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+gef_fild05,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+gef_fild06,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+gef_fild07,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+gef_fild08,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+gef_fild09,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+gef_fild10,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+gef_fild11,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+gef_fild13,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+gefenia01,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+gefenia02,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+gefenia03,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+gefenia04,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+gl_cas01,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+gl_cas02,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+gl_church,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+gl_chyard,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+gl_dun01,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+gl_dun02,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+gl_in01,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+gl_knt01,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+gl_knt02,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+gl_prison,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+gl_prison1,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+gl_sew01,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+gl_sew02,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+gl_sew03,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+gl_sew04,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+gl_step,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+glast_01,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+gon_dun01,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+gon_dun02,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+gon_dun03,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+gon_fild01,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+hu_fild01,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+hu_fild02,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+hu_fild04,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+hu_fild05,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+hu_fild06,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+ice_dun01,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+ice_dun02,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+ice_dun03,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+in_sphinx1,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+in_sphinx2,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+in_sphinx3,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+in_sphinx4,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+in_sphinx5,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+iz_dun00,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+iz_dun01,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+iz_dun02,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+iz_dun03,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+iz_dun04,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+jupe_core,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+juperos_01,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+juperos_02,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+kh_dun01,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+kh_dun02,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+lhz_dun01,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+lhz_dun02,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+lhz_dun03,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+lhz_fild01,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+lhz_fild02,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+lhz_fild03,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+lou_dun01,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+lou_dun02,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+lou_dun03,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+lou_fild01,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+mag_dun01,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+mag_dun02,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+man_fild02,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+mjo_dun01,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+mjo_dun02,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+mjo_dun03,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+mjolnir_01,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+mjolnir_02,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+mjolnir_03,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+mjolnir_04,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+mjolnir_05,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+mjolnir_06,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+mjolnir_07,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+mjolnir_08,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+mjolnir_09,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+mjolnir_10,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+mjolnir_11,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+mjolnir_12,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+moc_fild01,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+moc_fild02,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+moc_fild03,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+moc_fild04,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+moc_fild05,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+moc_fild06,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+moc_fild07,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+moc_fild08,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+moc_fild09,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+moc_fild10,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+moc_fild11,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+moc_fild12,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+moc_fild13,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+moc_fild14,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+moc_fild15,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+moc_fild16,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+moc_fild17,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+moc_fild18,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+moc_pryd01,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+moc_pryd02,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+moc_pryd03,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+moc_pryd04,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+moc_pryd05,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+moc_pryd06,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+nameless_n,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+nif_fild01,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+nif_fild02,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+nyd_dun01,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+odin_tem01,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+odin_tem02,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+odin_tem03,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+orcsdun01,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+orcsdun02,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+pay_dun00,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+pay_dun01,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+pay_dun02,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+pay_dun03,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+pay_dun04,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+pay_fild01,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+pay_fild02,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+pay_fild03,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+pay_fild04,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+pay_fild06,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+pay_fild07,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+pay_fild08,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+pay_fild09,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+pay_fild10,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+prt_fild00,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+prt_fild01,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+prt_fild02,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+prt_fild03,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+prt_fild04,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+prt_fild05,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+prt_fild06,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+prt_fild07,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+prt_fild08,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+prt_fild09,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+prt_fild10,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+prt_fild11,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+prt_maze01,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+prt_maze02,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+prt_maze03,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+prt_sewb1,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+prt_sewb2,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+prt_sewb3,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+prt_sewb4,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+ra_fild01,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+ra_fild03,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+ra_fild04,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+ra_fild05,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+ra_fild06,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+ra_fild08,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+ra_fild12,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+ra_san01,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+ra_san02,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+ra_san03,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+ra_san04,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+ra_san05,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+spl_fild01,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+tha_t01,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+tha_t02,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+tha_t03,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+tha_t04,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+tha_t05,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+tha_t06,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+tha_t07,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+tha_t08,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+tha_t09,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+tha_t10,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+tha_t11,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+tha_t12,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+thor_v01,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+thor_v02,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+thor_v03,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+treasure01,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+treasure02,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+tur_dun01,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+tur_dun02,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+tur_dun03,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+tur_dun04,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+um_fild01,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+um_fild02,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+um_fild03,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+um_fild04,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+ve_fild01,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+ve_fild02,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+ve_fild03,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+ve_fild04,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+ve_fild05,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+ve_fild07,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+xmas_dun01,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+xmas_dun02,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+xmas_fild01,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+yuno_fild01,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+yuno_fild02,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+yuno_fild03,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+yuno_fild04,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+yuno_fild06,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+yuno_fild07,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+yuno_fild08,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+yuno_fild09,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+yuno_fild10,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
+yuno_fild12,0,0,0,0 monster Golden Poring 2248,3,5000,0,0
diff --git a/npc/events/RWC_2012.txt b/npc/events/RWC_2012.txt
new file mode 100644
index 000000000..cfa3a2b9b
--- /dev/null
+++ b/npc/events/RWC_2012.txt
@@ -0,0 +1,328 @@
+//===== rAthena Script =======================================
+//= RWC 2012 Enchants
+//===== By: ==================================================
+//= Euphy
+//===== Current Version: =====================================
+//= 1.0
+//===== Compatible With: =====================================
+//= rAthena SVN
+//===== Description: =========================================
+//= [Official Conversion]
+//= Adds slots and enchantments to 2012 RWC Memory accessories.
+//===== Additional Comments: =================================
+//= 1.0 First Version. [Euphy]
+//============================================================
+
+prontera,147,61,3 script Driller#pron 87,{
+ disable_items;
+ if (checkweight(1201,1) == 0) {
+ mes "You're carrying too many items in your inventory. Visit Kafra storage and try again.";
+ close;
+ }
+ if (MaxWeight - Weight < 10000) {
+ mes "You cannot proceed because you're overweight.";
+ close;
+ }
+ set .@part, EQI_ACC_L;
+ if (!getequipisequiped(.@part)) {
+ mes "[Driller]";
+ mes "My job is to drill a card slot into RWC Memorial accessories.";
+ next;
+ mes "[Driller]";
+ mes "I'm sorry but you don't have any item equipped on your right accessory position.";
+ close;
+ }
+ mes "[Driller]";
+ mes "My job is to drill a card slot into RWC Memorial accessories. Moreover, I only treat ^ff0000pure items^000000, or those which have not been enchanted.";
+ next;
+ set .@equip_id, getequipid(.@part);
+ if (.@equip_id != 2966 && .@equip_id != 2968) {
+ mes "[Driller]";
+ mes "However, I can see that the accessory you are wearing on the right side cannot be treated. Please equip a RWC Memorial accessory.";
+ close;
+ }
+ mes "[Driller]";
+ mes "You should also know that making a card slot it extremely dangerous. ^ff0000Chances to succeed are about 50%.^000000 Do you wish to proceed?";
+ next;
+ if(select("Cancel:Let's go!") == 1) {
+ mes "[Driller]";
+ mes "See ya then.";
+ close;
+ }
+ if (.@equip_id == 2966) {
+ set .@slotted, 2967; //RWC_2012_Ring_
+ set .@name$,"RWC 2012 Memorial Ring";
+ set .@str$,"ring";
+ } else if (.@equip_id == 2968) {
+ set .@slotted, 2969; //RWC_2012_Pendant_
+ set .@name$,"RWC 2012 Memorial Pendant";
+ set .@str$,"pendant";
+ } else {
+ mes "[Driller]";
+ mes "I can't identify the accessory item you're wearing on your right hand. I can't work on it.";
+ close;
+ }
+ if (getequipcardid(.@part,3) > 0) {
+ mes "[Driller]";
+ mes "This item has already been enchanted. I can't work on this as it is against the rules.";
+ close;
+ }
+ delequip .@part;
+ if (rand(1,10) > 5) {
+ getitem .@slotted,1;
+ specialeffect2 EF_REPAIRWEAPON;
+ mes "[Driller]";
+ mes "Yay! Success! Your "+.@name$+" now has a card slot. Check it out!";
+ close;
+ } else {
+ specialeffect2 EF_LORD;
+ mes "[Driller]";
+ mes "Awww... Damn weak "+.@str$+"... It broke during the procedure. I'm sorry.";
+ close;
+ }
+}
+
+prontera,147,59,3 script Goldberg#pron 878,{
+ disable_items;
+ if (checkweight(1201,1) == 0) {
+ mes "You are carrying too many items. Come back after you have organized your inventory.";
+ close;
+ }
+ if (MaxWeight - Weight < 10000) {
+ mes "You cannot proceed because you're overweight.";
+ close;
+ }
+ mes "[Goldberg]";
+ mes "Hello! I am in charge of enchanting RWC Memorial accessories with some mystic powers.";
+ next;
+ set .@part, EQI_ACC_L;
+ if (!getequipisequiped(.@part)) {
+ mes "[Goldberg]";
+ mes "I'm sorry but you don't have any item equipped on your right accessory position.";
+ close;
+ }
+ set .@equip_id, getequipid(.@part);
+ if (.@equip_id < 2966 || .@equip_id > 2969) {
+ mes "[Goldberg]";
+ mes "However, I can see that the accessory you are wearing is not something I can work on. Please equip a RWC Memorial accessory.";
+ close;
+ }
+ set .@select, select("Sorry, not interested.:Please, empower my accessory.:Remove the Enchant.")-1;
+ if (.@select == 0) {
+ mes "[Goldberg]";
+ mes "Alright, then, see you next time...";
+ close;
+ }
+ set .@equip_refine, getequiprefinerycnt(.@part);
+ setarray .@equip_card[0], getequipcardid(.@part,0),getequipcardid(.@part,1),getequipcardid(.@part,2),getequipcardid(.@part,3);
+ if (.@select == 1) {
+ switch(getequipid(.@part)) {
+ case 2966:
+ setarray .@option[0],2,2,4,4;
+ break;
+ case 2967:
+ setarray .@option[0],0,2,4,4;
+ break;
+ case 2968:
+ setarray .@option[0],1,1,3,3;
+ break;
+ case 2969:
+ setarray .@option[0],0,1,3,3;
+ break;
+ default:
+ mes "[Goldberg]";
+ mes "I'm sorry, but I cannot work on the accessory you are currently wearing.";
+ mes "If you have equipped your RWC Memorial accessory on the left side, try to swap it to the right side.";
+ close;
+ }
+ for(set .@i,3; .@i>=0; set .@i,.@i-1) {
+ if (.@equip_card[.@i] == 0) {
+ set .@slot, .@i;
+ set .@op_type, .@option[.@i];
+ break;
+ }
+ }
+ switch(.@op_type) {
+ case 4:
+ mes "[Goldberg]";
+ mes "Which enchantment would you like to infuse?";
+ next;
+ setarray .@enchant_select[0],1,2,3,4;
+ set .@i, select("Cancel:Fighting Spirit:ATK (%):Max HP:HP")-2;
+ break;
+ case 3:
+ setarray .@enchant_select[0],5,6,7;
+ set .@i, select("Cancel:Spell:MATK (%):SP")-2;
+ break;
+ case 2:
+ mes "[Goldberg]";
+ mes "^ff0000Be careful! There is about a 25% chance that the enchantment will fail. If this happens, the item will be destroyed.^000000 Which enchantment would you like to infuse?";
+ next;
+ setarray .@enchant_select[0],8,9,10,11,12,13,14;
+ set .@i, select("Cancel:STR:AGI:VIT:INT:DEX:LUK:SP")-2;
+ break;
+ case 1:
+ mes "[Goldberg]";
+ mes "^ff0000There is about a 25% chance that the enchantment will fail. If this happens, the item will be destroyed.^000000 Which enchantment would you like to infuse?";
+ next;
+ setarray .@enchant_select[0],8,9,10,11,12,13,15,16;
+ set .@i, select("Cancel:STR:AGI:VIT:INT:DEX:LUK:MHP:HP")-2;
+ break;
+ case 0:
+ mes "[Goldberg]";
+ mes "Your accessory has received so many enchantments that I can hardly work on it anymore.";
+ close;
+ }
+ if (.@i == -1) {
+ mes "[Goldberg]";
+ mes "Alright, then, see you next time.";
+ close;
+ }
+ mes "[Goldberg]";
+ mes "The power of the enchantment will be randomly chosen. ^ff0000Once infused, the enchantment cannot be removed.^000000 Shall we continue?";
+ next;
+ if(select("No, please stop.:Yes, please proceed.") == 1) {
+ mes "[Goldberg]";
+ mes "Alright, then, see you next time...";
+ close;
+ }
+ set .@enchant_type, .@enchant_select[.@i];
+ if (!getequipisequiped(.@part)) {
+ mes "[Goldberg]";
+ mes "Do not take off your equipment while I'm working, okay?";
+ close;
+ }
+ switch(.@enchant_type) {
+ case 1:
+ setarray .@enc[0],4811,4810,4809; //Fighting_Spirit1,Fighting_Spirit2,Fighting_Spirit3
+ break;
+ case 2:
+ setarray .@enc[0],4819,4766,4767; //Atk1,Atk2,Atk3
+ break;
+ case 3:
+ setarray .@enc[0],4861,4862,4867; //MHP1,MHP2,MHP3
+ break;
+ case 4:
+ setarray .@enc[0],4795,4796,4797; //HP100,HP200,HP300
+ break;
+ case 5:
+ setarray .@enc[0],4760,4761,4806; //Matk1,Matk2,Matk3
+ break;
+ case 6:
+ setarray .@enc[0],4815,4814,4813; //Spell1,Spell2,Spell3
+ break;
+ case 7:
+ setarray .@enc[0],4870,4800,4871; //SP25,SP50,SP75
+ break;
+ case 8:
+ setarray .@enc[0],4700,4701,4702; //Strength1,Strength2,Strength3
+ break;
+ case 9:
+ setarray .@enc[0],4730,4731,4732; //Agility1,Agility2,Agility3
+ break;
+ case 10:
+ setarray .@enc[0],4740,4741,4742; //Vitality1,Vitality2,Vitality3
+ break;
+ case 11:
+ setarray .@enc[0],4710,4711,4712; //Inteligence1,Inteligence2,Inteligence3
+ break;
+ case 12:
+ setarray .@enc[0],4720,4721,4722; //Dexterity1,Dexterity2,Dexterity3
+ break;
+ case 13:
+ setarray .@enc[0],4750,4751,4752; //Luck1,Luck2,Luck3
+ break;
+ case 14:
+ setarray .@enc[0],4870,4800,4871; //SP25,SP50,SP75
+ break;
+ case 15:
+ setarray .@enc[0],4861,4862,4867; //MHP1,MHP2,MHP3
+ break;
+ case 16:
+ setarray .@enc[0],4795,4796,4797; //HP100,HP200,HP300
+ break;
+ default:
+ mes "[Goldberg]";
+ mes "We have got a problem, let me check it up.";
+ close;
+ }
+
+ if (.@enchant_type < 8)
+ set .@i, rand(1,300); // 0% break chance.
+ else
+ set .@i, rand(1,400); // 25% break chance.
+
+ if (.@i < 151) set .@enchant, .@enc[0];
+ else if (.@i < 251) set .@enchant, .@enc[1];
+ else if (.@i < 301) set .@enchant, .@enc[2];
+ else set .@enchant,9;
+
+ set .@equip_card[.@slot], .@enchant;
+ if (.@slot == 2 && .@enchant == 0) {
+ set .@equip_card[3],0;
+ } else if (.@slot == 1 && .@enchant == 0) {
+ set .@equip_card[2],0;
+ set .@equip_card[3],0;
+ } else if (.@slot == 0 && .@enchant == 0) {
+ set .@equip_card[1],0;
+ set .@equip_card[2],0;
+ set .@equip_card[3],0;
+ }
+
+ delequip .@part;
+ if (.@enchant == 9) {
+ mes "[Goldberg]";
+ mes "Oh gosh!";
+ mes "The item was not strong enough to bear the enchantment and thus got destroyed. I am sorry.";
+ specialeffect2 EF_LORD;
+ close;
+ }
+ if (.@enchant == 0) { // Should never happen.
+ mes "[Goldberg]";
+ mes "Oh... It looks like there was an instability of some sort between all the powers infused. This caused all the enchantments to vanish. It is a shame, but please try again!";
+ } else {
+ mes "[Goldberg]";
+ mes "Great!";
+ mes "The enchantment is a success! It will be applied in socket No.^990000"+(.@slot+1)+"^000000.";
+ specialeffect2 EF_REPAIRWEAPON;
+ }
+
+// GetNonSlotItemSock2 .@equip_refine .@equip_id .@equip_card[0] .@equip_card[1] .@equip_card[2] .@equip_card[3]
+ getitem2 .@equip_id,1,1,.@equip_refine,0,.@equip_card[0],.@equip_card[1],.@equip_card[2],.@equip_card[3];
+
+ close;
+ } else if (.@select == 2) {
+ mes "[Goldberg]";
+ mes "I will just initialize the enchant option without doing anything to the slotted card. You wanna continue?";
+ next;
+ if(select("I will stop.:Yep, sure, go on.") == 1) {
+ mes "[Goldberg]";
+ mes "Come back if you change your mind.";
+ close;
+ }
+ if (countitem(6665) == 0) {
+ mes "[Goldberg]";
+ mes "I'm sorry. But you don't have the RWC Initialization coupon. Can you check your inventory?";
+ close;
+ }
+ if (.@equip_card[3] == 0) {
+ mes "[Goldberg]";
+ mes "Hm... this equipment is clean. I cannot initialize it if there's nothing! Check it again.";
+ close;
+ }
+ specialeffect2 EF_REPAIRWEAPON;
+ mes "[Goldberg]";
+ mes "The enchant option in your item will be initialized.";
+ delitem 6665,1; //RWC_Inicializer
+ delequip .@part;
+
+// GetNonSlotItemSock2 .@equip_refine .@equip_id .@equip_card[0] .@equip_card[1] .@equip_card[2] .@equip_card[3]
+ for(set .@i,0; .@i<4; set .@i,.@i+1) {
+ if (.@equip_card[.@i] >= 4700) // Armor Enchant System
+ set .@equip_card[.@i],0;
+ }
+ getitem2 .@equip_id,1,1,.@equip_refine,0,.@equip_card[0],.@equip_card[1],.@equip_card[2],.@equip_card[3];
+
+ close;
+ }
+}
diff --git a/npc/merchants/advanced_refiner.txt b/npc/merchants/advanced_refiner.txt
index eca847c6f..7b7825492 100644
--- a/npc/merchants/advanced_refiner.txt
+++ b/npc/merchants/advanced_refiner.txt
@@ -3,11 +3,11 @@
//===== By: ==================================================
//= L0ne_W0lf
//===== Current Version: =====================================
-//= 1.4a
+//= 1.4b
//===== Compatible With: =====================================
//= Hercules Git
//===== Description: =========================================
-//= [Aegis Conversion]
+//= [Official Conversion]
//= Refiner that uses Enriched ores to increase upgrade success.
//= After a conversation with Doddler, it's been established that
//= the advanced refiner works similar the the "Bubble Gum" item.
@@ -23,9 +23,10 @@
//= 1.3 Typo fixes [Yommy]
//= 1.4 Removed unnecessary dialogs [Zephyrus]
//= 1.4a Added 'disable_items' command. [Euphy]
+//= 1.4b Fixed coordinates. [Euphy]
//============================================================
-payon,174,138,0 script Suhnbi#cash 85,{
+payon,157,146,6 script Suhnbi#cash 85,{
disable_items;
mes "[Suhnbi]";
mes "I am the Armsmith";
@@ -53,12 +54,6 @@ payon,174,138,0 script Suhnbi#cash 85,{
mes "I don't think I can refine this item at all.";
close;
}
- if( !getequipisidentify(.@part) )
- {
- mes "[Suhnbi]";
- mes "This has not been identified. So, it can't be refined...";
- close;
- }
if( getequiprefinerycnt(.@part) >= 10 )
{
mes "[Suhnbi]";
@@ -158,4 +153,4 @@ S_RefineValidate:
mes "Yeah... There's no need to rush.";
mes "Take your time.";
close;
-} \ No newline at end of file
+}
diff --git a/npc/merchants/refine.txt b/npc/merchants/refine.txt
index da51dee3d..db4910d7e 100644
--- a/npc/merchants/refine.txt
+++ b/npc/merchants/refine.txt
@@ -635,16 +635,6 @@ function script refinemain {
mes "refine this item at all...";
close;
}
- //Check if the item is identified... (Don't know why this is in here... but kept it anyway)
- if(!getequipisidentify(.@part)) {
- mes "[" + getarg(0) + "]";
- mes "You can't refine this";
- mes "if you haven't appraised";
- mes "it first. Make sure your";
- mes "stuff is identified before";
- mes "I can refine it.";
- close;
- }
//Check to see if the items is already +10
if(getequiprefinerycnt(.@part) >= 10) {
mes "[" + getarg(0) + "]";
@@ -1266,4 +1256,4 @@ function script repairmain {
mes "items to repair.";
close;
}
-} \ No newline at end of file
+}
diff --git a/npc/quests/quests_13_1.txt b/npc/quests/quests_13_1.txt
index 627688922..523b5ff00 100644
--- a/npc/quests/quests_13_1.txt
+++ b/npc/quests/quests_13_1.txt
@@ -45,6 +45,7 @@
//= 2.6a Added 'npcskill' command. [Euphy]
//= 2.7 Updated incorrect EXP values & added checkre() checks [Streusel]
//= 2.7a Modified Promotional Staff for Izlude
+//= 2.8 Fixed a missing variable check. [Joseph]
//============================================================
// Onward to the New World
@@ -11152,7 +11153,7 @@ prt_castle,88,165,3 script Laur 57,{
if (ep13_1_edq == 9) set ep13_1_edq,101;
else if (ep13_1_edq == 111) set ep13_1_edq,112;
else if (ep13_1_edq == 121) set ep13_1_edq,122;
- else if (ep13_1_edq == 113) {
+ else if (ep13_1_edq == 113 || ep13_1_edq == 123) {
set ep13_1_edq,13;
changequest 3093,3094;
}
diff --git a/npc/quests/quests_morocc.txt b/npc/quests/quests_morocc.txt
index 12122d883..38320b344 100644
--- a/npc/quests/quests_morocc.txt
+++ b/npc/quests/quests_morocc.txt
@@ -5,7 +5,7 @@
//===== Current Version: =====================================
//= 2.9
//===== Description: =========================================
-//= [Aegis Conversion]
+//= [Official Conversion]
//= - Stop Post
//= - Binoculars Quest
//= - Assassin Pub NPCs/supporting quest NPCS. [Disabled]
diff --git a/npc/quests/seals/mjolnir_seal.txt b/npc/quests/seals/mjolnir_seal.txt
index e2be244ea..5c796c3b8 100644
--- a/npc/quests/seals/mjolnir_seal.txt
+++ b/npc/quests/seals/mjolnir_seal.txt
@@ -1963,11 +1963,6 @@ mjolnir_01,35,136,7 script Dwarf Blacksmith#west 826,{
mes "me to do with this?";
close;
}
- if (getequipisidentify(.@part) == 0) {
- mes "[Vestri]";
- mes "You'd better identify this item first. If we don't know what it is, what's the point of upgrading it?";
- close;
- }
if (getequiprefinerycnt(.@part) >= 10) {
mes "[Vestri]";
mes "Oh, this is excellent! This piece here has been perfectly refined! But this isn't what I want. I can't do any work on this at all.";
@@ -2189,11 +2184,6 @@ mjolnir_01,35,136,7 script Dwarf Blacksmith#west 826,{
mes "me to do with this?";
close;
}
- if (getequipisidentify(.@part) == 0) {
- mes "[Vestri]";
- mes "You'd better identify this item first. If we don't know what it is, what's the point of upgrading it?";
- close;
- }
if (getequiprefinerycnt(.@part) >= 10) {
mes "[Vestri]";
mes "Oh, this is excellent! This piece here has been perfectly refined! But this isn't what I want. I can't do any work on this at all.";
diff --git a/npc/quests/the_sign_quest.txt b/npc/quests/the_sign_quest.txt
index 588009547..03a52023f 100644
--- a/npc/quests/the_sign_quest.txt
+++ b/npc/quests/the_sign_quest.txt
@@ -3,11 +3,11 @@
//===== By: ==================================================
//= SinSloth(Most of the NPCs), MasterOfMuppets(Some of the NPCs + bug fixes) & Kargha(The quiz NPCs)
//===== Current Version: =====================================
-//= 3.7
+//= 3.8
//===== Compatible With: =====================================
//= rAthena SVN
//===== Description: =========================================
-//= [Aegis Conversion]
+//= [Official Conversion]
//= Quest for opening the doors to Geffenia.
//= This script uses sign_01.bmp - sign_04.bmp, these will be
//= found in the language of your client.
@@ -25,6 +25,7 @@
//= 3.5 Fixed two bugs. 4230 & 4404 [CalciumKid]
//= 3.6 Corrected the Level Requirements for 'Standby Room' [tr0n]
//= 3.7 Massive cleaning/optimization (more can still be done). [Euphy]
+//= 3.8 Corrected an invalid map name. [Joseph]
//============================================================
//============================================================
@@ -12348,7 +12349,7 @@ Oncall:
end;
OnMyMobDead:
- if (mobcount("gue_sign01","CallMonster#witch::OnMyMobDead") < 1) {
+ if (mobcount("que_sign01","CallMonster#witch::OnMyMobDead") < 1) {
donpcevent "Serin#witch::OnEnable";
}
end;
diff --git a/npc/re/cities/eclage.txt b/npc/re/cities/eclage.txt
new file mode 100644
index 000000000..7bb8d7942
--- /dev/null
+++ b/npc/re/cities/eclage.txt
@@ -0,0 +1,487 @@
+//===== rAthena Script =======================================
+//= Eclage Town
+//===== By: ==================================================
+//= Euphy
+//===== Current Version: =====================================
+//= 1.0
+//===== Compatible With: =====================================
+//= rAthena SVN
+//===== Description: =========================================
+//= Eclage Town Script
+//===== Additional Comments: =================================
+//= 1.0 Nearly complete iRO town NPCs. [Euphy]
+//============================================================
+
+// Generic Eclage NPCs - Set 1
+//============================================================
+ecl_fild01,92,316,4 script Tourist#ep14_2f2 545,{
+ mes "[Tourist]";
+ mes "I can't believe I have to wait this long......";
+ mes "When is it going to be my turn?";
+ emotion e_sob;
+ close;
+}
+
+ecl_fild01,106,312,4 script Tourist#ep14_2f3 525,{
+ mes "[Tourist]";
+ mes "I'm actually done with my documentation, but I'm just sticking around to appreciate all of these flowers.";
+ emotion e_lv2;
+ next;
+ mes "[Tourist]";
+ mes "I'm just getting through the night with my sleeping bag!";
+ mes "It's alright as long as you can withstand the security guard's annoyance with you.";
+ close;
+}
+
+ecl_fild01,108,320,6 script Tourist#ep14_2f4 941,{
+ mes "[Tourist]";
+ mes "I wonder how beautiful of a city Eclage would be.";
+ mes "It just makes my heart beat thinking about it.";
+ emotion e_lv;
+ close;
+}
+
+ecl_fild01,105,320,2 script Tourist#ep14_2f5 436,{
+ mes "[Tourist]";
+ mes "No, I'm not a visitor. I'm an Eclage citizen!";
+ emotion e_an;
+ next;
+ mes "[Tourist]";
+ mes "I can't believe I can't even enter because of all these tourists!";
+ emotion e_omg;
+ close;
+}
+
+ecl_fild01,103,319,4 script Tourist#ep14_2f6 900,{
+ mes "[Tourist]";
+ mes "I hear their acorns are delicious without a hint of bitterness.";
+ next;
+ mes "[Tourist]";
+ mes "You could probably make the world's best acorn jello.";
+ emotion e_omg;
+ close;
+}
+
+ecl_fild01,110,316,2 script Tourist#ep14_2f7 896,{
+ mes "[Tourist]";
+ mes "It's important to keep your belongings light when traveling.";
+ next;
+ mes "[Tourist]";
+ mes "It's going to increase as you go along anyways.";
+ next;
+ mes "[Tourist]";
+ mes "Perhaps you could consider it as the weight of life?";
+ emotion 38,0;
+ close;
+}
+
+ecl_fild01,92,318,4 script Tourist#ep14_2f8 517,{
+ mes "[Tourist]";
+ mes "Cool cool.";
+ close;
+}
+
+ecl_fild01,93,318,2 script Tourist#ep14_2f9 107,{
+ mes "[Tourist]";
+ mes "Snorrrreee....Erhem....";
+ next;
+ mes "[Tourist]";
+ mes "Err.... No.....";
+ mes "Curry.... Curry rice.... Snorrreeeee";
+ emotion e_hlp;
+ close;
+}
+
+ecl_fild01,94,313,4 script Tourist#ep14_2f10 715,{
+ mes "[Tourist]";
+ mes "Oh! Are you also from Midgard?";
+ next;
+ mes "[Tourist]";
+ mes "It's encouraging to see so many Midgard people nowadays.";
+ emotion e_com;
+ close;
+}
+
+ecl_fild01,101,320,4 script Tourist#ep14_2f11 522,{
+ mes "[Tourist]";
+ mes "Ow.... My legs...";
+ mes "You're saying I have to wait after all this traveling through Bifrost?!";
+ emotion e_an;
+ close;
+}
+
+ecl_fild01,88,315,4 script Tourist#ep14_2f12 957,{
+ mes "[Tourist]";
+ mes "Ahh...";
+ mes "Why are there so many people...?";
+ next;
+ mes "[Tourist]";
+ mes "I want to be alone......Sniff!";
+ emotion e_otl;
+ close;
+}
+
+// Generic Eclage NPCs - Set 2
+//============================================================
+ecl_fild01,183,190,4 script Catering#eclbig 447,{
+ mes "[Catering]";
+ mes "Wahahaha! How do you do!";
+ mes "It's perfect weather for a picnic, no?";
+ next;
+ emotion e_wah;
+ mes "[Catering]";
+ mes "You say it's hard to pack for a picnic?";
+ next;
+ emotion e_no1;
+ mes "[Catering]";
+ mes "Don't you worry!";
+ next;
+ emotion e_gasp;
+ mes "[Catering]";
+ mes "This is a specialty combining acorns with 7 different kinds and 7 different levels of flavor collected by squirrels of Eclage!";
+ next;
+ emotion e_cash;
+ mes "[Catering]";
+ mes "This specialty to-go box is only 2,999 coins!!!";
+ next;
+ emotion e_omg;
+ mes "[Catering]";
+ mes "Such a remarkable price!";
+ next;
+ emotion e_lv;
+ mes "[Catering]";
+ mes "If you order now, we also give you a disposable fork that feels like new even with a hundred uses!";
+ close;
+}
+
+ecl_fild01,134,109,4 script Warao#eclbig 446,{
+ mes "[Warao]";
+ mes "Ah~ I'm so hungry. What should I eat today?";
+ next;
+ mes "[Warao]";
+ mes "Come to think of it, I wonder how this foreigner will taste?";
+ next;
+ emotion e_gg;
+ mes "[Warao]";
+ mes "Hey hey, you know I'm kidding, right?";
+ close;
+}
+
+ecl_fild01,70,285,4 script Giranni#eclbig 611,{
+ mes "[Giranni]";
+ mes "I wonder where he went. It should be around here...";
+ close;
+}
+
+eclage,106,61,4 script Markoza#eclbig 444,{
+ mes "[Markoza]";
+ mes "I also want to visit foreign lands.";
+ next;
+ mes "[Markoza]";
+ mes "But would foreigners leave me be when I am this adorable?";
+ next;
+ emotion e_pif;
+ mes "[Markoza]";
+ mes "Man, wherever I go, my cuteness just complicates everything...";
+ close;
+}
+
+eclage,101,130,5 script Wutapoa#eclbig 435,{
+ mes "[Wutapoa]";
+ mes "I recently moved out of my parent's place!";
+ mes "I am so glad I finally have my own Yai!";
+ next;
+ mes "[Wutapoa]";
+ mes "I'm going to make it the most decorative, beautiful Yai in Eclage!";
+ next;
+ emotion e_heh;
+ mes "[Wutapoa]";
+ mes "Yay, woohoo!!!";
+ close;
+}
+
+eclage,200,272,4 script Masione#eclbig 437,{
+ mes "[Masione]";
+ mes "Whoa! Hey!";
+ mes "Would you please stop appearing out of nowhere?";
+ emotion e_omg;
+ next;
+ mes "[Masione]";
+ mes "I'm a fragile, sensitive being!";
+ close;
+}
+
+ecl_in01,55,25,3 script Mijani#eclbig 520,{
+ mes "[Mijani]";
+ mes "You are not from around here?";
+ mes "Welcome.";
+ next;
+ mes "[Mijani]";
+ mes "Of course, as long as you don't disrupt Eclage.";
+ close;
+}
+
+ecl_in01,38,37,4 script A kneeling boy#eclbig 441,{
+ mes "[A kneeling boy]";
+ mes "Why am I kneeling like this?";
+ next;
+ mes "[A kneeling boy]";
+ mes "At first, it was because it was comfortable. Now it's because I can't stretch my legs out anymore.";
+ next;
+ emotion e_sob;
+ mes "[A kneeling boy]";
+ mes "I try to stretch them out, and my legs are all asleep!!";
+ mes "Does that mean I have to fly around with my legs flexed like this?";
+ close;
+}
+
+ecl_in02,168,41,2 script Pambo#eclbig 438,{
+ mes "[Pambo]";
+ mes "Do you like things that twinkle?";
+ next;
+ emotion e_lv2;
+ mes "[Pambo]";
+ mes "I love them so much!";
+ next;
+ mes "[Pambo]";
+ mes "Twinkle twinkle~ Twinkle twinkle~";
+ next;
+ mes "[Pambo]";
+ mes "Twinkle twinkle~ Twinkle twinkle~";
+ mes "Sparkle sparkle~ Sparkle sparkle~";
+ next;
+ mes "[Pambo]";
+ mes "Twinkle twinkle~ Twinkle twinkle~";
+ mes "Sparkle sparkle~ Sparkle sparkle~";
+ mes "Mmhahah~ Hahaha~ Hehehe~";
+ mes "Heh heh heh~ Huhuhe~ Hoho~";
+ mes "Kehehe~ Halala~ Fufu~";
+ next;
+ emotion e_sob;
+ mes "[Pambo]";
+ mes "But there's nothing twinkling here...";
+ close;
+}
+
+ecl_in01,41,103,1 script A blushing girl#eclbig 439,{
+ mes "[A blushing girl]";
+ mes "Do you see this balcony up top?";
+ mes "Mayor Jun appears there everytime there is an important occasion!";
+ next;
+ emotion e_lv2;
+ mes "[A blushing girl]";
+ mes "He's so handome!! Ahhh~";
+ close;
+}
+
+ecl_in01,53,92,4 script Lafiki#eclbig 444,{
+ mes "[Lafiki]";
+ mes "My fashion sense today is excellent as usual. Heh-";
+ next;
+ emotion e_lv2;
+ mes "[Lafiki]";
+ mes "Hello~ My beautiful body~";
+ mes "Every strand of hair is so beautiful!";
+ next;
+ mes "[Dandy]";
+ mes "Yes, it's definitely your garbage fashion sense that wreaks of trash as usual.";
+ emotion e_gg,0,"Dandy#eclbig";
+ close;
+}
+
+ecl_in01,54,91,2 script Dandy#eclbig 443,{
+ mes "[Dandy]";
+ mes "Take a look at me! How's this? Am I not so fabulous?";
+ next;
+ mes "[Dandy]";
+ mes "A Laphine can freely change in between different clothes, but not any Laphine looks this great!";
+ next;
+ mes "[Lafiki]";
+ mes "What nonsensical nonsense are you saying? No matter who looks at it, this region's best looker is me!";
+ emotion e_pif,0,"Lafiki#eclbig";
+ close;
+}
+
+ecl_in01,52,102,4 script Choir Conductor#eclbig 442,{
+ mes "[Choir conductor]";
+ mes "We are Eclage's Tree Wing Choir~";
+ mes "We bring you heavenly harmonies~";
+ next;
+ mes "[Choir conductor]";
+ mes "Hello foreigner, we'll give you a taste of our harmony~";
+ next;
+ emotion e_ho;
+ mes "[Choir]";
+ mes "Aaa~";
+ next;
+ emotion e_ho,0,"Choir member#eclbig01";
+ mes "[Choir]";
+ mes "Aaa~~";
+ mes "Aaa~";
+ next;
+ emotion e_ho,0,"Choir member#eclbig02";
+ mes "[Choir]";
+ mes "Aaa~~~";
+ mes "Aaa~~";
+ mes "Aaa~";
+ next;
+ emotion e_ho,0,"Choir member#eclbig03";
+ mes "[Choir]";
+ mes "Aaa~~~~";
+ mes "Aaa~~~";
+ mes "Aaa~~";
+ mes "Aaa~";
+ next;
+ emotion e_ho,0,"Choir member#eclbig04";
+ mes "[Choir]";
+ mes "Aaa~~~~~";
+ mes "Aaa~~~~";
+ mes "Aaa~~~";
+ mes "Aaa~~";
+ mes "Aaa~";
+ next;
+ emotion e_ho,0,"Choir member#eclbig05";
+ mes "[Choir]";
+ mes "Aaa~~~~~~";
+ mes "Aaa~~~~~";
+ mes "Aaa~~~~";
+ mes "Aaa~~~";
+ mes "Aaa~~";
+ mes "Aaa~";
+ next;
+ emotion e_ho;
+ emotion e_ho,0,"Choir member#eclbig01";
+ emotion e_ho,0,"Choir member#eclbig02";
+ emotion e_ho,0,"Choir member#eclbig03";
+ emotion e_ho,0,"Choir member#eclbig04";
+ emotion e_ho,0,"Choir member#eclbig05";
+ mes "[Choir]";
+ mes "Uhhurukukuruhuuhhurukukuruhuuh";
+ mes "Try to feel this~ The melody that flows~";
+ next;
+ mes "[Choir conductor]";
+ mes "How is it!! Our harmony!!";
+ close;
+}
+
+ecl_in01,51,103,4 script Choir member#eclbig01 442,{
+ mes "[Choir member]";
+ mes "Aaa~";
+ emotion e_ho;
+ close;
+}
+ecl_in01,53,103,4 duplicate(Choir member#eclbig01) Choir member#eclbig02 442
+ecl_in01,50,104,4 duplicate(Choir member#eclbig01) Choir member#eclbig03 442
+ecl_in01,52,104,4 duplicate(Choir member#eclbig01) Choir member#eclbig04 442
+ecl_in01,54,104,4 duplicate(Choir member#eclbig01) Choir member#eclbig05 442
+
+// Generic Eclage NPCs - Set 3
+//============================================================
+ecl_fild01,190,93,4 script Fili#1 617,{
+ mes "[Fili]";
+ mes "Looking at this beautiful field, the song sings itself~";
+ emotion e_ho;
+ close;
+}
+
+ecl_fild01,83,263,4 script Watering Laphine#1 444,{
+ mes "[Watering Laphine]";
+ mes "I think the earth is running dry.";
+ close;
+}
+
+ecl_fild01,163,196,4 script Dancing Laphine#1 438,{
+ mes "[Dancing Laphine]";
+ mes "It's important to warm up like this before you start dancing. One, two, three, four....";
+ close;
+}
+
+// Eclage Prison & Clinic
+//============================================================
+ecl_in01,8,71,4 script Eclage Guard#pri_inn 447,{
+ mes "[Eclage Guard]";
+ mes "This path will take you to the lower parts of Eclage. You'll find a prison and a clinic there.";
+ close;
+}
+
+ecl_in02,96,22,2 script Sign#prison_inn 835,{
+ mes "[North] Prison";
+ mes "[West] Clinic";
+ close;
+}
+
+ecl_in02,164,56,2 script Receptionist#Laphine 437,{
+ mes "[Receptionist]";
+ mes "Welcome to Eclage Clinic.";
+ next;
+ switch(select("Save Location:Rest:Finish the conversation")) {
+ case 1:
+ mes "[Receptionist]";
+ mes "Clinic has been set as your save point. Be careful though~";
+ savepoint "ecl_in02",162,49;
+ close;
+ case 2:
+ mes "[Receptionist]";
+ mes "Restore your mind and body at our clinic. It's filled with Eclage's clean energy.";
+ mes "We charge 1 Splendide Coin normally, but we offer a special discount for travelers. Your total is 5,000 zeny.";
+ next;
+ switch(select("Pay with Splendide Coin:Pay with Zeny:Forget it")) {
+ case 1:
+ if (countitem(6081) == 0) {
+ mes "[Receptionist]";
+ mes "It seems like you don't have enough coins. Would you check your account again, please?";
+ close;
+ }
+ delitem 6081,1; //Splendide_Coin
+ break;
+ case 2:
+ if (Zeny < 5000) {
+ mes "[Receptionist]";
+ mes "It seems like you don't have enough zeny. Would you check your account again, please?";
+ close;
+ }
+ set Zeny, Zeny-5000;
+ break;
+ case 3:
+ close;
+ }
+ mes "[Receptionist]";
+ mes "Make yourself at home~";
+ close2;
+ percentheal 100,100;
+ warp "ecl_in02",167,49;
+ end;
+ case 3:
+ close;
+ }
+}
+
+ecl_in02,137,44,2 script Doctor Laphine#doctor 442,{
+ mes "[Injured Laphine]";
+ mes "Ooww...";
+ mes "Where...am...I?";
+ next;
+ mes "[Doctor]";
+ mes "You're at a clinic. Don't worry.";
+ mes "We stopped the bleeding and casted emergency spells.";
+ mes "You were bleeding a lot. That was close, you know.";
+ next;
+ mes "[Injured Laphine]";
+ mes "......";
+ mes "What, no, I...I don't feel anything...what's going on?";
+ next;
+ mes "[Doctor]";
+ mes "Umm...the arrow damaged your wing pretty badly...";
+ next;
+ mes "[Injured Laphine]";
+ mes "...what do you mean??";
+ next;
+ mes "[Doctor]";
+ mes "Well...I was going to tell you after you recover, but you should know. You can't decorate the Yai anymore.";
+ mes "In other words, you injured your wing. The arrow went through the most critical part in the wing.";
+ next;
+ mes "[Injured Laphine]";
+ mes "What? No way...please...doctor!! No!!";
+ close;
+}
+ecl_in02,135,45,4 duplicate(Doctor Laphine#doctor) Injured Laphine 441
diff --git a/npc/re/cities/malaya.txt b/npc/re/cities/malaya.txt
index b56186af0..dd5ca3101 100644
--- a/npc/re/cities/malaya.txt
+++ b/npc/re/cities/malaya.txt
@@ -44,7 +44,7 @@ malaya,276,55,4 script Optamara Crew#malaya 100,{
}
}
-alberta,237,71,3 script Optamara Crew#alberta 100,{
+alberta,196,202,3 script Optamara Crew#alberta 100,{
mes "[Optamara Crew]";
mes "Hey, there!";
diff --git a/npc/re/cities/mora.txt b/npc/re/cities/mora.txt
index 80c1af43c..a3f06edb9 100644
--- a/npc/re/cities/mora.txt
+++ b/npc/re/cities/mora.txt
@@ -1,321 +1,1188 @@
//===== Hercules Script ======================================
//= Mora Village
//===== By: ==================================================
-//= SuperHulk
+//= Euphy
//===== Current Version: =====================================
-//= 1.2
+//= 1.4
//===== Compatible With: =====================================
//= Hercules
//===== Description: =========================================
+//= [Official Conversion]
//= Mora Town Script
//===== Additional Comments: =================================
//= 1.0 First version. [SuperHulk]
//= 1.1 Translations to English. [Flaid]
//= 1.1a Standardized. [Euphy]
//= 1.2 Added new NPCs. [Flaid]
+//= 1.3 Replaced with full iRO town NPCs. [Euphy]
+//= 1.4 Updated to match the official scripts. [Euphy]
//============================================================
-mora,185,163,5 script Mora Citizen#1 516,{
- mes "[Scholar Gary]";
- mes "Hello, traveler!";
- mes "I'm Gary, the expert about enchantments in this area.";
- mes "What do you want to know?";
+// Set 1 :: mora_resident
+//============================================================
+mora,52,138,5 script Mungmung#p 516,{
+ mes "[Mungmung]";
+ mes "I'm not the innkeeper!";
+ mes "Why do people want to pay me when they see me?";
+ close;
+}
+
+mora,160,123,3 script Nemnem#p 517,{
+ mes "[Nemnem]";
+ mes "My pain is getting worse and worse";
+ mes "since the crevice appeared in Bifrost.";
+ mes "Are you responsible for it, young one?";
+ next;
+ switch(select("Of course I am!:That's an unfair accusation!")) {
+ case 1:
+ mes "[Nemnem]";
+ mes "Bra~vo!";
+ emotion e_awsm;
+ close;
+ case 2:
+ mes "[Nemnem]";
+ mes "If not, never mind!";
+ emotion e_swt2,1;
+ close;
+ }
+}
+
+mora,105,104,3 script Boaster#podo 514,{
+ mes "[Boaster]";
+ mes "So the situation";
+ mes "was at its worst.";
+ next;
+ mes "[Raffles]";
+ mes "Oh~!";
+ next;
+ mes "[Boaster]";
+ mes "Bored to death, I started to cry.";
+ mes "Then I fell asleep, tired from all the crying.";
+ mes "And when I woke up,";
+ mes "I was even more bored";
+ mes "than before!";
+ next;
+ mes "[Raffles]";
+ mes "Oh, oh!";
+ mes "That's terrible, so terrible.";
+ mes "How could that happen?!";
+ next;
+ mes "[Boaster]";
+ mes "So the situation got";
+ mes "more and more serious...";
+ mes "Now give me some more coins.";
+ emotion e_swt2,1;
+ close;
+}
+
+mora,105,100,1 script Rangrang#p 518,{
+ mes "[Rangrang]";
+ mes "I've never heard such a boring and sad story.";
+ mes "I feel like crying!";
+ close;
+}
+
+/*
+// Disabled due to overlapping with RangRang,
+// and is not clickable on official servers.
+mora,105,100,1 script Gurgur#p 516,{
+ mes "[Gurgur]";
+ mes "He's been crying, falling asleep,";
+ mes "and then waking up for 210 times now.";
+ mes "Isn't it just so original?";
+ mes "I wonder how the story will end.";
+ close;
+}
+*/
+
+mora,99,100,7 script Decoy#podo 515,{
+ mes "[A Decoy]";
+ mes "Oh~!";
+ mes "That's just so";
+ mes "unbelievable!";
+ mes "I'm so curious, let's give him some coins!";
+ close;
+}
+
+mora,98,104,5 script Moved Raffle#podo 516,{
+ mes "[Moved Raffle]";
+ mes "This is sad, too sad!";
+ mes "I'm not sure why,";
+ mes "but it must be sad";
+ mes "because everybody else says so.";
+ close;
+}
+
+mora,102,107,5 script Relieved Raffle#podo 517,{
+ mes "[Relieved Raffle]";
+ mes "Wow~!";
+ mes "This is exciting.";
+ mes "He woke up safe and sound again!";
+ mes "Well, I'm sure he will next time!";
+ mes "...";
+ next;
+ mes "[Relieved Raffle]";
+ mes "Eh?";
+ close;
+}
+
+mora,101,107,5 script Excited Raffle#podo 518,{
+ mes "[Excited Raffle]";
+ mes "Wow~";
+ mes "The story is no fun at all.";
+ mes "Wow~!";
+ mes "But it's as if we were singing in chorus -";
+ mes "it's really fun.";
+ mes "Wow~!";
+ close;
+}
+
+mora,103,100,5 script Impressed Raffle#podo 518,{
+ mes "[Impressed Raffle]";
+ mes "Wow! Wow!";
+ close;
+}
+
+mora,123,94,7 script Visitor to Mora#podo1 515,{
+ mes "[Visitor to Mora]";
+ mes "I'm stuck here because of the crevice, which appeared out of nowhere.";
+ mes "Ha......";
+ close;
+}
+
+mora,155,72,3 script Visitor to Mora#podo2 513,{
+ mes "[Visitor to Mora]";
+ mes "Isn't this one cheerful village?";
+ mes "With Bifrost blocked like that, I'm thinking of settling here permanently.";
+ close;
+}
+
+mora,184,169,5 script Worker#mo1 516,{
+ mes "[Worker]";
+ mes "I heard that somebody made it out of the Labyrinth Forest alive.";
+ mes "Whoever it is, I want to meet this person myself.";
+ close;
+}
+
+mora,179,155,1 script Novice Worker#mo 516,{
+ mes "[Novice Worker]";
+ mes "I'll come out of the Labyrinth Forest and become a hero!";
+ next;
+ mes "[Indifferent Worker]";
+ mes "I hear somebody already did that.";
+ next;
+ mes "[Novice Worker]";
+ mes "What if I say I'm that somebody?";
+ next;
+ mes "[Indifferent Worker]";
+ mes "Forget it. It's more believable";
+ mes "to say I did it.";
+ next;
+ mes "[Novice Worker]";
+ mes "Well, that's true.";
+ close;
+}
+
+mora,177,157,5 script Indifferent Worker#mo 518,{
+ mes "[Novice Worker]";
+ mes "I'll come out of the Labyrinth Forest and become a hero!";
+ next;
+ mes "[Indifferent Worker]";
+ mes "I hear somebody already did that.";
+ next;
+ mes "[Novice Worker]";
+ mes "What if I say I'm that somebody?";
+ next;
+ mes "[Indifferent Worker]";
+ mes "Forget it. It's more believable";
+ mes "to say I did it.";
+ next;
+ mes "[Novice Worker]";
+ mes "Well, that's true.";
+ close;
+}
+
+mora,108,182,5 script Worker#mo4 516,{
+ mes "[Worker]";
+ mes "Stay clear of the Labyrinth Forest.";
+ mes "Don't ever dream of peeking in out of curiosity.";
+ mes "Lots of travelers have gone missing after going there.";
+ close;
+}
+
+// Set 2 :: npc
+//============================================================
+mora,122,97,6 script Relaxing Raffle#ep14_1 517,{
+ mes "[Relaxing Rafflesia]";
+ mes "The public bath in the center of the village is a symbol of Mora Village.";
+ next;
+ mes "[Relaxing Rafflesia]";
+ mes "It's not just a simple puddle.";
+ mes "It has tremendous power";
+ mes "to heal wounds.";
+ next;
+ mes "[Relaxing Rafflesia]";
+ mes "Try walking in the bath";
+ mes "if you want to see for yourself.";
+ mes "It will slowly but surely heal your wounds.";
+ close;
+}
+
+mora,174,171,0 script Warehouse Worker#mo1 518,{
+ mes "[Shortffle]";
+ mes "I want to climb the ladder,";
+ mes "but my legs are too short to do that.";
+ emotion e_sob;
next;
- switch(select("Fundamentals of enchantment.:Nothing.")) {
+ mes "[Shortffle]";
+ mes "I wonder who brought it here.";
+ close;
+}
+
+mora,113,185,4 script Reading Raffle#ep14_1 516,{
+ mes "You see a Rafflesia";
+ mes "lost in reading.";
+ next;
+ switch(select("See what he's reading.:Leave him alone.")) {
case 1:
- mes "[Scholar Gary]";
- mes "Ah, I see that you are interested";
- mes "in enchantments!";
- mes "Alright, here are the basics!!";
- mes "After this you should understand";
- mes "the mysteries of our enchantments!";
+ mes "Curious about what he's reading,";
+ mes "you quietly approach him from behind.";
+ mes "The Rafflesia is reading in a low voice.";
+ next;
+ mes "[Reading Rafflesia]";
+ mes "Seiren was going to Eremes's.";
+ mes "He was going there to borrow";
+ mes "Eremes's reference books,";
+ next;
+ mes "[Reading Rafflesia]";
+ mes "but he also hoped to see";
+ mes "his beautiful sister, Seiren.";
+ mes "Seiren knocked on Eremes's door";
+ mes "with his heart pounding.";
next;
- mes "[Scholar Gary]";
- mes "First of all, you must know";
- mes "that this is magic, not an";
- mes "exact science.";
+ mes "[Reading Rafflesia]";
+ mes "Knock! Knock! Knock!";
+ mes "Excuse me. Is anybody there?";
+ mes "... ... ...";
+ mes "He doesn't hear anything.";
next;
- mes "[Scholar Gary]";
- mes "You don't really know what will";
- mes "happen. You can be lucky or";
- mes "unlucky, and get a more or";
- mes "less powerful enchantment.";
+ mes "[Reading Rafflesia]";
+ mes "Is there nobody home?";
+ mes "He knocked again,";
+ mes "afraid that he might have";
+ mes "made the trip for nothing.";
next;
- mes "[Scholar Gary]";
- mes "You can miss the magic, too!";
- mes "If this happens while your equip";
- mes "is being enchanted, you'll lose it";
- mes "all previous enchantments, cards, and the refine!";
+ mes "[Reading Rafflesia]";
+ mes "Knock! Knock! Knock!";
+ mes "No answer again. Is there nobody home?";
+ mes "He knew it was rude to do that,";
+ mes "but he decided to enter anyway";
+ mes "and wait for Eremes to come back home.";
next;
- mes "[Scholar Gary]";
- mes "There is also a risk of";
- mes "breaking your equipment";
- mes "while trying to enchant";
- mes "your equip with a second enchantment!";
+ mes "[Reading Rafflesia]";
+ mes "Seiren opened the front door";
+ mes "with his heart throbbing.";
+ mes "*squeak*";
+ mes "The door wasn't locked.";
+ mes "Eremes seems to be away for a while.";
next;
- mes "[Scholar Gary]";
- mes "Each attempt to enchant will cost";
- mes "you 1 Mora coin and 100,000 zeny.";
- mes "If you don't know yet, the money";
- mes "made with this service goes";
- mes "straight to the people of Mora!";
+ mes "[Reading Rafflesia]";
+ mes "Seiren entered the house hesitantly.";
+ mes "The moment he stepped into the house,";
+ mes "he heard a sound of water running.";
next;
- mes "[Scholar Gary]";
- mes "Those were the basics.";
- mes "Take them to your heart.";
- mes "For more details, you can";
- mes "always visit my master,";
- mes "Gougueulé Tonami!";
+ mes "[Reading Rafflesia]";
+ mes "Seiren suddenly came to his senses,";
+ mes "and turned back to go out.";
+ mes "But right at the moment!!";
+ next;
+ mes "[Reading Rafflesia]";
+ mes "*thud*";
+ mes "The bathroom door opened,";
+ mes "and with white steam pouring out came a foot.";
+ next;
+ mes "[Reading Rafflesia]";
+ mes "Seiren's heart almost stopped";
+ mes "at the sight of it. And a moment later,";
+ mes "somebody came out from the bathroom,";
+ mes "with just a towel around her body.";
+ next;
+ mes "[Reading Rafflesia]";
+ mes "With her body still wet";
+ mes "from the shower...";
+ next;
+ mes "[Reading Rafflesia]";
+ mes "*gasp* Who are you? How long";
+ mes "were you standing there? How rude.";
+ emotion e_omg;
+ next;
+ mes "The Rafflesia closed the book hastily.";
+ mes "You're curious what will happen next,";
+ mes "but you've been rude enough,";
+ mes "so you just give up.";
close;
case 2:
- mes "[Scholar Gary]";
- mes "Goodbye, and good luck!";
+ mes "You leave the place quietly";
+ mes "in order not to disturb";
+ mes "the Rafflesia, who was lost in reading.";
close;
}
}
-mora,52,138,8 script Mora Citizen#2 516,{
- mes "[Valere]";
- mes "Hello, adventurer!";
- mes "You look like you're";
- mes "lost, aren't you!?";
+mora,99,65,6 script Banana Rafflesia#ep14_1 516,{
+ mes "[Banana Rafflesia]";
+ mes "You want a banana?";
next;
- mes "[Valere]";
- mes "...";
- mes "Ah, okay.";
- mes "But you look like you want to";
- mes "enchant your equipment!";
- next;
- mes "[Valere]";
- mes "I only need to know one thing";
- mes "before telling you more about";
- mes "the Mora equipment enchants!";
- mes "So tell me, what is your class?";
- next;
- switch(select("Warlock.:Arch Bishop.:Ranger.:Guillotine Cross.:Rune Knight.:Other.:Goodbye.")) {
+ switch(select("Yes, I do.:No, thanks.")) {
case 1:
- mes "[Valere]";
- mes "Hmm, you should visit the";
- mes "Artifact Crafter.";
- mes "That is our enchantment specialist";
- mes "for Warlock equipment!";
+ mes "[Banana Rafflesia]";
+ mes "Take it if you can.";
+ mes "If you are successful, you can have it for free.";
+ emotion e_ok;
close;
case 2:
- mes "[Valere]";
- mes "Hmm, you should visit the";
- mes "Master of Relics.";
- mes "That is our enchantment specialist";
- mes "for Arch Bishop equipment!";
- close;
- case 3:
- case 4:
- case 5:
- mes "[Valere]";
- mes "Hmm, you should visit the";
- mes "Artifact Researcher.";
- mes "That is our enchantment specialist";
- mes "for Ranger, Guillotine Cross,";
- mes "and Rune Knight equipment!";
- close;
- case 6:
- mes "[Valere]";
- mes "Hmm, there is the Master Tailor";
- mes "who sells and enchants the 'Army Padding'.";
- next;
- mes "[Valere]";
- mes "There's also the Pendant Crafter";
- mes "who enchants 'Pendant of Guardian'.";
- next;
- mes "[Valere]";
- mes "And finally the Bulberry Westhood";
- mes "who enchants 'Loki's muffler'.";
- close;
- case 7:
- mes "[Valere]";
- mes "Goodbye, and good luck!";
+ mes "[Banana Rafflesia]";
+ mes "Well, I was going to give it for free,";
+ mes "but if you don't want it, it's fine with me.";
+ emotion e_pif;
close;
}
}
-mora,160,123,5 script Mora Citizen#3 517,{
- mes "[Boudril]";
- mes "Hey, you seem to be";
- mes "so far from home!";
- mes "Mora is a remote town.";
- mes "That's why we have";
- mes "own currency here!";
+mora,30,128,4 script Relaxing Traveler#ep14_1 514,{
+ mes "[Traveler]";
+ mes "The Mora Inn is famous";
+ mes "for its unusual pieces of furniture.";
+ mes "Mushroom closets and apple dressers...";
+ mes "Aren't they so innovative?";
next;
- mes "[Boudril]";
- mes "Beyond that, our community";
- mes "developed this craft.";
- mes "Items found here cannot";
- mes "be found anywhere else!";
+ select("... ... ...");
+ mes "[Traveler]";
+ mes "Sorry... maybe it's just me...";
+ emotion e_sry;
close;
}
-mora,105,100,3 script Mora Citizen#4 518,{
- mes "[Buisso]";
- mes "Hello, my friend.";
- mes "What brings you to this";
- mes "place, so far from home?";
- mes "Are you looking for a challange?";
- mes "You won't be disappointed here!";
+mora,130,96,4 script Relaxing Traveler#ep14_2 513,{
+ mes "[Traveler]";
+ mes "The Rafflesia in Mora Village all look alike, so it's so confusing.";
+ mes "It's like looking at centuplets...";
next;
- mes "[Buisso]";
- mes "We are surrounded by the";
- mes "Bifrost, an area with powerful";
- mes "and deceitful monsters...";
- mes "So cute, but still dangerous.";
+ mes "[Traveler]";
+ mes "However! If you look closely,";
+ mes "you'll find each of them has a personality.";
+ mes "To find it is one of the fun things";
+ mes "you can do in the village.";
close;
}
-mora,98,104,4 script Mora Citizen#5 516,{
- mes "[Malavida]";
- mes "...";
- mes "What!? I look depressed!?";
- mes "It's normal living here!";
- mes "My dream was to be like you!";
- next;
- mes "[Malavida]";
- mes "Traveling around the world,";
- mes "chasing monsters,";
- mes "hunting treasure...";
- mes "You have the chance. Use it!";
+mora,43,113,4 script Wounded Rafflesia#ep14_1 517,{
+ mes "[Wounded Raffle]";
+ mes "Ugghh... What was it";
+ mes "that was in the bath... Arrrghh...";
+ mes "To attack suddenly like that... Be careful...";
+ mes "Whatever it is in there, it's very aggressive.";
close;
}
-mora,102,107,6 script Mora Citizen#6 517,{
- mes "[Skape]";
- mes "Have you tasted our dish?";
- mes "The beef toast!?";
- mes "This delicious beef only";
- mes "exists in the Bifrost!";
+mora,168,161,4 script Warehouse Worker#mo2 513,{
+ mes "[Lively]";
+ mes "The inn over there~";
+ mes "It should've been mine~";
+ next;
+ mes "[Lively]";
+ mes "The store over there~";
+ mes "It should've been mine as well~";
next;
- mes "[Skape]";
- mes "If you want to taste this";
- mes "dish, visit our chef.";
- mes "He makes the best";
- mes "Mora beef toast!";
+ mes "[Lively]";
+ mes "The warehouse here~";
+ mes "and all the things in it~";
+ mes "All of those should've been mine~";
+ mes "All of those should've been mine~";
+ next;
+ mes "[Lively]";
+ mes "Ahhh... I'd like to make money...";
+ emotion e_sob;
close;
}
-mora,101,107,4 script Mora Citizen#7 518,{
- mes "[Wouadel Kami]";
- mes "*Dances*";
- mes "I'm a choreographer, but";
- mes "nobody understands me.";
- mes "*doridori*";
- mes "*bingbing*";
- mes "*bangbang*";
+mora,175,161,6 script Warehouse Worker#mo3 518,{
+ mes "[Kuorita]";
+ mes "Oh... this duck...";
+ next;
+ mes "[Kuorita]";
+ mes "Its slender red beak...";
+ mes "and the blush on its cheeks...";
+ mes "and its wings, ready to take off";
+ mes "any moment...";
+ emotion e_shy;
+ next;
+ mes "[Kuorita]";
+ mes "I want to have it badly...";
+ mes "What would happen if I stole it?";
+ emotion e_rice;
close;
}
-mora,103,100,6 script Mora Citizen#8 518,{
- mes "[Didier Lans]";
- mes "Yooo gaba gaba!";
- mes "Hello, my dear. You've heard";
- mes "about my teachings, have you?";
- mes "Do not hit your friends!";
- mes "*makes small steps backwards*";
- next;
- mes "[Didier Lans]";
- mes "Yooo gaba gaba!";
- mes "Eat your vegetables.";
- mes "*is the fool*";
- mes "Be smart, be polite!";
- mes "Yooo gaba gaba!";
+mora,140,186,3 script Raffle Philosopher 517,{
+ mes "[Raffle Philosopher]";
+ mes "With a little token of appreciation, I will tell you a quote that will help you in your life.";
+ next;
+ if(select("Give him a token of appreciation.:Can't you just tell me?") == 2) {
+ mes "[Raffle Philosopher]";
+ mes "You don't get something for nothing.";
+ close;
+ }
+ mes "[Raffle Philosopher]";
+ mes "How much are you willing to give me?";
+ mes "You can pay me in the currencies listed below.";
+ mes "Enter the sum you're willing to pay. Enter 0 if you don't want to pay anything.";
+ next;
+ input .@input;
+ if (.@input == 0) {
+ mes "[Raffle Philosopher]";
+ mes "So you don't want to hear a quote, eh?";
+ close;
+ } else if (.@input < 100 || .@input > 1000000) {
+ mes "[Raffle Philosopher]";
+ mes "You can pay between ^FF0000100 and 1000000^000000.";
+ close;
+ } else if (Zeny < .@input) {
+ mes "[Raffle Philosopher]";
+ mes "So you think this is what my time is worth?";
+ close;
+ }
+ mes "[Raffle Philosopher]";
+ mes "The quote I'm going to tell you is...";
+ mes "Let's see... Wait a second.";
+ set Zeny, Zeny-.@input;
+ next;
+ mes ". . . . . . . . .";
+ next;
+ mes ". . . . . . . . .";
+ next;
+ mes ". . . . . . . . .";
+ next;
+ mes "[Raffle Philosopher]";
+ mes "Okay! I think this is the one for you.";
+ next;
+ mes "[Raffle Philosopher]";
+ mes strcharinfo(0)+", the quote I'm going to tell you is...";
+ switch(rand(1,70)) {
+ case 1:
+ mes "Nothing is more difficult,";
+ mes "and therefore more precious,";
+ mes "than to be able to decide.";
+ mes "- Napoleon Bonaparte -";
+ break;
+ case 2:
+ mes "Sometimes we stare so long at a door that is closing,";
+ mes "that we see too late the one that is open.";
+ mes "- Alexander Graham Bell -";
+ break;
+ case 3:
+ mes "If it's that painful, why do you keep doing it?";
+ mes "The answer's simple.";
+ mes "Because it makes my heart beat,";
+ mes "because it excites me.";
+ mes "My body might suffer, but I'm a lot happier";
+ mes "doing what I have always wanted to do.";
+ mes "- Biya Han -";
+ break;
+ case 4:
+ mes "You cannot persuade anybody";
+ mes "before you change yourself.";
+ mes "- Cheoljong Ko -";
+ break;
+ case 5:
+ mes "Never regret what you have chosen.";
+ mes "- Miyoung Ko -";
+ break;
+ case 6:
+ mes "A man is not finished when he is defeated.";
+ mes "He is finished when he quits.";
+ mes "- Richard Nixon -";
+ break;
+ case 7:
+ mes "Failure is instructive.";
+ mes "The person who really thinks";
+ mes "learns quite as much from his failures";
+ mes "as from his successes.";
+ mes "- John Dewey -";
+ break;
+ case 8:
+ mes "We sow our thoughts, and we reap our actions;";
+ mes "we sow our actions, and we reap our habits;";
+ mes "we sow our habits, and we reap our characters;";
+ mes "we sow our characters, and we reap our destiny.";
+ mes "- Erasmus -";
+ break;
+ case 9:
+ mes "There is no greater folly";
+ mes "in the world";
+ mes "than for a man to despair.";
+ mes "- Miguel de Cervantes -";
+ break;
+ case 10:
+ mes "Humility is the most difficult";
+ mes "of all virtues to achieve,";
+ mes "nothing dies harder than the desire";
+ mes "to think well of oneself.";
+ mes "- T. S. Eliot -";
+ break;
+ case 11:
+ mes "You have to assess your talent...";
+ mes "and ask yourself if this is going to be";
+ mes "an avocation or a job.";
+ mes "- Norma Clayton -";
+ break;
+ case 12:
+ mes "An eye for an eye";
+ mes "only ends up";
+ mes "making the whole world blind.";
+ mes "- Gandhi-";
+ break;
+ case 13:
+ mes "A man of no talent";
+ mes "craves long life,";
+ mes "yet a fool, if offered eternity,";
+ mes "would not know what to do with it.";
+ mes "- Solzhenitsyn -";
+ break;
+ case 14:
+ mes "It is not because the truth is too difficult to see that we make mistakes...";
+ mes "we make mistakes because the easiest and most comfortable course for us";
+ mes "is to seek insight where it accords with our emotions - especially selfish ones.";
+ mes "- Solzhenitsyn -";
+ break;
+ case 15:
+ mes "Beware of a man";
+ mes "of one book.";
+ mes "- English Proverb -";
+ break;
+ case 16:
+ mes "Bees drink water to make honey,";
+ mes "and snakes drink water to make poison.";
+ mes "- English Proverb -";
+ break;
+ case 17:
+ mes "Despair is an illness leading to death.";
+ mes "- Kierkegaard -";
+ break;
+ case 18:
+ mes "To eat bread without hope is";
+ mes "still slowly to starve to death.";
+ mes "- Pearl Buck -";
+ break;
+ case 19:
+ mes "Optimism is the faith that leads to achievement.";
+ mes "Nothing can be done";
+ mes "without hope and confidence.";
+ mes "- Helen Keller -";
+ break;
+ case 20:
+ mes "Look deep into nature,";
+ mes "and then you will understand";
+ mes "everything better.";
+ mes "- Albert Einstein -";
+ break;
+ case 21:
+ mes "Many of life's failures are";
+ mes "people who did not realize";
+ mes "how close they were";
+ mes "to success";
+ mes "when they gave up.";
+ mes "- Thomas Edison -";
+ break;
+ case 22:
+ mes "I have more fun and enjoy more financial success";
+ mes "when I stop trying";
+ mes "to get what I want";
+ mes "and start helping other people ";
+ mes "get what they want.";
+ mes "- Spencer Johnson, Larry Wilson -";
+ break;
+ case 23:
+ mes "Age is like love, it cannot be hid.";
+ mes "- Thomas Dekker -";
+ break;
+ case 24:
+ mes "We can't become";
+ mes "what we need to be";
+ mes "by remaining what we are.";
+ mes "- Oprah Winfrey -";
+ break;
+ case 25:
+ mes "Turn your wounds.";
+ mes "into wisdom.";
+ mes "- Oprah Winfrey -";
+ break;
+ case 26:
+ mes "Pain is the great teacher of mankind.";
+ mes "- Marie E. Eschenbach -";
+ break;
+ case 27:
+ mes "The superior man thinks always";
+ mes "of virtue; the common man";
+ mes "thinks of comfort.";
+ mes "- Confucius -";
+ break;
+ case 28:
+ mes "Pleasure is often spoiled by describing it.";
+ mes "- Stendhal -";
+ break;
+ case 29:
+ mes "The end comes when we";
+ mes "no longer talk with ourselves.";
+ mes "It is the end of genuine thinking";
+ mes "and the beginning of the final loneliness.";
+ mes "- Edward Gibbon -";
+ break;
+ case 30:
+ mes "They who have conquered doubt and fear";
+ mes "have conquered failure.";
+ mes "- James Allen -";
+ break;
+ case 31:
+ mes "Our greatest pride was";
+ mes "not that we never fail, but rather";
+ mes "that we always stand up when we fall.";
+ mes "- Confucius -";
+ break;
+ case 32:
+ mes "When you love a person";
+ mes "all fear disappears.";
+ mes "And when you are afraid all love disappears.";
+ mes "- Osho Rajneesh -";
+ break;
+ case 33:
+ mes "The power of our unconscious mind is enormous;";
+ mes "what we cannot do in our conscious state";
+ mes "we can do with the help";
+ mes "of the unconscious mind";
+ mes "more sensible than the conscious.";
+ mes "- Osho Rajneesh -";
+ break;
+ case 34:
+ mes "Truth is simple. Very simple-";
+ mes "so simple that a child can understand it.";
+ mes "In fact, so simple that only a child can understand it.";
+ mes "Unless you become a child again";
+ mes "you will not be able to understand it.";
+ mes "It is an experience, not speculation.";
+ mes "- Osho Rajneesh -";
+ break;
+ case 35:
+ mes "The best and most beautiful things in the world";
+ mes "cannot be seen or even touched -";
+ mes "they must be felt with the heart.";
+ mes "- Helen Keller -";
+ break;
+ case 36:
+ mes "Never bend your head. Always hold it high.";
+ mes "Look the world straight in the eye.";
+ mes "- Helen Keller -";
+ break;
+ case 37:
+ mes "Alone we can do so little;";
+ mes "together we can do so much.";
+ mes "- Helen Keller -";
+ break;
+ case 38:
+ mes "The highest result of education is tolerance.";
+ mes "- Helen Keller -";
+ break;
+ case 39:
+ mes "We are, each of us";
+ mes "angels with only one wing;";
+ mes "and we can only fly";
+ mes "by embracing one another.";
+ mes "- Luciano de Crescenzo -";
+ break;
+ case 40:
+ mes "He that feeds himself from waiting could die of hunger.";
+ mes "- Danish Proverb -";
+ break;
+ case 41:
+ mes "A bad peace is better";
+ mes "than a good war.";
+ mes "- Russian Proverb -";
+ break;
+ case 42:
+ mes "He who wants to warm himself";
+ mes "in old age must build";
+ mes "a fireplace in his youth.";
+ mes "- German Proverb -";
+ break;
+ case 43:
+ mes "Those who are choosy often pick the worst.";
+ mes "- Ilocano Proverb -";
+ break;
+ case 44:
+ mes "Even a God will lose money";
+ mes "after three days of gambling.";
+ mes "- Chinese Proverb -";
+ break;
+ case 45:
+ mes "I fear not the man";
+ mes "who has practiced 10,000 kicks once,";
+ mes "but I fear the man";
+ mes "who has practiced one kick 10,000 times.";
+ mes "- Bruce Lee -";
+ break;
+ case 46:
+ mes "The best way to be remembered";
+ mes "is to have a life.";
+ mes "worth remembering.";
+ mes "- Bruce Lee -";
+ break;
+ case 47:
+ mes "To know oneself is to study oneself";
+ mes "in action with another person.";
+ mes "- Bruce Lee -";
+ break;
+ case 48:
+ mes "I'm not one of those,";
+ mes "who do not believe";
+ mes "in love at first sight,";
+ mes "but I believe in taking a second look.";
+ mes "- Bruce Lee -";
+ break;
+ case 49:
+ mes "One should never rush marriage.";
+ mes "Unlike fruit, marriage is";
+ mes "always in season.";
+ mes "- Leo Tolstoy -";
+ break;
+ case 50:
+ mes "Those who want to succeed";
+ mes "will find a way, those who";
+ mes "don't will find an excuse.";
+ mes "- Leo Aguila -";
+ break;
+ case 51:
+ mes "Motivation is what gets you started.";
+ mes "Habit is what keeps you going.";
+ mes "- Jim Ryan -";
+ break;
+ case 52:
+ mes "He has achieved success who has lived well,";
+ mes "laughed often, and loved much.";
+ mes "- Bessie Stanley -";
+ break;
+ case 53:
+ mes "A poor person spends his money";
+ mes "and invests the rest.";
+ mes "A rich person invests his money";
+ mes "and spends what's left.";
+ mes "- Jim Rohn -";
+ break;
+ case 54:
+ mes "If you can't find the key to success,";
+ mes "pick the lock.";
+ mes "One of the most important principles of success is";
+ mes "developing the habit of going the extra mile.";
+ mes "- Napoleon Hill -";
+ break;
+ case 55:
+ mes "The human race has";
+ mes "one really effective weapon,";
+ mes "and that is laughter.";
+ mes "- Mark Twain -";
+ break;
+ case 56:
+ mes "A day without laughter is a day wasted.";
+ mes "- Charlie Chaplin -";
+ break;
+ case 57:
+ mes "He who laughs best today,";
+ mes "will also laugh last.";
+ mes "- Nietzsche -";
+ break;
+ case 58:
+ mes "Laughter is the sun that";
+ mes "drives winter from the human face.";
+ mes "- Victor Hugo -";
+ break;
+ case 59:
+ mes "Laugh, and the world laughs";
+ mes "with you; weep, and";
+ mes "you weep alone.";
+ mes "- Ella Wheeler Wilcox -";
+ break;
+ case 60:
+ mes "It is impossible for you to be angry";
+ mes "and laugh at the same time.";
+ mes "Anger and laughter are mutually exclusive";
+ mes "and you have the power to choose either.";
+ mes "- Wayne Dyer -";
+ break;
+ case 61:
+ mes "We don't laugh because we're happy";
+ mes "- we're happy because we laugh.";
+ mes "- William James -";
+ break;
+ case 62:
+ mes "The person who knows how to laugh at himself";
+ mes "will never cease to be amused.";
+ mes "- Shirley MacLaine -";
+ break;
+ case 63:
+ mes "The young man who has not wept is a savage,";
+ mes "and the older man who will not laugh is a fool.";
+ mes "- George Santayana -";
+ break;
+ case 64:
+ mes "I do not have much patience";
+ mes "with a thing of beauty";
+ mes "that must be explained";
+ mes "to be understood.";
+ mes "If it does need additional interpretation";
+ mes "then I question";
+ mes "whether it has fulfilled its purpose.";
+ mes "- Charlie Chaplin -";
+ break;
+ case 65:
+ mes "Life is a tragedy";
+ mes "when seen in close-up,";
+ mes "but a comedy";
+ mes "in long-shot.";
+ mes "- Charlie Chaplin -";
+ break;
+ case 66:
+ mes "The clearest sign of wisdom is continued cheerfulness.";
+ mes "- Michel de Montaigne -";
+ break;
+ case 67:
+ mes "The time you enjoyed wasting";
+ mes "was not wasted.";
+ mes "- John Lennon -";
+ break;
+ case 68:
+ mes "True humor springs not more from the head than from the heart.";
+ mes "It is not contempt; its essence is love.";
+ mes "It issues not in laughter,";
+ mes "but in still smiles, which lie far deeper.";
+ mes "- Thomas Carlyle -";
+ break;
+ case 69:
+ mes "Through humor, you can soften";
+ mes "some of the worst blows";
+ mes "that life delivers.";
+ mes "And once you find laughter,";
+ mes "no matter how painful";
+ mes "your situation might be,";
+ mes "you can survive it.";
+ mes "- Bill Cosby -";
+ break;
+ case 70:
+ mes "My great hope is to laugh";
+ mes "as much as I cry;";
+ mes "to get my work done";
+ mes "and try to love somebody";
+ mes "and have the courage";
+ mes "to accept the love in return.";
+ mes "- Maya Angelou -";
+ break;
+ }
+ next;
+ mes "[Raffle Philosopher]";
+ mes "People take what they hear";
+ mes "differently.";
+ next;
+ mes "[Raffle Philosopher]";
+ mes "I wonder what you think";
+ mes "about what I've told you.";
+ next;
+ input .@inputstr$;
+ mes "[Raffle Philosopher]";
+ mes "So you think that "+.@inputstr$+".";
+ next;
+ mes "[Raffle Philosopher]";
+ mes "... ... ... ...";
+ next;
+ mes "[Raffle Philosopher]";
+ mes "I don't know. There is no one answer";
+ mes "to this question...";
+ mes "Hold onto your thought.";
close;
}
-mora,184,169,3 script Mora Citizen#9 516,{
- mes "[Moussa Wi]";
- mes "Bleh, I've been";
- mes "here for too long.";
- mes "Living with these dogs...";
- mes "Having nothing to do...";
- mes "Hmm, how about you";
- mes "take care of them?";
+- script #mora_traveler -1,{
+ mes "[Upset Traveler]";
+ mes "You... you dare play a game with me?";
+ emotion e_ag,0,"Traveler#ep14_1_1";
+ next;
+ mes "[Traveler That Posed the Question]";
+ mes "What...? Do you have proof?";
+ mes "Do you have proof?!!";
+ emotion e_an,0,"Traveler#ep14_1_2";
+ next;
+ mes "[Traveler Trying to Stop the Fight]";
+ mes "Look, stop it, just stop it!";
+ mes "I'm afraid it will turn into a big fight...";
+ emotion e_swt2,0,"Traveler#ep14_1_3";
+ next;
+ mes "[Traveler Trying to Stop the Fight]";
+ mes "Oh! Why don't we ask";
+ mes "that person there...?";
+ next;
+ mes "[Upset Traveler]";
+ mes "Oh, yes! That's a great idea.";
+ mes "Well~ Hello there~";
+ mes "You there, traveler!";
+ emotion e_ic,0,"Traveler#ep14_1_1";
+ next;
+ mes "They seem to be calling out to you.";
+ next;
+ if(select("See what the matter is.:I have nothing to do with it.") == 2) {
+ mes "You went on your way";
+ mes "leaving the travelers behind you.";
+ close;
+ }
+ mes "["+strcharinfo(0)+"]";
+ mes "What's happening here?";
+ emotion e_what,1;
+ next;
+ mes "[Upset Traveler]";
+ mes "I'll tell you what.";
+ mes "Rose's mother had 10 sons.";
+ mes "The eldest son is called Roseone,";
+ mes "the second Rosetwo,";
+ mes "the third Rosethree...";
+ mes "the ninth Rosenine...";
+ mes "you get how it works, right?";
+ emotion e_ag,0,"Traveler#ep14_1_1";
+ next;
+ mes "[Traveler That Posed the Question]";
+ mes "Right, that's how it works.";
+ mes "So I asked what the youngest one would be called,";
+ mes "and when I told him the answer,";
+ mes "he got all upset and started cursing me.";
+ emotion e_an,0,"Traveler#ep14_1_2";
+ next;
+ mes "[Upset Traveler]";
+ mes "You... you bastard!";
+ mes "Hey there, what do you think";
+ mes "the answer to the question is?";
+ emotion e_ag,0,"Traveler#ep14_1_1";
+ next;
+ switch(select("Roseten.:Rose.:How would I know that?")) {
+ case 1:
+ mes "["+strcharinfo(0)+"]";
+ mes "The answer to the question is Roseten.";
+ mes "Why are you fighting over such a trivial matter?";
+ next;
+ mes "[Upset Traveler]";
+ mes "See? Even this traveler says";
+ mes "Roseten is the answer.";
+ mes "How dare you try to play tricks on me?";
+ emotion e_gg,0,"Traveler#ep14_1_1";
+ next;
+ mes "[Traveler That Posed the Question]";
+ mes "You idiot... you don't have the slightest clue!";
+ emotion e_an,0,"Traveler#ep14_1_2";
+ break;
+ case 2:
+ mes "["+strcharinfo(0)+"]";
+ mes "The answer to the question is Rose.";
+ mes "You said Rose's mother had 10 sons.";
+ mes "So even if the other sons' names are";
+ mes "Roseone, Rosetwo, ... Rosenine,";
+ mes "the youngest one must be Rose,";
+ mes "or she wouldn't be called Rose's mother.";
+ next;
+ mes "[Traveler That Posed the Question]";
+ mes "That's exactly what I mean!";
+ mes "I can't hang around with him.";
+ mes "I guess we live in two different worlds.";
+ emotion e_ok,0,"Traveler#ep14_1_2";
+ next;
+ mes "[Upset Traveler]";
+ mes "You bastard... What did you";
+ mes "get from this guy...?";
+ emotion e_ag,0,"Traveler#ep14_1_1";
+ break;
+ case 3:
+ mes "["+strcharinfo(0)+"]";
+ mes "I have no idea.";
+ mes "Try to sort it out yourselves.";
+ next;
+ mes "[Traveler Trying to Stop the Fight]";
+ mes "You good-for-nothing bastard,";
+ mes "you're trying to leave this mess to me?";
+ emotion e_an,0,"Traveler#ep14_1_3";
+ break;
+ }
+ next;
+ mes "*thud*";
+ mes "You feel a sudden impact on the back of your head.";
+ mes "Your sight is going blurry.";
+ specialeffect2 EF_HIT1;
+ sc_start SC_BLIND,20000,0;
+ next;
+ mes "You feel somebody rummaging through your pockets before you pass out.";
+ if (Zeny >= 5000)
+ set Zeny, Zeny-5000;
+ else
+ set Zeny, 0;
+ close2;
+ percentheal -99,0;
+ warp "mora",31,132;
+ end;
+}
+mora,140,72,4 duplicate(#mora_traveler) Traveler#ep14_1_1 513 //Upset Traveler
+mora,138,72,6 duplicate(#mora_traveler) Traveler#ep14_1_2 513 //Traveler That Posed the Question
+mora,139,73,4 duplicate(#mora_traveler) Traveler#ep14_1_3 513 //Traveler Trying to Stop the Fight
+
+// Set 3 :: tre
+//============================================================
+mora,132,185,5 script Mora Villager#sleep5 518,{
+ mes "[Mora Villager]";
+ mes "Phew~ Phew~";
close;
}
-mora,108,182,3 script Mora Citizen#10 516,{
- mes "[Yosou Keh]";
- mes "Hello!";
- mes "I am Yosou Keh,";
- mes "a resident of Mora.";
- mes "The Bifrost is populated";
- mes "with many strong monsters...";
+mora,133,185,5 script Mora Villager#sleep2 524,{
+ mes "[Mora Villager]";
+ mes "Snore...";
close;
}
-mora,113,185,5 script Mora Citizen#11 516,{
- mes "[Ninkasi]";
- mes "Hey, dude.";
- mes "How are you today, dude?";
- mes "What can I do for you, dude?";
- next;
- switch(select("Why do you call me 'dude'?:Goodbye.")) {
- case 1:
- mes "[Ninkasi]";
- mes "Why not?";
- mes "Calling others 'dude'";
- mes "is my brand mark.";
- mes "Be cool, dude, relax!";
- mes "Enjoy your life, dude!";
- close;
- case 2:
- mes "[Ninkasi]";
- mes "See you again, dude!";
- close;
- }
+mora,134,185,3 script Mora Villager#sleep1 525,{
+ mes "[Mora Villager]";
+ mes "Snort--";
+ close;
}
-mora,43,127,4 script Mora Citizen#12 522,{
- mes "[Glouti Vori]";
- mes "Mm, I love this beef toast!";
- mes "That's the only reason I'm";
- mes "still here! There's nothing";
- mes "better than Mora beef toast!";
+mora,132,184,5 script Mora Villager#sleep6 522,{
+ mes "[Mora Villager]";
+ mes "Snort--";
close;
}
-mora,35,119,7 script South World Dealer 513,{
- mes "[South World Dealer]";
- mes "...";
+mora,133,184,1 script Mora Villager#sleep4 1790,{
+ mes "[Mora Villager]";
+ mes "Moan...";
+ end;
+}
+
+mora,134,184,1 script Mora Villager#sleep3 516,{
+ mes "[Mora Villager]";
+ mes "Phew phew pheeew~";
close;
}
-mora,139,102,4 script Milvida 515,{
- mes "[Milvida]";
- mes "Welcome to Mora~";
- mes "In the center of the city";
- mes "you can find all the shops";
- mes "and some enchanters.";
- next;
- mes "[Milvida]";
- mes "Northeast of the city is";
- mes "where the food is located.";
+mora,132,183,7 script Mora Villager#sleep7 524,{
+ mes "[Mora Villager]";
+ mes "z Z";
close;
}
-mora,55,124,2 script Cat Traveler 495,{
- mes "[Cat Traveler]";
- mes "This city is like Malangdo";
- mes "in several aspects,";
- mes "don't you think?";
+mora,133,183,7 script Mora Villager#sleep8 518,{
+ mes "[Mora Villager]";
+ mes "z Z";
+ end;
+}
+
+mora,134,183,1 script Mora Villager#sleep9 522,{
+ mes "[Mora Villager]";
+ mes "z Z";
close;
}
-mora,131,165,4 script Bifrost Resident#1 520,{
- mes "[Bifrost Resident]";
- mes "Welcome to the workshop";
- mes "of the west clan. If you";
- mes "want your Loki Muffler";
- mes "enchanted, please contact";
- mes "my boss. He makes miracles!";
+mora,43,127,3 script Innkeeper#mora_inn 522,{
+ mes "[Innkeeper]";
+ mes "Oh~ looks like we have another adventurer.";
+ mes "Where are you from?";
next;
- mes "[Bifrost Resident]";
- mes "On a side note... I think I'm";
- mes "really cute, don't you agree?";
- close;
-} \ No newline at end of file
+ switch(select("Just save the game.:I'd like to get some rest.:The place I used to live is called...:How can I use the warehouse?")) {
+ case 1:
+ mes "[Innkeeper]";
+ mes "Wow, what's the rush?";
+ mes "You've just come here, and you're already going someplace else?";
+ next;
+ mes "[Innkeeper]";
+ mes "You know, haste makes waste. Tsk tsk.";
+ mes "Well, the game's been saved.";
+ savepoint "mora",56,143;
+ close;
+ case 2:
+ mes "[Innkeeper]";
+ mes "My my, I need some rest also.";
+ mes "The rate is 5000 zeny. Do you want a room?";
+ next;
+ switch(select("Yes:No")) {
+ case 1:
+ if (Zeny < 5000) {
+ mes "[Innkeeper]";
+ mes "The rate is 5000z.";
+ close;
+ }
+ mes "[Innkeeper]";
+ mes "Make yourself at home.";
+ close2;
+ set Zeny, Zeny-5000;
+ percentheal 100,100;
+ warp "mora",32,123;
+ end;
+ case 2:
+ mes "[Innkeeper]";
+ mes "If you don't have the money, go soak yourself in the puddle in the center of the village.";
+ mes "It will warm you up.";
+ close;
+ }
+ case 3:
+ input .@inputstr$;
+ mes "["+strcharinfo(0)+"]";
+ mes "I come from a place called "+.@inputstr$+".";
+ next;
+ mes "[Innkeeper]";
+ mes "Oh, I think I've heard about the place before!";
+ next;
+ if (.@inputstr$ == "Shinlim") {
+ mes "[Innkeeper]";
+ mes "I heard there's an old tower where horrible witches put Savages in a giant cauldron and cast evil spells on them, right?";
+ next;
+ mes "[Innkeeper]";
+ mes "What's worse is that whoever takes medicine made out of Savages will come back for more!";
+ mes "And he will wander around looking for the tower, and eventually turn into an enormous Savage!";
+ emotion e_no,1;
+ next;
+ } else {
+ mes "[Innkeeper]";
+ mes "I heard that there are creeps there who won't get up at all even if it rains or snows, or their sweethearts or parents call them!";
+ mes "And that black clouds hover over them all the time, causing a storm!";
+ next;
+ }
+ mes "[Innkeeper]";
+ mes "How terrible!";
+ close;
+ case 4:
+ mes "[Innkeeper]";
+ mes "Search through the vegetable-shaped drawer to my right.";
+ close;
+ }
+}
+
+mora,48,128,0 script Drawer#mora_warehouse 111,{
+ if(basicskillcheck() && getskilllv("NV_BASIC") < 6) {
+ mes "- You don't remember how to open the warehouse. -";
+ close;
+ }
+ mes "- The figure 1 0 0 is written in small letters on the vegetable-shaped drawer. -";
+ next;
+ switch(select("Insert 100 zeny.:Don't do anything.")) {
+ case 1:
+ if (Zeny < 100) {
+ mes "- You don't seem to have 100 zeny with you. -";
+ close;
+ }
+ set Zeny, Zeny-100;
+ openstorage;
+ close;
+ case 2:
+ mes "- You gave up using the warehouse. -";
+ close;
+ }
+}
diff --git a/npc/re/guides/guides_eclage.txt b/npc/re/guides/guides_eclage.txt
new file mode 100644
index 000000000..1842a85dd
--- /dev/null
+++ b/npc/re/guides/guides_eclage.txt
@@ -0,0 +1,51 @@
+//===== rAthena Script =======================================
+//= Eclage Guides
+//===== By: ==================================================
+//= Euphy
+//===== Current Version: =====================================
+//= 1.0
+//===== Compatible With: =====================================
+//= rAthena SVN
+//===== Description: =========================================
+//= Guides for the city of Eclage.
+//===== Additional Comments: =================================
+//= 1.0 First version. [Euphy]
+//============================================================
+
+ecl_in01,48,60,4 script Eclage Guard#obb 447,{
+ mes "[Eclage Guard]";
+ mes "Welcome, Adventurer. This is the plaza of Eclage, a great and sacred tree. How can I help you?";
+ next;
+ switch(select("Palace:Orb:Store:Prison:Clinic:Residential Area:Finish the conversation")) {
+ case 1:
+ mes "[Eclage Guard]";
+ mes "Our great king, courageous generals, and scholars are all staying at the palace.";
+ mes "The palace is located at the top of Eclage. We usually fly there, but I see you don't have wings. Follow the path on your right then. It will lead you to the palace.";
+ close;
+ case 2:
+ mes "[Eclage Guard]";
+ mes "The Orb behind me is like a symbol of us Laphines.";
+ mes "It's filled with great and mysterious power. We always keep an eye on it and guard it carefully.";
+ close;
+ case 3:
+ mes "[Eclage Guard]";
+ mes "This is the plaza of Eclage. You'll find everything you need around here.";
+ close;
+ case 4:
+ mes "[Eclage Guard]";
+ mes "Prison is a place for criminals. Why would an adventurer like you go there?";
+ mes "Well, it's a little suspicious...but I'll tell you the location. Follow the path on your left. They don't let anyone in though.";
+ close;
+ case 5:
+ mes "[Eclage Guard]";
+ mes "All your pain and weariness melt away in the arms of nature. Restore your mind and body at Eclage Clinic.";
+ mes "Follow the path on your left.";
+ close;
+ case 6:
+ mes "[Eclage Guard]";
+ mes "Haven't you seen our decorations for Yai? Take a trip outside. You'll see our residential area.";
+ close;
+ case 7:
+ close;
+ }
+}
diff --git a/npc/re/instances/MalangdoCulvert.txt b/npc/re/instances/MalangdoCulvert.txt
new file mode 100644
index 000000000..2d0369699
--- /dev/null
+++ b/npc/re/instances/MalangdoCulvert.txt
@@ -0,0 +1,1084 @@
+//===== rAthena Script =======================================
+//= Malangdo Culvert
+//===== By: ==================================================
+//= Euphy
+//===== Current Version: =====================================
+//= 1.0a
+//===== Compatible With: =====================================
+//= rAthena SVN
+//===== Description: =========================================
+//= [Official Conversion]
+//= Clean the culverts and defeat the Coelacanth.
+//= Daily and weekly quests are available.
+//= Contains a normal mode and hard mode.
+//===== Additional Comments: =================================
+//= 1.0 First version. [Euphy]
+//= Letters "n" and "h" in NPC names indicate difficulty.
+//= 1.0a There is no minimum party size on official servers.
+//============================================================
+
+// Quest NPCs
+//============================================================
+mal_in01,172,28,2 script Albo#mal 561,{
+ if (checkweight(1201,1) == 0) {
+ mes "You have too many kinds of objects. Try to continue after reducing those objects.";
+ close;
+ }
+ if (MaxWeight - Weight < 1000) {
+ mes "You have too many heavy objects. Try to continue after reducing your weight.";
+ close;
+ }
+ if (BaseLevel < 90) {
+ mes "[Albo]";
+ mes "Who are you?";
+ mes "We don't need a weaking!!";
+ close;
+ }
+ setarray .@quests[0],12271,12272,12273,12274;
+ setarray .@names$[0],
+ "General Culvert Daily Service","^990000Hard Culvert Daily Service^000000",
+ "General Culvert Weekly Service","^990000Hard Culvert Weekly Service^000000";
+ set .@menu$,"Why are doing this job?:";
+ for(set .@i,0; .@i<4; set .@i,.@i+1) {
+ if (checkquest(.@quests[.@i],PLAYTIME) > -1) {
+ set .@status[.@i],2;
+ set .@menu$, .@menu$+"^aaaaaa- There is no new task -^000000:";
+ } else if (.@i%2 && BaseLevel < 140) {
+ set .@status[.@i],0;
+ set .@menu$, .@menu$+"^aaaaaaCan't take this job because level is too low^000000:";
+ } else {
+ set .@status[.@i],1;
+ set .@menu$, .@menu$+.@names$[.@i]+":";
+ }
+ }
+ mes "[Albo]";
+ mes "We crossed the sea!";
+ mes "We are great heroes of Culvert! We do not forgive the seafood that aims at Culvert!";
+ next;
+ set .@i, select(.@menu$)-1;
+ if (.@i == 0) {
+ mes "[Albo]";
+ mes "We used to be the henchmen of Mr. Missing! We almost became guards of such a historic site.";
+ next;
+ mes "[Albo]";
+ mes "However, when sea water flooded all precious the resources, my dream... all my dreams melted away...";
+ next;
+ mes "[Albo]";
+ mes "We do not forgive the seafood that invaded our territory. I'll eat them with spicy paste!!!";
+ next;
+ mes "^0000ffAlbo's voice shakes with anger. He smacked his lips when he mentioned spicy paste.^000000";
+ close;
+ }
+ switch(.@status[.@i-1]) {
+ case 0:
+ mes "[Albo]";
+ mes "That task is really hard for you, so I can't tell you about it. Why don't you find another one?";
+ close;
+ case 1:
+ break;
+ case 2:
+ mes "[Albo]";
+ mes "I'm sorry. There is no new task yet! If I find any work, I'll tell you so!";
+ close;
+ }
+ switch(.@i) {
+ case 1: // General Culvert Daily Service
+ switch(rand(1,6)) {
+ case 1: callsub L_GiveQuest,.@i,12255,12271,"Deep Sea Crab";
+ case 2: callsub L_GiveQuest,.@i,12256,12271,"Deep Sea Marse";
+ case 3: callsub L_GiveQuest,.@i,12257,12271,"Deep Sea Vadon";
+ case 4: callsub L_GiveQuest,.@i,12258,12271,"Deep Sea Shellfish";
+ case 5: callsub L_GiveQuest,.@i,12259,12271,"Deep Sea Kukre";
+ case 6: callsub L_GiveQuest,.@i,12260,12271,"Deep Sea Cornutus";
+ }
+ case 2: // Hard Culvert Daily Service
+ switch(rand(1,6)) {
+ case 1: callsub L_GiveQuest,.@i,12261,12272,"Deep Sea Marc";
+ case 2: callsub L_GiveQuest,.@i,12262,12272,"Deep Sea Sword Fish";
+ case 3: callsub L_GiveQuest,.@i,12263,12272,"Deep Sea Strouf";
+ case 4: callsub L_GiveQuest,.@i,12264,12272,"Deep Sea Anolian";
+ case 5: callsub L_GiveQuest,.@i,12265,12272,"Deep Sea Obeanue";
+ case 6: callsub L_GiveQuest,.@i,12266,12272,"Deep Sea Kapha";
+ }
+ case 3: // General Culvert Weekly Service
+ switch(rand(1,2)) {
+ case 1: callsub L_GiveQuest,.@i,12267,12273,"Weird Coelacanth";
+ case 2: callsub L_GiveQuest,.@i,12268,12273,"Gloomy Coelacanth";
+ }
+ case 4: // Hard Culvert Weekly Service
+ switch(rand(1,2)) {
+ case 1: callsub L_GiveQuest,.@i,12269,12274,"Violent Coelacanth";
+ case 2: callsub L_GiveQuest,.@i,12270,12274,"Mutant Coelacanth";
+ }
+ default:
+ mes "[Albo]";
+ mes "Uh!? Where is the task? Let me find that quickly. You must speak with Madeca!";
+ close;
+ }
+ end;
+
+// callsub L_GiveQuest,.@i,<quest 1>,<quest 2>,<monster>;
+L_GiveQuest:
+ setquest getarg(1);
+ setquest getarg(2);
+ mes "[Albo]";
+ mes "Today, the heroes of Culvert!";
+ mes "We raise our voices and set a date for the extermination of ^0000ff"+getarg(3)+"^000000!";
+ next;
+ mes "[Albo]";
+ switch(getarg(0)) {
+ case 1:
+ case 2:
+ mes "Come on, heroes! Don't be afraid of them! Just go on, since it's a one-day mission!";
+ break;
+ case 3:
+ mes "I'll give you one week to finish this job! Terminate all of them in Culvert Dungeon, Normal Mode!";
+ break;
+ case 4:
+ mes "I'll give you one week to finish this job! Terminate all of them in Culvert Dungeon, Hard Mode!";
+ break;
+ }
+ next;
+ mes "You received a request for the Extermination of ^005500"+getarg(3)+"^000000. If you need more details, please check the quest window.";
+ close;
+}
+
+mal_in01,172,26,2 script Madeca#mal 544,{
+ if (checkweight(1201,1) == 0) {
+ mes "You have too many kinds of objects. Try to continue after reducing those objects.";
+ close;
+ }
+ if (MaxWeight - Weight < 1000) {
+ mes "You have too many heavy objects. Try to continue after reducing your weight.";
+ close;
+ }
+ if (BaseLevel < 90) {
+ mes "[Madeca]";
+ mes "Karrrrrrr!!";
+ mes "Let's have some bad seafood that can be boiled or grilled!";
+ next;
+ mes "[Madeca]";
+ mes "Who are you? You are such a totterer. Even seaweed could kill you!";
+ close;
+ }
+ mes "[Madeca]";
+ mes "Oh?";
+ mes "You're the one who took care of my big brother Albo's request. It was a hard job!";
+ next;
+ set .@i, select("What are you doing here?:General Culvert Daily Service Compensation:Hard Culvert Daily Service Compensation:General Culvert Weekly Service Compensation:Hard Culvert Weekly Service Compensation")-1;
+ if (.@i == 0) {
+ mes "[Madeca]";
+ mes "I'm here to help my big brother Albo!";
+ next;
+ mes "[Madeca]";
+ mes "We provide precious materials to humans who make sludge out of the bad seafood in the Culverts!";
+ next;
+ mes "[Madeca]";
+ mes "We provide A~B Grade Coins as compensation for daily service, and the precious Sea God's Wrath as compensation for weekly service.";
+ next;
+ mes "[Madeca]";
+ mes "If you take care of big brother Albo's request, I will see you very often. So, let's stay close!";
+ close;
+ }
+ mes "[Madeca]";
+ mes "I can't give you compensation for an expired request, so let me check if any of yours have expired.";
+ next;
+ specialeffect2 EF_SPHERE;
+ progressbar "0xFFFF00",3;
+ specialeffect2 EF_STEAL;
+ switch(.@i) {
+ case 1: // General Culvert Daily Service
+ if (checkquest(12271,PLAYTIME) == 2)
+ callsub L_EraseQuest,12255,12256,12257,12258,12259,12260,12271;
+ else {
+ // Reward: 2x B Grade Coin
+ callsub L_CheckQuest,12255,"Deep Sea Crab",6419,2;
+ callsub L_CheckQuest,12256,"Deep Sea Marse",6419,2;
+ callsub L_CheckQuest,12257,"Deep Sea Vadon",6419,2;
+ callsub L_CheckQuest,12258,"Deep Sea Shellfish",6419,2;
+ callsub L_CheckQuest,12259,"Deep Sea Kukre",6419,2;
+ callsub L_CheckQuest,12260,"Deep Sea Cornutus",6419,2;
+ }
+ break;
+ case 2: // Hard Culvert Daily Service
+ if (checkquest(12272,PLAYTIME) == 2)
+ callsub L_EraseQuest,12261,12262,12263,12264,12265,12266,12272;
+ else {
+ // Reward: 1x A Grade Coin
+ callsub L_CheckQuest,12261,"Deep Sea Marc",6418,1;
+ callsub L_CheckQuest,12262,"Deep Sea Sword Fish",6418,1;
+ callsub L_CheckQuest,12263,"Deep Sea Strouf",6418,1;
+ callsub L_CheckQuest,12264,"Deep Sea Anolian",6418,1;
+ callsub L_CheckQuest,12265,"Deep Sea Obeaune",6418,1;
+ callsub L_CheckQuest,12266,"Deep Sea Kapha",6418,1;
+ }
+ break;
+ case 3: // General Culvert Weekly Service
+ if (checkquest(12273,PLAYTIME) == 2)
+ callsub L_EraseQuest,12267,12268,12273;
+ else {
+ // Reward: 1x Sea God's Wrath
+ callsub L_CheckQuest,12267,"Weird Coelacanth",6423,1;
+ callsub L_CheckQuest,12268,"Gloomy Coelacanth",6423,1;
+ }
+ break;
+ case 4: // Hard Culvert Weekly Service
+ if (checkquest(12274,PLAYTIME) == 2)
+ callsub L_EraseQuest,12269,12270,12274;
+ else {
+ // Reward: 5x Sea God's Wrath
+ callsub L_CheckQuest,12269,"Violent Coelacanth",6423,5;
+ callsub L_CheckQuest,12270,"Mutant Coelacanth",6423,5;
+ }
+ break;
+ default:
+ mes "[Madeca]";
+ mes "Something is wrong. Please check this again!";
+ close;
+ }
+ mes "[Madeca]";
+ mes "I don't see any completed mission!";
+ close;
+
+L_EraseQuest:
+ for(set .@j,0; .@j<getargcount(); set .@j,.@j+1) {
+ if (checkquest(getarg(.@j)) > -1)
+ erasequest getarg(.@j);
+ }
+ mes "[Madeca]";
+ mes "Um, I'm sorry. You exceeded the time limit, so I can't give you any payment.";
+ close;
+
+// callsub L_CheckQuest,<quest ID>,<monster>,<reward item ID>,<reward item amount>;
+L_CheckQuest:
+ if (checkquest(getarg(0),HUNTING) == 2) {
+ mes "[Madeca]";
+ mes "You've punished ^0000ff"+getarg(1)+"^000000!";
+ mes "Here's your pay!";
+ erasequest getarg(0);
+ specialeffect2 EF_STEAL;
+ getitem getarg(2),getarg(3);
+ close;
+ }
+ return;
+}
+
+// Instance Creation
+//============================================================
+mal_in01,160,34,4 script Missing, the Cleaner 545,{
+ if (BaseLevel < 90) {
+ mes "[Missing, the Cleaner]";
+ mes "Are you talking to me?!";
+ next;
+ mes "[Missing, the Cleaner]";
+ mes "I'm not sure what made you come here but you can't enter!";
+ mes "Tomas' orders...";
+ next;
+ mes "^770099You must be Base level 90 to enter.^000000";
+ close;
+ }
+ if (in_canal_n == 0) {
+ mes "[Missing, the Cleaner]";
+ mes "(trembling)";
+ next;
+ mes "^660066This cat looks like it's in bad shape. It is slightly trembling.^000000";
+ next;
+ if(select("Pet the cat:Are you ok?") == 1) {
+ mes "[Missing, the Cleaner]";
+ mes "Are you talking to me?!";
+ next;
+ mes "^660066A trembling cat is looking up at you.^000000";
+ close;
+ }
+ mes "[Missing, the Cleaner]";
+ mes "Achoo!";
+ next;
+ mes "[Missing, the Cleaner]";
+ mes "We have had many issues during the";
+ mes "cleaning of the culverts. But a";
+ mes "cat's gotta do it...";
+ next;
+ select("What culvert are you cleaning?");
+ mes "[Missing, the Cleaner]";
+ mes "It might look unfamiliar for an";
+ mes "outsider, but actually this place";
+ mes "is made to keep souvenirs and";
+ mes "luxurious things.";
+ next;
+ mes "[Missing, the Cleaner]";
+ mes "After there was a big trembling on";
+ mes "this island, things started leaking";
+ mes "around here. So that's why I became";
+ mes "a cleaner here, though I used";
+ mes "to be a manager.";
+ next;
+ mes "^660066The cat looks like it's been crying...^000000";
+ next;
+ mes "[Missing, the Cleaner]";
+ mes "There is a culvert along this way";
+ mes "to the basement. There are many bad";
+ mes "guys who hurt me. I am tired of";
+ mes "fighting with them so many times a";
+ mes "day!";
+ next;
+ mes "[Missing, the Cleaner]";
+ mes "Ohh! You touched my fur!";
+ mes "My fur is falling out... it's all";
+ mes "those guys' fault~";
+ next;
+ mes "^660066You just now notice that the cat's fur is missing in some places.^000000";
+ next;
+ select("Why don't you just quit!");
+ mes "[Missing, the Cleaner]";
+ mes "I still have to make a living, don't I?";
+ next;
+ mes "[Missing, the Cleaner]";
+ mes "Sometimes I can get a lucky box,";
+ mes "or even better, I can get cans...";
+ next;
+ if(select("Okay, cheers!:I will help if possible...") == 1) {
+ mes "[Missing, the Cleaner]";
+ mes "Thank you. I am going back to pour the water!";
+ close;
+ }
+ mes "[Missing, the Cleaner]";
+ mes "(turns down his voice)";
+ mes "If you really want to help, come closer!";
+ next;
+ select("(get in closer)");
+ mes "[Missing, the Cleaner]";
+ mes "Not everyone can be an assistant";
+ mes "here. But I can't help choosing";
+ mes "anyone at the moment...";
+ next;
+ mes "[Missing, the Cleaner]";
+ mes "If you want to go down here, let me get this code.";
+ next;
+ mes "^660066The cat scribbles a memo for code to you.^000000";
+ next;
+ select("Open the memo.");
+ mes "^660000Aragam insulted me.^000000";
+ next;
+ mes "[Missing, the Cleaner]";
+ mes "You must be here with friends";
+ mes "because you can't go in alone! And";
+ mes "the password code will be from the";
+ mes "party leader!";
+ next;
+ mes "[Missing, the Cleaner]";
+ mes "What is also important is you must";
+ mes "have a Seagod Protection with you.";
+ next;
+ mes "[Missing, the Cleaner]";
+ mes "Don't forget! I will not open the";
+ mes "door if you do not have Seagod Protection!";
+ set in_canal_n,1;
+ close;
+ }
+ if (countitem(6436) == 0) {
+ mes "[Missing, the Cleaner]";
+ mes "You don't look like you have Seagod Protection. I can't open door at the moment!";
+ close;
+ }
+ set .@party_id,getcharid(1);
+ set .@md_name$,"Culvert";
+ if (!.@party_id) {
+ mes "^0000ffYou have to organize a party of";
+ mes "more than 1 member or be a member";
+ mes "of the party and come back.^000000";
+ close;
+ }
+ set .@playtime, checkquest(12254,PLAYTIME);
+ if (.@playtime == -1) {
+ if (getcharid(0) == getpartyleader(.@party_id,2)) {
+ mes "[Missing, the Cleaner]";
+ mes "Ummm? What's up? Tell me the password if you're the leader!";
+ next;
+ switch(select("No... nothing.:Aragam insulted me.:Enter the Culvert.")) {
+ case 1:
+ mes "[Missing, the Cleaner]";
+ mes "What a rookie.";
+ close;
+ case 2:
+ set .@instance, instance_create(.@md_name$,.@party_id);
+ if (.@instance < 0) {
+ mes "Party name: "+getpartyname(.@party_id);
+ mes "Party leader: "+strcharinfo(0);
+ mes "^0000ff"+.@md_name$+"^000000 - Reservation Failed!";
+ close;
+ }
+ if (instance_attachmap("1@pump",.@instance) == "" || instance_attachmap("2@pump",.@instance) == "") {
+ mes "^0000ff"+.@md_name$+"^000000 - Reservation Failed!";
+ instance_destroy(.@instance);
+ close;
+ }
+ instance_attach(.@instance);
+ instance_set_timeout 3600,300,.@instance;
+ instance_init(.@instance);
+
+ // Common Scripts
+ donpcevent instance_npcname("Missing, the Cleaner#0", instance_id())+"::OnInstanceInit";
+ donpcevent instance_npcname("Culvert Entrance#i", instance_id())+"::OnInstanceInit";
+
+ // Normal Mode
+ donpcevent instance_npcname("Missing, the Cleaner#nf", instance_id())+"::OnInstanceInit";
+ donpcevent instance_npcname("Missing, the Cleaner#n", instance_id())+"::OnInstanceInit";
+ donpcevent instance_npcname("Monster Hole#n", instance_id())+"::OnInstanceInit";
+ donpcevent instance_npcname("#Culvert_n1", instance_id())+"::OnInstanceInit";
+ donpcevent instance_npcname("#Culvert_n2", instance_id())+"::OnInstanceInit";
+ donpcevent instance_npcname("#Culvert_n3", instance_id())+"::OnInstanceInit";
+ donpcevent instance_npcname("#Culvert_n4", instance_id())+"::OnInstanceInit";
+ donpcevent instance_npcname("#Culvert_n5", instance_id())+"::OnInstanceInit";
+ donpcevent instance_npcname("#Culvert_n6", instance_id())+"::OnInstanceInit";
+ donpcevent instance_npcname("Boss Creation#n", instance_id())+"::OnInstanceInit";
+ donpcevent instance_npcname("Missing, the Cleaner#no", instance_id())+"::OnInstanceInit";
+ donpcevent instance_npcname("Culvert Entrance#n", instance_id())+"::OnInstanceInit";
+ donpcevent instance_npcname("Hydra#n", instance_id())+"::OnInstanceInit";
+
+ // Hard Mode
+ donpcevent instance_npcname("Missing, the Cleaner#hf", instance_id())+"::OnInstanceInit";
+ donpcevent instance_npcname("Missing, the Cleaner#h", instance_id())+"::OnInstanceInit";
+ donpcevent instance_npcname("Monster Hole#h", instance_id())+"::OnInstanceInit";
+ donpcevent instance_npcname("#Culvert_h1", instance_id())+"::OnInstanceInit";
+ donpcevent instance_npcname("#Culvert_h2", instance_id())+"::OnInstanceInit";
+ donpcevent instance_npcname("#Culvert_h3", instance_id())+"::OnInstanceInit";
+ donpcevent instance_npcname("#Culvert_h4", instance_id())+"::OnInstanceInit";
+ donpcevent instance_npcname("#Culvert_h5", instance_id())+"::OnInstanceInit";
+ donpcevent instance_npcname("#Culvert_h6", instance_id())+"::OnInstanceInit";
+ donpcevent instance_npcname("#Culvert_h7", instance_id())+"::OnInstanceInit";
+ donpcevent instance_npcname("#Culvert_h8", instance_id())+"::OnInstanceInit";
+ donpcevent instance_npcname("#Culvert_h9", instance_id())+"::OnInstanceInit";
+ donpcevent instance_npcname("#Culvert_h10", instance_id())+"::OnInstanceInit";
+ donpcevent instance_npcname("Boss Creation#h", instance_id())+"::OnInstanceInit";
+ donpcevent instance_npcname("Missing, the Cleaner#ho", instance_id())+"::OnInstanceInit";
+ donpcevent instance_npcname("Culvert Entrance#h", instance_id())+"::OnInstanceInit";
+ donpcevent instance_npcname("Hydra#h", instance_id())+"::OnInstanceInit";
+
+ mes "^3333FF"+.@md_name$+"^000000 - Reserving";
+ mes "After making the reservation, you";
+ mes "have to select Enter the Culvert.";
+ close;
+ case 3:
+ goto L_Enter;
+ }
+ } else {
+ if(select("Enter Culvert:Cancel") == 2)
+ close;
+ goto L_Enter;
+ }
+ } else if (.@playtime == 0 || .@playtime == 1) {
+ mes "You can enter the Culvert if the gate is open.";
+ next;
+ if(select("Enter Culvert:Cancel") == 2)
+ close;
+ goto L_Enter;
+ } else if (.@playtime == 2) {
+ mes "^0000ffThe gate to the Culvert is open again.^000000";
+ erasequest 12254;
+ close;
+ }
+ end;
+L_Enter:
+ // TODO: Add official MD_Enter cases.
+ if (has_instance("1@pump") == "") {
+ if (checkquest(12254,PLAYTIME) == 0 || checkquest(12254,PLAYTIME) == 1) {
+ mes "The gate to the Culvert is still closed.";
+ mes "You must wait until you are able to enter or find a party leader who can create the instance.";
+ close;
+ }
+ mes "The memorial dungeon Culvert does not exist.";
+ mes "The party leader has not reserved entrance to the dungeon yet.";
+ close;
+ }
+ mapannounce "mal_in01", strcharinfo(0)+" of the party "+getpartyname(.@party_id)+" is entering the Culvert.",bc_map,"0x00ff99";
+ if (checkquest(12254) == -1) setquest 12254;
+ warp "1@pump",63,98;
+ close;
+}
+
+// Instance: Common Scripts
+//============================================================
+1@pump,63,100,4 script Missing, the Cleaner#0 545,{
+ if (getcharid(0) != getpartyleader(getcharid(1),2)) {
+ mes "[Missing, the Cleaner]";
+ mes "I am trying to have a conversation with your leader now. Please don't disturb and wait!";
+ close;
+ }
+ mes "[Missing, the Cleaner]";
+ mes "This is the underground culvert where you will clean with your friends!";
+ next;
+ mes "[Missing, the Cleaner]";
+ mes "I'll open the door first. By the way, do you know how to fight?";
+ next;
+ switch(select("I'm pretty good at delivering bread.:I know how to fight.:^ffffffGive me the diamond.^000000")) {
+ case 1:
+ mes "[Missing, the Cleaner]";
+ mes "Ok then, I'll let you clean the culverts here as usual! I will prepare at the right-hand corner, please follow me!";
+ next;
+ if(select("Wait! I changed my mind!:As you wish~") == 1) {
+ mes "[Missing, the Cleaner]";
+ mes "Huh? Not ready yet? Talk to me again when you're ready.";
+ close;
+ }
+ set 'party_id,getcharid(1);
+ instance_announce 0,"Missing: Move toward the 3 o'clock direction and wait for my next order!",bc_map,"0xff88ff",FW_NORMAL,15;
+ disablenpc instance_npcname("Missing, the Cleaner#0", instance_id());
+ enablenpc instance_npcname("Missing, the Cleaner#n", instance_id());
+ close;
+ case 2:
+ if (BaseLevel < 140) {
+ mes "[Missing, the Cleaner]";
+ mes "Hmmm... Missing thinks you're weak! Tell me the truth!!";
+ close;
+ }
+ mes "[Missing, the Cleaner]";
+ mes "Huh? You have some fighting skills? Well, then, there is one place I wasn't able to clean... why don't you go there?!";
+ next;
+ mes "[Missing, the Cleaner]";
+ mes "I must tell you that it's been such a long~~ time since we've cleaned that place, so anyone under level 140 cannot even enter! Are you sure you still want to go?";
+ next;
+ if(select("Wait! I changed my mind!:Sure, I'm prepared already~") == 1) {
+ mes "[Missing, the Cleaner]";
+ mes "Hmm? Talk to me again when you're ready.";
+ close;
+ }
+ set 'party_id,getcharid(1);
+ instance_announce 0,"Missing: I'll go in first, so follow me! I'll open up a gate at the 3 o'clock direction!",bc_map,"0xff88ff",FW_NORMAL,15;
+ disablenpc instance_npcname("Missing, the Cleaner#0", instance_id());
+ enablenpc instance_npcname("Culvert Entrance#i", instance_id());
+ close;
+ case 3:
+ mes "[Missing, the Cleaner]";
+ mes "I told you not to play with me~!";
+ close;
+ }
+ end;
+OnInstanceInit:
+ enablenpc instance_npcname("Missing, the Cleaner#0", instance_id());
+ end;
+}
+
+1@pump,84,105,0 script Culvert Entrance#i 45,3,3,{
+ end;
+OnInstanceInit:
+ disablenpc instance_npcname("Culvert Entrance#i", instance_id());
+ end;
+OnTouch:
+ if (BaseLevel >= 140)
+ warp "2@pump",38,88;
+ else
+ warp "1@pump",74,105;
+ end;
+}
+
+function script F_mal_missing {
+ mes "[Missing, the Cleaner]";
+ mes "I will tell you how to clean shortly. Can you see the culverts around you?";
+ next;
+ if(select("What culverts??:Yes, I see them.") == 1) {
+ mes "[Missing, the Cleaner]";
+ mes "Huh? Is this your first time seeing culverts? You'll see many buried machines in the ground. You may look around and come back!";
+ close;
+ }
+ mes "[Missing, the Cleaner]";
+ mes "That's right! Those culverts are very important! We must clean the culverts to prevent seaweed from blocking them. This is what we, cleaners, do!";
+ next;
+ mes "[Missing, the Cleaner]";
+ mes "Watch out! Some monsters will be after you while you're cleaning the culverts! But do not yield to them!";
+ next;
+ mes "[Missing, the Cleaner]";
+ mes "And... NEVER let 6 seaweeds stack! Up to 5 is acceptable! If there are 6, I'll drag you out of here!!";
+ next;
+ mes "[Missing, the Cleaner]";
+ mes "I don't care if you get help from your friends or not. I want you to clean up all culverts! Don't forget! I will watch you and give you instructions. Just do what I said!!";
+ next;
+ if (getcharid(0) != getpartyleader(getcharid(1),2)) {
+ mes "[Missing, the Cleaner]";
+ mes "Once your leader finishes preparing, it will begin, so get your hearts ready for it!!";
+ close;
+ }
+ mes "[Missing, the Cleaner]";
+ mes "So, are you ready to clean now?";
+ next;
+ switch(select("Wait! Not yet!:Let's start!")) {
+ case 1:
+ mes "[Missing, the Cleaner]";
+ mes "Huh? Not ready yet? Then talk to me when you're ready.";
+ close;
+ case 2:
+ mes "[Missing, the Cleaner]";
+ mes "OK! Now it begins!";
+ return;
+ }
+}
+
+// Instance: Normal Mode
+//============================================================
+1@pump,84,105,4 script Missing, the Cleaner#nf 545,{
+ mes "[Missing, the Cleaner]";
+ mes "I have the cleaning job for 40 years and I've never seen such a terrible team!!";
+ next;
+ mes "[Missing, the Cleaner]";
+ mes "I see seaweed everywhere because you're wiggling! All the culverts will be blocked with seaweed!";
+ next;
+ if (getcharid(0) != getpartyleader(getcharid(1),2)) {
+ mes "[Missing, the Cleaner]";
+ mes "Once your leader finishes preparing, settlement will be decided so get your hearts ready for it!!";
+ close;
+ }
+ mes "[Missing, the Cleaner]";
+ mes "If you got some guts to challenge again, I'll give you another chance! What's your choice going to be!?";
+ next;
+ switch(select("Wait! Not yet!:Okay, let's start again!")) {
+ case 1:
+ mes "[Missing, the Cleaner]";
+ mes "You're still slow! Talk to me again whenever your're ready.";
+ close;
+ case 2:
+ mes "[Missing, the Cleaner]";
+ mes "Ok! Let's start now!";
+ set .@i$, charat(strnpcinfo(2),0);
+ enablenpc instance_npcname("Missing, the Cleaner#"+.@i$, instance_id());
+ donpcevent instance_npcname("Missing, the Cleaner#"+.@i$, instance_id())+"::OnStart";
+ disablenpc instance_npcname("Culvert Entrance#"+.@i$, instance_id());
+ disablenpc instance_npcname("Missing, the Cleaner#"+.@i$+"o", instance_id());
+ donpcevent instance_npcname("Monster Hole#"+.@i$, instance_id())+"::OnClear";
+ disablenpc instance_npcname(strnpcinfo(0), instance_id());
+ close;
+ }
+ close;
+OnInstanceInit:
+ disablenpc instance_npcname(strnpcinfo(0), instance_id());
+ end;
+}
+
+1@pump,84,105,4 script Missing, the Cleaner#n 545,{
+ callfunc "F_mal_missing";
+ donpcevent instance_npcname("Missing, the Cleaner#n", instance_id())+"::OnStart";
+ close;
+OnInstanceInit:
+ disablenpc instance_npcname("Missing, the Cleaner#n", instance_id());
+ end;
+OnStart:
+ killmonster "1@pump",instance_npcname("Missing, the Cleaner#n", instance_id())+"::OnMyMobDead";
+ disablenpc instance_npcname("Missing, the Cleaner#n", instance_id());
+ initnpctimer;
+ end;
+OnAddSeaweed:
+ areamonster "1@pump",55,99,61,105,"Contaminated Seaweed",2191,1,instance_npcname("Missing, the Cleaner#n", instance_id())+"::OnMyMobDead";
+ set .@mob_dead_num, mobcount("1@pump",instance_npcname("Missing, the Cleaner#n", instance_id())+"::OnMyMobDead");
+ if (.@mob_dead_num >= 6)
+ donpcevent instance_npcname("Missing, the Cleaner#n", instance_id())+"::OnFail";
+ else
+ instance_announce 0,"Contaminated Seaweed: "+.@mob_dead_num+" stem",bc_map,"0xff3333",FW_NORMAL,20;
+ end;
+OnMyMobDead:
+ end;
+OnFail:
+ stopnpctimer;
+ donpcevent instance_npcname("Monster Hole#n", instance_id())+"::OnClear";
+ killmonster "1@pump",instance_npcname("Missing, the Cleaner#n", instance_id())+"::OnMyMobDead";
+ enablenpc instance_npcname("Missing, the Cleaner#nf", instance_id());
+ instance_announce 0,"What is this!! Seaweed is all over the culverts! You're done with cleaning! Get out!!",bc_map,"0xff88ff",FW_NORMAL,15;
+ disablenpc instance_npcname("Missing, the Cleaner#n", instance_id());
+ end;
+OnTimer100:
+ instance_announce 0,"First culvert will be opened in 5 sec. Cleaner can find the opened drain and click to start cleaning.",bc_map,"0x00ffcc",FW_NORMAL,15;
+ end;
+OnTimer5500:
+ instance_announce 0,"The one who's in charge of cleaning the culvert cannot move or be attacked until the casting is over.",bc_map,"0x00ffcc",FW_NORMAL,15;
+ donpcevent instance_npcname("Monster Hole#n", instance_id())+"::OnSpawn";
+ end;
+OnTimer45000:
+OnTimer95000:
+OnTimer145000:
+OnTimer195000:
+OnTimer245000:
+OnTimer295000:
+OnTimer345000:
+OnTimer395000:
+OnTimer445000:
+ instance_announce 0,"Next culvert will be opened in 5 sec. Please hurry up and find the position of the next culvert.",bc_map,"0x00ffcc",FW_NORMAL,15;
+ end;
+OnTimer50000:
+OnTimer100000:
+OnTimer150000:
+ donpcevent instance_npcname("Monster Hole#n", instance_id())+"::OnSpawn";
+ end;
+OnTimer200000:
+OnTimer250000:
+OnTimer300000:
+OnTimer350000:
+OnTimer400000:
+OnTimer450000:
+ set .@mob_dead_num, mobcount("1@pump",instance_npcname("Missing, the Cleaner#n", instance_id())+"::OnMyMobDead");
+ if (.@mob_dead_num >= 6)
+ donpcevent instance_npcname("Missing, the Cleaner#n", instance_id())+"::OnFail";
+ else
+ donpcevent instance_npcname("Monster Hole#n", instance_id())+"::OnSpawn";
+ end;
+OnTimer515000:
+ set .@mob_dead_num, mobcount("1@pump",instance_npcname("Missing, the Cleaner#n", instance_id())+"::OnMyMobDead");
+ instance_announce 0,"Contaminated Seaweed: "+.@mob_dead_num+" stem. Missing will come and inspect the results of the cleaning soon.",bc_map,"0xff3333",FW_NORMAL,20;
+ end;
+OnTimer520000:
+ stopnpctimer;
+ set .@mob_dead_num, mobcount("1@pump",instance_npcname("Missing, the Cleaner#n", instance_id())+"::OnMyMobDead");
+ if (.@mob_dead_num >= 6)
+ donpcevent instance_npcname("Missing, the Cleaner#n", instance_id())+"::OnFail";
+ else
+ donpcevent instance_npcname("Boss Creation#n", instance_id())+"::OnEnable";
+ end;
+}
+
+1@pump,1,1,4 script Monster Hole#n -1,{
+ end;
+OnInstanceInit:
+ enablenpc instance_npcname(strnpcinfo(0), instance_id());
+ end;
+OnSpawn:
+ set .@i$, charat(strnpcinfo(2),0);
+ if (.@i$ == "n")
+ set .@n,6;
+ else if (.@i$ == "h")
+ set .@n,10;
+ donpcevent instance_npcname("#Culvert_"+.@i$+rand(1,.@n), instance_id())+"::OnEnable";
+ end;
+OnClear:
+ set .@i$, charat(strnpcinfo(2),0);
+ if (.@i$ == "n")
+ set .@n,6;
+ else if (.@i$ == "h")
+ set .@n,10;
+ for(set .@i,1; .@i<=.@n; set .@i,.@i+1)
+ donpcevent instance_npcname("#Culvert_"+.@i$+.@n, instance_id())+"::OnClear";
+ end;
+}
+
+1@pump,36,111,4 script #Culvert_n1 844,{
+ progressbar "0xFFFF00",10;
+ stopnpctimer;
+ disablenpc instance_npcname(strnpcinfo(0), instance_id());
+ end;
+OnInstanceInit:
+ disablenpc instance_npcname(strnpcinfo(0), instance_id());
+ end;
+OnEnable:
+ enablenpc instance_npcname(strnpcinfo(0), instance_id());
+ set .@label$, instance_npcname(strnpcinfo(0), instance_id())+"::OnMyMobDead";
+ set .@index, atoi(charat(strnpcinfo(2),9));
+ switch(.@index) {
+ case 1: setarray .@c[0],32,107,40,115; break;
+ case 2: setarray .@c[0],64,120,72,128; break;
+ case 3: setarray .@c[0],76,110,84,118; break;
+ case 4: setarray .@c[0],36,76,44,84; break;
+ case 5: setarray .@c[0],71,76,79,84; break;
+ case 6: setarray .@c[0],54,97,62,105; break;
+ }
+ areamonster "1@pump",.@c[0],.@c[1],.@c[2],.@c[3],"Abysmal Crab",2176,rand(1,3),.@label$;
+ areamonster "1@pump",.@c[0],.@c[1],.@c[2],.@c[3],"Abysmal Marse",2175,rand(1,3),.@label$;
+ areamonster "1@pump",.@c[0],.@c[1],.@c[2],.@c[3],"Ancient Vadon",2174,rand(1,3),.@label$;
+ areamonster "1@pump",.@c[0],.@c[1],.@c[2],.@c[3],"Abysmal Shellfish",2178,rand(1,3),.@label$;
+ areamonster "1@pump",.@c[0],.@c[1],.@c[2],.@c[3],"Ancient Kukre",2179,rand(1,3),.@label$;
+ areamonster "1@pump",.@c[0],.@c[1],.@c[2],.@c[3],"Abysmal Cornutus",2177,rand(1,3),.@label$;
+ specialeffect EF_MAPPILLAR2,ALL_SAMEMAP; //currently broken
+ getmapxy(.@map$,.@x,.@y,1);
+ getpartymember 'party_id,2;
+ copyarray .@partymemberaid[0],$@partymemberaid[0],$@partymembercount;
+ for(set .@i,0; .@i<$@partymembercount; set .@i,.@i+1) {
+ if (attachrid(.@partymemberaid[.@i])) {
+ if (strcharinfo(3) == .@map$)
+ viewpoint 0,.@x,.@y,.@index,0xFFFF00;
+ detachrid;
+ }
+ }
+ initnpctimer;
+ end;
+OnMyMobDead:
+ end;
+OnClear:
+ stopnpctimer;
+ killmonster "1@pump",instance_npcname(strnpcinfo(0), instance_id())+"::OnMyMobDead";
+ end;
+OnTimer49500: //OnTimer50000 clashes with the timer in "Missing, the Cleaner#h".
+ donpcevent instance_npcname("Missing, the Cleaner#n", instance_id())+"::OnAddSeaweed";
+ donpcevent instance_npcname(strnpcinfo(0), instance_id())+"::OnClear";
+ disablenpc instance_npcname(strnpcinfo(0), instance_id());
+ end;
+}
+1@pump,68,124,4 duplicate(#Culvert_n1) #Culvert_n2 844
+1@pump,80,114,4 duplicate(#Culvert_n1) #Culvert_n3 844
+1@pump,40,80,4 duplicate(#Culvert_n1) #Culvert_n4 844
+1@pump,75,80,4 duplicate(#Culvert_n1) #Culvert_n5 844
+1@pump,58,101,4 duplicate(#Culvert_n1) #Culvert_n6 844
+
+1@pump,1,1,4 script Boss Creation#n -1,{
+ end;
+OnInstanceInit:
+ disablenpc instance_npcname(strnpcinfo(0), instance_id());
+ end;
+OnEnable:
+ enablenpc instance_npcname(strnpcinfo(0), instance_id());
+ initnpctimer;
+ end;
+OnTimer100:
+ set .@i$, charat(strnpcinfo(2),0);
+ if (.@i$ == "n")
+ instance_announce 0,"Hmm! That wasn't so bad!",bc_map,"0xff88ff",FW_NORMAL,15;
+ else if (.@i$ == "h")
+ instance_announce 0,"Hmm! You guys are pretty good!!",bc_map,"0xff88ff",FW_NORMAL,15;
+ end;
+OnTimer5000:
+ instance_announce 0,"Let's pack up and go... WHAT!!?",bc_map,"0xff88ff",FW_NORMAL,15;
+ end;
+OnTimer10000:
+ instance_announce 0,"I sense something strange!! Don't loosen up-- prepare for a fight!!",bc_map,"0xff88ff",FW_NORMAL,15;
+ end;
+OnTimer20000:
+ stopnpctimer;
+ set .@i$, charat(strnpcinfo(2),0);
+ set .@label$, instance_npcname(strnpcinfo(0), instance_id())+"::OnMyMobDead";
+ if (rand(1,100) > 50) {
+ if (.@i$ == "n")
+ monster "1@pump",0,0,"Weird Coelacanth",2188,1,.@label$;
+ else if (.@i$ == "h")
+ monster "2@pump",0,0,"Mutant Coelacanth",2189,1,.@label$;
+ instance_announce 0,"Something big inside the abyss appears with a huge noise.",bc_map,"0x00ffcc",FW_NORMAL,15;
+ } else {
+ if (.@i$ == "n")
+ monster "1@pump",0,0,"Gloomy Coelacanth",2187,1,.@label$;
+ else if (.@i$ == "h")
+ monster "2@pump",0,0,"Violent Coelacanth",2190,1,.@label$;
+ instance_announce 0,"Something savage inside the abyss appears with a huge noise.",bc_map,"0x00ffcc",FW_NORMAL,15;
+ }
+ end;
+OnMyMobDead:
+ if (mobcount(strnpcinfo(4),instance_npcname(strnpcinfo(0), instance_id())+"::OnMyMobDead") < 1) {
+ instance_announce 0,"You've destroyed all monsters in the culverts. There are trophies lying on the ground, please look for them.",bc_map,"0xffff00",FW_NORMAL,15;
+ set .@i$, charat(strnpcinfo(2),0);
+ set .@map$, strnpcinfo(4);
+ enablenpc instance_npcname("Culvert Entrance#"+.@i$, instance_id());
+ enablenpc instance_npcname("Missing, the Cleaner#"+.@i$+"o", instance_id());
+ if (.@i$ == "n") {
+ for(set .@i,0; .@i<10; set .@i,.@i+1) {
+ set .@j, rand(1,6401);
+ if (.@j < 5001) set .@item,12636; //Malang_Sp_Can
+ else if (.@j < 5501) set .@item,12615; //Low_Coin_Pocket
+ else if (.@j < 6001) set .@item,12621; //Egrade_Pocket
+ else if (.@j < 6201) set .@item,12620; //Dgrade_Pocket
+ else if (.@j < 6401) set .@item,12623; //High_Weapon_Box
+ else continue;
+ makeitem .@item,1,.@map$,rand(40,77),rand(87,120);
+ }
+ } else if (.@i$ == "h") {
+ for(set .@i,0; .@i<10; set .@i,.@i+1) {
+ set .@j, rand(1,5001);
+ if (.@j < 2001) set .@item,12615; //Low_Coin_Pocket
+ else if (.@j < 3001) set .@item,12621; //Egrade_Pocket
+ else if (.@j < 4001) set .@item,12620; //Dgrade_Pocket
+ else if (.@j < 4501) set .@item,12619; //Cgrade_Pocket
+ else if (.@j < 5001) set .@item,12623; //High_Weapon_Box
+ else continue;
+ makeitem .@item,1,.@map$,rand(40,77),rand(87,120);
+ }
+ }
+ } else
+ instance_announce 0,"There are still monsters alive.",bc_map,"0x00ff99",FW_NORMAL,20;
+ end;
+}
+
+1@pump,84,105,4 script Missing, the Cleaner#no 545,{
+ set .@i$, charat(strnpcinfo(2),0);
+ if (.@i$ == "n") {
+ mes "[Missing, the Cleaner]";
+ mes "I was very surprised!!";
+ next;
+ mes "[Missing, the Cleaner]";
+ mes "That funny-looking fish seems to be one of Coelacanths living around here. This is my first time seeing one coming here alone!";
+ next;
+ mes "[Missing, the Cleaner]";
+ mes "I'll clean up the remains. Go pack and leave! Enterance is located on the other side, look for it!";
+ next;
+ } else if (.@i$ == "h") {
+ mes "[Missing, the Cleaner]";
+ mes "You've destroyed an immense monster!";
+ next;
+ mes "[Missing, the Cleaner]";
+ mes "The one you destroyed was among the variety of Coelacanths. Others have tried to destroy them but failed.";
+ next;
+ mes "[Missing, the Cleaner]";
+ mes "I'll clean up the remains. You go ahead to get trophies and leave!";
+ next;
+ }
+ mes "[Missing, the Cleaner]";
+ mes "One more thing! DO NOT TALK to ANYONE about what you've seen here today!!";
+ next;
+ mes "[Missing, the Cleaner]";
+ mes "If Tomas closes this down, we will lose our jobs!";
+ close;
+OnInstanceInit:
+ disablenpc instance_npcname(strnpcinfo(0), instance_id());
+ end;
+}
+
+1@pump,32,100,0 script Culvert Entrance#n 45,3,3,{
+ end;
+OnInstanceInit:
+ disablenpc instance_npcname(strnpcinfo(0), instance_id());
+ end;
+OnTouch:
+ warp "mal_in01",161,32;
+ end;
+}
+
+//MD_Putmob "1@pump" 0 0 0 0 20 HYDRA 0 0 2
+1@pump,1,1,4 script Hydra#n -1,{
+OnInstanceInit:
+ monster strnpcinfo(4),0,0,"Hydra",1068,20;
+ end;
+}
+
+// Instance: Hard Mode
+//============================================================
+2@pump,39,88,4 duplicate(Missing, the Cleaner#nf) Missing, the Cleaner#hf 545
+
+2@pump,39,88,4 script Missing, the Cleaner#h 545,{
+ callfunc "F_mal_missing";
+ donpcevent instance_npcname("Missing, the Cleaner#h", instance_id())+"::OnStart";
+ close;
+OnInstanceInit:
+ enablenpc instance_npcname("Missing, the Cleaner#h", instance_id());
+ end;
+OnStart:
+ killmonster "2@pump",instance_npcname("Missing, the Cleaner#h", instance_id())+"::OnMyMobDead";
+ disablenpc instance_npcname("Missing, the Cleaner#h", instance_id());
+ initnpctimer;
+ end;
+OnAddSeaweed:
+ areamonster "2@pump",75,78,85,88,"Contaminated Seaweed",2191,1,instance_npcname("Missing, the Cleaner#h", instance_id())+"::OnMyMobDead";
+ set .@mob_dead_num, mobcount("2@pump",instance_npcname("Missing, the Cleaner#h", instance_id())+"::OnMyMobDead");
+ if (.@mob_dead_num >= 6)
+ donpcevent instance_npcname("Missing, the Cleaner#h", instance_id())+"::OnFail";
+ else
+ instance_announce 0,"Proliferous Contaminated Seaweed: "+.@mob_dead_num+" stem",bc_map,"0xff3333",FW_NORMAL,20;
+ end;
+OnMyMobDead:
+ end;
+OnFail:
+ stopnpctimer;
+ donpcevent instance_npcname("Monster Hole#h", instance_id())+"::OnClear";
+ killmonster "2@pump",instance_npcname("Missing, the Cleaner#h", instance_id())+"::OnMyMobDead";
+ enablenpc instance_npcname("Missing, the Cleaner#hf", instance_id());
+ instance_announce 0,"What is this!! Seaweed is all over the culverts! You're done with cleaning! Get out!!",bc_map,"0xff88ff",FW_NORMAL,15;
+ disablenpc instance_npcname("Missing, the Cleaner#h", instance_id());
+ end;
+OnTimer100:
+ instance_announce 0,"First culvert will be opened in 5 sec. Cleaner can find the opened drain and click to start cleaning.",bc_map,"0x00ffcc",FW_NORMAL,15;
+ end;
+OnTimer5500:
+ instance_announce 0,"The one who's in charge of cleaning the culvert cannot move or be attacked until the casting is over.",bc_map,"0x00ffcc",FW_NORMAL,15;
+ donpcevent instance_npcname("Monster Hole#h", instance_id())+"::OnSpawn";
+ end;
+OnTimer35000:
+OnTimer75000:
+OnTimer115000:
+OnTimer155000:
+OnTimer195000:
+OnTimer235000:
+OnTimer275000:
+OnTimer315000:
+OnTimer355000:
+ instance_announce 0,"Next culvert will be opened in 5 sec. Please hurry up and find the position of the next culvert.",bc_map,"0x00ffcc",FW_NORMAL,15;
+ end;
+OnTimer40000:
+OnTimer80000:
+OnTimer120000:
+ donpcevent instance_npcname("Monster Hole#h", instance_id())+"::OnSpawn";
+ end;
+OnTimer160000:
+OnTimer200000:
+OnTimer240000:
+OnTimer280000:
+OnTimer320000:
+OnTimer360000:
+ set .@mob_dead_num, mobcount("2@pump",instance_npcname("Missing, the Cleaner#h", instance_id())+"::OnMyMobDead");
+ if (.@mob_dead_num >= 6)
+ donpcevent instance_npcname("Missing, the Cleaner#h", instance_id())+"::OnFail";
+ else
+ donpcevent instance_npcname("Monster Hole#h", instance_id())+"::OnSpawn";
+ end;
+OnTimer420000:
+ instance_announce 0,"It seems Missing will come and inspect the results of the cleaning soon. Shall we clean up the mess around here?",bc_map,"0xff3333",FW_NORMAL,20;
+ end;
+OnTimer425000:
+ stopnpctimer;
+ set .@mob_dead_num, mobcount("2@pump",instance_npcname("Missing, the Cleaner#h", instance_id())+"::OnMyMobDead");
+ if (.@mob_dead_num >= 6)
+ donpcevent instance_npcname("Missing, the Cleaner#h", instance_id())+"::OnFail";
+ else
+ donpcevent instance_npcname("Boss Creation#h", instance_id())+"::OnEnable";
+ end;
+}
+
+2@pump,53,114,4 script #Culvert_h1 844,{
+ progressbar "0xFFFF00",15;
+ stopnpctimer;
+ disablenpc instance_npcname(strnpcinfo(0), instance_id());
+ end;
+OnInstanceInit:
+ disablenpc instance_npcname(strnpcinfo(0), instance_id());
+ end;
+OnEnable:
+ enablenpc instance_npcname(strnpcinfo(0), instance_id());
+ set .@label$, instance_npcname(strnpcinfo(0), instance_id())+"::OnMyMobDead";
+ set .@index, atoi(substr(strnpcinfo(2),9,getstrlen(strnpcinfo(2))-1));
+ switch(.@index) {
+ case 1: setarray .@c[0],49,110,57,118; break;
+ case 2: setarray .@c[0],75,105,83,113; break;
+ case 3: setarray .@c[0],110,110,118,118; break;
+ case 4: setarray .@c[0],94,94,102,102; break;
+ case 5: setarray .@c[0],58,92,66,100; break;
+ case 6: setarray .@c[0],53,66,61,74; break;
+ case 7: setarray .@c[0],43,45,51,53; break;
+ case 8: setarray .@c[0],77,59,85,67; break;
+ case 9: setarray .@c[0],96,70,104,78; break;
+ case 10: setarray .@c[0],111,46,119,54; break;
+ }
+ areamonster "2@pump",.@c[0],.@c[1],.@c[2],.@c[3],"Ancient Marc",2182,rand(2,3),.@label$;
+ areamonster "2@pump",.@c[0],.@c[1],.@c[2],.@c[3],"Ancient Sword Fish",2181,rand(2,3),.@label$;
+ areamonster "2@pump",.@c[0],.@c[1],.@c[2],.@c[3],"Ancient Strouf",2180,rand(2,3),.@label$;
+ areamonster "2@pump",.@c[0],.@c[1],.@c[2],.@c[3],"Mutant Anolian",2183,rand(2,3),.@label$;
+ areamonster "2@pump",.@c[0],.@c[1],.@c[2],.@c[3],"Abysmal Obeaune",2184,rand(2,3),.@label$;
+ areamonster "2@pump",.@c[0],.@c[1],.@c[2],.@c[3],"Metamorphous Kapha",2185,rand(2,3),.@label$;
+ specialeffect EF_MAPPILLAR2,ALL_SAMEMAP; //currently broken
+ initnpctimer;
+ end;
+OnMyMobDead:
+ end;
+OnClear:
+ stopnpctimer;
+ killmonster "2@pump",instance_npcname(strnpcinfo(0), instance_id())+"::OnMyMobDead";
+ end;
+OnTimer39500: //OnTimer40000 clashes with the timer in "Missing, the Cleaner#h".
+ donpcevent instance_npcname("Missing, the Cleaner#h", instance_id())+"::OnAddSeaweed";
+ donpcevent instance_npcname(strnpcinfo(0), instance_id())+"::OnClear";
+ disablenpc instance_npcname(strnpcinfo(0), instance_id());
+ end;
+}
+2@pump,79,109,4 duplicate(#Culvert_h1) #Culvert_h2 844
+2@pump,114,114,4 duplicate(#Culvert_h1) #Culvert_h3 844
+2@pump,98,98,4 duplicate(#Culvert_h1) #Culvert_h4 844
+2@pump,62,96,4 duplicate(#Culvert_h1) #Culvert_h5 844
+2@pump,57,70,4 duplicate(#Culvert_h1) #Culvert_h6 844
+2@pump,47,49,4 duplicate(#Culvert_h1) #Culvert_h7 844
+2@pump,81,63,4 duplicate(#Culvert_h1) #Culvert_h8 844
+2@pump,100,74,4 duplicate(#Culvert_h1) #Culvert_h9 844
+2@pump,115,50,4 duplicate(#Culvert_h1) #Culvert_h10 844
+
+2@pump,1,1,4 duplicate(Monster Hole#n) Monster Hole#h -1
+2@pump,1,1,4 duplicate(Boss Creation#n) Boss Creation#h -1
+2@pump,39,88,4 duplicate(Missing, the Cleaner#no) Missing, the Cleaner#ho 545
+2@pump,38,100,0 duplicate(Culvert Entrance#n) Culvert Entrance#h 45,3,3
+
+//MD_Putmob "2@pump" 0 0 0 0 20 HYDRA 0 0 2
+2@pump,1,1,4 duplicate(Hydra#n) Hydra#h -1
diff --git a/npc/re/instances/OctopusCave.txt b/npc/re/instances/OctopusCave.txt
new file mode 100644
index 000000000..7eaf25a9c
--- /dev/null
+++ b/npc/re/instances/OctopusCave.txt
@@ -0,0 +1,721 @@
+//===== rAthena Script =======================================
+//= Octopus Cave
+//===== By: ==================================================
+//= Muad_Dib
+//===== Current Version: =====================================
+//= 1.0
+//===== Compatible With: =====================================
+//= rAthena SVN
+//===== Description: =========================================
+//= [Official Conversion]
+//= Defeat the Disgusting Octopus.
+//===== Additional Comments: =================================
+//= 1.0 First version. [Euphy]
+//============================================================
+
+// Instance Creation
+//============================================================
+mal_dun01,151,235,5 script Starfish 551,{
+
+ set .@party_id,getcharid(1);
+ set .@md_name$,"Octopus Cave";
+
+ if (!.@party_id) {
+ mes "[Starfish]";
+ mes "You alone is powerless, hehe!";
+ mes "Better get someone to help you out.";
+ mes "Make a party, and come back later.";
+ close;
+ }
+ if (getcharid(0) != getpartyleader(.@party_id,2)) {
+ mes "[Starfish]";
+ mes "Where is your leader, hehe.";
+ mes "I don't talk to some random people.";
+ mes "Bring your boss to me.";
+ close;
+ }
+ mes "[Starfish]";
+ mes "I am guarding here, hehe!";
+ mes "It is just roughly blocked for now.";
+ mes "But someday this cave must be sealed forever, hehe!";
+ next;
+ while (1) {
+ switch(select("Ask what's going on.:Ask to open the gate.:Go to other location.")) {
+ case 1:
+ mes "[Starfish]";
+ mes "Lately, our Starfish lady is";
+ mes "suffering with some issues, ooh ooh.";
+ mes "Something bad happen in this";
+ mes "peaceful place, hehe!";
+ next;
+ mes "[Starfish]";
+ mes "Weird looking limbs came out";
+ mes "from the hole there,";
+ mes "tried to kidnap our lady Starfish.";
+ mes "Ooh Ooh.";
+ next;
+ mes "[Starfish]";
+ mes "It seems those limbs belong to";
+ mes "that ugly octopus.";
+ mes "That monster should be taken care of,";
+ mes "but it's hard for ourselves only to make it happen, hehe.";
+ next;
+ mes "[Starfish]";
+ mes "I want to find someone special,";
+ mes "and ask to punish this ugly octopus.";
+ mes "I hope this octopus won't ever";
+ mes "harass our lady, hehe.";
+ next;
+ mes "[Starfish]";
+ mes "Go catch that octopus and stick it to this pick.";
+ mes "If you bring back the pick, I will";
+ mes "open this gate for a while.";
+ mes "You should challenge if you are interested, hehe.";
+ next;
+ break;
+ case 2:
+ set .@playtime, checkquest(4197,PLAYTIME);
+ if (.@playtime == 0 || .@playtime == 1) {
+ mes "[Starfish]";
+ mes "Octopus is not around now, hehe.";
+ mes "Please come back later.";
+ close;
+ }
+ if (.@playtime == 2) erasequest 4197;
+ if (countitem(6442)) {
+ set .@instance, instance_create(.@md_name$,.@party_id);
+ if (.@instance < 0) {
+ mes "[Starfish]";
+ mes "Party name is... "+getpartyname(.@party_id)+".";
+ mes "Party leader is... "+strcharinfo(0)+".";
+ mes "^0000ff"+.@md_name$+"^000000, I cannot open now, hehe.";
+ mes "Now is not the time, please wait.";
+ close;
+ }
+ if (instance_attachmap("1@cash",.@instance) == "") {
+ mes "^0000ff"+.@md_name$+"^000000 - Reservation Failed!";
+ instance_destroy(.@instance);
+ close;
+ }
+ instance_attach(.@instance);
+ instance_set_timeout 3600,300,.@instance;
+ instance_init(.@instance);
+
+ donpcevent instance_npcname("oct_enter", instance_id())+"::OnInstanceInit";
+ donpcevent instance_npcname("oct_enter_broad", instance_id())+"::OnInstanceInit";
+ donpcevent instance_npcname("oct_foot_4", instance_id())+"::OnInstanceInit";
+ donpcevent instance_npcname("oct_foot1", instance_id())+"::OnInstanceInit";
+ donpcevent instance_npcname("oct_foot_exit1", instance_id())+"::OnInstanceInit";
+ donpcevent instance_npcname("oct_foot2", instance_id())+"::OnInstanceInit";
+ donpcevent instance_npcname("oct_foot_exit2", instance_id())+"::OnInstanceInit";
+ donpcevent instance_npcname("oct_foot3", instance_id())+"::OnInstanceInit";
+ donpcevent instance_npcname("oct_foot_exit3", instance_id())+"::OnInstanceInit";
+ donpcevent instance_npcname("oct_foot4", instance_id())+"::OnInstanceInit";
+ donpcevent instance_npcname("oct_foot_exit4", instance_id())+"::OnInstanceInit";
+ donpcevent instance_npcname("oct_mob_con", instance_id())+"::OnInstanceInit";
+ donpcevent instance_npcname("oct_backattack1", instance_id())+"::OnInstanceInit";
+ donpcevent instance_npcname("oct_backattack2", instance_id())+"::OnInstanceInit";
+ donpcevent instance_npcname("oct_backattack3", instance_id())+"::OnInstanceInit";
+ donpcevent instance_npcname("oct_backattack4", instance_id())+"::OnInstanceInit";
+ donpcevent instance_npcname("oct_boss_con", instance_id())+"::OnInstanceInit";
+ donpcevent instance_npcname("oct_boss_foot", instance_id())+"::OnInstanceInit";
+ donpcevent instance_npcname("oct_boss_warp", instance_id())+"::OnInstanceInit";
+ donpcevent instance_npcname("oct_exit_1", instance_id())+"::OnInstanceInit";
+ donpcevent instance_npcname("oct_exit_2", instance_id())+"::OnInstanceInit";
+
+ mes "[Starfish]";
+ mes "I will open the gate for a while to ^0000ff"+.@md_name$+"^000000.";
+ mes "Please catch that pervert octopus,";
+ mes "and come back with it sticked to the pick, hehe.";
+ close;
+ }
+ mes "[Starfish]";
+ mes "Prepare a pick first,";
+ mes "so you can thread that octopus";
+ mes "with that pick.";
+ mes "Then, I will let you in for a while, hehe.";
+ close;
+ case 3:
+ mes "[Starfish]";
+ mes "This is not a good location, check someplace else.";
+ close;
+ }
+ }
+}
+
+mal_dun01,153,237,5 script Weird Entrance 844,{
+ mes "There is a strange entrance";
+ mes "blocked roughly with some boards.";
+ next;
+ switch(select("Go in.:Stop.")) {
+ case 1:
+ if (countitem(6442)) {
+ // TODO: Add official MD_Enter cases.
+ if (has_instance("1@cash") == "") {
+ if (checkquest(4197,PLAYTIME) == 0 || checkquest(4197,PLAYTIME) == 1) {
+ mes "[Starfish]";
+ mes "Ah, now is not the time...";
+ mes "Would you come back later? Hehe.";
+ close;
+ }
+ mes "[Starfish]";
+ mes "Shhh... Weird aura is";
+ mes "coming from that entrance.";
+ mes "Big trouble is waiting, if you go in now.";
+ close;
+ }
+ mapannounce "mal_dun01", getpartyname(getcharid(1))+" party's "+strcharinfo(0)+" member started to hunt the Octopus!",bc_map,"0x00ff99";
+ if (checkquest(4197) == -1) setquest 4197;
+ warp "1@cash",199,99;
+ close;
+ }
+ mes "[Starfish]";
+ mes "You should definitely prepare";
+ mes "hunting stick if you want to";
+ mes "punish the Octopus.";
+ mes "Or I will not let you in! Hehe.";
+ close;
+ case 2:
+ mes "[Starfish]";
+ mes "Yes Yes, you better quit.";
+ close;
+ }
+}
+
+// Instance Scripts
+//============================================================
+1@cash,199,99,0 script oct_enter 139,4,4,{
+ end;
+OnInstanceInit:
+ enablenpc instance_npcname("oct_enter", instance_id());
+ end;
+OnTouch:
+ donpcevent instance_npcname("oct_enter_broad", instance_id())+"::OnEnable";
+ specialeffect EF_BASH;
+ disablenpc instance_npcname("oct_enter", instance_id());
+ end;
+}
+
+1@cash,1,1,0 script oct_enter_broad -1,{
+ end;
+OnInstanceInit:
+ donpcevent instance_npcname("oct_enter_broad", instance_id())+"::OnDisable";
+ end;
+OnEnable:
+ enablenpc instance_npcname("oct_enter_broad", instance_id());
+ donpcevent instance_npcname("oct_foot_4", instance_id())+"::OnEnable";
+ donpcevent instance_npcname("oct_mob_con", instance_id())+"::OnEnable";
+ initnpctimer;
+ end;
+OnDisable:
+ disablenpc instance_npcname("oct_enter_broad", instance_id());
+ end;
+OnTimer1000:
+ instance_announce 0,"Pervert Octopus : How dare you to come inside of my place!",bc_map,"0xFFFF00";
+ end;
+OnTimer4000:
+ instance_announce 0,"Pervert Octopus : But I blocked all the cave gates!! There is nothing you can do!",bc_map,"0xFFFF00";
+ end;
+OnTimer7000:
+ instance_announce 0,"Pervert Octopus : My juniors~ There is your toy! Play with it~ kakaka",bc_map,"0xFFFF00";
+ stopnpctimer;
+ donpcevent instance_npcname("oct_enter_broad", instance_id())+"::OnDisable";
+ end;
+}
+
+1@cash,3,3,0 script oct_foot_4 -1,{
+ end;
+OnInstanceInit:
+ donpcevent instance_npcname("oct_foot_4", instance_id())+"::OnDisable";
+ end;
+OnEnable:
+ enablenpc instance_npcname("oct_foot_4", instance_id());
+ donpcevent instance_npcname("oct_foot1", instance_id())+"::OnEnable";
+ donpcevent instance_npcname("oct_foot2", instance_id())+"::OnEnable";
+ donpcevent instance_npcname("oct_foot3", instance_id())+"::OnEnable";
+ donpcevent instance_npcname("oct_foot4", instance_id())+"::OnEnable";
+ monster "1@cash",20,114,"Octopus Leg#1",2193,1,instance_npcname("oct_foot_4", instance_id())+"::OnMyMobDead";
+ monster "1@cash",88,190,"Octopus Leg#2",2193,1,instance_npcname("oct_foot_4", instance_id())+"::OnMyMobDead";
+ monster "1@cash",307,215,"Octopus Leg#3",2193,1,instance_npcname("oct_foot_4", instance_id())+"::OnMyMobDead";
+ monster "1@cash",372,131,"Octopus Leg#4",2193,1,instance_npcname("oct_foot_4", instance_id())+"::OnMyMobDead";
+ end;
+OnDisable:
+ disablenpc instance_npcname("oct_foot_4", instance_id());
+ end;
+OnMyMobDead:
+ if (mobcount("1@cash",instance_npcname("oct_foot_4", instance_id())+"::OnMyMobDead") < 1) {
+ donpcevent instance_npcname("oct_boss_con", instance_id())+"::OnEnable";
+ instance_announce 0,"Hey you!! I'll personally take care of you all! Let's bring it on!",bc_map,"0x00ff99";
+ enablenpc instance_npcname("oct_boss_warp", instance_id());
+ instance_warpall "1@cash",199,99;
+ end;
+ }
+ instance_announce 0,"Arrgg!! That hurts!!! I need another strategy...",bc_map,"0x00ff99";
+ end;
+}
+
+1@cash,20,114,0 script oct_foot1 139,6,6,{
+ end;
+OnInstanceInit:
+ donpcevent instance_npcname(strnpcinfo(0), instance_id())+"::OnDisable";
+ end;
+OnEnable:
+ enablenpc instance_npcname(strnpcinfo(0), instance_id());
+ set .@label$, instance_npcname(strnpcinfo(0), instance_id())+"::OnMyMobDead";
+ set .@i, atoi(charat(strnpcinfo(0),8));
+ switch(.@i) {
+ case 1:
+ areamonster "1@cash",34,96,38,100,"Octopus's Henchman",2192,3,.@label$;
+ areamonster "1@cash",39,90,41,92,"Octopus's Henchman",2192,2,.@label$;
+ areamonster "1@cash",38,76,40,78,"Octopus's Henchman",2192,2,.@label$;
+ areamonster "1@cash",39,58,41,60,"Octopus's Henchman",2192,2,.@label$;
+ areamonster "1@cash",50,38,56,44,"Octopus's Henchman",2192,5,.@label$;
+ areamonster "1@cash",68,32,72,36,"Octopus's Henchman",2192,5,.@label$;
+ areamonster "1@cash",83,26,85,28,"Octopus's Henchman",2192,2,.@label$;
+ areamonster "1@cash",107,28,109,30,"Octopus's Henchman",2192,1,.@label$;
+ areamonster "1@cash",123,28,125,30,"Octopus's Henchman",2192,2,.@label$;
+ areamonster "1@cash",134,31,138,35,"Octopus's Henchman",2192,5,.@label$;
+ areamonster "1@cash",142,39,146,43,"Octopus's Henchman",2192,2,.@label$;
+ break;
+ case 2:
+ areamonster "1@cash",139,113,143,117,"Octopus's Henchman",2192,5,.@label$;
+ areamonster "1@cash",135,104,137,106,"Octopus's Henchman",2192,2,.@label$;
+ areamonster "1@cash",123,93,127,97,"Octopus's Henchman",2192,3,.@label$;
+ areamonster "1@cash",113,90,115,92,"Octopus's Henchman",2192,2,.@label$;
+ areamonster "1@cash",103,89,105,91,"Octopus's Henchman",2192,2,.@label$;
+ areamonster "1@cash",89,90,91,92,"Octopus's Henchman",2192,2,.@label$;
+ areamonster "1@cash",74,104,76,106,"Octopus's Henchman",2192,2,.@label$;
+ areamonster "1@cash",74,120,76,122,"Octopus's Henchman",2192,2,.@label$;
+ areamonster "1@cash",83,131,87,135,"Octopus's Henchman",2192,3,.@label$;
+ areamonster "1@cash",92,142,94,144,"Octopus's Henchman",2192,2,.@label$;
+ areamonster "1@cash",98,159,100,161,"Octopus's Henchman",2192,2,.@label$;
+ areamonster "1@cash",94,180,98,184,"Octopus's Henchman",2192,5,.@label$;
+ break;
+ case 3:
+ areamonster "1@cash",299,209,303,213,"Octopus's Henchman",2192,3,.@label$;
+ areamonster "1@cash",292,203,296,207,"Octopus's Henchman",2192,3,.@label$;
+ areamonster "1@cash",291,186,293,188,"Octopus's Henchman",2192,2,.@label$;
+ areamonster "1@cash",292,166,294,168,"Octopus's Henchman",2192,2,.@label$;
+ areamonster "1@cash",293,151,295,153,"Octopus's Henchman",2192,2,.@label$;
+ areamonster "1@cash",299,137,303,141,"Octopus's Henchman",2192,2,.@label$;
+ areamonster "1@cash",300,123,304,127,"Octopus's Henchman",2192,2,.@label$;
+ areamonster "1@cash",300,104,304,108,"Octopus's Henchman",2192,3,.@label$;
+ areamonster "1@cash",279,101,281,103,"Octopus's Henchman",2192,2,.@label$;
+ monster "1@cash",260,103,"Octopus's Henchman",2192,1,.@label$;
+ break;
+ case 4:
+ areamonster "1@cash",363,123,367,127,"Octopus's Henchman",2192,2,.@label$;
+ areamonster "1@cash",364,108,368,112,"Octopus's Henchman",2192,5,.@label$;
+ areamonster "1@cash",363,93,367,97,"Octopus's Henchman",2192,3,.@label$;
+ areamonster "1@cash",364,72,366,74,"Octopus's Henchman",2192,2,.@label$;
+ areamonster "1@cash",364,58,366,60,"Octopus's Henchman",2192,2,.@label$;
+ areamonster "1@cash",355,44,359,48,"Octopus's Henchman",2192,3,.@label$;
+ areamonster "1@cash",346,36,350,40,"Octopus's Henchman",2192,3,.@label$;
+ areamonster "1@cash",319,28,325,34,"Octopus's Henchman",2192,5,.@label$;
+ areamonster "1@cash",305,27,307,29,"Octopus's Henchman",2192,2,.@label$;
+ areamonster "1@cash",276,29,280,33,"Octopus's Henchman",2192,5,.@label$;
+ areamonster "1@cash",258,37,262,41,"Octopus's Henchman",2192,2,.@label$;
+ break;
+ }
+ end;
+OnDisable:
+ killmonster "1@cash",instance_npcname(strnpcinfo(0), instance_id())+"::OnMyMobDead"; // Not in official script.
+ disablenpc instance_npcname(strnpcinfo(0), instance_id());
+ end;
+OnTouch:
+ if (getd("."+strnpcinfo(0)+instance_id())) end;
+ setd "."+strnpcinfo(0)+instance_id(),1;
+ hideonnpc instance_npcname(strnpcinfo(0), instance_id());
+ instance_announce 0,"Come out all my babies and help me out!",bc_map,"0xFFFF00";
+ initnpctimer;
+ end;
+OnTimer5000:
+ instance_announce 0,"Let's give them a lesson!",bc_map,"0xFFFF00";
+ set .@label$, instance_npcname(strnpcinfo(0), instance_id())+"::OnMyMobDead";
+ set .@i, atoi(charat(strnpcinfo(0),8));
+ switch(.@i) {
+ case 1:
+ areamonster "1@cash",18,112,22,116,"Octopus's Henchman",2192,3,.@label$;
+ areamonster "1@cash",18,112,22,116,"Octopus's Henchman",2192,3,.@label$;
+ break;
+ case 2:
+ areamonster "1@cash",86,188,90,192,"Octopus's Henchman",2192,3,.@label$;
+ areamonster "1@cash",96,98,100,102,"Octopus's Henchman",2192,3,.@label$;
+ break;
+ case 3:
+ areamonster "1@cash",305,213,309,217,"Octopus's Henchman",2192,3,.@label$;
+ areamonster "1@cash",305,213,309,217,"Octopus's Henchman",2192,3,.@label$;
+ break;
+ case 4:
+ areamonster "1@cash",370,129,374,133,"Octopus's Henchman",2192,3,.@label$;
+ areamonster "1@cash",370,129,374,133,"Octopus's Henchman",2192,3,.@label$;
+ break;
+ }
+ end;
+OnTimer30000:
+ setd "."+strnpcinfo(0)+instance_id(),0;
+ stopnpctimer;
+ set .@i, atoi(charat(strnpcinfo(0),8));
+ donpcevent instance_npcname("oct_foot_exit"+.@i, instance_id())+"::OnEnable";
+ donpcevent instance_npcname(strnpcinfo(0), instance_id())+"::OnDisable";
+ end;
+OnMyMobDead:
+ if (mobcount("1@cash",instance_npcname(strnpcinfo(0), instance_id())+"::OnMyMobDead") < 1) {
+ instance_announce 0,"You hurt my babies!!? You'll have to pay for this!!!",bc_map,"0x00ff99";
+ setd "."+strnpcinfo(0)+instance_id(),0;
+ stopnpctimer;
+ set .@i, atoi(charat(strnpcinfo(0),8));
+ donpcevent instance_npcname("oct_foot_exit"+.@i, instance_id())+"::OnEnable";
+ donpcevent instance_npcname(strnpcinfo(0), instance_id())+"::OnDisable";
+ end;
+ }
+ end;
+}
+1@cash,88,190,0 duplicate(oct_foot1) oct_foot2 139,6,6
+1@cash,307,215,0 duplicate(oct_foot1) oct_foot3 139,6,6
+1@cash,372,131,0 duplicate(oct_foot1) oct_foot4 139,6,6
+
+1@cash,16,117,0 script oct_foot_exit1 45,2,2,{
+ end;
+OnInstanceInit:
+ disablenpc instance_npcname(strnpcinfo(0), instance_id());
+ end;
+OnEnable:
+ enablenpc instance_npcname(strnpcinfo(0), instance_id());
+ end;
+OnTouch:
+ warp "1@cash",198,99;
+ end;
+}
+1@cash,77,193,0 duplicate(oct_foot_exit1) oct_foot_exit2 45,2,2
+1@cash,312,214,0 duplicate(oct_foot_exit1) oct_foot_exit3 45,2,2
+1@cash,370,139,0 duplicate(oct_foot_exit1) oct_foot_exit4 45,2,2
+
+1@cash,15,15,0 script oct_mob_con -1,{
+ end;
+OnInstanceInit:
+ donpcevent instance_npcname("oct_mob_con", instance_id())+"::OnDisable";
+ end;
+OnEnable:
+ enablenpc instance_npcname("oct_mob_con", instance_id());
+ monster "1@cash",32,94,"Hydra",1068,1;
+ monster "1@cash",41,101,"Hydra",1068,1;
+ monster "1@cash",35,78,"Hydra",1068,1;
+ monster "1@cash",35,62,"Hydra",1068,1;
+ monster "1@cash",49,54,"Hydra",1068,1;
+ monster "1@cash",70,28,"Hydra",1068,1;
+ monster "1@cash",83,22,"Hydra",1068,1;
+ monster "1@cash",99,23,"Hydra",1068,1;
+ monster "1@cash",115,23,"Hydra",1068,1;
+ monster "1@cash",132,25,"Hydra",1068,1;
+ monster "1@cash",100,185,"Hydra",1068,1;
+ monster "1@cash",92,178,"Hydra",1068,1;
+ monster "1@cash",92,162,"Hydra",1068,1;
+ monster "1@cash",70,121,"Hydra",1068,1;
+ monster "1@cash",70,105,"Hydra",1068,1;
+ monster "1@cash",105,85,"Hydra",1068,1;
+ monster "1@cash",121,84,"Hydra",1068,1;
+ monster "1@cash",292,209,"Hydra",1068,1;
+ monster "1@cash",303,206,"Hydra",1068,1;
+ monster "1@cash",290,163,"Hydra",1068,1;
+ monster "1@cash",299,150,"Hydra",1068,1;
+ monster "1@cash",308,141,"Hydra",1068,1;
+ monster "1@cash",308,125,"Hydra",1068,1;
+ monster "1@cash",295,97,"Hydra",1068,1;
+ monster "1@cash",279,97,"Hydra",1068,1;
+ monster "1@cash",370,111,"Hydra",1068,1;
+ monster "1@cash",370,110,"Hydra",1068,1;
+ monster "1@cash",371,96,"Hydra",1068,1;
+ monster "1@cash",371,80,"Hydra",1068,1;
+ monster "1@cash",367,55,"Hydra",1068,1;
+ monster "1@cash",343,29,"Hydra",1068,1;
+ monster "1@cash",327,24,"Hydra",1068,1;
+ monster "1@cash",311,22,"Hydra",1068,1;
+ monster "1@cash",295,22,"Hydra",1068,1;
+ monster "1@cash",279,22,"Hydra",1068,1;
+ areamonster "1@cash",30,67,50,87,"Stapo",1784,1;
+ areamonster "1@cash",102,19,122,39,"Stapo",1784,1;
+ areamonster "1@cash",89,138,109,158,"Stapo",1784,1;
+ areamonster "1@cash",112,83,132,103,"Stapo",1784,1;
+ areamonster "1@cash",283,168,303,188,"Stapo",1784,1;
+ areamonster "1@cash",292,97,312,117,"Stapo",1784,1;
+ areamonster "1@cash",355,64,375,84,"Stapo",1784,1;
+ areamonster "1@cash",317,17,337,37,"Stapo",1784,1;
+ donpcevent instance_npcname("oct_backattack1", instance_id())+"::OnEnable";
+ donpcevent instance_npcname("oct_backattack2", instance_id())+"::OnEnable";
+ donpcevent instance_npcname("oct_backattack3", instance_id())+"::OnEnable";
+ donpcevent instance_npcname("oct_backattack4", instance_id())+"::OnEnable";
+ donpcevent instance_npcname("oct_mob_con", instance_id())+"::OnDisable";
+ end;
+OnDisable:
+ disablenpc instance_npcname("oct_mob_con", instance_id());
+ end;
+}
+
+1@cash,45,53,0 script oct_backattack1 139,3,3,{
+ end;
+OnInstanceInit:
+ disablenpc instance_npcname("oct_backattack1", instance_id());
+ end;
+OnTouch:
+ monster "1@cash",39,59,"Hydra",1068,1;
+ monster "1@cash",40,59,"Hydra",1068,1;
+ monster "1@cash",41,59,"Hydra",1068,1;
+ monster "1@cash",47,50,"Hydra",1068,1;
+ monster "1@cash",48,50,"Hydra",1068,1;
+ monster "1@cash",49,50,"Hydra",1068,1;
+ monster "1@cash",41,53,"Octopus's Henchman",2192,1;
+ instance_announce 0,"Don't let them break through, stop them!!!",bc_map,"0x00ff99";
+ specialeffect EF_BASH;
+ disablenpc instance_npcname("oct_backattack1", instance_id());
+ end;
+OnEnable:
+ enablenpc instance_npcname("oct_backattack1", instance_id());
+ end;
+}
+
+1@cash,78,99,0 script oct_backattack2 139,3,3,{
+ end;
+OnInstanceInit:
+ disablenpc instance_npcname("oct_backattack2", instance_id());
+ end;
+OnTouch:
+ if (getd("."+instance_id())) end;
+ setd "."+instance_id(),1;
+ initnpctimer;
+ monster "1@cash",71,105,"Octopus's Henchman ",2192,1;
+ instance_announce 0,"Headquarters are empty, GO!!!",bc_map,"0x00ff99";
+ hideonnpc instance_npcname("oct_backattack2", instance_id());
+ end;
+OnTimer2000:
+ monster "1@cash",71,105,"Octopus's Henchman ",2192,1;
+ instance_announce 0,"Run, RUN! Go, GO!!!",bc_map,"0x00ff99";
+ end;
+OnTimer4000:
+ monster "1@cash",71,105,"Octopus's Henchman ",2192,1;
+ instance_announce 0,"No time, come out fast!",bc_map,"0x00ff99";
+ end;
+OnTimer6000:
+ monster "1@cash",71,105,"Octopus's Henchman ",2192,3;
+ instance_announce 0,"Let's take over the headquarters!!!",bc_map,"0x00ff99";
+ end;
+OnTimer8000:
+ monster "1@cash",71,105,"Octopus's Henchman ",2192,1;
+ instance_announce 0,"There is no time to lose, hurry up!!!",bc_map,"0x00ff99";
+ stopnpctimer;
+ end;
+OnEnable:
+ enablenpc instance_npcname("oct_backattack2", instance_id());
+ end;
+}
+
+1@cash,299,144,0 script oct_backattack3 139,3,3,{
+ end;
+OnInstanceInit:
+ disablenpc instance_npcname("oct_backattack2", instance_id());
+ end;
+OnTouch:
+ if (getd("."+instance_id())) end;
+ setd "."+instance_id(),1;
+ monster "1@cash",293,153,"Octopus's Henchman ",2192,1;
+ monster "1@cash",294,152,"Octopus's Henchman ",2192,1;
+ monster "1@cash",292,153,"Octopus's Henchman ",2192,1;
+ monster "1@cash",293,151,"Octopus's Henchman ",2192,1;
+ monster "1@cash",293,152,"Octopus's Henchman ?",2175,1;
+ instance_announce 0,"Kakaka! Suprised??!!",bc_map,"0x00ff99";
+ initnpctimer;
+ hideonnpc instance_npcname("oct_backattack3", instance_id());
+ end;
+OnTimer5000:
+ instance_announce 0,"... Looks like we have a spy among us.",bc_map,"0x00ff99";
+ stopnpctimer;
+ end;
+OnEnable:
+ enablenpc instance_npcname("oct_backattack3", instance_id());
+ end;
+}
+
+1@cash,336,36,0 script oct_backattack4 139,3,3,{
+ end;
+OnInstanceInit:
+ disablenpc instance_npcname("oct_backattack2", instance_id());
+ end;
+OnTouch:
+ if (getd("."+instance_id())) end;
+ setd "."+instance_id(),1;
+ monster "1@cash",332,37,"Octopus's Henchman ",2192,1;
+ monster "1@cash",332,36,"Octopus's Henchman ",2192,1;
+ monster "1@cash",332,35,"Octopus's Henchman ",2192,1;
+ monster "1@cash",332,34,"Octopus's Henchman ",2192,1;
+ monster "1@cash",341,37,"Octopus's Henchman ",2192,1;
+ monster "1@cash",341,36,"Octopus's Henchman ",2192,1;
+ monster "1@cash",341,35,"Octopus's Henchman ",2192,1;
+ monster "1@cash",341,34,"Octopus's Henchman ",2192,1;
+ monster "1@cash",260,40,"Mercenary Squid",2175,1;
+ monster "1@cash",260,41,"Mercenary Squid",2175,1;
+ monster "1@cash",260,39,"Mercenary Squid",2175,1;
+ monster "1@cash",259,40,"Mercenary Squid",2175,1;
+ monster "1@cash",261,40,"Mercenary Squid",2175,1;
+ instance_announce 0,"What a successful pincer tactic! The enemy is strong! Let's not lose yourselves! Anyway, where are all the mercenaries??",bc_map,"0x00ff99";
+ initnpctimer;
+ hideonnpc instance_npcname("oct_backattack4", instance_id());
+ end;
+OnTimer5000:
+ instance_announce 0,"Mercenary Squid : eh...eh... wrong direction. No enemies are shown in this direction.",bc_map,"0x00ff99";
+ end;
+OnTimer7000:
+ instance_announce 0,"Pervert Octopus : Fools! Can't you read the map??!! Useless!!",bc_map,"0x00ff99";
+ stopnpctimer;
+ end;
+OnEnable:
+ enablenpc instance_npcname("oct_backattack4", instance_id());
+ end;
+}
+
+1@cash,2,2,0 script oct_boss_con -1,{
+ end;
+OnInstanceInit:
+ donpcevent instance_npcname("oct_boss_con", instance_id())+"::OnDisable";
+ end;
+OnDisable:
+ disablenpc instance_npcname("oct_boss_con", instance_id());
+ end;
+OnEnable:
+ enablenpc instance_npcname("oct_boss_con", instance_id());
+ donpcevent instance_npcname("oct_boss_foot", instance_id())+"::OnEnable";
+ monster "1@cash",199,188,"Disgusting Octopus",2194,1,instance_npcname("oct_boss_con", instance_id())+"::OnMyMobDead";
+ initnpctimer;
+ end;
+OnTimer7000:
+ callsub OnAnnounce,
+ "You won't attack the one man.",
+ "I got fired from ink manufacturer last week.",
+ "Disgusting Octopus : Arghhhhh, come on!";
+ end;
+OnTimer14000:
+ callsub OnAnnounce,
+ "Why... why can't you know my heart!",
+ "Do you know how hard it is to live these days because there are not many new adventurers?",
+ "You.. I'll destroy you all...!";
+ end;
+OnTimer21000:
+ callsub OnAnnounce,
+ "What? I'm a disgusting octopus? You're sadists.",
+ "Let's not do this and how about we look for the best solution, huh??",
+ "Even if I fail here, I will keep coming back, forever!!!";
+ end;
+OnTimer28000:
+ callsub OnAnnounce,
+ "Instinct of mating is for males, what did I do wrong?",
+ "Do you really want to solve the problem between humans by violence?? Ah, I'm an octopus...",
+ "That's enough! Back off!";
+ end;
+OnTimer35000:
+ callsub OnAnnounce,
+ "Do I have to spend Christmas alone again...",
+ "Youth unemployment became a big issue these days... You won't get a job if you keep playing with me here.",
+ "This is as far as I can go!";
+ end;
+OnTimer42000:
+ callsub OnAnnounce,
+ "Hand on your heart and think if you come onto anyone...",
+ "Let's not do this here and follow the law!",
+ "You'll keep on doing this til the end, is that it?";
+ end;
+OnTimer49000:
+ callsub OnAnnounce,
+ "errrrrrrrrrrrrrrrrrrrrrrrr... Cough! Cough!",
+ "Disgusting Octopus : Violence cannot be justified in any case.",
+ "This is my place!!!";
+ stopnpctimer;
+ initnpctimer;
+ end;
+OnAnnounce:
+ instance_announce 0,"Disgusting Octopus : "+getarg(rand(3)),bc_map,"0xFFFF00";
+ return;
+OnMyMobDead:
+ if (mobcount("1@cash",instance_npcname("oct_boss_con", instance_id())+"::OnMyMobDead") < 1) {
+ instance_announce 0,"Disgusting Octopus : That's it for the today! Next time, I will play with you badly!",bc_map,"0xFFFF00";
+ enablenpc instance_npcname("oct_exit_1", instance_id());
+ enablenpc instance_npcname("oct_exit_2", instance_id());
+ donpcevent instance_npcname("oct_boss_foot", instance_id())+"::OnDisable";
+ stopnpctimer;
+ donpcevent instance_npcname("oct_boss_con", instance_id())+"::OnDisable";
+ end;
+ }
+ end;
+}
+
+1@cash,4,4,0 script oct_boss_foot -1,{
+ end;
+OnInstanceInit:
+ donpcevent instance_npcname("oct_boss_foot", instance_id())+"::OnDisable";
+ end;
+OnEnable:
+ enablenpc instance_npcname("oct_boss_foot", instance_id());
+ initnpctimer;
+ end;
+OnCall:
+ if (mobcount("1@cash",instance_npcname("oct_boss_foot", instance_id())+"::OnMyMobDead") < 100) {
+ switch(rand(2)) {
+ case 0:
+ instance_announce 0,"Disgusting Octopus : Do you know how many legs octopus have? It doesn't matter, I have unlimited legs!!",bc_map,"0xFFFF00";
+ areamonster "1@cash",192,181,206,195,"Octopus Leg",2193,1,instance_npcname("oct_boss_foot", instance_id())+"::OnMyMobDead";
+ break;
+ case 1:
+ instance_announce 0,"Disgusting Octopus : I...cannot..hold anymore, my babies~ please come out and fight!",bc_map,"0xFFFF00";
+ areamonster "1@cash",192,181,206,195,"Octopus's Henchman ",2192,5,instance_npcname("oct_boss_foot", instance_id())+"::OnMyMobDead";
+ break;
+ }
+ }
+ initnpctimer;
+ end;
+OnTimer10000:
+ stopnpctimer;
+ donpcevent instance_npcname("oct_boss_foot", instance_id())+"::OnCall";
+ end;
+OnDisable:
+ stopnpctimer;
+ killmonster "1@cash",instance_npcname("oct_boss_foot", instance_id())+"::OnMyMobDead"; // Not in official script.
+ disablenpc instance_npcname("oct_boss_foot", instance_id());
+ end;
+OnMyMobDead:
+ end;
+}
+
+1@cash,198,116,0 script oct_boss_warp 45,2,2,{
+ end;
+OnInstanceInit:
+ disablenpc instance_npcname("oct_boss_warp", instance_id());
+ end;
+OnTouch:
+ warp "1@cash",210,172;
+ end;
+}
+
+1@cash,190,208,0 script oct_exit_1 45,2,2,{
+ end;
+OnInstanceInit:
+ disablenpc instance_npcname(strnpcinfo(0), instance_id());
+ end;
+OnTouch:
+ mes "Do you want to go out from the octopus dungeon?";
+ next;
+ if(select("No!:Yes!") == 2)
+ warp "mal_dun01",153,233;
+ close;
+}
+1@cash,198,82,0 duplicate(oct_exit_1) oct_exit_2 45,2,2
+// This is never enabled in the official script.
+//1@cash,200,161,0 duplicate(oct_exit_1) oct_exit_3 45,2,2
+
+// Warp Portals
+//============================================================
+1@cash,193,82,0 warp oct_door1 2,2,1@cash,151,48
+1@cash,154,53,0 warp oct_door2 2,2,1@cash,197,87
+1@cash,187,99,0 warp oct_door3 2,2,1@cash,148,128
+1@cash,153,133,0 warp oct_door4 2,2,1@cash,197,99
+1@cash,209,100,0 warp oct_door5 2,2,1@cash,250,111
+1@cash,244,118,0 warp oct_door6 2,2,1@cash,199,100
+1@cash,209,83,0 warp oct_door7 2,2,1@cash,252,46
+1@cash,246,53,0 warp oct_door8 2,2,1@cash,203,83
diff --git a/npc/re/merchants/blessed_refiner.txt b/npc/re/merchants/blessed_refiner.txt
new file mode 100644
index 000000000..a25701774
--- /dev/null
+++ b/npc/re/merchants/blessed_refiner.txt
@@ -0,0 +1,173 @@
+//===== rAthena Script =======================================
+//= Blessed Refiner
+//===== By: ==================================================
+//= Euphy
+//===== Current Version: =====================================
+//= 1.0
+//===== Compatible With: =====================================
+//= rAthena SVN
+//===== Description: =========================================
+//= [Official Conversion]
+//= Refiners that use Blessed ores to refine equipment.
+//= Upon failure, the equipment is not destroyed. The success
+//= rate is identical to that for Enriched ores.
+//= - "Blacksmith Dister" only refines from +6~12.
+//= NOTE: This NPC is currently disabled on official servers.
+//===== Additional Comments: =================================
+//= 1.0 First version. [Euphy]
+//============================================================
+
+- script ::BlacksmithDister -1,{
+ disable_items;
+ mes "[Blacksmith Dister]";
+ mes "In this highly competitive society, we must be different in order to survive!";
+ mes "I only refine equipment at the +6 ~ 12 levels.";
+ next;
+ mes "[Blacksmith Dister]";
+ mes "I will need ^ff9999Blessed Weapon Ore^000000 for weapons, and ^ff9999Blessed Armor Ore^000000 for armors.";
+ mes "Failed refines ^FF0000will not break or reduce the refine level^000000.";
+ next;
+ mes "[Blacksmith Dister]";
+ mes "How about it? Do you want to refine?";
+ next;
+ setarray .@position$[1],"Head","Body","Left Hand","Right Hand","Robe","Shoes","Accessory 1","Accessory 2","Head 2","Head 3";
+ set .@menu$,"";
+ for(set .@i,1; .@i<=10; set .@i,.@i+1)
+ set .@menu$, .@menu$+((getequipisequiped(.@i))?getequipname(.@i):.@position$[.@i]+"-[Unequipped]")+":";
+ set .@part, select(.@menu$);
+ if (!getequipisequiped(.@part)) {
+ mes "[Blacksmith Dister]";
+ switch(.@part) {
+ case 1:
+ mes "I'm a blacksmith, not a hairstylist.";
+ break;
+ case 2:
+ mes "With my hammer, I will make you a star of the sky.";
+ break;
+ case 3:
+ case 4:
+ mes "Making artificial hands is not my specialty.";
+ break;
+ case 5:
+ mes "Bring out the item so I can refine it!";
+ break;
+ case 6:
+ mes "Where is this weird smell coming from?";
+ break;
+ case 7:
+ case 8:
+ mes "Where is the accessory?";
+ break;
+ case 9:
+ mes "What do you want me to refine?";
+ break;
+ case 10:
+ mes "Huh? What do you want me to do?";
+ break;
+ }
+ close;
+ }
+ if (!getequipisenableref(.@part)) {
+ mes "[Blacksmith Dister]";
+ mes "This item cannot be refined.";
+ close;
+ }
+ set .@equip_refine, getequiprefinerycnt(.@part);
+ if (.@equip_refine < 6 || .@equip_refine > 12) {
+ mes "[Blacksmith Dister]";
+ mes "This equipment has refined to "+.@equip_refine+". I only handle items with refine levels from +6 to +12!";
+ close;
+ }
+ set .@equip_lv, getequipweaponlv(.@part);
+ switch(.@equip_lv) {
+ default:
+ case 0:
+ set .@price,20000;
+ set .@material,6439; //Unbreakable_Def
+ set .@type$,"Armor";
+ break;
+ case 1:
+ set .@price,1000;
+ set .@material,6438; //Unbreakable_Weap
+ set .@type$,"Weapon";
+ break;
+ case 2:
+ set .@price,2000;
+ set .@material,6438; //Unbreakable_Weap
+ set .@type$,"Weapon";
+ break;
+ case 3:
+ set .@price,20000;
+ set .@material,6438; //Unbreakable_Weap
+ set .@type$,"Weapon";
+ break;
+ case 4:
+ set .@price,40000;
+ set .@material,6438; //Unbreakable_Weap
+ set .@type$,"Weapon";
+ break;
+ }
+ set .@ore$,"^ff9999Blessed "+.@type$+" Ore^000000";
+ mes "[Blacksmith Dister]";
+ mes "This "+.@type$+" has been refined to "+.@equip_refine+". To refine it, I need "+.@ore$+" and a "+(.@price/1000)+",000 zeny refining fee.";
+ mes "Do you want to proceed?";
+ next;
+ if(select("Yes:No") == 2) {
+ mes "[Blacksmith Dister]";
+ mes "I am busy, don't joke with me!";
+ close;
+ }
+ if (getequippercentrefinery(.@part) < 100) {
+ mes "[Blacksmith Dister]";
+ mes "This "+.@type$+" has been refined many times. Although it will not disappear upon failure, the "+.@ore$+" will disappear!";
+ next;
+ mes "[Blacksmith Dister]";
+ mes "Of course, the refining fee will not be returned! Do you want to continue?";
+ next;
+ if(select("Yes:No") == 2) {
+ mes "[Blacksmith Dister]";
+ mes "Good. I'd be sad if it failed, too.";
+ close;
+ }
+ }
+ if (countitem(.@material) == 0 || Zeny < .@price) {
+ mes "[Blacksmith Dister]";
+ mes "Materials insufficient.";
+ mes "To refine "+((.@equip_lv)?"a level "+.@equip_lv+" weapon":"armor")+", I need "+.@ore$+" and a "+(.@price/1000)+",000 zeny refining fee.";
+ close;
+ }
+ delitem .@material,1;
+ set Zeny, Zeny-.@price;
+ mes "[Blacksmith Dister]";
+ mes "Tac! Tac! Tac!";
+ if (getequippercentrefinery(.@part) > rand(100) || getequippercentrefinery(.@part) > rand(100)) {
+ specialeffect EF_BLESSING;
+ successrefitem .@part;
+ next;
+ mes "[Blacksmith Dister]";
+ mes "Hahahahahaha!!!";
+ next;
+ mes "[Blacksmith Dister]";
+ mes "Refine was a huge success~ Hahaha!";
+ close;
+ }
+ specialeffect EF_CURSEATTACK;
+ specialeffect2 EF_SUI_EXPLOSION;
+ next;
+ emotion (!rand(5))?e_ag:e_omg;
+ mes "[Blacksmith Dister]";
+ mes "Oh my goodness!!!!";
+ next;
+ mes "[Blacksmith Dister]";
+ mes "Oh! Although it was blessed by "+.@ore$+" to retain the equipment...";
+ next;
+ mes "[Blacksmith Dister]";
+ mes "My mood is worse when I fail!!";
+ close;
+}
+prt_in,52,56,3 duplicate(BlacksmithDister) Blacksmith Dister#prt 826
+payon,148,172,3 duplicate(BlacksmithDister) Blacksmith Dister#pay 826
+alberta_in,20,56,3 duplicate(BlacksmithDister) Blacksmith Dister#alb 826
+yuno_in01,175,18,3 duplicate(BlacksmithDister) Blacksmith Dister#yuno 826
+ein_in01,26,82,3 duplicate(BlacksmithDister) Blacksmith Dister#ein 826
+lhz_in02,280,15,3 duplicate(BlacksmithDister) Blacksmith Dister#lhz 826
diff --git a/npc/re/merchants/coin_exchange.txt b/npc/re/merchants/coin_exchange.txt
index 7ee6a53af..a78491ffc 100644
--- a/npc/re/merchants/coin_exchange.txt
+++ b/npc/re/merchants/coin_exchange.txt
@@ -3,7 +3,7 @@
//===== By: ==================================================
//= Hercules Dev Team
//===== Current Version: =====================================
-//= 1.1
+//= 1.2
//===== Compatible With: =====================================
//= Hercules
//===== Description: =========================================
@@ -12,6 +12,7 @@
//===== Additional Comments: =================================
//= 1.0 First version. [Euphy/Lemongrass]
//= 1.1 Added remaining Malangdo traders. [Euphy/Lemongrass]
+//= 1.2 Added Eclage traders (not fully complete). [Euphy]
//============================================================
// Malangdo
@@ -434,7 +435,7 @@ function script F_mal_coin {
mes "Ahaaa~";
mes "If you want to buy this stuff,";
mes "you can talk to me";
- mes "when you grow up little more.";
+ mes "when you grow up a little more.";
mes "This stuff is too expensive";
mes "for a child~";
close;
@@ -825,3 +826,350 @@ malangdo,150,135,5 script Roving Merchant 495,{
next;
}
}
+
+// Eclage
+//============================================================
+ecl_in01,66,95,2 script Armor Merchant Naphara 436,{
+ mes "[Armor Merchant]";
+ mes "Hello, this is Naphara's store, a place of high class goods.";
+ mes "What would you need?";
+ next;
+ set .@i, select("Str Glove:Int Glove:Agi Glove:Vit Glove:Dex Glove:Luk Glove");
+ mes "[Armor Merchant]";
+ switch(.@i) {
+ case 1: // Str Glove
+ mes "^3131FFStr Glove^000000";
+ mes "^3131FFMHP + 100, MSP + 20^000000";
+ mes "^3131FFATK+1 increases for every STR+10^000000";
+ mes "^3131FFATK +1% added above STR 110^000000";
+ set .@item,2917; //Str_Glove
+ break;
+ case 2:
+ mes "^3131FFInt Glove^000000";
+ mes "^3131FFMHP + 100, MSP + 20^000000";
+ mes "^3131FFMATK+1 increases for every INT+10^000000";
+ mes "^3131FFMATK +1% added above INT 110^000000";
+ set .@item,2918; //Int_Glove
+ break;
+ case 3:
+ mes "^3131FFAgi Glove^000000";
+ mes "^3131FFMHP + 100, MSP + 20^000000";
+ mes "^3131FFFLEE+1 increases for every AGI+10^000000";
+ mes "^3131FFComplete Flee +1 added above AGI 110^000000";
+ set .@item,2919; //Agi_Glove
+ break;
+ case 4:
+ mes "^3131FFVit Glove^000000";
+ mes "^3131FFMHP + 100, MSP + 20^000000";
+ mes "^3131FFMHP+50 for every VIT+10^000000";
+ mes "^3131FFMHP+1% added above VIT 110^000000";
+ set .@item,2920; //Vit_Glove
+ break;
+ case 5:
+ mes "^3131FFDex Glove^000000";
+ mes "^3131FFMHP + 100, MSP + 20^000000";
+ mes "^3131FFHIT+1 increases for every DEX+10^000000";
+ mes "^3131FFRanged attack power +1% added above DEX 110^000000";
+ set .@item,2921; //Dex_Glove
+ break;
+ case 6:
+ mes "^3131FFLuk Glove^000000";
+ mes "^3131FFMHP + 100, MSP + 20^000000";
+ mes "^3131FFCRI+1 increases for every LUK+10^000000";
+ mes "^3131FFCritical damage +1% added above LUK 110^000000";
+ set .@item,2922; //Luk_Glove
+ break;
+ }
+ mes "^3131FFRequired Level: 100^000000";
+ mes "^3131FFSlot: 0^000000";
+ mes "^3131FFWeight: 10^000000";
+ mes "are the characteristic options.";
+ next;
+ mes "[Armor Merchant]";
+ mes "It costs 10 Splendide Coins.";
+ mes "Would you like to buy it?";
+ next;
+ if(select("Buy it.:Don't buy it.") == 2)
+ close;
+ if (countitem(6081) < 10) {
+ mes "[Armor Merchant]";
+ mes "It seems like you don't have enough coins.";
+ close;
+ }
+ mes "[Armor Merchant]";
+ mes "Here you go!"; //custom
+ delitem 6081,10; //Splendide_Coin
+ getitem .@item,1;
+ close;
+}
+
+ecl_in01,64,97,4 script Slot Expert Nattuer#ecl 436,{
+ mes "[Slot Expert]";
+ mes "I am Slot Expert Nattuer.";
+ mes "If you bring me an item from my little brother Naphara along with 5 Splendide Coins, I will open up one Slot for you.";
+ next;
+ if(select("Activate a Slot.:Forget it.") == 2)
+ close;
+ mes "[Slot Expert]";
+ mes "Slot activation is an extremely difficult procedure that can fail even with heightened care and the use of a magnifying lens.";
+ next;
+ mes "[Slot Expert]";
+ mes "Of course, if your heart were as big as that flower-filled land, you wouldn't mind. Right? Should I go for it?";
+ next;
+ if(select("Continue.:Forget it.") == 2)
+ close;
+ mes "[Slot Expert]";
+ mes "Which item would you like to activate with a Slot?";
+ next;
+ setarray .@noslots[0],2917,2918,2919,2920,2921,2922;
+ setarray .@slotted[0],2923,2924,2925,2926,2927,2928;
+ set .@i, select("Str Glove:Int Glove:Ag Glove:Vit Glove:Dex Glove:Luk Glove")-1;
+ set .@item, .@noslots[.@i];
+ set .@new_item, .@slotted[.@i];
+ mes "[Slot Expert]";
+ mes "Let's confirm for the last time. Is the one you want "+getitemname(.@item)+"?";
+ next;
+ if(select("Yes:No") == 2) {
+ mes "[Slot Expert]";
+ mes "Why don't you talk to me when you know for sure.";
+ close;
+ }
+ if (countitem(.@item) == 0) {
+ mes "[Slot Expert]";
+ mes "You don't have that item. Why don't you talk to me when you know for sure.";
+ close;
+ }
+ if (countitem(6081) < 5) {
+ mes "[Slot Expert]";
+ mes "You don't have enough coins. Why don't you talk to me when you know for sure."; //custom
+ close;
+ }
+ delitem 6081,5; //Splendide_Coin
+ delitem .@item,1;
+ //custom to the end
+ if (rand(100) < 5) {
+ mes "[Slot Expert]";
+ mes "Oh no, it failed! I'm sorry, but I warned you this could happen. Better luck next time.";
+ close;
+ }
+ mes "[Slot Expert]";
+ mes "Success! I've activated the slot.";
+ getitem .@new_item,1;
+ close;
+}
+
+ecl_in01,67,39,4 script Replication Expert Palt 445,{
+ emotion e_lv;
+ mes "[Paltu]";
+ mes "Woohoo- Greetings. What are you looking for? Lots of goods here.";
+ next;
+ switch(select("No thanks.:Replication?:I know you got lots up your sleeve!")) {
+ case 1:
+ emotion e_an;
+ mes "[Paltu]";
+ mes "Really? Hmm?";
+ close;
+ case 2:
+ mes "[Paltu]";
+ mes "One can say that there's no one better in Eclage than I at utilizing magic resistance.";
+ next;
+ mes "[Paltu]";
+ mes "I'll give you a good price whatever it is. Just trust me.";
+ next;
+ select("Could you do something for me?");
+ emotion e_no1;
+ mes "[Paltu]";
+ mes "Hey, I like your attitude.";
+ next;
+ mes "[Paltu]";
+ mes "Ah- you know the hat you're wearing?";
+ next;
+ emotion e_what;
+ mes "[Paltu]";
+ mes "Don't you have any of those hats lying around in storage that are solid but too ugly to wear? You do, right?";
+ next;
+ select(".........");
+ emotion e_dots,1;
+ emotion e_heh;
+ mes "[Paltu]";
+ mes "See! I knew it. I knew it from the first minute.";
+ next;
+ mes "[Paltu]";
+ mes "If you bring me ^ff0000 50 Splendide Coins and the ingredients^000000, I'll make you a new hat in the same shape but worn as a ^ff0000Costume^000000.";
+ next;
+ mes "[Paltu]";
+ mes "Hmm, what was it...?";
+ mes "I think you adventurers call them ^0571B0Costumes^000000? right?";
+ next;
+ select("Yes~ What do you need?");
+ mes "[Paltu]";
+ mes "I need 1 ^0571B0hat to replicate^000000 and";
+ mes "I need ^E1281E 4 Crystal Mirrors^000000 for magic resistance, ^E1281E 1 Fairy Magic Powder^000000 as the catalyst, and ^E1281E Emerald, Ruby, Sapphire, Topaz, and Zircon, 10 of each^000000, to be used for amplifying the magic power.";
+ next;
+ emotion e_no;
+ mes "[Paltu]";
+ mes "There's quite a lot of ingredients, right? Well, I can't do anything about that. Dealing with magic power is not a joke.";
+ next;
+ select("Which hats can be replicated?");
+ mes "[Paltu]";
+ mes "Oh! You're pretty sharp!";
+ mes "Almost forgot the most important thing.";
+ next;
+ mes "[Paltu]";
+ mes "Hats that I can replicate are:";
+ mes "^0571B0Frog Hat, Romantic Flower, Magestic Goat, Blush, Valkyrie Helm, Deviruchi Hat, Assassin Mask, Elven Ears, Hahoe Mask, and Boys Cap^000000 a total of 10 types.";
+ next;
+ mes "[Paltu]";
+ mes "What do you think? I'll make it happen as long as I have the ingredients and the compensation.";
+ next;
+ if(select("I'll do it later.:Show me what you got!") == 1) {
+ emotion e_dots;
+ mes "[Paltu]";
+ mes "What? Are you kidding me? Please tell me you are!";
+ close;
+ }
+ break;
+ case 3:
+ break;
+ }
+ mes "[Paltu]";
+ mes "Oh wow.";
+ mes "You made the right call. I thought I was going to starve to death because the Laphines have no interest in pretty hats.";
+ next;
+ mes "[Paltu]";
+ mes "I'll make it a great deal for you. You really should know I'm giving you a good deal here.";
+ next;
+ mes "[Paltu]";
+ mes "Is there something you had in mind? Why don't you take a look?";
+ next;
+ setarray .@items[0],
+ 5447, //Frog_Cap
+ 2269, //Centimental_Flower
+ 2256, //Magestic_Goat
+ 5040, //Blush
+ 5171, //Valkyrie_Helm
+ 5038, //Deviruchi_Cap
+ 5096, //Assassin_Mask_
+ 2286, //Elven_Ears
+ 5176, //Hahoe_Mask
+ 5016; //Boy's_Cap
+ setarray .@costumes[0],
+ 19548, //C_Frog_Cap
+ 19552, //C_Centimental_Flower
+ 19549, //C_Magestic_Goat
+ 19550, //C_Blush
+ 19546, //C_Valkyrie_Helm
+ 19547, //C_Deviruchi_Cap
+ 19553, //C_Assassin_Mask_
+ 19551, //C_Elven_Ears
+ 0, //-- not implemented? --
+ 19545; //C_Boys_Cap
+ if (countitem(6081) >= 50 && countitem(747) >= 4 && countitem(6395) >= 1 && countitem(721) >= 10 && countitem(723) >= 10 && countitem(726) >= 10 && countitem(728) >= 10 && countitem(729) >= 10)
+ set .@item_check,1;
+ for(set .@i,0; .@i<getarraysize(.@items); set .@i,.@i+1) {
+ if (.@item_check && countitem(.@items[.@i]))
+ set .@menu$, .@menu$+getitemname(.@items[.@i])+":"; //custom
+ else
+ set .@menu$, .@menu$+getitemname(.@items[.@i])+" (^777777Insufficient ingredients^000000):";
+ }
+ set .@i, select(.@menu$)-1;
+ set .@item, .@items[.@i];
+ set .@new_item, .@costumes[.@i];
+ mes "[Paltu]";
+ mes "Is ^0571B0"+getitemname(.@item)+"^000000 what you wanted?";
+ next;
+ if (.@item_check == 0 || countitem(.@item) == 0) {
+ emotion e_sob;
+ mes "[Paltu]";
+ mes "Ay... Credit purchases are difficult for me.";
+ next;
+ mes "[Paltu]";
+ mes "^0571B0"+getitemname(.@item)+"^000000 and";
+ mes "^E1281E50 Splendide Coins, 4 Crystal Mirrors, 1 Fairy Magic Powder, 10 of each Emerald, Ruby, Sapphire, Topaz, and Zircon^000000 are necessary.";
+ next;
+ mes "[Paltu]";
+ mes "I'm in a tight spot myself. Please consider my situation also.";
+ close;
+ }
+ //custom to the end
+ if(select("Continue.:Forget it.") == 2)
+ close;
+ delitem .@item,1;
+ delitem 6081,50; //Splendide_Coin
+ delitem 747,4; //Crystal_Mirror
+ delitem 6395,1; //Angel_Magic_Power
+ delitem 721,10; //Azure_Jewel
+ delitem 723,10; //Cardinal_Jewel
+ delitem 726,10; //Blue_Jewel
+ delitem 728,10; //Golden_Jewel
+ delitem 729,10; //Bluish_Green_Jewel
+ getitem .@new_item,1;
+ mes "[Paltu]";
+ mes "Thank you so much! As promised, here is your costume.";
+ close;
+}
+
+ecl_in01,33,98,4 script Herb Merchant Plafina#e 443,{
+ mes "[Herb Merchant]";
+ mes "Welcome, this is Plafina's Herb Store where only the freshest herbs are provided~!";
+ next;
+ switch(select("Snow Flip:Peony Mommy:Slapping Herb:Yggdrasil Dust:End conversation")) {
+ case 1:
+ mes "[Herb Merchant]";
+ mes "Snow Flip has special effects on ^3131FFBurning, Bleeding, Deep Sleep, Sleep^000000.";
+ set .@item,12812; //Snow_Flip
+ set .@cost,5;
+ break;
+ case 2:
+ mes "[Herb Merchant]";
+ mes "Peony Mamy has special effects on ^3131FFFrost, Frozen, Freezing^000000.";
+ set .@item,12813; //Peony_Mommy
+ set .@cost,5;
+ break;
+ case 3:
+ mes "[Herb Merchant]";
+ mes "Slapping Herb has special effects on ^3131FFStun, Fear, Chaos, Hallucination^000000.";
+ set .@item,12814; //Slapping_Herb
+ set .@cost,1;
+ break;
+ case 4:
+ mes "[Herb Merchant]";
+ mes "Yggdrasil Dust has special effects on ^3131FFBlind, Curse, Decrease Agility, Reverse Orcish^000000.";
+ set .@item,12815; //Yggdrasil_Dust
+ set .@cost,1;
+ break;
+ case 5:
+ mes "[Herb Merchant]";
+ mes "Come back anytime.";
+ close;
+ }
+ mes "Requires 5 seconds between uses.";
+ mes "It costs "+.@cost+" Splendide Coin"+((.@cost == 1)?"":"s")+" for each.";
+ next;
+ switch(select("Buy 1.:Buy 10.:Don't buy.")) {
+ case 1:
+ set .@amount,1;
+ break;
+ case 2:
+ set .@amount,10;
+ break;
+ case 3:
+ close;
+ }
+ set .@price,.@amount*.@cost;
+ mes "[Herb Merchant]";
+ mes "Would you like to buy "+.@amount+" "+getitemname(.@item)+"?";
+ next;
+ if(select("Buy.:Don't buy.") == 2)
+ close;
+ if (countitem(6081) < .@price) {
+ mes "[Herb Merchant]";
+ mes "You don't have enough coins.";
+ close;
+ }
+ mes "[Herb Merchant]";
+ mes "Here are your herbs."; //custom
+ delitem 6081,.@price; //Splendide_Coin
+ getitem .@item,.@amount;
+ end;
+}
diff --git a/npc/re/merchants/enchan_mora.txt b/npc/re/merchants/enchan_mora.txt
index 8ff8f758d..b23a33494 100644
--- a/npc/re/merchants/enchan_mora.txt
+++ b/npc/re/merchants/enchan_mora.txt
@@ -3,7 +3,7 @@
//===== By: ==================================================
//= Euphy
//===== Current Version: =====================================
-//= 1.0
+//= 1.1a
//===== Compatible With: =====================================
//= rAthena SVN
//===== Description: =========================================
@@ -12,6 +12,8 @@
//= Mora coins.
//===== Additional Comments: =================================
//= 1.0 First Version. [Euphy]
+//= 1.1 Optimized. [Euphy]
+//= 1.1a Bug fixes. [Lemongrass]
//============================================================
// Arch Bishop Enchants :: coin_arc
@@ -217,70 +219,15 @@ mora,96,74,5 script Master of Relics#pa0829 495,{
switch(.@enchant_type) {
case 1:
set .@i, rand(1,1487);
- if (.@i <= 16) setarray .@enchants[2],4710,.@sp; //Inteligence2 [sp]
- else if (.@i <= 32) setarray .@enchants[2],4710,4799; //Inteligence2 HP500
- else if (.@i <= 48) setarray .@enchants[2],4710,4766; //Inteligence2 Atk2
- else if (.@i <= 64) setarray .@enchants[2],4710,4788; //Inteligence2 Mdef6
- else if (.@i <= 80) setarray .@enchants[2],4720,.@sp; //Dexterity1 [sp]
- else if (.@i <= 96) setarray .@enchants[2],4720,4799; //Dexterity1 HP500
- else if (.@i <= 112) setarray .@enchants[2],4720,4766; //Dexterity1 Atk2
- else if (.@i <= 128) setarray .@enchants[2],4720,4788; //Dexterity1 Mdef6
- else if (.@i <= 144) setarray .@enchants[2],4721,.@sp; //Dexterity2 [sp]
- else if (.@i <= 160) setarray .@enchants[2],4721,4799; //Dexterity2 HP500
- else if (.@i <= 176) setarray .@enchants[2],4721,4766; //Dexterity2 Atk2
- else if (.@i <= 192) setarray .@enchants[2],4721,4788; //Dexterity2 Mdef6
- else if (.@i <= 208) setarray .@enchants[2],4740,.@sp; //Vitality1 [sp]
- else if (.@i <= 224) setarray .@enchants[2],4740,4799; //Vitality1 HP500
- else if (.@i <= 240) setarray .@enchants[2],4740,4766; //Vitality1 Atk2
- else if (.@i <= 256) setarray .@enchants[2],4740,4788; //Vitality1 Mdef6
- else if (.@i <= 272) setarray .@enchants[2],4710,.@sp; //Inteligence2 [sp]
- else if (.@i <= 288) setarray .@enchants[2],4710,4799; //Inteligence2 HP500
- else if (.@i <= 304) setarray .@enchants[2],4710,4766; //Inteligence2 Atk2
- else if (.@i <= 320) setarray .@enchants[2],4710,4788; //Inteligence2 Mdef6
- else if (.@i <= 336) setarray .@enchants[2],4720,.@sp; //Dexterity1 [sp]
- else if (.@i <= 352) setarray .@enchants[2],4720,4799; //Dexterity1 HP500
- else if (.@i <= 368) setarray .@enchants[2],4720,4766; //Dexterity1 Atk2
- else if (.@i <= 384) setarray .@enchants[2],4720,4788; //Dexterity1 Mdef6
- else if (.@i <= 400) setarray .@enchants[2],4721,.@sp; //Dexterity2 [sp]
- else if (.@i <= 416) setarray .@enchants[2],4721,4799; //Dexterity2 HP500
- else if (.@i <= 432) setarray .@enchants[2],4721,4766; //Dexterity2 Atk2
- else if (.@i <= 448) setarray .@enchants[2],4721,4788; //Dexterity2 Mdef6
- else if (.@i <= 464) setarray .@enchants[2],4740,.@sp; //Vitality1 [sp]
- else if (.@i <= 480) setarray .@enchants[2],4740,4799; //Vitality1 HP500
- else if (.@i <= 496) setarray .@enchants[2],4740,4766; //Vitality1 Atk2
- else if (.@i <= 512) setarray .@enchants[2],4740,4788; //Vitality1 Mdef6
- else if (.@i <= 528) setarray .@enchants[2],4710,.@sp; //Inteligence2 [sp]
- else if (.@i <= 544) setarray .@enchants[2],4710,4799; //Inteligence2 HP500
- else if (.@i <= 560) setarray .@enchants[2],4710,4766; //Inteligence2 Atk2
- else if (.@i <= 576) setarray .@enchants[2],4710,4788; //Inteligence2 Mdef6
- else if (.@i <= 592) setarray .@enchants[2],4720,.@sp; //Dexterity1 [sp]
- else if (.@i <= 608) setarray .@enchants[2],4720,4799; //Dexterity1 HP500
- else if (.@i <= 624) setarray .@enchants[2],4720,4766; //Dexterity1 Atk2
- else if (.@i <= 640) setarray .@enchants[2],4720,4788; //Dexterity1 Mdef6
- else if (.@i <= 656) setarray .@enchants[2],4721,.@sp; //Dexterity2 [sp]
- else if (.@i <= 672) setarray .@enchants[2],4721,4799; //Dexterity2 HP500
- else if (.@i <= 688) setarray .@enchants[2],4721,4766; //Dexterity2 Atk2
- else if (.@i <= 704) setarray .@enchants[2],4721,4788; //Dexterity2 Mdef6
- else if (.@i <= 720) setarray .@enchants[2],4740,.@sp; //Vitality1 [sp]
- else if (.@i <= 736) setarray .@enchants[2],4740,4799; //Vitality1 HP500
- else if (.@i <= 752) setarray .@enchants[2],4740,4766; //Vitality1 Atk2
- else if (.@i <= 768) setarray .@enchants[2],4740,4788; //Vitality1 Mdef6
- else if (.@i <= 784) setarray .@enchants[2],4710,.@sp; //Inteligence2 [sp]
- else if (.@i <= 800) setarray .@enchants[2],4710,4799; //Inteligence2 HP500
- else if (.@i <= 816) setarray .@enchants[2],4710,4766; //Inteligence2 Atk2
- else if (.@i <= 832) setarray .@enchants[2],4710,4788; //Inteligence2 Mdef6
- else if (.@i <= 848) setarray .@enchants[2],4720,.@sp; //Dexterity1 [sp]
- else if (.@i <= 864) setarray .@enchants[2],4720,4799; //Dexterity1 HP500
- else if (.@i <= 880) setarray .@enchants[2],4720,4766; //Dexterity1 Atk2
- else if (.@i <= 896) setarray .@enchants[2],4720,4788; //Dexterity1 Mdef6
- else if (.@i <= 912) setarray .@enchants[2],4721,.@sp; //Dexterity2 [sp]
- else if (.@i <= 928) setarray .@enchants[2],4721,4799; //Dexterity2 HP500
- else if (.@i <= 944) setarray .@enchants[2],4721,4766; //Dexterity2 Atk2
- else if (.@i <= 960) setarray .@enchants[2],4721,4788; //Dexterity2 Mdef6
- else if (.@i <= 976) setarray .@enchants[2],4740,.@sp; //Vitality1 [sp]
- else if (.@i <= 992) setarray .@enchants[2],4740,4799; //Vitality1 HP500
- else if (.@i <= 1008) setarray .@enchants[2],4740,4766; //Vitality1 Atk2
- else if (.@i <= 1024) setarray .@enchants[2],4740,4788; //Vitality1 Mdef6
+ if (.@i <= 1024) {
+ // Basic combinations
+ // (raw: .@i increments by 16, 4 repeats)
+ setarray .@enchant_slot2[0],4710,4720,4721,4240; //Inteligence2,Dexterity1,Dexterity2,Vitality1
+ setarray .@enchant_slot3[0],.@sp,4799,4766,4788; //[sp],HP500,Atk2,Mdef6
+ setarray .@enchants[2],
+ .@enchant_slot2[rand(getarraysize(.@enchant_slot2))],
+ .@enchant_slot3[rand(getarraysize(.@enchant_slot3))];
+ }
else if (.@i <= 1040) setarray .@enchants[2],.@sp,.@sp; //[sp] [sp]
else if (.@i <= 1487) {
mes "[Relice]";
@@ -290,70 +237,17 @@ mora,96,74,5 script Master of Relics#pa0829 495,{
break;
case 2:
set .@i, rand(1,1487);
- if (.@i <= 16) setarray .@enchants[1],4710,4711,4764; //Inteligence1 Inteligence2 Critical5
- else if (.@i <= 32) setarray .@enchants[1],4710,4711,4799; //Inteligence1 Inteligence2 HP500
- else if (.@i <= 48) setarray .@enchants[1],4710,4711,4766; //Inteligence1 Inteligence2 Atk2
- else if (.@i <= 64) setarray .@enchants[1],4710,4711,4788; //Inteligence1 Inteligence2 Mdef6
- else if (.@i <= 80) setarray .@enchants[1],4710,4720,4764; //Inteligence1 Dexterity1 Critical5
- else if (.@i <= 96) setarray .@enchants[1],4710,4720,4799; //Inteligence1 Dexterity1 HP500
- else if (.@i <= 112) setarray .@enchants[1],4710,4720,4766; //Inteligence1 Dexterity1 Atk2
- else if (.@i <= 128) setarray .@enchants[1],4710,4720,4788; //Inteligence1 Dexterity1 Mdef6
- else if (.@i <= 144) setarray .@enchants[1],4710,4721,4764; //Inteligence1 Dexterity2 Critical5
- else if (.@i <= 160) setarray .@enchants[1],4710,4721,4799; //Inteligence1 Dexterity2 HP500
- else if (.@i <= 176) setarray .@enchants[1],4710,4721,4766; //Inteligence1 Dexterity2 Atk2
- else if (.@i <= 192) setarray .@enchants[1],4710,4721,4788; //Inteligence1 Dexterity2 Mdef6
- else if (.@i <= 208) setarray .@enchants[1],4710,4740,4764; //Inteligence1 Vitality1 Critical5
- else if (.@i <= 224) setarray .@enchants[1],4710,4740,4799; //Inteligence1 Vitality1 HP500
- else if (.@i <= 240) setarray .@enchants[1],4710,4740,4766; //Inteligence1 Vitality1 Atk2
- else if (.@i <= 256) setarray .@enchants[1],4710,4740,4788; //Inteligence1 Vitality1 Mdef6
- else if (.@i <= 272) setarray .@enchants[1],4711,4711,4764; //Inteligence2 Inteligence2 Critical5
- else if (.@i <= 288) setarray .@enchants[1],4711,4711,4799; //Inteligence2 Inteligence2 HP500
- else if (.@i <= 304) setarray .@enchants[1],4711,4711,4766; //Inteligence2 Inteligence2 Atk2
- else if (.@i <= 320) setarray .@enchants[1],4711,4711,4788; //Inteligence2 Inteligence2 Mdef6
- else if (.@i <= 336) setarray .@enchants[1],4711,4720,4764; //Inteligence2 Dexterity1 Critical5
- else if (.@i <= 352) setarray .@enchants[1],4711,4720,4799; //Inteligence2 Dexterity1 HP500
- else if (.@i <= 368) setarray .@enchants[1],4711,4720,4766; //Inteligence2 Dexterity1 Atk2
- else if (.@i <= 384) setarray .@enchants[1],4711,4720,4788; //Inteligence2 Dexterity1 Mdef6
- else if (.@i <= 400) setarray .@enchants[1],4711,4721,4764; //Inteligence2 Dexterity2 Critical5
- else if (.@i <= 416) setarray .@enchants[1],4711,4721,4799; //Inteligence2 Dexterity2 HP500
- else if (.@i <= 432) setarray .@enchants[1],4711,4721,4766; //Inteligence2 Dexterity2 Atk2
- else if (.@i <= 448) setarray .@enchants[1],4711,4721,4788; //Inteligence2 Dexterity2 Mdef6
- else if (.@i <= 464) setarray .@enchants[1],4711,4740,4764; //Inteligence2 Vitality1 Critical5
- else if (.@i <= 480) setarray .@enchants[1],4711,4740,4799; //Inteligence2 Vitality1 HP500
- else if (.@i <= 496) setarray .@enchants[1],4711,4740,4766; //Inteligence2 Vitality1 Atk2
- else if (.@i <= 512) setarray .@enchants[1],4711,4740,4788; //Inteligence2 Vitality1 Mdef6
- else if (.@i <= 528) setarray .@enchants[1],4720,4711,4764; //Dexterity1 Inteligence2 Critical5
- else if (.@i <= 544) setarray .@enchants[1],4720,4711,4799; //Dexterity1 Inteligence2 HP500
- else if (.@i <= 560) setarray .@enchants[1],4720,4711,4766; //Dexterity1 Inteligence2 Atk2
- else if (.@i <= 576) setarray .@enchants[1],4720,4711,4788; //Dexterity1 Inteligence2 Mdef6
- else if (.@i <= 592) setarray .@enchants[1],4720,4720,4764; //Dexterity1 Dexterity1 Critical5
- else if (.@i <= 608) setarray .@enchants[1],4720,4720,4799; //Dexterity1 Dexterity1 HP500
- else if (.@i <= 624) setarray .@enchants[1],4720,4720,4766; //Dexterity1 Dexterity1 Atk2
- else if (.@i <= 640) setarray .@enchants[1],4720,4720,4788; //Dexterity1 Dexterity1 Mdef6
- else if (.@i <= 656) setarray .@enchants[1],4720,4721,4764; //Dexterity1 Dexterity2 Critical5
- else if (.@i <= 672) setarray .@enchants[1],4720,4721,4799; //Dexterity1 Dexterity2 HP500
- else if (.@i <= 688) setarray .@enchants[1],4720,4721,4766; //Dexterity1 Dexterity2 Atk2
- else if (.@i <= 704) setarray .@enchants[1],4720,4721,4788; //Dexterity1 Dexterity2 Mdef6
- else if (.@i <= 720) setarray .@enchants[1],4720,4740,4764; //Dexterity1 Vitality1 Critical5
- else if (.@i <= 736) setarray .@enchants[1],4720,4740,4799; //Dexterity1 Vitality1 HP500
- else if (.@i <= 752) setarray .@enchants[1],4720,4740,4766; //Dexterity1 Vitality1 Atk2
- else if (.@i <= 768) setarray .@enchants[1],4720,4740,4788; //Dexterity1 Vitality1 Mdef6
- else if (.@i <= 784) setarray .@enchants[1],4721,4711,4764; //Dexterity2 Inteligence2 Critical5
- else if (.@i <= 800) setarray .@enchants[1],4721,4711,4799; //Dexterity2 Inteligence2 HP500
- else if (.@i <= 816) setarray .@enchants[1],4721,4711,4766; //Dexterity2 Inteligence2 Atk2
- else if (.@i <= 832) setarray .@enchants[1],4721,4711,4788; //Dexterity2 Inteligence2 Mdef6
- else if (.@i <= 848) setarray .@enchants[1],4721,4720,4764; //Dexterity2 Dexterity1 Critical5
- else if (.@i <= 864) setarray .@enchants[1],4721,4720,4799; //Dexterity2 Dexterity1 HP500
- else if (.@i <= 880) setarray .@enchants[1],4721,4720,4766; //Dexterity2 Dexterity1 Atk2
- else if (.@i <= 896) setarray .@enchants[1],4721,4720,4788; //Dexterity2 Dexterity1 Mdef6
- else if (.@i <= 912) setarray .@enchants[1],4721,4721,4764; //Dexterity2 Dexterity2 Critical5
- else if (.@i <= 928) setarray .@enchants[1],4721,4721,4799; //Dexterity2 Dexterity2 HP500
- else if (.@i <= 944) setarray .@enchants[1],4721,4721,4766; //Dexterity2 Dexterity2 Atk2
- else if (.@i <= 960) setarray .@enchants[1],4721,4721,4788; //Dexterity2 Dexterity2 Mdef6
- else if (.@i <= 976) setarray .@enchants[1],4721,4740,4764; //Dexterity2 Vitality1 Critical5
- else if (.@i <= 992) setarray .@enchants[1],4721,4740,4799; //Dexterity2 Vitality1 HP500
- else if (.@i <= 1008) setarray .@enchants[1],4721,4740,4766; //Dexterity2 Vitality1 Atk2
- else if (.@i <= 1024) setarray .@enchants[1],4721,4740,4788; //Dexterity2 Vitality1 Mdef6
+ if (.@i <= 1024) {
+ // Basic combinations
+ // (raw: .@i increments by 16)
+ setarray .@enchant_slot1[0],4710,4711,4720,4721; //Inteligence1,Inteligence2,Dexterity1,Dexterity2
+ setarray .@enchant_slot2[0],4711,4720,4721,4740; //Inteligence2,Dexterity1,Dexterity2,Vitality1
+ setarray .@enchant_slot3[0],4764,4799,4766,4788; //Critical5,HP500,Atk2,Mdef6
+ setarray .@enchants[1],
+ .@enchant_slot1[rand(getarraysize(.@enchant_slot1))],
+ .@enchant_slot2[rand(getarraysize(.@enchant_slot2))],
+ .@enchant_slot3[rand(getarraysize(.@enchant_slot3))];
+ }
else if (.@i <= 1026) setarray .@enchants[1],4761,4761,4761; //Matk2 Matk2 Matk2
else if (.@i <= 1028) setarray .@enchants[1],4712,4713,4713; //Inteligence3 Inteligence4 Inteligence4
else if (.@i <= 1030) setarray .@enchants[1],4712,4761,4761; //Inteligence3 Matk2 Matk2
@@ -370,70 +264,15 @@ mora,96,74,5 script Master of Relics#pa0829 495,{
break;
case 3:
set .@i, rand(1,2852);
- if (.@i <= 31) setarray .@enchants[2],4720,4710; //Dexterity1 Inteligence1
- else if (.@i <= 62) setarray .@enchants[2],4720,4711; //Dexterity1 Inteligence2
- else if (.@i <= 93) setarray .@enchants[2],4720,4721; //Dexterity1 Dexterity2
- else if (.@i <= 124) setarray .@enchants[2],4720,4760; //Dexterity1 Matk1
- else if (.@i <= 155) setarray .@enchants[2],4740,4710; //Vitality1 Inteligence1
- else if (.@i <= 186) setarray .@enchants[2],4740,4711; //Vitality1 Inteligence2
- else if (.@i <= 217) setarray .@enchants[2],4740,4721; //Vitality1 Dexterity2
- else if (.@i <= 248) setarray .@enchants[2],4740,4760; //Vitality1 Matk1
- else if (.@i <= 279) setarray .@enchants[2],4741,4710; //Vitality2 Inteligence1
- else if (.@i <= 310) setarray .@enchants[2],4741,4711; //Vitality2 Inteligence2
- else if (.@i <= 341) setarray .@enchants[2],4741,4721; //Vitality2 Dexterity2
- else if (.@i <= 372) setarray .@enchants[2],4741,4760; //Vitality2 Matk1
- else if (.@i <= 403) setarray .@enchants[2],4801,4710; //SP100 Inteligence1
- else if (.@i <= 434) setarray .@enchants[2],4801,4711; //SP100 Inteligence2
- else if (.@i <= 465) setarray .@enchants[2],4801,4721; //SP100 Dexterity2
- else if (.@i <= 496) setarray .@enchants[2],4801,4760; //SP100 Matk1
- else if (.@i <= 527) setarray .@enchants[2],4720,4710; //Dexterity1 Inteligence1
- else if (.@i <= 558) setarray .@enchants[2],4720,4711; //Dexterity1 Inteligence2
- else if (.@i <= 589) setarray .@enchants[2],4720,4721; //Dexterity1 Dexterity2
- else if (.@i <= 620) setarray .@enchants[2],4720,4760; //Dexterity1 Matk1
- else if (.@i <= 651) setarray .@enchants[2],4740,4710; //Vitality1 Inteligence1
- else if (.@i <= 682) setarray .@enchants[2],4740,4711; //Vitality1 Inteligence2
- else if (.@i <= 713) setarray .@enchants[2],4740,4721; //Vitality1 Dexterity2
- else if (.@i <= 744) setarray .@enchants[2],4740,4760; //Vitality1 Matk1
- else if (.@i <= 775) setarray .@enchants[2],4741,4710; //Vitality2 Inteligence1
- else if (.@i <= 806) setarray .@enchants[2],4741,4711; //Vitality2 Inteligence2
- else if (.@i <= 837) setarray .@enchants[2],4741,4721; //Vitality2 Dexterity2
- else if (.@i <= 868) setarray .@enchants[2],4741,4760; //Vitality2 Matk1
- else if (.@i <= 899) setarray .@enchants[2],4801,4710; //SP100 Inteligence1
- else if (.@i <= 930) setarray .@enchants[2],4801,4711; //SP100 Inteligence2
- else if (.@i <= 961) setarray .@enchants[2],4801,4721; //SP100 Dexterity2
- else if (.@i <= 992) setarray .@enchants[2],4801,4760; //SP100 Matk1
- else if (.@i <= 1023) setarray .@enchants[2],4720,4710; //Dexterity1 Inteligence1
- else if (.@i <= 1054) setarray .@enchants[2],4720,4711; //Dexterity1 Inteligence2
- else if (.@i <= 1085) setarray .@enchants[2],4720,4721; //Dexterity1 Dexterity2
- else if (.@i <= 1116) setarray .@enchants[2],4720,4760; //Dexterity1 Matk1
- else if (.@i <= 1147) setarray .@enchants[2],4740,4710; //Vitality1 Inteligence1
- else if (.@i <= 1178) setarray .@enchants[2],4740,4711; //Vitality1 Inteligence2
- else if (.@i <= 1209) setarray .@enchants[2],4740,4721; //Vitality1 Dexterity2
- else if (.@i <= 1240) setarray .@enchants[2],4740,4760; //Vitality1 Matk1
- else if (.@i <= 1271) setarray .@enchants[2],4741,4710; //Vitality2 Inteligence1
- else if (.@i <= 1302) setarray .@enchants[2],4741,4711; //Vitality2 Inteligence2
- else if (.@i <= 1333) setarray .@enchants[2],4741,4721; //Vitality2 Dexterity2
- else if (.@i <= 1364) setarray .@enchants[2],4741,4760; //Vitality2 Matk1
- else if (.@i <= 1395) setarray .@enchants[2],4801,4710; //SP100 Inteligence1
- else if (.@i <= 1426) setarray .@enchants[2],4801,4711; //SP100 Inteligence2
- else if (.@i <= 1457) setarray .@enchants[2],4801,4721; //SP100 Dexterity2
- else if (.@i <= 1488) setarray .@enchants[2],4801,4760; //SP100 Matk1
- else if (.@i <= 1519) setarray .@enchants[2],4720,4710; //Dexterity1 Inteligence1
- else if (.@i <= 1550) setarray .@enchants[2],4720,4711; //Dexterity1 Inteligence2
- else if (.@i <= 1581) setarray .@enchants[2],4720,4721; //Dexterity1 Dexterity2
- else if (.@i <= 1612) setarray .@enchants[2],4720,4760; //Dexterity1 Matk1
- else if (.@i <= 1643) setarray .@enchants[2],4740,4710; //Vitality1 Inteligence1
- else if (.@i <= 1674) setarray .@enchants[2],4740,4711; //Vitality1 Inteligence2
- else if (.@i <= 1705) setarray .@enchants[2],4740,4721; //Vitality1 Dexterity2
- else if (.@i <= 1736) setarray .@enchants[2],4740,4760; //Vitality1 Matk1
- else if (.@i <= 1767) setarray .@enchants[2],4741,4710; //Vitality2 Inteligence1
- else if (.@i <= 1798) setarray .@enchants[2],4741,4711; //Vitality2 Inteligence2
- else if (.@i <= 1829) setarray .@enchants[2],4741,4721; //Vitality2 Dexterity2
- else if (.@i <= 1860) setarray .@enchants[2],4741,4760; //Vitality2 Matk1
- else if (.@i <= 1891) setarray .@enchants[2],4801,4710; //SP100 Inteligence1
- else if (.@i <= 1922) setarray .@enchants[2],4801,4711; //SP100 Inteligence2
- else if (.@i <= 1953) setarray .@enchants[2],4801,4721; //SP100 Dexterity2
- else if (.@i <= 1984) setarray .@enchants[2],4801,4760; //SP100 Matk1
+ if (.@i <= 1984) {
+ // Basic combinations
+ // (raw: .@i increments by 31, 4 repeats)
+ setarray .@enchant_slot2[0],4720,4740,4741,4801; //Dexterity1,Vitality1,Vitality2,SP100
+ setarray .@enchant_slot3[0],4710,4711,4721,4760; //Inteligence1,Inteligence2,Dexterity2,Matk1
+ setarray .@enchants[2],
+ .@enchant_slot2[rand(getarraysize(.@enchant_slot2))],
+ .@enchant_slot3[rand(getarraysize(.@enchant_slot3))];
+ }
else if (.@i <= 1986) setarray .@enchants[2],4761,4761; //Matk2 Matk2
else if (.@i <= 1988) setarray .@enchants[2],4761,4723; //Matk2 Dexterity4
else if (.@i <= 1990) setarray .@enchants[2],4761,4714; //Matk2 Inteligence5
@@ -448,70 +287,15 @@ mora,96,74,5 script Master of Relics#pa0829 495,{
break;
case 4:
set .@i, rand(1,2852);
- if (.@i <= 31) setarray .@enchants[2],4720,4700; //Dexterity1 Strength1
- else if (.@i <= 62) setarray .@enchants[2],4720,4701; //Dexterity1 Strength2
- else if (.@i <= 93) setarray .@enchants[2],4720,4721; //Dexterity1 Dexterity2
- else if (.@i <= 124) setarray .@enchants[2],4720,4767; //Dexterity1 Atk3
- else if (.@i <= 155) setarray .@enchants[2],4740,4700; //Vitality1 Strength1
- else if (.@i <= 186) setarray .@enchants[2],4740,4701; //Vitality1 Strength2
- else if (.@i <= 217) setarray .@enchants[2],4740,4721; //Vitality1 Dexterity2
- else if (.@i <= 248) setarray .@enchants[2],4740,4767; //Vitality1 Atk3
- else if (.@i <= 279) setarray .@enchants[2],4741,4700; //Vitality2 Strength1
- else if (.@i <= 310) setarray .@enchants[2],4741,4701; //Vitality2 Strength2
- else if (.@i <= 341) setarray .@enchants[2],4741,4721; //Vitality2 Dexterity2
- else if (.@i <= 372) setarray .@enchants[2],4741,4767; //Vitality2 Atk3
- else if (.@i <= 403) setarray .@enchants[2],4701,4700; //Strength2 Strength1
- else if (.@i <= 434) setarray .@enchants[2],4701,4701; //Strength2 Strength2
- else if (.@i <= 465) setarray .@enchants[2],4701,4721; //Strength2 Dexterity2
- else if (.@i <= 496) setarray .@enchants[2],4701,4767; //Strength2 Atk3
- else if (.@i <= 527) setarray .@enchants[2],4720,4700; //Dexterity1 Strength1
- else if (.@i <= 558) setarray .@enchants[2],4720,4701; //Dexterity1 Strength2
- else if (.@i <= 589) setarray .@enchants[2],4720,4721; //Dexterity1 Dexterity2
- else if (.@i <= 620) setarray .@enchants[2],4720,4767; //Dexterity1 Atk3
- else if (.@i <= 651) setarray .@enchants[2],4740,4700; //Vitality1 Strength1
- else if (.@i <= 682) setarray .@enchants[2],4740,4701; //Vitality1 Strength2
- else if (.@i <= 713) setarray .@enchants[2],4740,4721; //Vitality1 Dexterity2
- else if (.@i <= 744) setarray .@enchants[2],4740,4767; //Vitality1 Atk3
- else if (.@i <= 775) setarray .@enchants[2],4741,4700; //Vitality2 Strength1
- else if (.@i <= 806) setarray .@enchants[2],4741,4701; //Vitality2 Strength2
- else if (.@i <= 837) setarray .@enchants[2],4741,4721; //Vitality2 Dexterity2
- else if (.@i <= 868) setarray .@enchants[2],4741,4767; //Vitality2 Atk3
- else if (.@i <= 899) setarray .@enchants[2],4701,4700; //Strength2 Strength1
- else if (.@i <= 930) setarray .@enchants[2],4701,4701; //Strength2 Strength2
- else if (.@i <= 961) setarray .@enchants[2],4701,4721; //Strength2 Dexterity2
- else if (.@i <= 992) setarray .@enchants[2],4701,4767; //Strength2 Atk3
- else if (.@i <= 1023) setarray .@enchants[2],4720,4700; //Dexterity1 Strength1
- else if (.@i <= 1054) setarray .@enchants[2],4720,4701; //Dexterity1 Strength2
- else if (.@i <= 1085) setarray .@enchants[2],4720,4721; //Dexterity1 Dexterity2
- else if (.@i <= 1116) setarray .@enchants[2],4720,4767; //Dexterity1 Atk3
- else if (.@i <= 1147) setarray .@enchants[2],4740,4700; //Vitality1 Strength1
- else if (.@i <= 1178) setarray .@enchants[2],4740,4701; //Vitality1 Strength2
- else if (.@i <= 1209) setarray .@enchants[2],4740,4721; //Vitality1 Dexterity2
- else if (.@i <= 1240) setarray .@enchants[2],4740,4767; //Vitality1 Atk3
- else if (.@i <= 1271) setarray .@enchants[2],4741,4700; //Vitality2 Strength1
- else if (.@i <= 1302) setarray .@enchants[2],4741,4701; //Vitality2 Strength2
- else if (.@i <= 1333) setarray .@enchants[2],4741,4721; //Vitality2 Dexterity2
- else if (.@i <= 1364) setarray .@enchants[2],4741,4767; //Vitality2 Atk3
- else if (.@i <= 1395) setarray .@enchants[2],4701,4700; //Strength2 Strength1
- else if (.@i <= 1426) setarray .@enchants[2],4701,4701; //Strength2 Strength2
- else if (.@i <= 1457) setarray .@enchants[2],4701,4721; //Strength2 Dexterity2
- else if (.@i <= 1488) setarray .@enchants[2],4701,4767; //Strength2 Atk3
- else if (.@i <= 1519) setarray .@enchants[2],4720,4700; //Dexterity1 Strength1
- else if (.@i <= 1550) setarray .@enchants[2],4720,4701; //Dexterity1 Strength2
- else if (.@i <= 1581) setarray .@enchants[2],4720,4721; //Dexterity1 Dexterity2
- else if (.@i <= 1612) setarray .@enchants[2],4720,4767; //Dexterity1 Atk3
- else if (.@i <= 1643) setarray .@enchants[2],4740,4700; //Vitality1 Strength1
- else if (.@i <= 1674) setarray .@enchants[2],4740,4701; //Vitality1 Strength2
- else if (.@i <= 1705) setarray .@enchants[2],4740,4721; //Vitality1 Dexterity2
- else if (.@i <= 1736) setarray .@enchants[2],4740,4767; //Vitality1 Atk3
- else if (.@i <= 1767) setarray .@enchants[2],4741,4700; //Vitality2 Strength1
- else if (.@i <= 1798) setarray .@enchants[2],4741,4701; //Vitality2 Strength2
- else if (.@i <= 1829) setarray .@enchants[2],4741,4721; //Vitality2 Dexterity2
- else if (.@i <= 1860) setarray .@enchants[2],4741,4767; //Vitality2 Atk3
- else if (.@i <= 1891) setarray .@enchants[2],4701,4700; //Strength2 Strength1
- else if (.@i <= 1922) setarray .@enchants[2],4701,4701; //Strength2 Strength2
- else if (.@i <= 1953) setarray .@enchants[2],4701,4721; //Strength2 Dexterity2
- else if (.@i <= 1984) setarray .@enchants[2],4701,4767; //Strength2 Atk3
+ if (.@i <= 1984) {
+ // Basic combinations
+ // (raw: .@i increments by 31, 4 repeats)
+ setarray .@enchant_slot2[0],4720,4740,4741,4701; //Dexterity1,Vitality1,Vitality2,Strength2
+ setarray .@enchant_slot3[0],4700,4701,4721,4767; //Strength1,Strength2,Dexterity2,Atk3
+ setarray .@enchants[2],
+ .@enchant_slot2[rand(getarraysize(.@enchant_slot2))],
+ .@enchant_slot3[rand(getarraysize(.@enchant_slot3))];
+ }
else if (.@i <= 1986) setarray .@enchants[2],4767,4767; //Atk3 Atk3
else if (.@i <= 1988) setarray .@enchants[2],4767,4723; //Atk3 Dexterity4
else if (.@i <= 1990) setarray .@enchants[2],4767,4704; //Atk3 Strength5
@@ -684,70 +468,15 @@ mora,99,93,5 script Artifact Crafter#pa0829 495,{
switch(.@enchant_type) {
case 1:
set .@i, rand(1,2847);
- if (.@i <= 31) setarray .@enchants[2],4720,4786; //Dexterity1 Mdef2
- else if (.@i <= 62) setarray .@enchants[2],4720,4760; //Dexterity1 Matk1
- else if (.@i <= 93) setarray .@enchants[2],4720,4711; //Dexterity1 Inteligence2
- else if (.@i <= 124) setarray .@enchants[2],4720,4721; //Dexterity1 Dexterity2
- else if (.@i <= 155) setarray .@enchants[2],4796,4786; //HP200 Mdef2
- else if (.@i <= 186) setarray .@enchants[2],4796,4760; //HP200 Matk1
- else if (.@i <= 217) setarray .@enchants[2],4796,4711; //HP200 Inteligence2
- else if (.@i <= 248) setarray .@enchants[2],4796,4721; //HP200 Dexterity2
- else if (.@i <= 279) setarray .@enchants[2],4710,4786; //Inteligence1 Mdef2
- else if (.@i <= 310) setarray .@enchants[2],4710,4760; //Inteligence1 Matk1
- else if (.@i <= 341) setarray .@enchants[2],4710,4711; //Inteligence1 Inteligence2
- else if (.@i <= 372) setarray .@enchants[2],4710,4721; //Inteligence1 Dexterity2
- else if (.@i <= 403) setarray .@enchants[2],4801,4786; //SP100 Mdef2
- else if (.@i <= 434) setarray .@enchants[2],4801,4760; //SP100 Matk1
- else if (.@i <= 465) setarray .@enchants[2],4801,4711; //SP100 Inteligence2
- else if (.@i <= 496) setarray .@enchants[2],4801,4721; //SP100 Dexterity2
- else if (.@i <= 527) setarray .@enchants[2],4720,4786; //Dexterity1 Mdef2
- else if (.@i <= 558) setarray .@enchants[2],4720,4760; //Dexterity1 Matk1
- else if (.@i <= 589) setarray .@enchants[2],4720,4711; //Dexterity1 Inteligence2
- else if (.@i <= 620) setarray .@enchants[2],4720,4721; //Dexterity1 Dexterity2
- else if (.@i <= 651) setarray .@enchants[2],4796,4786; //HP200 Mdef2
- else if (.@i <= 682) setarray .@enchants[2],4796,4760; //HP200 Matk1
- else if (.@i <= 713) setarray .@enchants[2],4796,4711; //HP200 Inteligence2
- else if (.@i <= 744) setarray .@enchants[2],4796,4721; //HP200 Dexterity2
- else if (.@i <= 775) setarray .@enchants[2],4710,4786; //Inteligence1 Mdef2
- else if (.@i <= 806) setarray .@enchants[2],4710,4760; //Inteligence1 Matk1
- else if (.@i <= 837) setarray .@enchants[2],4710,4711; //Inteligence1 Inteligence2
- else if (.@i <= 868) setarray .@enchants[2],4710,4721; //Inteligence1 Dexterity2
- else if (.@i <= 899) setarray .@enchants[2],4801,4786; //SP100 Mdef2
- else if (.@i <= 930) setarray .@enchants[2],4801,4760; //SP100 Matk1
- else if (.@i <= 961) setarray .@enchants[2],4801,4711; //SP100 Inteligence2
- else if (.@i <= 992) setarray .@enchants[2],4801,4721; //SP100 Dexterity2
- else if (.@i <= 1023) setarray .@enchants[2],4720,4786; //Dexterity1 Mdef2
- else if (.@i <= 1054) setarray .@enchants[2],4720,4760; //Dexterity1 Matk1
- else if (.@i <= 1085) setarray .@enchants[2],4720,4711; //Dexterity1 Inteligence2
- else if (.@i <= 1116) setarray .@enchants[2],4720,4721; //Dexterity1 Dexterity2
- else if (.@i <= 1147) setarray .@enchants[2],4796,4786; //HP200 Mdef2
- else if (.@i <= 1178) setarray .@enchants[2],4796,4760; //HP200 Matk1
- else if (.@i <= 1209) setarray .@enchants[2],4796,4711; //HP200 Inteligence2
- else if (.@i <= 1240) setarray .@enchants[2],4796,4721; //HP200 Dexterity2
- else if (.@i <= 1271) setarray .@enchants[2],4710,4786; //Inteligence1 Mdef2
- else if (.@i <= 1302) setarray .@enchants[2],4710,4760; //Inteligence1 Matk1
- else if (.@i <= 1333) setarray .@enchants[2],4710,4711; //Inteligence1 Inteligence2
- else if (.@i <= 1364) setarray .@enchants[2],4710,4721; //Inteligence1 Dexterity2
- else if (.@i <= 1395) setarray .@enchants[2],4801,4786; //SP100 Mdef2
- else if (.@i <= 1426) setarray .@enchants[2],4801,4760; //SP100 Matk1
- else if (.@i <= 1457) setarray .@enchants[2],4801,4711; //SP100 Inteligence2
- else if (.@i <= 1488) setarray .@enchants[2],4801,4721; //SP100 Dexterity2
- else if (.@i <= 1519) setarray .@enchants[2],4720,4786; //Dexterity1 Mdef2
- else if (.@i <= 1550) setarray .@enchants[2],4720,4760; //Dexterity1 Matk1
- else if (.@i <= 1581) setarray .@enchants[2],4720,4711; //Dexterity1 Inteligence2
- else if (.@i <= 1612) setarray .@enchants[2],4720,4721; //Dexterity1 Dexterity2
- else if (.@i <= 1643) setarray .@enchants[2],4796,4786; //HP200 Mdef2
- else if (.@i <= 1674) setarray .@enchants[2],4796,4760; //HP200 Matk1
- else if (.@i <= 1705) setarray .@enchants[2],4796,4711; //HP200 Inteligence2
- else if (.@i <= 1736) setarray .@enchants[2],4796,4721; //HP200 Dexterity2
- else if (.@i <= 1767) setarray .@enchants[2],4710,4786; //Inteligence1 Mdef2
- else if (.@i <= 1798) setarray .@enchants[2],4710,4760; //Inteligence1 Matk1
- else if (.@i <= 1829) setarray .@enchants[2],4710,4711; //Inteligence1 Inteligence2
- else if (.@i <= 1860) setarray .@enchants[2],4710,4721; //Inteligence1 Dexterity2
- else if (.@i <= 1891) setarray .@enchants[2],4801,4786; //SP100 Mdef2
- else if (.@i <= 1922) setarray .@enchants[2],4801,4760; //SP100 Matk1
- else if (.@i <= 1953) setarray .@enchants[2],4801,4711; //SP100 Inteligence2
- else if (.@i <= 1984) setarray .@enchants[2],4801,4721; //SP100 Dexterity2
+ if (.@i <= 1984) {
+ // Basic combinations
+ // (raw: .@i increments by 31, 4 repeats)
+ setarray .@enchant_slot2[0],4720,4796,4710,4801; //Dexterity1,HP200,Inteligence1,SP100
+ setarray .@enchant_slot3[0],4786,4760,4711,4721; //Mdef2,Matk1,Inteligence2,Dexterity2
+ setarray .@enchants[2],
+ .@enchant_slot2[rand(getarraysize(.@enchant_slot2))],
+ .@enchant_slot3[rand(getarraysize(.@enchant_slot3))];
+ }
else if (.@i <= 1986) setarray .@enchants[2],4713,4761; //Inteligence4 Matk2
else if (.@i <= 1988) setarray .@enchants[2],4713,4713; //Inteligence4 Inteligence4
else if (.@i <= 1990) setarray .@enchants[2],4761,4761; //Matk2 Matk2
@@ -760,70 +489,17 @@ mora,99,93,5 script Artifact Crafter#pa0829 495,{
break;
case 2:
set .@i, rand(1,2858);
- if (.@i <= 31) setarray .@enchants[1],4710,4720,4786; //Inteligence1 Dexterity1 Mdef2
- else if (.@i <= 62) setarray .@enchants[1],4710,4720,4760; //Inteligence1 Dexterity1 Matk1
- else if (.@i <= 93) setarray .@enchants[1],4710,4720,4711; //Inteligence1 Dexterity1 Inteligence2
- else if (.@i <= 124) setarray .@enchants[1],4710,4720,4721; //Inteligence1 Dexterity1 Dexterity2
- else if (.@i <= 155) setarray .@enchants[1],4710,4796,4786; //Inteligence1 HP200 Mdef2
- else if (.@i <= 186) setarray .@enchants[1],4710,4796,4760; //Inteligence1 HP200 Matk1
- else if (.@i <= 217) setarray .@enchants[1],4710,4796,4711; //Inteligence1 HP200 Inteligence2
- else if (.@i <= 248) setarray .@enchants[1],4710,4796,4721; //Inteligence1 HP200 Dexterity2
- else if (.@i <= 279) setarray .@enchants[1],4710,4710,4786; //Inteligence1 Inteligence1 Mdef2
- else if (.@i <= 310) setarray .@enchants[1],4710,4710,4760; //Inteligence1 Inteligence1 Matk1
- else if (.@i <= 341) setarray .@enchants[1],4710,4710,4711; //Inteligence1 Inteligence1 Inteligence2
- else if (.@i <= 372) setarray .@enchants[1],4710,4710,4721; //Inteligence1 Inteligence1 Dexterity2
- else if (.@i <= 403) setarray .@enchants[1],4710,4801,4786; //Inteligence1 SP100 Mdef2
- else if (.@i <= 434) setarray .@enchants[1],4710,4801,4760; //Inteligence1 SP100 Matk1
- else if (.@i <= 465) setarray .@enchants[1],4710,4801,4711; //Inteligence1 SP100 Inteligence2
- else if (.@i <= 496) setarray .@enchants[1],4710,4801,4721; //Inteligence1 SP100 Dexterity2
- else if (.@i <= 527) setarray .@enchants[1],4711,4720,4786; //Inteligence2 Dexterity1 Mdef2
- else if (.@i <= 558) setarray .@enchants[1],4711,4720,4760; //Inteligence2 Dexterity1 Matk1
- else if (.@i <= 589) setarray .@enchants[1],4711,4720,4711; //Inteligence2 Dexterity1 Inteligence2
- else if (.@i <= 620) setarray .@enchants[1],4711,4720,4721; //Inteligence2 Dexterity1 Dexterity2
- else if (.@i <= 651) setarray .@enchants[1],4711,4796,4786; //Inteligence2 HP200 Mdef2
- else if (.@i <= 682) setarray .@enchants[1],4711,4796,4760; //Inteligence2 HP200 Matk1
- else if (.@i <= 713) setarray .@enchants[1],4711,4796,4711; //Inteligence2 HP200 Inteligence2
- else if (.@i <= 744) setarray .@enchants[1],4711,4796,4721; //Inteligence2 HP200 Dexterity2
- else if (.@i <= 775) setarray .@enchants[1],4711,4710,4786; //Inteligence2 Inteligence1 Mdef2
- else if (.@i <= 806) setarray .@enchants[1],4711,4710,4760; //Inteligence2 Inteligence1 Matk1
- else if (.@i <= 837) setarray .@enchants[1],4711,4710,4711; //Inteligence2 Inteligence1 Inteligence2
- else if (.@i <= 868) setarray .@enchants[1],4711,4710,4721; //Inteligence2 Inteligence1 Dexterity2
- else if (.@i <= 899) setarray .@enchants[1],4711,4801,4786; //Inteligence2 SP100 Mdef2
- else if (.@i <= 930) setarray .@enchants[1],4711,4801,4760; //Inteligence2 SP100 Matk1
- else if (.@i <= 961) setarray .@enchants[1],4711,4801,4711; //Inteligence2 SP100 Inteligence2
- else if (.@i <= 992) setarray .@enchants[1],4711,4801,4721; //Inteligence2 SP100 Dexterity2
- else if (.@i <= 1023) setarray .@enchants[1],4720,4720,4786; //Dexterity1 Dexterity1 Mdef2
- else if (.@i <= 1054) setarray .@enchants[1],4720,4720,4760; //Dexterity1 Dexterity1 Matk1
- else if (.@i <= 1085) setarray .@enchants[1],4720,4720,4711; //Dexterity1 Dexterity1 Inteligence2
- else if (.@i <= 1116) setarray .@enchants[1],4720,4720,4721; //Dexterity1 Dexterity1 Dexterity2
- else if (.@i <= 1147) setarray .@enchants[1],4720,4796,4786; //Dexterity1 HP200 Mdef2
- else if (.@i <= 1178) setarray .@enchants[1],4720,4796,4760; //Dexterity1 HP200 Matk1
- else if (.@i <= 1209) setarray .@enchants[1],4720,4796,4711; //Dexterity1 HP200 Inteligence2
- else if (.@i <= 1240) setarray .@enchants[1],4720,4796,4721; //Dexterity1 HP200 Dexterity2
- else if (.@i <= 1271) setarray .@enchants[1],4720,4710,4786; //Dexterity1 Inteligence1 Mdef2
- else if (.@i <= 1302) setarray .@enchants[1],4720,4710,4760; //Dexterity1 Inteligence1 Matk1
- else if (.@i <= 1333) setarray .@enchants[1],4720,4710,4711; //Dexterity1 Inteligence1 Inteligence2
- else if (.@i <= 1364) setarray .@enchants[1],4720,4710,4721; //Dexterity1 Inteligence1 Dexterity2
- else if (.@i <= 1395) setarray .@enchants[1],4720,4801,4786; //Dexterity1 SP100 Mdef2
- else if (.@i <= 1426) setarray .@enchants[1],4720,4801,4760; //Dexterity1 SP100 Matk1
- else if (.@i <= 1457) setarray .@enchants[1],4720,4801,4711; //Dexterity1 SP100 Inteligence2
- else if (.@i <= 1488) setarray .@enchants[1],4720,4801,4721; //Dexterity1 SP100 Dexterity2
- else if (.@i <= 1519) setarray .@enchants[1],4721,4720,4786; //Dexterity2 Dexterity1 Mdef2
- else if (.@i <= 1550) setarray .@enchants[1],4721,4720,4760; //Dexterity2 Dexterity1 Matk1
- else if (.@i <= 1581) setarray .@enchants[1],4721,4720,4711; //Dexterity2 Dexterity1 Inteligence2
- else if (.@i <= 1612) setarray .@enchants[1],4721,4720,4721; //Dexterity2 Dexterity1 Dexterity2
- else if (.@i <= 1643) setarray .@enchants[1],4721,4796,4786; //Dexterity2 HP200 Mdef2
- else if (.@i <= 1674) setarray .@enchants[1],4721,4796,4760; //Dexterity2 HP200 Matk1
- else if (.@i <= 1705) setarray .@enchants[1],4721,4796,4711; //Dexterity2 HP200 Inteligence2
- else if (.@i <= 1736) setarray .@enchants[1],4721,4796,4721; //Dexterity2 HP200 Dexterity2
- else if (.@i <= 1767) setarray .@enchants[1],4721,4710,4786; //Dexterity2 Inteligence1 Mdef2
- else if (.@i <= 1798) setarray .@enchants[1],4721,4710,4760; //Dexterity2 Inteligence1 Matk1
- else if (.@i <= 1829) setarray .@enchants[1],4721,4710,4711; //Dexterity2 Inteligence1 Inteligence2
- else if (.@i <= 1860) setarray .@enchants[1],4721,4710,4721; //Dexterity2 Inteligence1 Dexterity2
- else if (.@i <= 1891) setarray .@enchants[1],4721,4801,4786; //Dexterity2 SP100 Mdef2
- else if (.@i <= 1922) setarray .@enchants[1],4721,4801,4760; //Dexterity2 SP100 Matk1
- else if (.@i <= 1953) setarray .@enchants[1],4721,4801,4711; //Dexterity2 SP100 Inteligence2
- else if (.@i <= 1984) setarray .@enchants[1],4721,4801,4721; //Dexterity2 SP100 Dexterity2
+ if (.@i <= 1984) {
+ // Basic combinations
+ // (raw: .@i increments by 31)
+ setarray .@enchant_slot1[0],4710,4711,4720,4721; //Inteligence1,Inteligence2,Dexterity1,Dexterity2
+ setarray .@enchant_slot2[0],4720,4796,4710,4801; //Dexterity1,HP200,Inteligence1,SP100
+ setarray .@enchant_slot3[0],4786,4760,4711,4721; //Mdef2,Matk1,Inteligence2,Dexterity2
+ setarray .@enchants[1],
+ .@enchant_slot1[rand(getarraysize(.@enchant_slot1))],
+ .@enchant_slot2[rand(getarraysize(.@enchant_slot2))],
+ .@enchant_slot3[rand(getarraysize(.@enchant_slot3))];
+ }
else if (.@i <= 1986) setarray .@enchants[1],4712,4713,4761; //Inteligence3 Inteligence4 Matk2
else if (.@i <= 1988) setarray .@enchants[1],4712,4713,4713; //Inteligence3 Inteligence4 Inteligence4
else if (.@i <= 1990) setarray .@enchants[1],4712,4761,4761; //Inteligence3 Matk2 Matk2
@@ -884,12 +560,13 @@ mora,152,97,5 script Guardian of Power#pa082 515,{
close;
}
mes "[Guardian of Power]";
- mes .@jobs$[.@job]+"~ which artifact do you want?";
+ mes .@jobs$[.@job]+"?";
+ mes "Which artifact do you want?";
next;
switch(.@job) {
case 0: // Rune Knight
setarray .@items[0],2475,2476,2574,2575;
- set .@i, select("Cancel:Ur's Greaves (Shoes):Peuz Greaves (Shoes):Ur's Manteau (Garment):Peuz Manteau (Garment)")-2;
+ set .@i, select("Cancel:Ur's Greaves (Shoes):Peuz's Greaves (Shoes):Ur's Manteau (Garment):Peuz's Manteau (Garment)")-2;
break;
case 1: // Guillotine Cross
setarray .@items[0],2477,2478,2577,2578;
@@ -979,7 +656,6 @@ mora,148,98,3 script Artifact Researcher#new 521,{
set .@equip_id, getequipid(.@part);
set @mora_equip_part, .@part;
- // @mora_equip_id = enc_type
//callsub L_Socket,<enchant type>,<bonus enchant type>,<4-x enchants possible>;
// Enchant types:
// [1]ATK [2]CRIT [3]EVA [4]Healer [5]Spell 1 [6]Assist 1 [7]Assist 2 [8]STR [9]Range [10]Physical [11]Spell 2
@@ -1803,294 +1479,17 @@ function script F_Mora_Enchant {
delitem 6380,5; //Mora_Coin
delitem getarg(0),1;
set .@i, rand(1,4568);
- if (.@i <= 11) setarray .@enchants[1],4766,4720,4700; //Atk2 Dexterity1 Strength1
- else if (.@i <= 22) setarray .@enchants[1],4766,4720,4701; //Atk2 Dexterity1 Strength2
- else if (.@i <= 33) setarray .@enchants[1],4766,4720,4730; //Atk2 Dexterity1 Agility1
- else if (.@i <= 44) setarray .@enchants[1],4766,4720,4731; //Atk2 Dexterity1 Agility2
- else if (.@i <= 55) setarray .@enchants[1],4766,4720,4740; //Atk2 Dexterity1 Vitality1
- else if (.@i <= 66) setarray .@enchants[1],4766,4720,4741; //Atk2 Dexterity1 Vitality2
- else if (.@i <= 77) setarray .@enchants[1],4766,4721,4700; //Atk2 Dexterity2 Strength1
- else if (.@i <= 88) setarray .@enchants[1],4766,4721,4701; //Atk2 Dexterity2 Strength2
- else if (.@i <= 99) setarray .@enchants[1],4766,4721,4730; //Atk2 Dexterity2 Agility1
- else if (.@i <= 110) setarray .@enchants[1],4766,4721,4731; //Atk2 Dexterity2 Agility2
- else if (.@i <= 121) setarray .@enchants[1],4766,4721,4740; //Atk2 Dexterity2 Vitality1
- else if (.@i <= 132) setarray .@enchants[1],4766,4721,4741; //Atk2 Dexterity2 Vitality2
- else if (.@i <= 143) setarray .@enchants[1],4766,4710,4700; //Atk2 Inteligence1 Strength1
- else if (.@i <= 154) setarray .@enchants[1],4766,4710,4701; //Atk2 Inteligence1 Strength2
- else if (.@i <= 165) setarray .@enchants[1],4766,4710,4730; //Atk2 Inteligence1 Agility1
- else if (.@i <= 176) setarray .@enchants[1],4766,4710,4731; //Atk2 Inteligence1 Agility2
- else if (.@i <= 187) setarray .@enchants[1],4766,4710,4740; //Atk2 Inteligence1 Vitality1
- else if (.@i <= 198) setarray .@enchants[1],4766,4710,4741; //Atk2 Inteligence1 Vitality2
- else if (.@i <= 209) setarray .@enchants[1],4766,4711,4700; //Atk2 Inteligence2 Strength1
- else if (.@i <= 220) setarray .@enchants[1],4766,4711,4701; //Atk2 Inteligence2 Strength2
- else if (.@i <= 231) setarray .@enchants[1],4766,4711,4730; //Atk2 Inteligence2 Agility1
- else if (.@i <= 242) setarray .@enchants[1],4766,4711,4731; //Atk2 Inteligence2 Agility2
- else if (.@i <= 253) setarray .@enchants[1],4766,4711,4740; //Atk2 Inteligence2 Vitality1
- else if (.@i <= 264) setarray .@enchants[1],4766,4711,4741; //Atk2 Inteligence2 Vitality2
- else if (.@i <= 275) setarray .@enchants[1],4766,4750,4700; //Atk2 Luck1 Strength1
- else if (.@i <= 286) setarray .@enchants[1],4766,4750,4701; //Atk2 Luck1 Strength2
- else if (.@i <= 297) setarray .@enchants[1],4766,4750,4730; //Atk2 Luck1 Agility1
- else if (.@i <= 308) setarray .@enchants[1],4766,4750,4731; //Atk2 Luck1 Agility2
- else if (.@i <= 319) setarray .@enchants[1],4766,4750,4740; //Atk2 Luck1 Vitality1
- else if (.@i <= 330) setarray .@enchants[1],4766,4750,4741; //Atk2 Luck1 Vitality2
- else if (.@i <= 341) setarray .@enchants[1],4766,4751,4700; //Atk2 Luck2 Strength1
- else if (.@i <= 352) setarray .@enchants[1],4766,4751,4701; //Atk2 Luck2 Strength2
- else if (.@i <= 363) setarray .@enchants[1],4766,4751,4730; //Atk2 Luck2 Agility1
- else if (.@i <= 374) setarray .@enchants[1],4766,4751,4731; //Atk2 Luck2 Agility2
- else if (.@i <= 385) setarray .@enchants[1],4766,4751,4740; //Atk2 Luck2 Vitality1
- else if (.@i <= 396) setarray .@enchants[1],4766,4751,4741; //Atk2 Luck2 Vitality2
- else if (.@i <= 407) setarray .@enchants[1],4767,4720,4700; //Atk3 Dexterity1 Strength1
- else if (.@i <= 418) setarray .@enchants[1],4767,4720,4701; //Atk3 Dexterity1 Strength2
- else if (.@i <= 429) setarray .@enchants[1],4767,4720,4730; //Atk3 Dexterity1 Agility1
- else if (.@i <= 440) setarray .@enchants[1],4767,4720,4731; //Atk3 Dexterity1 Agility2
- else if (.@i <= 451) setarray .@enchants[1],4767,4720,4740; //Atk3 Dexterity1 Vitality1
- else if (.@i <= 462) setarray .@enchants[1],4767,4720,4741; //Atk3 Dexterity1 Vitality2
- else if (.@i <= 473) setarray .@enchants[1],4767,4721,4700; //Atk3 Dexterity2 Strength1
- else if (.@i <= 484) setarray .@enchants[1],4767,4721,4701; //Atk3 Dexterity2 Strength2
- else if (.@i <= 495) setarray .@enchants[1],4767,4721,4730; //Atk3 Dexterity2 Agility1
- else if (.@i <= 506) setarray .@enchants[1],4767,4721,4731; //Atk3 Dexterity2 Agility2
- else if (.@i <= 517) setarray .@enchants[1],4767,4721,4740; //Atk3 Dexterity2 Vitality1
- else if (.@i <= 528) setarray .@enchants[1],4767,4721,4741; //Atk3 Dexterity2 Vitality2
- else if (.@i <= 539) setarray .@enchants[1],4767,4710,4700; //Atk3 Inteligence1 Strength1
- else if (.@i <= 550) setarray .@enchants[1],4767,4710,4701; //Atk3 Inteligence1 Strength2
- else if (.@i <= 561) setarray .@enchants[1],4767,4710,4730; //Atk3 Inteligence1 Agility1
- else if (.@i <= 572) setarray .@enchants[1],4767,4710,4731; //Atk3 Inteligence1 Agility2
- else if (.@i <= 583) setarray .@enchants[1],4767,4710,4740; //Atk3 Inteligence1 Vitality1
- else if (.@i <= 594) setarray .@enchants[1],4767,4710,4741; //Atk3 Inteligence1 Vitality2
- else if (.@i <= 605) setarray .@enchants[1],4767,4711,4700; //Atk3 Inteligence2 Strength1
- else if (.@i <= 616) setarray .@enchants[1],4767,4711,4701; //Atk3 Inteligence2 Strength2
- else if (.@i <= 627) setarray .@enchants[1],4767,4711,4730; //Atk3 Inteligence2 Agility1
- else if (.@i <= 638) setarray .@enchants[1],4767,4711,4731; //Atk3 Inteligence2 Agility2
- else if (.@i <= 649) setarray .@enchants[1],4767,4711,4740; //Atk3 Inteligence2 Vitality1
- else if (.@i <= 660) setarray .@enchants[1],4767,4711,4741; //Atk3 Inteligence2 Vitality2
- else if (.@i <= 671) setarray .@enchants[1],4767,4750,4700; //Atk3 Luck1 Strength1
- else if (.@i <= 682) setarray .@enchants[1],4767,4750,4701; //Atk3 Luck1 Strength2
- else if (.@i <= 693) setarray .@enchants[1],4767,4750,4730; //Atk3 Luck1 Agility1
- else if (.@i <= 704) setarray .@enchants[1],4767,4750,4731; //Atk3 Luck1 Agility2
- else if (.@i <= 715) setarray .@enchants[1],4767,4750,4740; //Atk3 Luck1 Vitality1
- else if (.@i <= 726) setarray .@enchants[1],4767,4750,4741; //Atk3 Luck1 Vitality2
- else if (.@i <= 737) setarray .@enchants[1],4767,4751,4700; //Atk3 Luck2 Strength1
- else if (.@i <= 748) setarray .@enchants[1],4767,4751,4701; //Atk3 Luck2 Strength2
- else if (.@i <= 759) setarray .@enchants[1],4767,4751,4730; //Atk3 Luck2 Agility1
- else if (.@i <= 770) setarray .@enchants[1],4767,4751,4731; //Atk3 Luck2 Agility2
- else if (.@i <= 781) setarray .@enchants[1],4767,4751,4740; //Atk3 Luck2 Vitality1
- else if (.@i <= 792) setarray .@enchants[1],4767,4751,4741; //Atk3 Luck2 Vitality2
- else if (.@i <= 803) setarray .@enchants[1],4764,4720,4700; //Critical5 Dexterity1 Strength1
- else if (.@i <= 814) setarray .@enchants[1],4764,4720,4701; //Critical5 Dexterity1 Strength2
- else if (.@i <= 825) setarray .@enchants[1],4764,4720,4730; //Critical5 Dexterity1 Agility1
- else if (.@i <= 836) setarray .@enchants[1],4764,4720,4731; //Critical5 Dexterity1 Agility2
- else if (.@i <= 847) setarray .@enchants[1],4764,4720,4740; //Critical5 Dexterity1 Vitality1
- else if (.@i <= 858) setarray .@enchants[1],4764,4720,4741; //Critical5 Dexterity1 Vitality2
- else if (.@i <= 869) setarray .@enchants[1],4764,4721,4700; //Critical5 Dexterity2 Strength1
- else if (.@i <= 880) setarray .@enchants[1],4764,4721,4701; //Critical5 Dexterity2 Strength2
- else if (.@i <= 891) setarray .@enchants[1],4764,4721,4730; //Critical5 Dexterity2 Agility1
- else if (.@i <= 902) setarray .@enchants[1],4764,4721,4731; //Critical5 Dexterity2 Agility2
- else if (.@i <= 913) setarray .@enchants[1],4764,4721,4740; //Critical5 Dexterity2 Vitality1
- else if (.@i <= 924) setarray .@enchants[1],4764,4721,4741; //Critical5 Dexterity2 Vitality2
- else if (.@i <= 935) setarray .@enchants[1],4764,4710,4700; //Critical5 Inteligence1 Strength1
- else if (.@i <= 946) setarray .@enchants[1],4764,4710,4701; //Critical5 Inteligence1 Strength2
- else if (.@i <= 957) setarray .@enchants[1],4764,4710,4730; //Critical5 Inteligence1 Agility1
- else if (.@i <= 968) setarray .@enchants[1],4764,4710,4731; //Critical5 Inteligence1 Agility2
- else if (.@i <= 979) setarray .@enchants[1],4764,4710,4740; //Critical5 Inteligence1 Vitality1
- else if (.@i <= 990) setarray .@enchants[1],4764,4710,4741; //Critical5 Inteligence1 Vitality2
- else if (.@i <= 1001) setarray .@enchants[1],4764,4711,4700; //Critical5 Inteligence2 Strength1
- else if (.@i <= 1012) setarray .@enchants[1],4764,4711,4701; //Critical5 Inteligence2 Strength2
- else if (.@i <= 1023) setarray .@enchants[1],4764,4711,4730; //Critical5 Inteligence2 Agility1
- else if (.@i <= 1034) setarray .@enchants[1],4764,4711,4731; //Critical5 Inteligence2 Agility2
- else if (.@i <= 1045) setarray .@enchants[1],4764,4711,4740; //Critical5 Inteligence2 Vitality1
- else if (.@i <= 1056) setarray .@enchants[1],4764,4711,4741; //Critical5 Inteligence2 Vitality2
- else if (.@i <= 1067) setarray .@enchants[1],4764,4750,4700; //Critical5 Luck1 Strength1
- else if (.@i <= 1078) setarray .@enchants[1],4764,4750,4701; //Critical5 Luck1 Strength2
- else if (.@i <= 1089) setarray .@enchants[1],4764,4750,4730; //Critical5 Luck1 Agility1
- else if (.@i <= 1100) setarray .@enchants[1],4764,4750,4731; //Critical5 Luck1 Agility2
- else if (.@i <= 1111) setarray .@enchants[1],4764,4750,4740; //Critical5 Luck1 Vitality1
- else if (.@i <= 1122) setarray .@enchants[1],4764,4750,4741; //Critical5 Luck1 Vitality2
- else if (.@i <= 1133) setarray .@enchants[1],4764,4751,4700; //Critical5 Luck2 Strength1
- else if (.@i <= 1144) setarray .@enchants[1],4764,4751,4701; //Critical5 Luck2 Strength2
- else if (.@i <= 1155) setarray .@enchants[1],4764,4751,4730; //Critical5 Luck2 Agility1
- else if (.@i <= 1166) setarray .@enchants[1],4764,4751,4731; //Critical5 Luck2 Agility2
- else if (.@i <= 1177) setarray .@enchants[1],4764,4751,4740; //Critical5 Luck2 Vitality1
- else if (.@i <= 1188) setarray .@enchants[1],4764,4751,4741; //Critical5 Luck2 Vitality2
- else if (.@i <= 1199) setarray .@enchants[1],4765,4720,4700; //Critical7 Dexterity1 Strength1
- else if (.@i <= 1210) setarray .@enchants[1],4765,4720,4701; //Critical7 Dexterity1 Strength2
- else if (.@i <= 1221) setarray .@enchants[1],4765,4720,4730; //Critical7 Dexterity1 Agility1
- else if (.@i <= 1232) setarray .@enchants[1],4765,4720,4731; //Critical7 Dexterity1 Agility2
- else if (.@i <= 1243) setarray .@enchants[1],4765,4720,4740; //Critical7 Dexterity1 Vitality1
- else if (.@i <= 1254) setarray .@enchants[1],4765,4720,4741; //Critical7 Dexterity1 Vitality2
- else if (.@i <= 1265) setarray .@enchants[1],4765,4721,4700; //Critical7 Dexterity2 Strength1
- else if (.@i <= 1276) setarray .@enchants[1],4765,4721,4701; //Critical7 Dexterity2 Strength2
- else if (.@i <= 1287) setarray .@enchants[1],4765,4721,4730; //Critical7 Dexterity2 Agility1
- else if (.@i <= 1298) setarray .@enchants[1],4765,4721,4731; //Critical7 Dexterity2 Agility2
- else if (.@i <= 1309) setarray .@enchants[1],4765,4721,4740; //Critical7 Dexterity2 Vitality1
- else if (.@i <= 1320) setarray .@enchants[1],4765,4721,4741; //Critical7 Dexterity2 Vitality2
- else if (.@i <= 1331) setarray .@enchants[1],4765,4710,4700; //Critical7 Inteligence1 Strength1
- else if (.@i <= 1342) setarray .@enchants[1],4765,4710,4701; //Critical7 Inteligence1 Strength2
- else if (.@i <= 1353) setarray .@enchants[1],4765,4710,4730; //Critical7 Inteligence1 Agility1
- else if (.@i <= 1364) setarray .@enchants[1],4765,4710,4731; //Critical7 Inteligence1 Agility2
- else if (.@i <= 1375) setarray .@enchants[1],4765,4710,4740; //Critical7 Inteligence1 Vitality1
- else if (.@i <= 1386) setarray .@enchants[1],4765,4710,4741; //Critical7 Inteligence1 Vitality2
- else if (.@i <= 1397) setarray .@enchants[1],4765,4711,4700; //Critical7 Inteligence2 Strength1
- else if (.@i <= 1408) setarray .@enchants[1],4765,4711,4701; //Critical7 Inteligence2 Strength2
- else if (.@i <= 1419) setarray .@enchants[1],4765,4711,4730; //Critical7 Inteligence2 Agility1
- else if (.@i <= 1430) setarray .@enchants[1],4765,4711,4731; //Critical7 Inteligence2 Agility2
- else if (.@i <= 1441) setarray .@enchants[1],4765,4711,4740; //Critical7 Inteligence2 Vitality1
- else if (.@i <= 1452) setarray .@enchants[1],4765,4711,4741; //Critical7 Inteligence2 Vitality2
- else if (.@i <= 1463) setarray .@enchants[1],4765,4750,4700; //Critical7 Luck1 Strength1
- else if (.@i <= 1474) setarray .@enchants[1],4765,4750,4701; //Critical7 Luck1 Strength2
- else if (.@i <= 1485) setarray .@enchants[1],4765,4750,4730; //Critical7 Luck1 Agility1
- else if (.@i <= 1496) setarray .@enchants[1],4765,4750,4731; //Critical7 Luck1 Agility2
- else if (.@i <= 1507) setarray .@enchants[1],4765,4750,4740; //Critical7 Luck1 Vitality1
- else if (.@i <= 1518) setarray .@enchants[1],4765,4750,4741; //Critical7 Luck1 Vitality2
- else if (.@i <= 1529) setarray .@enchants[1],4765,4751,4700; //Critical7 Luck2 Strength1
- else if (.@i <= 1540) setarray .@enchants[1],4765,4751,4701; //Critical7 Luck2 Strength2
- else if (.@i <= 1551) setarray .@enchants[1],4765,4751,4730; //Critical7 Luck2 Agility1
- else if (.@i <= 1562) setarray .@enchants[1],4765,4751,4731; //Critical7 Luck2 Agility2
- else if (.@i <= 1573) setarray .@enchants[1],4765,4751,4740; //Critical7 Luck2 Vitality1
- else if (.@i <= 1584) setarray .@enchants[1],4765,4751,4741; //Critical7 Luck2 Vitality2
- else if (.@i <= 1595) setarray .@enchants[1],4762,4720,4700; //Evasion6 Dexterity1 Strength1
- else if (.@i <= 1606) setarray .@enchants[1],4762,4720,4701; //Evasion6 Dexterity1 Strength2
- else if (.@i <= 1617) setarray .@enchants[1],4762,4720,4730; //Evasion6 Dexterity1 Agility1
- else if (.@i <= 1628) setarray .@enchants[1],4762,4720,4731; //Evasion6 Dexterity1 Agility2
- else if (.@i <= 1639) setarray .@enchants[1],4762,4720,4740; //Evasion6 Dexterity1 Vitality1
- else if (.@i <= 1650) setarray .@enchants[1],4762,4720,4741; //Evasion6 Dexterity1 Vitality2
- else if (.@i <= 1661) setarray .@enchants[1],4762,4721,4700; //Evasion6 Dexterity2 Strength1
- else if (.@i <= 1672) setarray .@enchants[1],4762,4721,4701; //Evasion6 Dexterity2 Strength2
- else if (.@i <= 1683) setarray .@enchants[1],4762,4721,4730; //Evasion6 Dexterity2 Agility1
- else if (.@i <= 1694) setarray .@enchants[1],4762,4721,4731; //Evasion6 Dexterity2 Agility2
- else if (.@i <= 1705) setarray .@enchants[1],4762,4721,4740; //Evasion6 Dexterity2 Vitality1
- else if (.@i <= 1716) setarray .@enchants[1],4762,4721,4741; //Evasion6 Dexterity2 Vitality2
- else if (.@i <= 1727) setarray .@enchants[1],4762,4710,4700; //Evasion6 Inteligence1 Strength1
- else if (.@i <= 1738) setarray .@enchants[1],4762,4710,4701; //Evasion6 Inteligence1 Strength2
- else if (.@i <= 1749) setarray .@enchants[1],4762,4710,4730; //Evasion6 Inteligence1 Agility1
- else if (.@i <= 1760) setarray .@enchants[1],4762,4710,4731; //Evasion6 Inteligence1 Agility2
- else if (.@i <= 1771) setarray .@enchants[1],4762,4710,4740; //Evasion6 Inteligence1 Vitality1
- else if (.@i <= 1782) setarray .@enchants[1],4762,4710,4741; //Evasion6 Inteligence1 Vitality2
- else if (.@i <= 1793) setarray .@enchants[1],4762,4711,4700; //Evasion6 Inteligence2 Strength1
- else if (.@i <= 1804) setarray .@enchants[1],4762,4711,4701; //Evasion6 Inteligence2 Strength2
- else if (.@i <= 1815) setarray .@enchants[1],4762,4711,4730; //Evasion6 Inteligence2 Agility1
- else if (.@i <= 1826) setarray .@enchants[1],4762,4711,4731; //Evasion6 Inteligence2 Agility2
- else if (.@i <= 1837) setarray .@enchants[1],4762,4711,4740; //Evasion6 Inteligence2 Vitality1
- else if (.@i <= 1848) setarray .@enchants[1],4762,4711,4741; //Evasion6 Inteligence2 Vitality2
- else if (.@i <= 1859) setarray .@enchants[1],4762,4750,4700; //Evasion6 Luck1 Strength1
- else if (.@i <= 1870) setarray .@enchants[1],4762,4750,4701; //Evasion6 Luck1 Strength2
- else if (.@i <= 1881) setarray .@enchants[1],4762,4750,4730; //Evasion6 Luck1 Agility1
- else if (.@i <= 1892) setarray .@enchants[1],4762,4750,4731; //Evasion6 Luck1 Agility2
- else if (.@i <= 1903) setarray .@enchants[1],4762,4750,4740; //Evasion6 Luck1 Vitality1
- else if (.@i <= 1914) setarray .@enchants[1],4762,4750,4741; //Evasion6 Luck1 Vitality2
- else if (.@i <= 1925) setarray .@enchants[1],4762,4751,4700; //Evasion6 Luck2 Strength1
- else if (.@i <= 1936) setarray .@enchants[1],4762,4751,4701; //Evasion6 Luck2 Strength2
- else if (.@i <= 1947) setarray .@enchants[1],4762,4751,4730; //Evasion6 Luck2 Agility1
- else if (.@i <= 1958) setarray .@enchants[1],4762,4751,4731; //Evasion6 Luck2 Agility2
- else if (.@i <= 1969) setarray .@enchants[1],4762,4751,4740; //Evasion6 Luck2 Vitality1
- else if (.@i <= 1980) setarray .@enchants[1],4762,4751,4741; //Evasion6 Luck2 Vitality2
- else if (.@i <= 1991) setarray .@enchants[1],4763,4720,4700; //Evasion12 Dexterity1 Strength1
- else if (.@i <= 2002) setarray .@enchants[1],4763,4720,4701; //Evasion12 Dexterity1 Strength2
- else if (.@i <= 2013) setarray .@enchants[1],4763,4720,4730; //Evasion12 Dexterity1 Agility1
- else if (.@i <= 2024) setarray .@enchants[1],4763,4720,4731; //Evasion12 Dexterity1 Agility2
- else if (.@i <= 2035) setarray .@enchants[1],4763,4720,4740; //Evasion12 Dexterity1 Vitality1
- else if (.@i <= 2046) setarray .@enchants[1],4763,4720,4741; //Evasion12 Dexterity1 Vitality2
- else if (.@i <= 2057) setarray .@enchants[1],4763,4721,4700; //Evasion12 Dexterity2 Strength1
- else if (.@i <= 2068) setarray .@enchants[1],4763,4721,4701; //Evasion12 Dexterity2 Strength2
- else if (.@i <= 2079) setarray .@enchants[1],4763,4721,4730; //Evasion12 Dexterity2 Agility1
- else if (.@i <= 2090) setarray .@enchants[1],4763,4721,4731; //Evasion12 Dexterity2 Agility2
- else if (.@i <= 2101) setarray .@enchants[1],4763,4721,4740; //Evasion12 Dexterity2 Vitality1
- else if (.@i <= 2112) setarray .@enchants[1],4763,4721,4741; //Evasion12 Dexterity2 Vitality2
- else if (.@i <= 2123) setarray .@enchants[1],4763,4710,4700; //Evasion12 Inteligence1 Strength1
- else if (.@i <= 2134) setarray .@enchants[1],4763,4710,4701; //Evasion12 Inteligence1 Strength2
- else if (.@i <= 2145) setarray .@enchants[1],4763,4710,4730; //Evasion12 Inteligence1 Agility1
- else if (.@i <= 2156) setarray .@enchants[1],4763,4710,4731; //Evasion12 Inteligence1 Agility2
- else if (.@i <= 2167) setarray .@enchants[1],4763,4710,4740; //Evasion12 Inteligence1 Vitality1
- else if (.@i <= 2178) setarray .@enchants[1],4763,4710,4741; //Evasion12 Inteligence1 Vitality2
- else if (.@i <= 2189) setarray .@enchants[1],4763,4711,4700; //Evasion12 Inteligence2 Strength1
- else if (.@i <= 2200) setarray .@enchants[1],4763,4711,4701; //Evasion12 Inteligence2 Strength2
- else if (.@i <= 2211) setarray .@enchants[1],4763,4711,4730; //Evasion12 Inteligence2 Agility1
- else if (.@i <= 2222) setarray .@enchants[1],4763,4711,4731; //Evasion12 Inteligence2 Agility2
- else if (.@i <= 2233) setarray .@enchants[1],4763,4711,4740; //Evasion12 Inteligence2 Vitality1
- else if (.@i <= 2244) setarray .@enchants[1],4763,4711,4741; //Evasion12 Inteligence2 Vitality2
- else if (.@i <= 2255) setarray .@enchants[1],4763,4750,4700; //Evasion12 Luck1 Strength1
- else if (.@i <= 2266) setarray .@enchants[1],4763,4750,4701; //Evasion12 Luck1 Strength2
- else if (.@i <= 2277) setarray .@enchants[1],4763,4750,4730; //Evasion12 Luck1 Agility1
- else if (.@i <= 2288) setarray .@enchants[1],4763,4750,4731; //Evasion12 Luck1 Agility2
- else if (.@i <= 2299) setarray .@enchants[1],4763,4750,4740; //Evasion12 Luck1 Vitality1
- else if (.@i <= 2310) setarray .@enchants[1],4763,4750,4741; //Evasion12 Luck1 Vitality2
- else if (.@i <= 2321) setarray .@enchants[1],4763,4751,4700; //Evasion12 Luck2 Strength1
- else if (.@i <= 2332) setarray .@enchants[1],4763,4751,4701; //Evasion12 Luck2 Strength2
- else if (.@i <= 2343) setarray .@enchants[1],4763,4751,4730; //Evasion12 Luck2 Agility1
- else if (.@i <= 2354) setarray .@enchants[1],4763,4751,4731; //Evasion12 Luck2 Agility2
- else if (.@i <= 2365) setarray .@enchants[1],4763,4751,4740; //Evasion12 Luck2 Vitality1
- else if (.@i <= 2376) setarray .@enchants[1],4763,4751,4741; //Evasion12 Luck2 Vitality2
- else if (.@i <= 2387) setarray .@enchants[1],4760,4720,4700; //Matk1 Dexterity1 Strength1
- else if (.@i <= 2398) setarray .@enchants[1],4760,4720,4701; //Matk1 Dexterity1 Strength2
- else if (.@i <= 2409) setarray .@enchants[1],4760,4720,4730; //Matk1 Dexterity1 Agility1
- else if (.@i <= 2420) setarray .@enchants[1],4760,4720,4731; //Matk1 Dexterity1 Agility2
- else if (.@i <= 2431) setarray .@enchants[1],4760,4720,4740; //Matk1 Dexterity1 Vitality1
- else if (.@i <= 2442) setarray .@enchants[1],4760,4720,4741; //Matk1 Dexterity1 Vitality2
- else if (.@i <= 2453) setarray .@enchants[1],4760,4721,4700; //Matk1 Dexterity2 Strength1
- else if (.@i <= 2464) setarray .@enchants[1],4760,4721,4701; //Matk1 Dexterity2 Strength2
- else if (.@i <= 2475) setarray .@enchants[1],4760,4721,4730; //Matk1 Dexterity2 Agility1
- else if (.@i <= 2486) setarray .@enchants[1],4760,4721,4731; //Matk1 Dexterity2 Agility2
- else if (.@i <= 2497) setarray .@enchants[1],4760,4721,4740; //Matk1 Dexterity2 Vitality1
- else if (.@i <= 2508) setarray .@enchants[1],4760,4721,4741; //Matk1 Dexterity2 Vitality2
- else if (.@i <= 2519) setarray .@enchants[1],4760,4710,4700; //Matk1 Inteligence1 Strength1
- else if (.@i <= 2530) setarray .@enchants[1],4760,4710,4701; //Matk1 Inteligence1 Strength2
- else if (.@i <= 2541) setarray .@enchants[1],4760,4710,4730; //Matk1 Inteligence1 Agility1
- else if (.@i <= 2552) setarray .@enchants[1],4760,4710,4731; //Matk1 Inteligence1 Agility2
- else if (.@i <= 2563) setarray .@enchants[1],4760,4710,4740; //Matk1 Inteligence1 Vitality1
- else if (.@i <= 2574) setarray .@enchants[1],4760,4710,4741; //Matk1 Inteligence1 Vitality2
- else if (.@i <= 2585) setarray .@enchants[1],4760,4711,4700; //Matk1 Inteligence2 Strength1
- else if (.@i <= 2596) setarray .@enchants[1],4760,4711,4701; //Matk1 Inteligence2 Strength2
- else if (.@i <= 2607) setarray .@enchants[1],4760,4711,4730; //Matk1 Inteligence2 Agility1
- else if (.@i <= 2618) setarray .@enchants[1],4760,4711,4731; //Matk1 Inteligence2 Agility2
- else if (.@i <= 2629) setarray .@enchants[1],4760,4711,4740; //Matk1 Inteligence2 Vitality1
- else if (.@i <= 2640) setarray .@enchants[1],4760,4711,4741; //Matk1 Inteligence2 Vitality2
- else if (.@i <= 2651) setarray .@enchants[1],4760,4750,4700; //Matk1 Luck1 Strength1
- else if (.@i <= 2662) setarray .@enchants[1],4760,4750,4701; //Matk1 Luck1 Strength2
- else if (.@i <= 2673) setarray .@enchants[1],4760,4750,4730; //Matk1 Luck1 Agility1
- else if (.@i <= 2684) setarray .@enchants[1],4760,4750,4731; //Matk1 Luck1 Agility2
- else if (.@i <= 2695) setarray .@enchants[1],4760,4750,4740; //Matk1 Luck1 Vitality1
- else if (.@i <= 2706) setarray .@enchants[1],4760,4750,4741; //Matk1 Luck1 Vitality2
- else if (.@i <= 2717) setarray .@enchants[1],4760,4751,4700; //Matk1 Luck2 Strength1
- else if (.@i <= 2728) setarray .@enchants[1],4760,4751,4701; //Matk1 Luck2 Strength2
- else if (.@i <= 2739) setarray .@enchants[1],4760,4751,4730; //Matk1 Luck2 Agility1
- else if (.@i <= 2750) setarray .@enchants[1],4760,4751,4731; //Matk1 Luck2 Agility2
- else if (.@i <= 2761) setarray .@enchants[1],4760,4751,4740; //Matk1 Luck2 Vitality1
- else if (.@i <= 2772) setarray .@enchants[1],4760,4751,4741; //Matk1 Luck2 Vitality2
- else if (.@i <= 2783) setarray .@enchants[1],4761,4720,4700; //Matk2 Dexterity1 Strength1
- else if (.@i <= 2794) setarray .@enchants[1],4761,4720,4701; //Matk2 Dexterity1 Strength2
- else if (.@i <= 2805) setarray .@enchants[1],4761,4720,4730; //Matk2 Dexterity1 Agility1
- else if (.@i <= 2816) setarray .@enchants[1],4761,4720,4731; //Matk2 Dexterity1 Agility2
- else if (.@i <= 2827) setarray .@enchants[1],4761,4720,4740; //Matk2 Dexterity1 Vitality1
- else if (.@i <= 2838) setarray .@enchants[1],4761,4720,4741; //Matk2 Dexterity1 Vitality2
- else if (.@i <= 2849) setarray .@enchants[1],4761,4721,4700; //Matk2 Dexterity2 Strength1
- else if (.@i <= 2860) setarray .@enchants[1],4761,4721,4701; //Matk2 Dexterity2 Strength2
- else if (.@i <= 2871) setarray .@enchants[1],4761,4721,4730; //Matk2 Dexterity2 Agility1
- else if (.@i <= 2882) setarray .@enchants[1],4761,4721,4731; //Matk2 Dexterity2 Agility2
- else if (.@i <= 2893) setarray .@enchants[1],4761,4721,4740; //Matk2 Dexterity2 Vitality1
- else if (.@i <= 2904) setarray .@enchants[1],4761,4721,4741; //Matk2 Dexterity2 Vitality2
- else if (.@i <= 2915) setarray .@enchants[1],4761,4710,4700; //Matk2 Inteligence1 Strength1
- else if (.@i <= 2926) setarray .@enchants[1],4761,4710,4701; //Matk2 Inteligence1 Strength2
- else if (.@i <= 2937) setarray .@enchants[1],4761,4710,4730; //Matk2 Inteligence1 Agility1
- else if (.@i <= 2948) setarray .@enchants[1],4761,4710,4731; //Matk2 Inteligence1 Agility2
- else if (.@i <= 2959) setarray .@enchants[1],4761,4710,4740; //Matk2 Inteligence1 Vitality1
- else if (.@i <= 2970) setarray .@enchants[1],4761,4710,4741; //Matk2 Inteligence1 Vitality2
- else if (.@i <= 2981) setarray .@enchants[1],4761,4711,4700; //Matk2 Inteligence2 Strength1
- else if (.@i <= 2992) setarray .@enchants[1],4761,4711,4701; //Matk2 Inteligence2 Strength2
- else if (.@i <= 3003) setarray .@enchants[1],4761,4711,4730; //Matk2 Inteligence2 Agility1
- else if (.@i <= 3014) setarray .@enchants[1],4761,4711,4731; //Matk2 Inteligence2 Agility2
- else if (.@i <= 3025) setarray .@enchants[1],4761,4711,4740; //Matk2 Inteligence2 Vitality1
- else if (.@i <= 3036) setarray .@enchants[1],4761,4711,4741; //Matk2 Inteligence2 Vitality2
- else if (.@i <= 3047) setarray .@enchants[1],4761,4750,4700; //Matk2 Luck1 Strength1
- else if (.@i <= 3058) setarray .@enchants[1],4761,4750,4701; //Matk2 Luck1 Strength2
- else if (.@i <= 3069) setarray .@enchants[1],4761,4750,4730; //Matk2 Luck1 Agility1
- else if (.@i <= 3080) setarray .@enchants[1],4761,4750,4731; //Matk2 Luck1 Agility2
- else if (.@i <= 3091) setarray .@enchants[1],4761,4750,4740; //Matk2 Luck1 Vitality1
- else if (.@i <= 3102) setarray .@enchants[1],4761,4750,4741; //Matk2 Luck1 Vitality2
- else if (.@i <= 3113) setarray .@enchants[1],4761,4751,4700; //Matk2 Luck2 Strength1
- else if (.@i <= 3124) setarray .@enchants[1],4761,4751,4701; //Matk2 Luck2 Strength2
- else if (.@i <= 3135) setarray .@enchants[1],4761,4751,4730; //Matk2 Luck2 Agility1
- else if (.@i <= 3146) setarray .@enchants[1],4761,4751,4731; //Matk2 Luck2 Agility2
- else if (.@i <= 3157) setarray .@enchants[1],4761,4751,4740; //Matk2 Luck2 Vitality1
- else if (.@i <= 3168) setarray .@enchants[1],4761,4751,4741; //Matk2 Luck2 Vitality2
+ if (.@i <= 3168) {
+ // Basic combinations
+ // (raw: .@i increments by 11)
+ setarray .@enchant_slot1[0],4766,4767,4764,4765,4762,4763,4760,4761; //Atk2,Atk3,Critical5,Critical7,Evasion6,Evasion12,Matk1,Matk2
+ setarray .@enchant_slot2[0],4720,4721,4710,4711,4750,4751; //Dexterity1,Dexterity2,Inteligence1,Inteligence2,Luck1,Luck2
+ setarray .@enchant_slot3[0],4700,4701,4730,4731,4740,4741; //Strength1,Strength2,Agility1,Agility2,Vitality1,Vitality2
+ setarray .@enchants[1],
+ .@enchant_slot1[rand(getarraysize(.@enchant_slot1))],
+ .@enchant_slot2[rand(getarraysize(.@enchant_slot2))],
+ .@enchant_slot3[rand(getarraysize(.@enchant_slot3))];
+ }
else if (.@i <= 3179) setarray .@enchants[1],4761,4720,4700; //Matk2 Dexterity1 Strength1
else if (.@i <= 3181) setarray .@enchants[1],4761,4712,4712; //Matk2 Inteligence3 Inteligence3
else if (.@i <= 3183) setarray .@enchants[1],4765,4732,4732; //Critical7 Agility3 Agility3
diff --git a/npc/re/merchants/hd_refiner.txt b/npc/re/merchants/hd_refiner.txt
new file mode 100644
index 000000000..897986cd6
--- /dev/null
+++ b/npc/re/merchants/hd_refiner.txt
@@ -0,0 +1,308 @@
+//===== rAthena Script =======================================
+//= HD Refiners
+//===== By: ==================================================
+//= Euphy
+//===== Current Version: =====================================
+//= 1.0
+//===== Compatible With: =====================================
+//= rAthena SVN
+//===== Description: =========================================
+//= [Official Conversion]
+//= Refiners that use HD ores to refine equipment. Upon
+//= failure, the equipment is not destroyed; rather, its
+//= refine level decreases by 1. The success rate is identical
+//= to that for Enriched ores.
+//= - "Blacksmith Mighty Hammer" only refines from +7~9.
+//= - "Basta" only refines from +10 and up.
+//===== Additional Comments: =================================
+//= 1.0 First version. [Euphy]
+//============================================================
+
+// Blacksmith Mighty Hammer (+7~9)
+//============================================================
+- script ::MightyHammer -1,{
+ disable_items;
+ mes "[Blacksmith Mighty Hammer]";
+ mes "Unlike others, I am a blacksmith who refines a very limited number of items.";
+ mes "I refine only items that are ^CC0000+7 to +9^000000.";
+ next;
+ mes "[Blacksmith Mighty Hammer]";
+ mes "My specialty is that even if my refining fails, the refine level decreases by 1 without losing the gear. Isn't it great?";
+ next;
+ mes "[Blacksmith Mighty Hammer]";
+ mes "So lets kick this into overdrive, what d' ya say? What item do you want to refine?";
+ next;
+ setarray .@position$[1],"Head","Body","Left Hand","Right Hand","Robe","Shoes","Accessory 1","Accessory 2","Head 2","Head 3";
+ set .@menu$,"";
+ for(set .@i,1; .@i<=10; set .@i,.@i+1)
+ set .@menu$, .@menu$+((getequipisequiped(.@i))?getequipname(.@i):.@position$[.@i]+"-[Not equipped]")+":";
+ set .@part, select(.@menu$);
+ if (!getequipisequiped(.@part)) {
+ mes "[Blacksmith Mighty Hammer]";
+ switch(.@part) {
+ case 1:
+ mes "I'm a blacksmith, not a hairstylist.";
+ break;
+ case 2:
+ mes "With my hammer, I will make you a star of the sky.";
+ break;
+ case 3:
+ case 4:
+ mes "Making artificial hands is not my specialty.";
+ break;
+ case 5:
+ mes "Bring out the item so I can refine it!";
+ break;
+ case 6:
+ mes "Where is this foot odor coming from?";
+ break;
+ case 7:
+ case 8:
+ mes "Where is the accessory?";
+ break;
+ case 9:
+ mes "What do you want me to refine?";
+ break;
+ case 10:
+ mes "Huh? What do you want me to do?";
+ break;
+ }
+ close;
+ }
+ if (!getequipisenableref(.@part)) {
+ mes "[Blacksmith Mighty Hammer]";
+ mes "This item can't be refined.";
+ close;
+ }
+ if (getequiprefinerycnt(.@part) < 7 || getequiprefinerycnt(.@part) > 9) {
+ mes "[Blacksmith Mighty Hammer]";
+ mes "I only handle items with refine levels from +7 to +9.";
+ close;
+ }
+ switch(getequipweaponlv(.@part)) {
+ default:
+ case 0:
+ set .@price,20000;
+ set .@material,6241; //HD_Elunium
+ break;
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ set .@price,20000;
+ set .@material,6240; //HD_Oridecon
+ break;
+ }
+ mes "[Blacksmith Mighty Hammer]";
+ mes "In order to refine the gear you selected you need ^ff9999"+getitemname(.@material)+"^000000 and 20,000 zeny as a fee.";
+ mes "Do you have them ready?";
+ next;
+ if(select("Yes:No") == 2) {
+ mes "[Blacksmith Mighty Hammer]";
+ mes "I will wait until you are ready.";
+ close;
+ }
+ if (getequippercentrefinery(.@part) < 100) {
+ mes "[Blacksmith Mighty Hammer]";
+ mes "It looks like this item will likely fail to be refined.";
+ mes "Well, even if it fails, it only decreases by 1 refine level.";
+ mes "Would you like to continue refining?";
+ next;
+ if(select("Yes:No") == 2) {
+ mes "[Blacksmith Mighty Hammer]";
+ mes "Only those who overcome fear of failure will obtain a masterpiece.";
+ close;
+ }
+ }
+ if (countitem(.@material) == 0 || Zeny < .@price) {
+ mes "[Blacksmith Mighty Hammer]";
+ mes "Didn't you just say you had everything ready?";
+ close;
+ }
+ delitem .@material,1;
+ set Zeny, Zeny-.@price;
+ mes "[Blacksmith Mighty Hammer]";
+ mes "Tac! Tac! Tac!";
+ if (getequippercentrefinery(.@part) > rand(100) || getequippercentrefinery(.@part) > rand(100)) {
+ successrefitem .@part;
+ next;
+ emotion e_no1;
+ mes "[Blacksmith Mighty Hammer]";
+ mes "The sound refreshes my mind everytime I hear it.";
+ mes "Here, have it. Refine succeeded flawlessly!";
+ close;
+ }
+ downrefitem .@part;
+ next;
+ emotion e_omg;
+ mes "[Blacksmith Mighty Hammer]";
+ mes "Oops!!";
+ next;
+ mes "[Blacksmith Mighty Hammer]";
+ mes "I am sure a person like you would never blame me for a decrease in refine level by 1. Hmm.";
+ close;
+}
+prt_in,59,54,3 duplicate(MightyHammer) Mighty Hammer#prt 826
+morocc_in,65,30,3 duplicate(MightyHammer) Mighty Hammer#morocc 826
+payon,148,176,3 duplicate(MightyHammer) Mighty Hammer#pay 826
+alberta_in,16,56,3 duplicate(MightyHammer) Mighty Hammer#alb 826
+yuno_in01,171,18,3 duplicate(MightyHammer) Mighty Hammer#yuno 826
+ein_in01,22,82,3 duplicate(MightyHammer) Mighty Hammer#ein 826
+lhz_in02,280,19,3 duplicate(MightyHammer) Mighty Hammer#lhz 826
+
+// iRO NPC locations:
+// moc_para01,38,185,4 duplicate(MightyHammer) Mighty Hammer#ed 826
+// payon,174,133,4 duplicate(MightyHammer) Mighty Hammer#im 826
+
+// Basta (+10 and up)
+//============================================================
+- script ::Basta -1,{
+ disable_items;
+ mes "[Basta]";
+ mes "I'm the best Blacksmith in the whole world, Basta.";
+ mes "But I don't provide a normal refine service.";
+ mes "I only refine equipment ^CC0000over +10^000000.";
+ next;
+ mes "[Basta]";
+ mes "Which equipment do you want to refine?";
+ next;
+ setarray .@position$[1],"Head","Body","Left Hand","Right Hand","Robe","Shoes","Accessory 1","Accessory 2","Head 2","Head 3";
+ set .@menu$,"";
+ for(set .@i,1; .@i<=10; set .@i,.@i+1)
+ set .@menu$, .@menu$+((getequipisequiped(.@i))?getequipname(.@i):.@position$[.@i]+"-[Unequipped]")+":";
+ set .@part, select(.@menu$);
+ if (!getequipisequiped(.@part)) {
+ mes "[Basta]";
+ switch(.@part) {
+ case 1:
+ mes "Is your head an equipment?";
+ break;
+ case 2:
+ mes "What do you want me to do?";
+ break;
+ case 3:
+ case 4:
+ mes "Making artificial hands is not my specialty.";
+ break;
+ case 5:
+ mes "Do you even know what a robe is?";
+ break;
+ case 6:
+ mes "If you want to refine your feet, don't come to me, try running a marathon.";
+ break;
+ case 7:
+ case 8:
+ mes "Where is the accessory?";
+ break;
+ case 9:
+ mes "Well... I don't see any equipment worth refining.";
+ break;
+ case 10:
+ mes "I can't make you smart. Go see a school teacher for that.";
+ break;
+ }
+ close;
+ }
+ if (!getequipisenableref(.@part)) {
+ mes "[Basta]";
+ mes "Even I cannot refine this item. There's no way.";
+ close;
+ }
+ if (getequiprefinerycnt(.@part) < 10) {
+ mes "[Basta]";
+ mes "Haven't I told you? I only refine equipments that are +10 and above.";
+ close;
+ }
+ if (getequiprefinerycnt(.@part) == 20) {
+ mes "[Basta]";
+ mes "This weapon is perfect, no need to refine it anymore~";
+ close;
+ }
+ switch(getequipweaponlv(.@part)) {
+ default:
+ case 0:
+ set .@price,100000;
+ set .@material,6225; //HD_Carnium
+ set .@type$,"armor";
+ break;
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ set .@price,100000;
+ set .@material,6226; //HD_Bradium
+ set .@type$,"weapon";
+ break;
+ }
+ mes "[Basta]";
+ mes "Hmm... is this the one you want to refine?";
+ mes "To refine this equipment, I need 1 ^ff9999"+getitemname(.@material)+"^000000 and 100,000 zeny as a fee.";
+ mes "Do you really want to refine this?";
+ next;
+ if(select("Yes:No") == 2) {
+ mes "[Basta]";
+ mes "Okay. If that's what you want...";
+ close;
+ }
+ if (getequippercentrefinery(.@part) < 100) {
+ mes "[Basta]";
+ mes "This "+.@type$+" has already been refined pretty high.";
+ mes "If you try to refine it more, the refine level could decrease.";
+ next;
+ mes "[Basta]";
+ mes "I am different from the blacksmiths in others places.";
+ mes "It is impossible that the refine level will drop by, say, 3 or 4... that sounds scary.";
+ mes "Here it can only decrease by 1 level.";
+ next;
+ mes "[Basta]";
+ mes "Compared to other blacksmiths, the risk is smaller.";
+ mes "I've given all precautions. Do you want to try it?";
+ next;
+ if(select("Yes:No") == 2) {
+ mes "[Basta]";
+ mes "Well~";
+ mes "Not challenging at all could also be a kind of wisdom in life.";
+ close;
+ }
+ }
+ if (countitem(.@material) == 0 || Zeny < .@price) {
+ mes "[Basta]";
+ mes "Hmm... You didn't bring all the materials needed.";
+ mes "Come back when you have them all.";
+ close;
+ }
+ delitem .@material,1;
+ set Zeny, Zeny-.@price;
+ mes "Pow! Pow! Pow! Pow!";
+ if (getequippercentrefinery(.@part) > rand(100) || getequippercentrefinery(.@part) > rand(100)) {
+ successrefitem .@part;
+ next;
+ emotion e_no1;
+ mes "[Basta]";
+ mes "Great! Nicely done!!";
+ mes "I really am the best blacksmith in the whole wide world!";
+ close;
+ }
+ downrefitem .@part;
+ next;
+ emotion (!rand(5))?e_cash:e_omg;
+ mes "[Basta]";
+ mes "Aaaaaaaaaaak!!!";
+ next;
+ mes "[Basta]";
+ mes "Damn it!";
+ mes "Refining failed and refine level has decreased!";
+ mes "Even the best blacksmith in the world doesn't guarantee 100% success!";
+ mes "Too bad.";
+ next;
+ mes "[Basta]";
+ mes "I'll do better next time! Don't worry!";
+ close;
+}
+prt_in,57,54,3 duplicate(Basta) Basta#prt 826
+morocc_in,68,30,3 duplicate(Basta) Basta#morocc 826
+payon,148,174,3 duplicate(Basta) Basta#payon 826
+alberta_in,18,56,3 duplicate(Basta) Basta#alberta 826
+yuno_in01,173,18,3 duplicate(Basta) Basta#yuno 826
+ein_in01,24,82,3 duplicate(Basta) Basta#einbroch 826
+lhz_in02,280,17,3 duplicate(Basta) Basta#lighthalzen 826
diff --git a/npc/re/merchants/refine.txt b/npc/re/merchants/refine.txt
index 27a09fce7..b1493e12d 100644
--- a/npc/re/merchants/refine.txt
+++ b/npc/re/merchants/refine.txt
@@ -3,7 +3,7 @@
//===== By: ==================================================
//= Hercules Dev Team
//===== Current Version: =====================================
-//= 1.0a
+//= 1.2
//===== Compatible With: =====================================
//= Hercules
//===== Description: =========================================
@@ -11,20 +11,23 @@
//===== Additional Comments: =================================
//= 1.0 Moved some scripts to Renewal file, optimized "Austry" NPC. [Euphy]
//= 1.0a Added 'disable_items' command. [Euphy]
+//= 1.1 Added Malangdo Refiner "Clink". [Euphy]
+//= 1.2 Added official success calculation, thanks to Helvetica.
+//= The safe/multiple refine feature is now functional. [Euphy]
//============================================================
// +11 and above Refiners
//============================================================
prt_in,90,72,5 script Bestry#prt 826,{
- callfunc "refinenew","Bestry",0,0;
+ callfunc "refinenew","Bestry",0;
end;
}
morocc_in,64,41,5 script Bestry#moc 826,{
- callfunc "refinenew","Bestry",0,0;
+ callfunc "refinenew","Bestry",0;
end;
}
payon_in01,18,132,3 script Bestry#pay 826,{
- callfunc "refinenew","Bestry",0,0;
+ callfunc "refinenew","Bestry",0;
end;
}
@@ -36,10 +39,8 @@ payon_in01,18,132,3 script Bestry#pay 826,{
//= If you enable this function, be sure to edit the value of
//= .@safe to the max safe refine in refine_db.txt as well.
//=
-//= The official script uses a command which seems to generate a
-//= random result upon refining: success, downgrade, or failure.
-//= To enable that feature, set the third argument to '1' in the
-//= function call. Otherwise, the chance in refine_db.txt is used.
+//= On official servers, if an item is unsuccessfully refined
+//= it will break at a 20% rate and downgrade at an 80% rate.
//============================================================
function script refinenew {
disable_items;
@@ -76,16 +77,6 @@ function script refinenew {
mes "refine this item at all...";
close;
}
- //Check if the item is identified... (Don't know why this is in here... but kept it anyway)
- if(!getequipisidentify(.@part)) {
- mes "[" + getarg(0) + "]";
- mes "You can't refine this";
- mes "if you haven't appraised";
- mes "it first. Make sure your";
- mes "stuff is identified before";
- mes "I can refine it.";
- close;
- }
//Check to see if the items is at least +10
if(getequiprefinerycnt(.@part) < 10) {
mes "["+ getarg(0) +"]";
@@ -104,7 +95,12 @@ function script refinenew {
if ((getequipweaponlv(.@part) >= 1) && (getequipweaponlv(.@part) <= 4)) {
set .@material,6224;
set .@price,100000;
- set .@safe,10;
+ switch(getequipweaponlv(.@part)) {
+ case 1: set .@safe,17; break;
+ case 2: set .@safe,16; break;
+ case 3: set .@safe,15; break;
+ case 4: set .@safe,14; break;
+ }
mes "["+ getarg(0) +"]";
mes "Hmm a weapon, is that ok?";
mes "If you want to refine this weapon,";
@@ -113,7 +109,7 @@ function script refinenew {
} else {
set .@material,6223;
set .@price,100000;
- set .@safe,10;
+ set .@safe,14;
mes "["+ getarg(0) +"]";
mes "Hmm an armor, is that ok?";
mes "If you want to refine this armor,";
@@ -179,19 +175,17 @@ function script refinenew {
mes "You switched the item while I wasn't looking! Get out of here!";
close;
}
- if(getarg(2) == 1){
- set .@rand,rand(1,3);
- if (.@rand == 1) {
- mes "Clang! Clang! Clang! Clang!";
- successrefitem .@part;
- next;
- emotion e_no1;
- mes "["+ getarg(0) +"]";
- mes "Good! Succes!!!";
- mes "I am the best Blacksmith.";
- close;
- }
- if (.@rand == 2) {
+ if (getequippercentrefinery(.@part) > rand(100)) {
+ mes "Clang! Clang! Clang! Clang!";
+ successrefitem .@part;
+ next;
+ emotion e_no1;
+ mes "["+ getarg(0) +"]";
+ mes "Good! Succes!!!";
+ mes "I am the best Blacksmith.";
+ close;
+ } else {
+ if (rand(100) < 80) {
mes "["+ getarg(0) +"]";
mes "Clang! Clang! Clang! Clang!";
downrefitem .@part;
@@ -209,72 +203,26 @@ function script refinenew {
mes "["+ getarg(0) +"]";
mes "I will do a better job next time! Don't worry!";
close;
+ } else {
+ mes "["+ getarg(0) +"]";
+ mes "Clang! Clang! Clang!";
+ failedrefitem .@part;
+ next;
+ emotion (!rand(5))?e_cash:e_omg;
+ mes "["+ getarg(0) +"]";
+ mes "Hmmm!";
+ next;
+ mes "["+ getarg(0) +"]";
+ mes "Oh my! I've failed to refine stuff...";
+ mes "I didn't mean it!";
+ mes "There could've been made an mistake even though I am the best ever.";
+ mes "It was out of my hands.";
+ next;
+ mes "["+ getarg(0) +"]";
+ mes "I will do a better job next time! Don't worry!";
+ close;
}
- mes "["+ getarg(0) +"]";
- mes "Clang! Clang! Clang!";
- failedrefitem .@part;
- next;
- emotion (!rand(5))?e_cash:e_omg;
- mes "["+ getarg(0) +"]";
- mes "Hmmm!";
- next;
- mes "["+ getarg(0) +"]";
- mes "Oh my! I've failed to refine stuff...";
- mes "I didn't mean it!";
- mes "There could've been made an mistake even though I am the best ever.";
- mes "It was out of my hands.";
- next;
- mes "["+ getarg(0) +"]";
- mes "I will do a better job next time! Don't worry!";
- close;
}
- set .@rand,rand(100);
- if (getequippercentrefinery(.@part) > .@rand) {
- mes "Clang! Clang! Clang! Clang!";
- successrefitem .@part;
- next;
- emotion e_no1;
- mes "["+ getarg(0) +"]";
- mes "Good! Succes!!!";
- mes "I am the best Blacksmith.";
- close;
- }
- if (getequippercentrefinery(.@part) < .@rand) {
- mes "["+ getarg(0) +"]";
- mes "Clang! Clang! Clang! Clang!";
- downrefitem .@part;
- next;
- emotion (!rand(5))?e_cash:e_omg;
- mes "["+ getarg(0) +"]";
- mes "Ahhh!!!";
- next;
- mes "["+ getarg(0) +"]";
- mes "Oh my!";
- mes "The upgrade level has dropped...";
- mes "There could've been made an mistake even though I am the best ever.";
- mes "It was out of my hands.";
- next;
- mes "["+ getarg(0) +"]";
- mes "I will do a better job next time! Don't worry!";
- close;
- }
- mes "["+ getarg(0) +"]";
- mes "Clang! Clang! Clang!";
- failedrefitem .@part;
- next;
- emotion (!rand(5))?e_cash:e_omg;
- mes "["+ getarg(0) +"]";
- mes "Hmmm!";
- next;
- mes "["+ getarg(0) +"]";
- mes "Oh my! I've failed to refine stuff...";
- mes "I didn't mean it!";
- mes "There could've been made an mistake even though I am the best ever.";
- mes "It was out of my hands.";
- next;
- mes "["+ getarg(0) +"]";
- mes "I will do a better job next time! Don't worry!";
- close;
}
// New +11 and above Refining Functions ========================
if(getequiprefinerycnt(.@part) < .@safe) {
@@ -289,13 +237,12 @@ function script refinenew {
set .@refinecnt,.@safe - getequiprefinerycnt(.@part);
break;
case 2:
- next;
mes "[" + getarg(0) + "]";
mes "How many times would you like me to refine your item?";
next;
input .@refinecnt;
set .@refinecheck,.@refinecnt + getequiprefinerycnt(.@part);
- if (.@refinecnt < 1 || .@refinecheck > 10) {
+ if (.@refinecnt < 1 || .@refinecheck > 20) {
mes "[" + getarg(0) + "]";
mes "I can't refine this item that many times.";
close;
@@ -313,7 +260,6 @@ function script refinenew {
}
break;
case 3:
- next;
mes "[" + getarg(0) + "]";
mes "You said so... So be it.";
close;
@@ -347,20 +293,13 @@ function script refinenew {
mes "Get out before I stun you with my Hammer!!";
close;
}
- if(getarg(2) == 1){
- set .@rand,rand(1,3);
- if (.@rand == 1) {
- mes "["+ getarg(0) +"]";
- mes "Clang! Clang! Clang! Clang!";
- successrefitem .@part;
- next;
- emotion e_no1;
- mes "["+ getarg(0) +"]";
- mes "Good! Succes!!!";
- mes "I am the best Blacksmith.";
- close;
- }
- if (.@rand == 2) {
+ if (getequippercentrefinery(.@part) > rand(100)) {
+ mes "Clang! Clang! Clang! Clang!";
+ successrefitem .@part;
+ set .@refinecnt,.@refinecnt - 1;
+ next;
+ } else {
+ if (rand(100) < 80) {
mes "["+ getarg(0) +"]";
mes "Clang! Clang! Clang! Clang!";
downrefitem .@part;
@@ -378,75 +317,31 @@ function script refinenew {
mes "["+ getarg(0) +"]";
mes "I will do a better job next time! Don't worry!";
close;
+ } else {
+ mes "["+ getarg(0) +"]";
+ mes "Clang! Clang! Clang!";
+ failedrefitem .@part;
+ next;
+ emotion (!rand(5))?e_cash:e_omg;
+ mes "["+ getarg(0) +"]";
+ mes "Hmmm!";
+ next;
+ mes "["+ getarg(0) +"]";
+ mes "Oh my! I've failed to refine stuff...";
+ mes "I didn't mean it!";
+ mes "There could've been made an mistake even though I am the best ever.";
+ mes "It was out of my hands.";
+ next;
+ mes "["+ getarg(0) +"]";
+ mes "I will do a better job next time! Don't worry!";
+ close;
}
- mes "["+ getarg(0) +"]";
- mes "Clang! Clang! Clang!";
- failedrefitem .@part;
- next;
- emotion (!rand(5))?e_cash:e_omg;
- mes "["+ getarg(0) +"]";
- mes "Hmmm!";
- next;
- mes "["+ getarg(0) +"]";
- mes "Oh my! I've failed to refine stuff...";
- mes "I didn't mean it!";
- mes "There could've been made an mistake even though I am the best ever.";
- mes "It was out of my hands.";
- next;
- mes "["+ getarg(0) +"]";
- mes "I will do a better job next time! Don't worry!";
- close;
- }
- set .@rand,rand(100);
- if (getequippercentrefinery(.@part) > .@rand) {
- mes "Clang! Clang! Clang! Clang!";
- successrefitem .@part;
- next;
- emotion e_no1;
- mes "["+ getarg(0) +"]";
- mes "Good! Succes!!!";
- mes "I am the best Blacksmith.";
- close;
}
- if (getequippercentrefinery(.@part) < .@rand) {
- mes "["+ getarg(0) +"]";
- mes "Clang! Clang! Clang! Clang!";
- downrefitem .@part;
- next;
- emotion (!rand(5))?e_cash:e_omg;
- mes "["+ getarg(0) +"]";
- mes "Ahhh!!!";
- next;
- mes "["+ getarg(0) +"]";
- mes "Oh my!";
- mes "The upgrade level has dropped...";
- mes "There could've been made an mistake even though I am the best ever.";
- mes "It was out of my hands.";
- next;
- mes "["+ getarg(0) +"]";
- mes "I will do a better job next time! Don't worry!";
- close;
- }
- mes "["+ getarg(0) +"]";
- mes "Clang! Clang! Clang!";
- failedrefitem .@part;
- next;
- emotion (!rand(5))?e_cash:e_omg;
- mes "["+ getarg(0) +"]";
- mes "Hmmm!";
- next;
- mes "["+ getarg(0) +"]";
- mes "Oh my! I've failed to refine stuff...";
- mes "I didn't mean it!";
- mes "There could've been made an mistake even though I am the best ever.";
- mes "It was out of my hands.";
- next;
- mes "["+ getarg(0) +"]";
- mes "I will do a better job next time! Don't worry!";
- close;
}
- mes "[" + getarg(0) + "]";
- mes "All finished... Come again soon.";
+ emotion e_no1;
+ mes "["+ getarg(0) +"]";
+ mes "Good! Succes!!!";
+ mes "I am the best Blacksmith.";
close;
}
@@ -499,3 +394,168 @@ function script refinenew {
prt_in,85,71,5 duplicate(Austry#ref) Austry#prt 826
payon_in01,14,125,5 duplicate(Austry#ref) Austry#pay 826
morocc_in,60,38,5 duplicate(Austry#ref) Austry#moc 826
+
+// Malangdo Refiner
+//============================================================
+malangdo,224,172,6 script Clink#mal_normal 544,{
+ disable_items;
+ mes "[Clink]";
+ mes "My cool dad Holink said I have the world's greatest refine hammer!!";
+ mes "Meow Meow~";
+ mes "Who do you think I am?";
+ mes "Yes!!! You!! You want to refine?";
+ next;
+ setarray .@position$[1],"Head","Body","Left Hand","Right Hand","Robe","Shoes","Accessory 1","Accessory 2","Head 2","Head 3";
+ set .@menu$,"";
+ for(set .@i,1; .@i<=10; set .@i,.@i+1)
+ set .@menu$, .@menu$+((getequipisequiped(.@i))?getequipname(.@i):.@position$[.@i]+"-[Empty]")+":";
+ set .@part, select(.@menu$);
+ if (!getequipisequiped(.@part)) {
+ mes "[Clink]";
+ switch(.@part) {
+ case 1:
+ mes "Dad said. There's no cure for stupidity...";
+ break;
+ case 2:
+ mes "There's nothing to see here!!";
+ break;
+ case 3:
+ mes "What an arrogant left hand this is!";
+ break;
+ case 4:
+ mes "What an arrogant right hand this is!";
+ break;
+ case 5:
+ mes "Get that dirty thing off my face!!";
+ break;
+ case 6:
+ mes "Kyaong~! Do not provoke me.";
+ break;
+ case 7:
+ case 8:
+ mes "Where is the accessory?";
+ break;
+ case 9:
+ case 10:
+ mes "Are you talking about the other head part?";
+ break;
+ }
+ close;
+ }
+ if (!getequipisenableref(.@part)) {
+ mes "[Clink]";
+ mes "This can't be refined!!";
+ close;
+ }
+ if (getequiprefinerycnt(.@part) >= 10) {
+ mes "[Clink]";
+ mes "Perfect refining. Did I do this for you?";
+ close;
+ }
+ mes "[Clink]";
+ switch(getequipweaponlv(.@part)) {
+ default:
+ case 0: // Armor
+ set .@price,2000;
+ set .@material,985; //Elunium
+ set .@type$,"armor";
+ mes "Hmm, an armor refine? Someone like you?";
+ break;
+ case 1: // Level 1 Weapon
+ set .@price,50;
+ set .@material,1010; //Phracon
+ set .@type$,"weapon";
+ mes "A level 1 weapon?";
+ mes "Urr... Annoying... Okay, let's try...";
+ break;
+ case 2: // Level 2 Weapon
+ set .@price,200;
+ set .@material,1011; //Emveretarcon
+ set .@type$,"weapon";
+ mes "A level 2 weapon?";
+ break;
+ case 3: // Level 3 Weapon
+ set .@price,20000;
+ set .@material,984; //Oridecon
+ set .@type$,"weapon";
+ mes "Woot!! A level 3 weapon? Impressive~";
+ break;
+ case 4: // Level 4 Weapon
+ set .@price,50000;
+ set .@material,984; //Oridecon
+ set .@type$,"weapon";
+ mes "Wow!... A level 4 weapon~!!";
+ break;
+ }
+ mes "You need ^ff9999"+getitemname(.@material)+"^000000 and ^ff9999"+.@price+"^000000 Zeny. Do you have them?";
+ next;
+ if(select("Yes, I do!!:Forget about it!!") == 2) {
+ mes "[Clink]";
+ mes "I knew it!!";
+ mes "I knew you were not worth trying my magical refining hammer for.";
+ close;
+ }
+ if (getequippercentrefinery(.@part) < 100) {
+ mes "[Clink]";
+ mes "Wow!!";
+ mes "This "+.@type$+" has been refined quite a bit, huh?";
+ mes "You do know that this might break, right?";
+ next;
+ mes "[Clink]";
+ mes "If you break the "+.@type$+", you can never use it again.";
+ mes "Cards and enchant effects...";
+ mes "the ^ff0000whole thing will disappear^000000.";
+ mes "You still up for this~?";
+ next;
+ if(select("Yes, I am!!:Forget about it!!") == 2) {
+ mes "[Clink]";
+ mes "I knew it!!";
+ mes "You can't even take this big step. Don't think about refining...";
+ close;
+ }
+ }
+ if (countitem(.@material) == 0 || Zeny < .@price) {
+ mes "[Clink]";
+ mes "Hey you!! Didn't I tell you";
+ mes "that you need ^ff9999"+getitemname(.@material)+"^000000 and ^ff9999"+.@price+"^000000 Zeny??!!";
+ close;
+ }
+ delitem .@material,1;
+ set Zeny, Zeny-.@price;
+ if (getequippercentrefinery(.@part) <= rand(100)) {
+ failedrefitem .@part;
+ mes "[Clink]";
+ mes "Cry Hammer!! Cry!!!";
+ next;
+ switch(rand(1,5)) {
+ case 1: emotion e_sob; break;
+ case 2: emotion e_swt2; break;
+ case 3: emotion e_wah; break;
+ case 4: emotion e_hmm; break;
+ case 5: emotion e_lv2; break;
+ }
+ mes "[Clink]";
+ mes "Huh?! I failed?!";
+ next;
+ mes "[Clink]";
+ mes "Arrgg~ It's all~ Broken...? What a pity~";
+ next;
+ mes "[Clink]";
+ mes "Hey...!! Get me another one.";
+ mes "This is not possible.";
+ mes "How can my hammer fail from refining?";
+ close;
+ }
+ successrefitem .@part;
+ mes "[Clink]";
+ mes "Cry Hammer!! Cry!!!";
+ next;
+ emotion e_kis;
+ mes "[Clink]";
+ mes "Ok!! Perfect!!";
+ mes "There's nothing I can't refine";
+ mes "with this special hammer.";
+ mes "You can praise me!!";
+ mes "What a day!!";
+ close;
+}
diff --git a/npc/re/merchants/ticket_refiner.txt b/npc/re/merchants/ticket_refiner.txt
new file mode 100644
index 000000000..7246528a4
--- /dev/null
+++ b/npc/re/merchants/ticket_refiner.txt
@@ -0,0 +1,162 @@
+//===== rAthena Script =======================================
+//= Ticket Refiner
+//===== By: ==================================================
+//= Euphy
+//===== Current Version: =====================================
+//= 1.0
+//===== Compatible With: =====================================
+//= rAthena SVN
+//===== Description: =========================================
+//= [Official Conversion]
+//= Refiner that uses +5~9/+11 refine tickets to refine
+//= equipment with no chance of failure.
+//= NOTE: This NPC is currently disabled on official servers.
+//===== Additional Comments: =================================
+//= 1.0 First version. [Euphy]
+//============================================================
+
+prontera,184,177,6 script Refine Master 851,{
+ disable_items;
+ if (countitem(6238) || countitem(6228) || countitem(6229) || countitem(6230) || countitem(6231) || countitem(6456))
+ set .@bWeaponUp,1;
+ if (countitem(6239) || countitem(6232) || countitem(6233) || countitem(6234) || countitem(6235) || countitem(6457))
+ set .@bArmorUp,1;
+ if (!.@bWeaponUp && !.@bArmorUp) {
+ mes "[Refine Master]";
+ mes "Hello!";
+ mes "What's up?";
+ mes "I'm a specialist";
+ mes "for refining items,";
+ mes "but I don't work anymore.";
+ next;
+ switch(select("I'll go on my way.:Hmm... this makes me curious.")) {
+ case 1:
+ mes "[Refine Master]";
+ mes "Take care, adventurer.";
+ close;
+ case 2:
+ mes "[Refine Master]";
+ mes "Actully, I sometimes provide refine services for adventurers with a ^006400Refine Ticket^000000...";
+ mes "Bye bye~!";
+ close;
+ }
+ }
+ emotion e_gasp;
+ mes "[Refine Master]";
+ mes "Greetings!";
+ mes "I can refine an item up to the ^006400same level as your ticket^000000.";
+ mes "You don't have to worry! There's no chance of breaking your item.";
+ next;
+ if(select("I'll come back later.:Refine item with ticket.") == 1) {
+ mes "[Refine Master]";
+ mes "Okay.";
+ mes "You can come again later.";
+ close;
+ }
+ mes "[Refine Master]";
+ mes "Which equipment would you like to refine?";
+ next;
+ setarray .@position$[1],"Head upper","Armor","Left hand","Right hand","Robe","Shoes","Accessory 1","Accessory 2","Head middle","Head lower";
+ set .@menu$,"";
+ for(set .@i,1; .@i<=10; set .@i,.@i+1)
+ set .@menu$, .@menu$+((getequipisequiped(.@i))?getequipname(.@i):.@position$[.@i]+"- [Empty]")+":";
+ set .@part, select(.@menu$);
+ if (!getequipisequiped(.@part)) {
+ mes "[Refine Master]";
+ mes "You have to equip the item you want to refine.";
+ close;
+ }
+ if (!getequipisenableref(.@part)) {
+ emotion e_otl;
+ mes "[Refine Master]";
+ mes "Oh, I'm sorry.";
+ mes "This item is impossible to refine.";
+ close;
+ }
+ switch(getequipweaponlv(.@part)) {
+ default:
+ case 0:
+ setarray .@tickets[0],6457,6235,6234,6233,6232,6239;
+ setarray .@levels[0],5,6,7,8,9,11;
+ set .@type$,"Armor";
+ set .@check,.@bArmorUp;
+ break;
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ setarray .@tickets[0],6456,6231,6230,6229,6228,6238;
+ setarray .@levels[0],5,6,7,8,9,11;
+ set .@type$,"Weapon";
+ set .@check,.@bWeaponUp;
+ break;
+ }
+ if (!.@check) {
+ emotion e_dots;
+ mes "[Refine Master]";
+ mes "If you want to refine this ^006400"+.@type$+"^000000, please come along with ^006400"+.@type$+" Refine Ticket^000000.";
+ mes "See you later!";
+ close;
+ }
+ mes "[Refine Master]";
+ mes "Please choose which ^006400"+.@type$+" Refine Ticket^000000 you want to use.";
+ next;
+ set .@menu$,"";
+ for(set .@i,0; .@i<getarraysize(.@tickets); set .@i,.@i+1)
+ set .@menu$, .@menu$+getitemname(.@tickets[.@i])+":";
+ set .@select, select(.@menu$)-1;
+ set .@ticket_lv, .@levels[.@select];
+ set .@ticket_id, .@tickets[.@select];
+ if (countitem(.@ticket_id) == 0) {
+ emotion e_what;
+ mes "[Refine Master]";
+ mes getitemname(.@ticket_id)+" is not in your inventory. Did you put it in your storage?";
+ mes "Please check again.";
+ mes "See you later!";
+ close;
+ }
+ if (getequiprefinerycnt(.@part) >= .@ticket_lv) {
+ emotion e_swt2;
+ mes "[Refine Master]";
+ mes "^8B4513This item is already refined as much as your deed.^000000";
+ mes "Please come along with an item refined less than your ticket.";
+ close;
+ }
+ mes "[Refine Master]";
+ mes "I'm going to refine ^006400"+getequipname(.@part)+"^8B4513 up to the +"+.@ticket_lv+" level^000000 with ^006400"+getitemname(.@ticket_id)+"^000000.";
+ mes "May I proceed?";
+ next;
+ if(select("No.:Yes.") == 1) {
+ emotion e_dots;
+ mes "[Refine Master]";
+ mes "Oh, you changed your mind.";
+ mes "Ok.";
+ mes "You can come back later.";
+ close;
+ }
+ mes "[Refine Master]";
+ mes "Great.";
+ mes "As you wish!";
+ mes "I have my own special way to refine...";
+ mes ".......ka boom!";
+ specialeffect EF_SUI_EXPLOSION;
+ if (countitem(.@ticket_id))
+ delitem .@ticket_id,1;
+ else {
+ next;
+ mes "Error!";
+ mes "Please report this.";
+ close;
+ }
+ for(set .@i,getequiprefinerycnt(.@part); .@i<.@ticket_lv; set .@i,.@i+1)
+ successrefitem .@part;
+ next;
+ emotion e_ho;
+ mes "[Refine Master]";
+ mes "Alright, here it is~";
+ mes "Well, ^0000FF"+strcharinfo(0)+"^000000!";
+ mes "Congratulations on your shining "+.@type$+".";
+ mes "You look GREAT!";
+ mes "Farewell~!";
+ close;
+}
diff --git a/npc/re/quests/eden/86-90.txt b/npc/re/quests/eden/86-90.txt
index 4ac5bbb19..33dcf87ac 100644
--- a/npc/re/quests/eden/86-90.txt
+++ b/npc/re/quests/eden/86-90.txt
@@ -3,109 +3,194 @@
//===== By: ==================================================
//= Chilly
//===== Current Version: =====================================
-//= 1.2
+//= 1.3
//===== Description: =========================================
//= Repetable Quests for Players between Baselevel 86 - 90.
//===== Additional Comments: =================================
//= 1.0 First Version. [Chilly]
//= 1.1 Some little improvements here and there. [Masao]
//= 1.2 Optimized. [Euphy]
+//= 1.3 Updated to match the official script. [Euphy]
//============================================================
-moc_para01,48,175,3 script Mission [86 - 90] 857,{
+moc_para01,48,175,3 script 86-90 Mission Board 857,{
if (countitem(6219) < 1) {
- mes "- Only members of the -";
- mes "- Eden Group can read -";
- mes "- this bulletin board. -";
- close;
- }
- if (BaseLevel < 86) {
- mes "- This missions can only be -";
- mes "- read by those who are -";
- mes "- of the correct level. -";
- mes "- There might be another -";
- mes "- board somewhere for -";
- mes "- my level. -";
- close;
+ mes "Wait a minute!";
+ mes "-You need to have an-";
+ mes "-^4d4dff'Eden Group Mark'^000000-";
+ mes "-to receive these missions.-";
+ next;
+ switch(select("Just walk away.:^0000FFEden Group^000000 missions?:How can I be a member of the ^0000FFEden Group^000000?")) {
+ case 1:
+ close;
+ case 2:
+ mes "::The Eden Group Missions";
+ mes "::are basically missions";
+ mes "::requested by";
+ mes "::people from all around the kingdom.";
+ mes "::We just categorize them.";
+ next;
+ mes "::In the Eden Group,";
+ mes "::we sorted out the missions";
+ mes "::according to the level of difficulty.";
+ mes "::According to this level,";
+ mes "::you can find";
+ mes "::missions that";
+ mes "::suit you.";
+ next;
+ mes "::When you are done,";
+ mes "::you can come back";
+ mes "::to the mission board.";
+ next;
+ mes "::Then you will be";
+ mes "::rewarded!!";
+ mes "::Simple, isn't it!!";
+ mes "::No commission required!!";
+ close;
+ case 3:
+ mes "::You can become a member";
+ mes "::of the Eden Group";
+ mes "::to ^0000FFLaime Evenor^000000,";
+ mes "::who is waiting on the 1st floor.";
+ next;
+ mes "::If you become a member,";
+ mes "::you will get an";
+ mes "::\"^006400Eden Group Mark^000000\".";
+ mes "::Then you will be able";
+ mes "::to see the mission board.";
+ close;
+ }
}
- if (BaseLevel > 90) {
- setarray .@Exp[0],76000,82000,82000,72000,76000,72000,117000,82000,120000,72000,72000,72000,86000,80000;
- setarray .@Mob$[0],"Dragon Tail","Spring Rabbit","Pest","Bathory","Alarm","Baba Yaga","Hyegun","Antique Firelock","Zipper Bear","Earth Petite","Rafflesia","Venomous","Pitman","Yellow Novus";
- for(set .@i,0; .@i<14; set .@i,.@i+1)
- if (checkquest(4167+.@i,HUNTING) == 2) {
- mes "You hunted all 30 "+.@Mob$[.@i]+".";
- mes "Thank you very much.";
+ if (BaseLevel < 86 || BaseLevel > 90) {
+ // Quest IDs: 4167-4180
+ // Quest cooldown IDs: 4198-4211
+ setarray .@names$[0],
+ "Dragon Tail","Spring Rabbit","Pest",
+ "Bathory","Alarm",
+ "Baba Yaga","Yao Jun","Firelock Soldier","Zipper Bear",
+ "Ground Petite","Rafflesia","Venomous","Pitman","Yellow Novus";
+ setarray .@exp[0],
+ 76000,82000,82000,
+ 72000,76000,
+ 72000,78000,82000,80000,
+ 72000,72000,72000,86000,80000;
+ mes "You must be within level 86-90 to accept these missions.";
+ for(set .@quest,4167; .@quest<=4180; set .@quest,.@quest+1) {
+ set .@hunting, checkquest(.@quest,HUNTING);
+ if (.@hunting == 0 || .@hunting == 1) {
next;
- mes "I know it isn't much but here's a small gift.";
- mes "I hope that it helps you at least a little bit.";
+ mes ":: You cannot proceed in";
+ mes ":: ^0000FF"+.@names$[.@quest-4167]+" Hunting^000000.";
+ mes ":: The registration to the mission";
+ mes ":: is cancelled.";
+ erasequest .@quest;
+ close;
+ } else if (.@hunting == 2) {
next;
- erasequest 4167+.@i;
- getexp .@Exp[.@i],0;
- mes "Wooohoo!";
- mes "Good luck.";
+ mes ":: You added information";
+ mes ":: about the mission";
+ mes ":: ^0000FF"+.@names$[.@quest-4167]+" Hunting^000000";
+ mes ":: on the mission board.";
+ mes ":: You've got a";
+ mes ":: salutary experience.";
+ erasequest .@quest;
+ getexp .@exp[.@quest-4167],0;
close;
}
- mes "- This missions can only be -";
- mes "- read by those who are -";
- mes "- of the correct level. -";
- mes "- There might be another -";
- mes "- board somewhere for -";
- mes "- my level. -";
+ }
close;
}
- mes "- Many hunting missions -";
- mes "- are on the bulletin board. -";
+ mes "[86-90 Mission Board]";
+ mes "There are several requests on this board.";
next;
- switch(select("Turtle Dungeon Area:Clock Tower Area:Local Area:Other Area")) {
+ switch(select("^8B4513Turtle Island^000000:^8B4513Clock Tower Dungeon^000000:^8B4513Expansion Towns^000000:^8B4513Other Regions^000000")) {
case 1:
- switch(select("Dragon Tail:Spring Rabbit:Pest")) {
- case 1: callsub L_Quest,4167,"Dragon Tail",76000;
- case 2: callsub L_Quest,4168,"Spring Rabbit",82000;
- case 3: callsub L_Quest,4169,"Pest",82000;
+ mes "^8B4513Turtle Island^000000.";
+ mes "Which monster will you hunt or have you finished hunting?";
+ next;
+ switch(select("^0000FFDragon Tail^000000:^0000FFSpring Rabbit^000000:^0000FFPest^000000")) {
+ case 1: callsub L_Quest,4167,"Dragon Tail",76000,"µå·¡°ïÅ×ÀÏÄ«µå","There is a monster that only can be found on ^8B4513Turtle Island^000000.","s";
+ case 2: callsub L_Quest,4168,"Spring Rabbit",82000,"½ºÇÁ¸µ·¡ºøÄ«µå","There is a monster that only can be found on ^8B4513Turtle Island^000000.","s";
+ case 3: callsub L_Quest,4169,"Pest",82000,"Æ佺Ʈīµå","There is a monster that only can be found on ^8B4513Turtle Island^000000.","s";
}
case 2:
- switch(select("Bathory:Alarm")) {
- case 1: callsub L_Quest,4170,"Bathory",72000;
- case 2: callsub L_Quest,4171,"Alarm",76000;
+ mes "^8B4513Clock Tower Dungeon^000000.";
+ mes "Which monster will you hunt or have you finished hunting?";
+ next;
+ switch(select("^0000FFBathory^000000:^0000FFAlarm^000000")) {
+ case 1: callsub L_Quest,4170,"Bathory",72000,"¹Ù¼Ò¸®Ä«µå","The Clock Tower Dungeon is full of dangerous monsters.";
+ case 2: callsub L_Quest,4171,"Alarm",76000,"¾Ë¶÷Ä«µå","The Clock Tower Dungeon is full of dangerous monsters.";
}
case 3:
- switch(select("Baba Yaga:Hyegun:Antique Firelock:Zipper Bear")) {
- case 1: callsub L_Quest,4172,"Baba Yaga",72000;
- case 2: callsub L_Quest,4173,"Hyegun",117000;
- case 3: callsub L_Quest,4174,"Antique Firelock",82000;
- case 4: callsub L_Quest,4175,"Zipper Bear",120000;
+ mes "^8B4513Expansion Cities^000000";
+ mes "Which monster will you hunt or have you finished hunting?";
+ next;
+ switch(select("^0000FFBaba Yaga^000000:^0000FFYao Jun^000000:^0000FFFirelock Soldier^000000:^0000FFZipper Bear^000000")) {
+ case 1: callsub L_Quest,4172,"Baba Yaga",72000,"","The witch Baba Yaga can be found in the outskirts of Moscovia.";
+ case 2: callsub L_Quest,4173,"Yao Jun",117000,"Çý±ºÄ«µå","There are human-like monsters that roam around the dungeon in Louyang.";
+ case 3: callsub L_Quest,4174,"Firelock Soldier",82000,"±¸½ÄÁ¶ÃѺ´Ä«µå","There are human-like monsters that roam around the dungeon in Amatsu.","s";
+ case 4: callsub L_Quest,4175,"Zipper Bear",120000,"ÁöÆÛº£¾îÄ«µå","There are bear monsters swarming in the Kunlun dungeon.";
}
case 4:
- switch(select("Earth Petite:Rafflesia:Venomous:Pitman:Yellow Novus")) {
- case 1: callsub L_Quest,4176,"Earth Petite",72000;
- case 2: callsub L_Quest,4177,"Rafflesia",72000;
- case 3: callsub L_Quest,4178,"Venomous",72000;
- case 4: callsub L_Quest,4179,"Pitman",86000;
- case 5: callsub L_Quest,4180,"Yellow Novus",80000;
+ mes "[86-90 Mission Board]";
+ mes "Here is a list of random requests to hunt monsters in other regions of Rune Midgard.";
+ mes "Which monster will you hunt or have you finished hunting?";
+ next;
+ switch(select("^0000FFGround Petite^000000:^0000FFRafflesia^000000:^0000FFVenomous^000000:^0000FFPitman^000000:^0000FFYellow Novus^000000")) {
+ case 1: callsub L_Quest,4176,"Ground Petite",72000,"Áö»ó»Ú¶ìÄ«µå","There are dragon type monsters swarming the western region of Geffen.";
+ case 2: callsub L_Quest,4177,"Rafflesia",72000,"¶óÇ÷¹½Ã¾ÆÄ«µå","There are plant type monsters infesting the fields of Lighthalzen.";
+ case 3: callsub L_Quest,4178,"Venomous",72000,"º£³ë¸Ó½º","There are formless monsters floating around the fields of Einbroch.";
+ case 4: callsub L_Quest,4179,"Pitman",86000,"Ç͸Ç","There are undead monsters pushing a cart around the fields and dungeons of Einbroch.";
+ case 5: callsub L_Quest,4180,"Yellow Novus",80000,"¿»·Î¿ì³ë¹ö½º","There are yellow dragon type monsters terrorizing the fields of Hugel.";
}
}
end;
+
+//callsub L_Quest,<quest ID>,"<monster name>",<reward EXP>,"<cutin image>","<description>"{,"s"};
L_Quest:
- if (checkquest(getarg(0),HUNTING) == 2) {
- mes "You hunted all 30 "+getarg(1)+".";
- mes "Thank you very much.";
- next;
- mes "I know it isn't much but here's a small gift.";
- mes "I hope that it helps you at least a little bit.";
- next;
- erasequest getarg(0);
- getexp getarg(2),0;
- mes "Wooohoo!";
- mes "Good luck.";
+ set .@quest1, getarg(0);
+ set .@quest2, .@quest1+31;
+ set .@playtime, checkquest(.@quest2,PLAYTIME);
+ if (.@playtime == 0 || .@playtime == 1) {
+ mes "[86-90 Mission Board]";
+ mes "You need to wait 3 hours before you can take this mission again.";
close;
}
- if (checkquest(getarg(0)) == -1) {
- setquest getarg(0);
- mes "Please hunt 30 "+getarg(1)+" and return here.";
+ set .@hunting, checkquest(.@quest1,HUNTING);
+ if (.@hunting == 0 || .@hunting == 1) {
+ mes "[86-90 Mission Board]";
+ mes "Have you finished hunting all 30 "+getarg(1)+getarg(5,"")+" yet?";
+ close;
+ } else if (.@hunting == 2) {
+ mes "[86-90 Mission Board]";
+ mes "You have completed the hunting.";
+ mes "Please accept this reward as a compensation.";
+ erasequest .@quest1;
+ if (.@playtime > -1) erasequest .@quest2;
+ setquest .@quest2;
+ getexp getarg(2),0;
+ close;
+ }/* else if (.@hunting == 3) {
+// recall_completequest .@quest1
+ erasequest .@quest1;
+ mes "[86-90 Mission Board]";
+ mes "You have re-accepted the "+getarg(1)+" Hunting mission.";
+ close;
+ }*/ else {
+ mes "[86-90 Mission Board]";
+ mes getarg(4);
+ next;
+ if (getarg(3) != "") cutin getarg(3),3;
+ mes "[86-90 Mission Board]";
+ mes "Hunt 30 "+getarg(1)+" monsters there and post your success on this board.";
+ next;
+ if (getarg(3) != "") cutin getarg(3),255;
+ if(select("I'll hunt them.:No thanks.") == 1) {
+ mes "[86-90 Mission Board]";
+ mes "When you have completed the mission, post it on this board and collect your reward.";
+ if (.@playtime > -1) erasequest .@quest2;
+ setquest .@quest1;
+ }
close;
}
- mes "Umm? You didn't hunt";
- mes "all 30 "+getarg(1)+" yet...";
- mes "Will you check again?";
- close;
}
diff --git a/npc/re/quests/eden/91-99.txt b/npc/re/quests/eden/91-99.txt
index bf80c2a7c..21ae3cfe1 100644
--- a/npc/re/quests/eden/91-99.txt
+++ b/npc/re/quests/eden/91-99.txt
@@ -3,114 +3,211 @@
//===== By: ==================================================
//= Chilly
//===== Current Version: =====================================
-//= 1.2
+//= 1.3
//===== Description: =========================================
//= Repetable Quests for Players between Baselevel 91 - 99.
//===== Additional Comments: =================================
//= 1.0 First Version. [Chilly]
//= 1.1 Some little improvements here and there. [Masao]
//= 1.2 Optimized. [Euphy]
+//= 1.3 Updated to match the official script. [Euphy]
//============================================================
-moc_para01,48,177,3 script Mission [91 - 99] 857,{
+moc_para01,48,177,3 script 91-99 Mission Board 857,{
if (countitem(6219) < 1) {
- mes "- Only members of the -";
- mes "- Eden Group can read -";
- mes "- this bulletin board. -";
- close;
- }
- if (BaseLevel < 91) {
- mes "- This missions can only be -";
- mes "- read by those who are -";
- mes "- of the correct level. -";
- mes "- There might be another -";
- mes "- board somewhere for -";
- mes "- my level. -";
- close;
+ mes "Wait a minute!";
+ mes "-You need to have an-";
+ mes "-^4d4dff'Eden Group Mark'^000000-";
+ mes "-to receive these missions.-";
+ next;
+ switch(select("Just walk away.:^0000FFEden Group^000000 missions?:How can I be a member of the ^0000FFEden Group^000000?")) {
+ case 1:
+ close;
+ case 2:
+ mes "::The Eden Group Missions";
+ mes "::are basically missions";
+ mes "::requested by";
+ mes "::people from all around the kingdom.";
+ mes "::We just categorize them.";
+ next;
+ mes "::In the Eden Group,";
+ mes "::we sorted out the missions";
+ mes "::according to the level of difficulty.";
+ mes "::According to this level,";
+ mes "::you can find";
+ mes "::missions that";
+ mes "::suit you.";
+ next;
+ mes "::When you are done,";
+ mes "::you can come back";
+ mes "::to the mission board.";
+ next;
+ mes "::Then you will be";
+ mes "::rewarded!!";
+ mes "::Simple, isn't it!!";
+ mes "::No commission required!!";
+ close;
+ case 3:
+ mes "::You can become a member";
+ mes "::of the Eden Group";
+ mes "::to ^0000FFLaime Evenor^000000,";
+ mes "::who is waiting on the 1st floor.";
+ next;
+ mes "::If you become a member,";
+ mes "::you will get an";
+ mes "::\"^006400Eden Group Mark^000000\".";
+ mes "::Then you will be able";
+ mes "::to see the mission board.";
+ close;
+ }
}
- if (BaseLevel > 99) {
- setarray .@Exp[0],90000,94000,114000,96000,96000,146000,96000,102000,110000,102000,108000,110000,138000,118000,96000,134000;
- setarray .@Mob$[0],"Solider","Freezer","Heater","Injustice","Rybio","Dark Priest","Stapo","Roween","Siroma","Shinobi","Evil Nymph","Deviruchi","Mineral","Kaho","Neraid","Disguise";
- for(set .@i,0; .@i<16; set .@i,.@i+1)
- if (checkquest(4181+.@i,HUNTING) == 2) {
- mes "You hunted all 30 "+.@Mob$[.@i]+".";
- mes "Thank you very much.";
+ if (BaseLevel < 91 || BaseLevel > 99) {
+ // Quest IDs: 4181-4196
+ // Quest cooldown IDs: 4212-4227
+ setarray .@names$[0],
+ "Solider","Freezer","Heater",
+ "Injustice","Rybio","Dark Priest",
+ "Stapo","Roween","Siroma",
+ "Shinobi","Evil Nymph",
+ "Deviruchi","Mineral","Kaho","Neraid","Disguise";
+ setarray .@exp[0],
+ 90000,94000,114000,
+ 96000,96000,146000,
+ 96000,102000,110000,
+ 102000,108000,
+ 110000,138000,118000,96000,134000;
+ mes "You must be within level 91-99 to accept these missions.";
+ for(set .@quest,4181; .@quest<=4196; set .@quest,.@quest+1) {
+ set .@hunting, checkquest(.@quest,HUNTING);
+ if (.@hunting == 0 || .@hunting == 1) {
next;
- mes "I know it isn't much but here's a small gift.";
- mes "I hope that it helps you at least a little bit.";
+ mes ":: You cannot proceed in";
+ mes ":: ^0000FF"+.@names$[.@quest-4181]+" Hunting^000000.";
+ mes ":: The registration to the mission";
+ mes ":: is cancelled.";
+ erasequest .@quest;
+ close;
+ } else if (.@hunting == 2) {
next;
- erasequest 4181+.@i;
- getexp .@Exp[.@i],311000;
- mes "Wooohoo!";
- mes "Good luck.";
+ mes ":: You added information";
+ mes ":: about the mission";
+ mes ":: ^0000FF"+.@names$[.@quest-4181]+" Hunting^000000";
+ mes ":: on the mission board.";
+ mes ":: You've got a";
+ mes ":: salutary experience.";
+ erasequest .@quest;
+ getexp .@exp[.@quest-4181],0;
close;
}
- mes "- This missions can only be -";
- mes "- read by those who are -";
- mes "- of the correct level. -";
- mes "- There might be another -";
- mes "- board somewhere for -";
- mes "- my level. -";
+ }
close;
}
- mes "- Many hunting missions -";
- mes "- are on the bulletin board. -";
+ mes "[91-99 Mission Board]";
+ mes "There are several requests on this board.";
next;
- switch(select("Turtle Dungeon Area:Glast Heim Area:Rachel Area:Local Area:Other Area")) {
+ switch(select("^8B4513Turtle Island^000000:^8B4513Glast Heim^000000:^8B4513Rachel / Veins^000000:^8B4513Expansion Cities^000000:^8B4513Other regions^000000")) {
case 1:
- switch(select("Solider:Freezer:Heater")) {
- case 1: callsub L_Quest,4181,"Solider",90000;
- case 2: callsub L_Quest,4182,"Freezer",94000;
- case 3: callsub L_Quest,4183,"Heater",114000;
+ mes "^8B4513Turtle Island^000000.";
+ mes "Which monster will you hunt or have you finished hunting?";
+ next;
+ switch(select("^0000FFSolider^000000:^0000FFFreezer^000000:^0000FFHeater^000000")) {
+ case 1: callsub L_Quest,4181,"Solider",90000,"¼Ö¸®´õÄ«µå","There is a monster that only can be found on ^8B4513Turtle Island^000000.";
+ case 2: callsub L_Quest,4182,"Freezer",94000,"ÇÁ¸®ÀúÄ«µå","There is a monster that only can be found on ^8B4513Turtle Island^000000.";
+ case 3: callsub L_Quest,4183,"Heater",114000,"È÷ÅÍÄ«µå","There is a monster that only can be found on ^8B4513Turtle Island^000000.";
}
case 2:
- switch(select("Injustice:Rybio:Dark Priest")) {
- case 1: callsub L_Quest,4184,"Injustice",96000;
- case 2: callsub L_Quest,4185,"Rybio",96000;
- case 3: callsub L_Quest,4186,"Dark Priest",146000;
+ mes "^8B4513Glast Heim^000000.";
+ mes "Which monster will you hunt or have you finished hunting?";
+ next;
+ switch(select("^0000FFInjustice^000000:^0000FFRybio^000000:^0000FFDark Priest^000000")) {
+ case 1: callsub L_Quest,4184,"Injustice",96000,"ÀÎÀú½ºÆ¼½ºÄ«µå","There is a monster only found in ^8B4513Glast Heim prison^000000.";
+ case 2: callsub L_Quest,4185,"Rybio",96000,"¸®ºñ¿ÀÄ«µå","There is a monster only found in ^8B4513Glast Heim prison^000000.";
+ case 3: callsub L_Quest,4186,"Dark Priest",146000,"´ÙÅ©ÇÁ¸®½ºÆ®Ä«µå","There is a monster only found in ^8B4513Glast Heim prison^000000.";
}
case 3:
- switch(select("Stapo:Roween:Siroma")) {
- case 1: callsub L_Quest,4187,"Stapo",96000;
- case 2: callsub L_Quest,4188,"Roween",102000;
- case 3: callsub L_Quest,4189,"Siroma",110000;
+ mes "^8B4513Rachel / Veins^000000.";
+ mes "Which monster will you hunt or have you finished hunting?";
+ next;
+ switch(select("^0000FFStapo^000000:^0000FFRoween^000000:^0000FFSiroma^000000")) {
+ case 1: callsub L_Quest,4187,"Stapo",96000,"½ºÅÂÆ÷Ä«µå","There is a monster only found in ^8B4513Veins^000000.";
+ case 2: callsub L_Quest,4188,"Roween",102000,"·Î¿ìÀ©Ä«µå","There is a monster only found in ^8B4513Rachel^000000.";
+ case 3: callsub L_Quest,4189,"Siroma",110000,"½Ã·Î¸¶Ä«µå","There is a monster only found in ^8B4513Ice Dungeon^000000.";
}
case 4:
- switch(select("Shinobi:Evil Nymph")) {
- case 1: callsub L_Quest,4190,"Shinobi",102000;
- case 2: callsub L_Quest,4191,"Evil Nymph",108000;
+ mes "^8B4513Expansion Cities^000000.";
+ mes "Which monster will you hunt or have you finished hunting?";
+ next;
+ switch(select("^0000FFShinobi^000000:^0000FFEvil Nymph^000000")) {
+ case 1: callsub L_Quest,4190,"Shinobi",102000,"½Ã³ëºñÄ«µå","There is a monster only found in ^8B4513Amatsu Dungeon^000000.";
+ case 2: callsub L_Quest,4191,"Evil Nymph",108000,"¿ä¼±³àÄ«µå","There is a monster only found in ^8B4513Kunlun Dungeon^000000.";
}
case 5:
- switch(select("Deviruchi:Mineral:Kaho:Neraid:Disguise")) {
- case 1: callsub L_Quest,4192,"Deviruchi",110000;
- case 2: callsub L_Quest,4193,"Mineral",138000;
- case 3: callsub L_Quest,4194,"Kaho",118000;
- case 4: callsub L_Quest,4195,"Neraid",96000;
- case 5: callsub L_Quest,4196,"Disguise",134000;
+ mes "Other Regions.";
+ mes "Which monster will you hunt or have you finished hunting?";
+ next;
+ switch(select("^0000FFDeviruchi^000000:^0000FFMineral^000000:^0000FFKaho^000000:^0000FFNeraid^000000:^0000FFDisguise^000000")) {
+ case 1: callsub L_Quest,4192,"Deviruchi",110000,"µ¥ºñ·çÄ¡Ä«µå","There is a monster only found in ^8B4513Geffen Dungeon^000000.";
+ case 2: callsub L_Quest,4193,"Mineral",138000,"¹Ì³×¶ö","There is a monster only found in ^8B4513Einbech Dungeon^000000.";
+ case 3: callsub L_Quest,4194,"Kaho",118000,"īȣīµå","There is a monster found in ^8B4513Nogg Road Magma 1^000000.";
+ case 4: callsub L_Quest,4195,"Neraid",96000,"³×·¹À̵åÄ«µå","There is a monster only found in ^8B4513Comodo Dungeon^000000.";
+ case 5: callsub L_Quest,4196,"Disguise",134000,"µð½º°¡ÀÌÁîÄ«µå","There is a monster only found in ^8B4513Nifflheim^000000.";
}
}
end;
+
+//callsub L_Quest,<quest ID>,"<monster name>",<reward EXP>,"<cutin image>","<description>"{,"s"};
L_Quest:
- if (checkquest(getarg(0),HUNTING) == 2) {
- mes "You hunted all 30 "+getarg(1)+".";
- mes "Thank you very much.";
- next;
- mes "I know it isn't much but here's a small gift.";
- mes "I hope that it helps you at least a little bit.";
- next;
- erasequest getarg(0);
- getexp getarg(2),311000;
- mes "Wooohoo!";
- mes "Good luck.";
+ set .@quest1, getarg(0);
+ set .@quest2, .@quest1+31;
+ set .@playtime, checkquest(.@quest2,PLAYTIME);
+ if (.@playtime == 0 || .@playtime == 1) {
+ mes "[91-99 Mission Board]";
+ mes "You need to wait 3 hours before you can take this mission again.";
close;
}
- if (checkquest(getarg(0)) == -1) {
- setquest getarg(0);
- mes "Please hunt 30 "+getarg(1)+" and return here.";
+ set .@hunting, checkquest(.@quest1,HUNTING);
+ if (.@hunting == 0 || .@hunting == 1) {
+ mes "[91-99 Mission Board]";
+ mes "Have you finished hunting all 30 "+getarg(1)+getarg(5,"")+" yet?";
+ close;
+ } else if (.@hunting == 2) {
+ mes "[91-99 Mission Board]";
+ mes "You have completed the hunting.";
+ mes "Please accept this reward as a compensation.";
+ erasequest .@quest1;
+ if (.@playtime > -1) erasequest .@quest2;
+ setquest .@quest2;
+
+ // Job Experience calculation.
+ if (JobLevel > 50 && JobLevel < 56) set .@jexp,67000;
+ else if (JobLevel > 55 && JobLevel < 61) set .@jexp,94000;
+ else if (JobLevel > 60 && JobLevel < 66) set .@jexp,141000;
+ else if (JobLevel > 65 && JobLevel < 69) set .@jexp,212000;
+ else if (JobLevel == 69) set .@jexp,311000;
+
+ getexp getarg(2),.@jexp;
+ close;
+ }/* else if (.@hunting == 3) {
+// recall_completequest .@quest1
+ erasequest .@quest1;
+ mes "[91-99 Mission Board]";
+ mes "You have re-accepted the "+getarg(1)+" Hunting mission.";
+ close;
+ }*/ else {
+ mes "[91-99 Mission Board]";
+ mes getarg(4);
+ next;
+ if (getarg(3) != "") cutin getarg(3),3;
+ mes "[91-99 Mission Board]";
+ mes "Hunt 30 "+getarg(1)+" monsters there and post your success on this board.";
+ next;
+ if (getarg(3) != "") cutin getarg(3),255;
+ if(select("I'll hunt them.:No thanks.") == 1) {
+ mes "[91-99 Mission Board]";
+ mes "When you have completed the mission, post it on this board and collect your reward.";
+ if (.@playtime > -1) erasequest .@quest2;
+ setquest .@quest1;
+ }
close;
}
- mes "Umm? You didn't hunt";
- mes "all 30 "+getarg(1)+" yet...";
- mes "Will you check again?";
- close;
}
diff --git a/npc/re/quests/eden/eden_quests.txt b/npc/re/quests/eden/eden_quests.txt
index 4a85bdc79..074ab7e47 100644
--- a/npc/re/quests/eden/eden_quests.txt
+++ b/npc/re/quests/eden/eden_quests.txt
@@ -21,7 +21,6 @@
//============================================================
moc_para01,25,35,4 script Instructor Boya#para01 469,{
-
if (countitem(6219) > 0) {
if (para_suv01 == 0) {
mes "[Boya]";
@@ -1092,7 +1091,6 @@ moc_para01,25,35,4 script Instructor Boya#para01 469,{
}
moc_fild11,180,253,5 script Talking Dog#para03 972,{
-
if (para_suv01 == 1) {
mes "[Talking Dog]";
mes "kkkkuuuuahhh.";
@@ -1662,7 +1660,6 @@ pay_arche,41,136,3 script Eden Member Karl#para05 904,{
}
anthell01,29,264,5 script Eden Member Cloud#para06 899,{
-
if (para_suv01 < 17) {
if (countitem(6219) > 0) {
mes "[Cloud]";
@@ -2122,7 +2119,6 @@ in_orcs01,38,175,3 script Eden Member Hooksha 803,{
}
iz_dun04,43,46,3 script Eden Member Callandiva 745,{
-
if (para_suv01 < 33) {
if (countitem(6219) > 0) {
mes "[Callandiva]";
@@ -2263,7 +2259,6 @@ iz_dun04,43,46,3 script Eden Member Callandiva 745,{
}
moc_para01,112,96,5 script Administrator Michael 967,{
-
mes "[Michael]";
mes "Why did you come here?";
next;
@@ -2335,7 +2330,7 @@ moc_para01,112,96,5 script Administrator Michael 967,{
mes "Make enough space.";
close;
case 2:
- if (Class == Job_Swordman || Class == Job_Swordman_High || Class == Job_Knight || Class == Job_Crusader){
+ if (Class == Job_Swordman || Class == Job_Swordman_High || Class == Job_Knight || Class == Job_Crusader) {
mes "[Michael]";
mes "What kind of weapon do you want?";
mes "We have one and Two-handed swords.";
@@ -2418,21 +2413,72 @@ moc_para01,112,96,5 script Administrator Michael 967,{
mes "This is what we strive for.";
close;
}
- } if (Class == Job_Thief || Class == Job_Thief_High || Class == Job_Assassin || Class == Job_Rogue || Class == Job_Ninja || Class == Job_Novice || Class == Job_Novice_High) {
- mes "[Michael]";
- mes "We only have 1 weapon for you.";
- next;
- mes "[Michael]";
- mes "Eden Dagger I: Dagger. MATK+60, attack 124.";
- mes "It is Lv. 2 and the required level is 26.";
- next;
+ }
+ if (Class == Job_Thief || Class == Job_Thief_High || Class == Job_Assassin || Class == Job_Rogue || Class == Job_Ninja || Class == Job_Novice || Class == Job_Novice_High) {
+ mes "[Michael]";
+ mes "We only have 1 weapon for you.";
+ next;
+ mes "[Michael]";
+ mes "Eden Dagger I: Dagger. MATK+60, attack 124.";
+ mes "It is Lv. 2 and the required level is 26.";
+ next;
+ mes "[Michael]";
+ mes "It also can't be traded with other players or be refined.";
+ next;
+ mes "[Michael]";
+ mes "You'll receive the Eden Dagger I.";
+ next;
+ mes "[Michael]";
+ mes "Additionally you'll receive the Eden Group Boots II and Uniform II.";
+ next;
+ if (para_suv02 == 0) {
mes "[Michael]";
- mes "It also can't be traded with other players or be refined.";
+ mes "You don't have a record of receiving any supplies";
+ mes "so, you'll receive the Eden Group Hat and Manteau aswell.";
+ set para_suv01,23;
+ set para_suv02,2;
+ getitem 13050,1; //P_Dagger1
+ getitem 2457,1; //Para_Team_Boots2
+ getitem 15010,1; //Para_Team_Uniform2
+ getitem 5583,1; //Para_Team_Hat
+ getitem 2560,1; //Para_Team_Manteau
next;
mes "[Michael]";
- mes "You'll receive the Eden Dagger I.";
- next;
+ mes "Check your supplies again and look after it.";
+ close;
+ }
+ mes "[Michael]";
+ mes "A Dagger, Uniform and Boots all 3 supplies.";
+ mes "Please check it again.";
+ set para_suv01,23;
+ set para_suv02,2;
+ getitem 13050,1; //P_Dagger1
+ getitem 2457,1; //Para_Team_Boots2
+ getitem 15010,1; //Para_Team_Uniform2
+ next;
+ mes "[Michael]";
+ mes "I hope they're useful to you.";
+ mes "This is what we strive for.";
+ close;
+ }
+ if (Class == Job_Merchant || Class == Job_Merchant_High || Class == Job_Blacksmith || Class == Job_Alchemist) {
+ mes "[Michael]";
+ mes "What kind of weapon do you want?";
+ mes "We have a mace and a One-handed sword.";
+ mes "Here are the options.";
+ next;
+ mes "[Michael]";
+ mes "Eden Saber I: One-handed sword. attack 147.";
+ mes "Eden Mace I: Mace. attack 142.";
+ mes "Both are level 2 and the required level is 26.";
+ next;
+ mes "[Michael]";
+ mes "They also can't be traded with other players or be refined.";
+ next;
+ switch (select("Eden Sabre I:Eden Mace I")) {
+ case 1:
mes "[Michael]";
+ mes "You've chosen the Eden Sabre I.";
mes "Additionally you'll receive the Eden Group Boots II and Uniform II.";
next;
if (para_suv02 == 0) {
@@ -2441,7 +2487,7 @@ moc_para01,112,96,5 script Administrator Michael 967,{
mes "so, you'll receive the Eden Group Hat and Manteau aswell.";
set para_suv01,23;
set para_suv02,2;
- getitem 13050,1; //P_Dagger1
+ getitem 13423,1; //P_Sabre1
getitem 2457,1; //Para_Team_Boots2
getitem 15010,1; //Para_Team_Uniform2
getitem 5583,1; //Para_Team_Hat
@@ -2452,11 +2498,11 @@ moc_para01,112,96,5 script Administrator Michael 967,{
close;
}
mes "[Michael]";
- mes "A Dagger, Uniform and Boots all 3 supplies.";
+ mes "A One-handed Sword, Uniform and Boots all 3 supplies.";
mes "Please check it again.";
set para_suv01,23;
set para_suv02,2;
- getitem 13050,1; //P_Dagger1
+ getitem 13423,1; //P_Sabre1
getitem 2457,1; //Para_Team_Boots2
getitem 15010,1; //Para_Team_Uniform2
next;
@@ -2464,115 +2510,18 @@ moc_para01,112,96,5 script Administrator Michael 967,{
mes "I hope they're useful to you.";
mes "This is what we strive for.";
close;
- }
- if (Class == Job_Merchant || Class == Job_Merchant_High || Class == Job_Blacksmith || Class == Job_Alchemist) {
- mes "[Michael]";
- mes "What kind of weapon do you want?";
- mes "We have a mace and a One-handed sword.";
- mes "Here are the options.";
- next;
- mes "[Michael]";
- mes "Eden Saber I: One-handed sword. attack 147.";
- mes "Eden Mace I: Mace. attack 142.";
- mes "Both are level 2 and the required level is 26.";
- next;
- mes "[Michael]";
- mes "They also can't be traded with other players or be refined.";
- next;
- switch (select("Eden Sabre I:Eden Mace I")) {
- case 1:
- mes "[Michael]";
- mes "You've chosen the Eden Sabre I.";
- mes "Additionally you'll receive the Eden Group Boots II and Uniform II.";
- next;
- if (para_suv02 == 0) {
- mes "[Michael]";
- mes "You don't have a record of receiving any supplies";
- mes "so, you'll receive the Eden Group Hat and Manteau aswell.";
- set para_suv01,23;
- set para_suv02,2;
- getitem 13423,1; //P_Sabre1
- getitem 2457,1; //Para_Team_Boots2
- getitem 15010,1; //Para_Team_Uniform2
- getitem 5583,1; //Para_Team_Hat
- getitem 2560,1; //Para_Team_Manteau
- next;
- mes "[Michael]";
- mes "Check your supplies again and look after it.";
- close;
- }
- mes "[Michael]";
- mes "A One-handed Sword, Uniform and Boots all 3 supplies.";
- mes "Please check it again.";
- set para_suv01,23;
- set para_suv02,2;
- getitem 13423,1; //P_Sabre1
- getitem 2457,1; //Para_Team_Boots2
- getitem 15010,1; //Para_Team_Uniform2
- next;
- mes "[Michael]";
- mes "I hope they're useful to you.";
- mes "This is what we strive for.";
- close;
- case 2:
- mes "[Michael]";
- mes "You've chosen the Eden Mace I.";
- mes "Additionally you'll receive the Eden Group Boots II and Uniform II.";
- next;
- if (para_suv02 == 0) {
- mes "[Michael]";
- mes "You don't have a record of receiving any supplies";
- mes "so, you'll receive the Eden Group Hat and Manteau aswell.";
- set para_suv01,23;
- set para_suv02,2;
- getitem 16004,1; //P_Mace1
- getitem 2457,1; //Para_Team_Boots2
- getitem 15010,1; //Para_Team_Uniform2
- getitem 5583,1; //Para_Team_Hat
- getitem 2560,1; //Para_Team_Manteau
- next;
- mes "[Michael]";
- mes "Check your supplies again and look after it.";
- close;
- }
- mes "[Michael]";
- mes "A Mace, Uniform and Boots all 3 supplies.";
- mes "Please check it again.";
- set para_suv01,23;
- set para_suv02,2;
- getitem 16004,1; //P_Mace1
- getitem 2457,1; //Para_Team_Boots2
- getitem 15010,1; //Para_Team_Uniform2
- next;
- mes "[Michael]";
- mes "I hope they're useful to you.";
- close;
- }
- }
- if (Class == Job_Archer || Class == Job_Archer_High || Class == Job_Hunter || Class == Job_Dancer || Class == Job_Bard) {
- mes "[Michael]";
- mes "We only have 1 weapon for you.";
- next;
- mes "[Michael]";
- mes "Eden Bow I: Bow. attack 82.";
- mes "It is Lv. 2 and the required level is 26.";
- next;
- mes "[Michael]";
- mes "It also can't be traded with other players or be refined.";
- next;
- mes "[Michael]";
- mes "You'll receive the Eden Bow I.";
- next;
+ case 2:
mes "[Michael]";
+ mes "You've chosen the Eden Mace I.";
mes "Additionally you'll receive the Eden Group Boots II and Uniform II.";
next;
if (para_suv02 == 0) {
mes "[Michael]";
mes "You don't have a record of receiving any supplies";
mes "so, you'll receive the Eden Group Hat and Manteau aswell.";
- set para_suv01, 23;
- set para_suv02, 2;
- getitem 1747,1; //P_Bow1
+ set para_suv01,23;
+ set para_suv02,2;
+ getitem 16004,1; //P_Mace1
getitem 2457,1; //Para_Team_Boots2
getitem 15010,1; //Para_Team_Uniform2
getitem 5583,1; //Para_Team_Hat
@@ -2583,11 +2532,11 @@ moc_para01,112,96,5 script Administrator Michael 967,{
close;
}
mes "[Michael]";
- mes "A Bow, Uniform and Boots all 3 supplies.";
+ mes "A Mace, Uniform and Boots all 3 supplies.";
mes "Please check it again.";
set para_suv01,23;
set para_suv02,2;
- getitem 1747,1; //P_Bow1
+ getitem 16004,1; //P_Mace1
getitem 2457,1; //Para_Team_Boots2
getitem 15010,1; //Para_Team_Uniform2
next;
@@ -2595,112 +2544,79 @@ moc_para01,112,96,5 script Administrator Michael 967,{
mes "I hope they're useful to you.";
close;
}
- if (Class == Job_Acolyte || Class == Job_Acolyte_High || Class == Job_Priest || Class == Job_Monk) {
- mes "[Michael]";
- mes "What kind of weapon do you want?";
- mes "We have a mace and a staff.";
- mes "Here are the options.";
- next;
+ }
+ if (Class == Job_Archer || Class == Job_Archer_High || Class == Job_Hunter || Class == Job_Dancer || Class == Job_Bard) {
+ mes "[Michael]";
+ mes "We only have 1 weapon for you.";
+ next;
+ mes "[Michael]";
+ mes "Eden Bow I: Bow. attack 82.";
+ mes "It is Lv. 2 and the required level is 26.";
+ next;
+ mes "[Michael]";
+ mes "It also can't be traded with other players or be refined.";
+ next;
+ mes "[Michael]";
+ mes "You'll receive the Eden Bow I.";
+ next;
+ mes "[Michael]";
+ mes "Additionally you'll receive the Eden Group Boots II and Uniform II.";
+ next;
+ if (para_suv02 == 0) {
mes "[Michael]";
- mes "Eden Mace I: Mace. attack 142.";
- mes "Eden Staff I: Staff. INT+2, MATK+125, attack 60.";
- mes "Both are Lv. 2 and the required level is 26.";
+ mes "You don't have a record of receiving any supplies";
+ mes "so, you'll receive the Eden Group Hat and Manteau aswell.";
+ set para_suv01, 23;
+ set para_suv02, 2;
+ getitem 1747,1; //P_Bow1
+ getitem 2457,1; //Para_Team_Boots2
+ getitem 15010,1; //Para_Team_Uniform2
+ getitem 5583,1; //Para_Team_Hat
+ getitem 2560,1; //Para_Team_Manteau
next;
mes "[Michael]";
- mes "They also can't be traded with other players or be refined.";
- next;
- switch (select("Eden Staff I:Eden Mace I")) {
- case 1:
- mes "[Michael]";
- mes "You've chosen the Eden Staff I.";
- mes "Additionally you'll receive the Eden Group Boots II and Uniform II.";
- next;
- if (para_suv02 == 0) {
- mes "[Michael]";
- mes "You don't have a record of receiving any supplies";
- mes "so, you'll receive the Eden Group Hat and Manteau aswell.";
- set para_suv01,23;
- set para_suv02,2;
- getitem 1650,1; //P_Staff1
- getitem 2457,1; //Para_Team_Boots2
- getitem 15010,1; //Para_Team_Uniform2
- getitem 5583,1; //Para_Team_Hat
- getitem 2560,1; //Para_Team_Manteau
- next;
- mes "[Michael]";
- mes "Check your supplies again and look after it.";
- close;
- }
- mes "[Michael]";
- mes "A Staff, Uniform and Boots all 3 supplies.";
- mes "Please check it again.";
- set para_suv01,23;
- set para_suv02,2;
- getitem 1650,1; //P_Staff1
- getitem 2457,1; //Para_Team_Boots2
- getitem 15010,1; //Para_Team_Uniform2
- next;
- mes "[Michael]";
- mes "I hope they're useful to you.";
- close;
- case 2:
- mes "[Michael]";
- mes "You've chosen the Eden Mace I.";
- mes "Additionally you'll receive the Eden Group Boots II and Uniform II.";
- next;
- if (para_suv02 == 0) {
- mes "[Michael]";
- mes "You don't have a record of receiving any supplies";
- mes "so, you'll receive the Eden Group Hat and Manteau aswell.";
- set para_suv01,23;
- set para_suv02,2;
- getitem 16004,1; //P_Mace1
- getitem 2457,1; //Para_Team_Boots2
- getitem 15010,1; //Para_Team_Uniform2
- getitem 5583,1; //Para_Team_Hat
- getitem 2560,1; //Para_Team_Manteau
- next;
- mes "[Michael]";
- mes "Check your supplies again and look after it.";
- close;
- }
- mes "[Michael]";
- mes "A Mace, Uniform and Boots all 3 supplies.";
- mes "Please check it again.";
- set para_suv01,23;
- set para_suv02,2;
- getitem 16004,1; //P_Mace1
- getitem 2457,1; //Para_Team_Boots2
- getitem 15010,1; //Para_Team_Uniform2
- next;
- mes "[Michael]";
- mes "I hope they're useful to you.";
- close;
- }
+ mes "Check your supplies again and look after it.";
+ close;
}
- if (Class == Job_Mage || Class == Job_Mage_High || Class == Job_Wizard || Class == Job_Sage) {
- mes "[Michael]";
- mes "We only have 1 weapon for you.";
- next;
- mes "[Michael]";
- mes "Eden Staff I: Staff. INT+2, MATK+125, attack 60.";
- mes "It is Lv. 2 and the required level is 26.";
- next;
- mes "[Michael]";
- mes "It also can't be traded with other players or be refined.";
- next;
- mes "[Michael]";
- mes "You'll receive the Eden Staff I.";
- next;
+ mes "[Michael]";
+ mes "A Bow, Uniform and Boots all 3 supplies.";
+ mes "Please check it again.";
+ set para_suv01,23;
+ set para_suv02,2;
+ getitem 1747,1; //P_Bow1
+ getitem 2457,1; //Para_Team_Boots2
+ getitem 15010,1; //Para_Team_Uniform2
+ next;
+ mes "[Michael]";
+ mes "I hope they're useful to you.";
+ close;
+ }
+ if (Class == Job_Acolyte || Class == Job_Acolyte_High || Class == Job_Priest || Class == Job_Monk) {
+ mes "[Michael]";
+ mes "What kind of weapon do you want?";
+ mes "We have a mace and a staff.";
+ mes "Here are the options.";
+ next;
+ mes "[Michael]";
+ mes "Eden Mace I: Mace. attack 142.";
+ mes "Eden Staff I: Staff. INT+2, MATK+125, attack 60.";
+ mes "Both are Lv. 2 and the required level is 26.";
+ next;
+ mes "[Michael]";
+ mes "They also can't be traded with other players or be refined.";
+ next;
+ switch (select("Eden Staff I:Eden Mace I")) {
+ case 1:
mes "[Michael]";
+ mes "You've chosen the Eden Staff I.";
mes "Additionally you'll receive the Eden Group Boots II and Uniform II.";
next;
if (para_suv02 == 0) {
mes "[Michael]";
mes "You don't have a record of receiving any supplies";
mes "so, you'll receive the Eden Group Hat and Manteau aswell.";
- set para_suv01, 23;
- set para_suv02, 2;
+ set para_suv01,23;
+ set para_suv02,2;
getitem 1650,1; //P_Staff1
getitem 2457,1; //Para_Team_Boots2
getitem 15010,1; //Para_Team_Uniform2
@@ -2723,31 +2639,18 @@ moc_para01,112,96,5 script Administrator Michael 967,{
mes "[Michael]";
mes "I hope they're useful to you.";
close;
- }
- if (Class == Job_Gunslinger) {
- mes "[Michael]";
- mes "We only have 1 weapon for you.";
- next;
- mes "[Michael]";
- mes "Eden Revolver I: Revolver. HIT-5, attack 44.";
- mes "It is Lv. 2 and the required level is 26.";
- next;
- mes "[Michael]";
- mes "It also can't be traded with other players or be refined.";
- next;
- mes "[Michael]";
- mes "You'll receive the Eden Revolver I.";
- next;
+ case 2:
mes "[Michael]";
+ mes "You've chosen the Eden Mace I.";
mes "Additionally you'll receive the Eden Group Boots II and Uniform II.";
next;
if (para_suv02 == 0) {
mes "[Michael]";
mes "You don't have a record of receiving any supplies";
mes "so, you'll receive the Eden Group Hat and Manteau aswell.";
- set para_suv01, 23;
- set para_suv02, 2;
- getitem 13112,1; //P_Revolver1
+ set para_suv01,23;
+ set para_suv02,2;
+ getitem 16004,1; //P_Mace1
getitem 2457,1; //Para_Team_Boots2
getitem 15010,1; //Para_Team_Uniform2
getitem 5583,1; //Para_Team_Hat
@@ -2758,11 +2661,11 @@ moc_para01,112,96,5 script Administrator Michael 967,{
close;
}
mes "[Michael]";
- mes "A Revolver, Uniform and Boots all 3 supplies.";
+ mes "A Mace, Uniform and Boots all 3 supplies.";
mes "Please check it again.";
set para_suv01,23;
set para_suv02,2;
- getitem 13112,1; //P_Revolver1
+ getitem 16004,1; //P_Mace1
getitem 2457,1; //Para_Team_Boots2
getitem 15010,1; //Para_Team_Uniform2
next;
@@ -2770,6 +2673,99 @@ moc_para01,112,96,5 script Administrator Michael 967,{
mes "I hope they're useful to you.";
close;
}
+ }
+ if (Class == Job_Mage || Class == Job_Mage_High || Class == Job_Wizard || Class == Job_Sage) {
+ mes "[Michael]";
+ mes "We only have 1 weapon for you.";
+ next;
+ mes "[Michael]";
+ mes "Eden Staff I: Staff. INT+2, MATK+125, attack 60.";
+ mes "It is Lv. 2 and the required level is 26.";
+ next;
+ mes "[Michael]";
+ mes "It also can't be traded with other players or be refined.";
+ next;
+ mes "[Michael]";
+ mes "You'll receive the Eden Staff I.";
+ next;
+ mes "[Michael]";
+ mes "Additionally you'll receive the Eden Group Boots II and Uniform II.";
+ next;
+ if (para_suv02 == 0) {
+ mes "[Michael]";
+ mes "You don't have a record of receiving any supplies";
+ mes "so, you'll receive the Eden Group Hat and Manteau aswell.";
+ set para_suv01, 23;
+ set para_suv02, 2;
+ getitem 1650,1; //P_Staff1
+ getitem 2457,1; //Para_Team_Boots2
+ getitem 15010,1; //Para_Team_Uniform2
+ getitem 5583,1; //Para_Team_Hat
+ getitem 2560,1; //Para_Team_Manteau
+ next;
+ mes "[Michael]";
+ mes "Check your supplies again and look after it.";
+ close;
+ }
+ mes "[Michael]";
+ mes "A Staff, Uniform and Boots all 3 supplies.";
+ mes "Please check it again.";
+ set para_suv01,23;
+ set para_suv02,2;
+ getitem 1650,1; //P_Staff1
+ getitem 2457,1; //Para_Team_Boots2
+ getitem 15010,1; //Para_Team_Uniform2
+ next;
+ mes "[Michael]";
+ mes "I hope they're useful to you.";
+ close;
+ }
+ if (Class == Job_Gunslinger) {
+ mes "[Michael]";
+ mes "We only have 1 weapon for you.";
+ next;
+ mes "[Michael]";
+ mes "Eden Revolver I: Revolver. HIT-5, attack 44.";
+ mes "It is Lv. 2 and the required level is 26.";
+ next;
+ mes "[Michael]";
+ mes "It also can't be traded with other players or be refined.";
+ next;
+ mes "[Michael]";
+ mes "You'll receive the Eden Revolver I.";
+ next;
+ mes "[Michael]";
+ mes "Additionally you'll receive the Eden Group Boots II and Uniform II.";
+ next;
+ if (para_suv02 == 0) {
+ mes "[Michael]";
+ mes "You don't have a record of receiving any supplies";
+ mes "so, you'll receive the Eden Group Hat and Manteau aswell.";
+ set para_suv01, 23;
+ set para_suv02, 2;
+ getitem 13112,1; //P_Revolver1
+ getitem 2457,1; //Para_Team_Boots2
+ getitem 15010,1; //Para_Team_Uniform2
+ getitem 5583,1; //Para_Team_Hat
+ getitem 2560,1; //Para_Team_Manteau
+ next;
+ mes "[Michael]";
+ mes "Check your supplies again and look after it.";
+ close;
+ }
+ mes "[Michael]";
+ mes "A Revolver, Uniform and Boots all 3 supplies.";
+ mes "Please check it again.";
+ set para_suv01,23;
+ set para_suv02,2;
+ getitem 13112,1; //P_Revolver1
+ getitem 2457,1; //Para_Team_Boots2
+ getitem 15010,1; //Para_Team_Uniform2
+ next;
+ mes "[Michael]";
+ mes "I hope they're useful to you.";
+ close;
+ }
mes "[Michael]";
mes "Let me see... you will receive..";
mes "the Eden Group Boots II and Uniform II.";
@@ -3539,7 +3535,6 @@ moc_para01,112,96,5 script Administrator Michael 967,{
}
moc_para01,179,44,3 script Chef 820,{
-
mes "[Chef]";
mes "What's up?";
mes "Do you want a Meal? Or do you have other business?";
@@ -4697,7 +4692,7 @@ moc_para01,111,83,3 script Toren 813,{
else if (.@enc_paragear < 35) set .@addpart,4787;
else if (.@enc_paragear < 39) set .@addpart,4791;
else if (.@enc_paragear < 43) set .@addpart,4786;
- set .@enc_paragear2,4701+(10*rand(6));
+ set .@addpart2,4701+(10*rand(6));
delitem .@paragearcount,1;
getitem2 .@paragearcount, 1, 1, 0, 0, 0, 0, .@addpart2, .@addpart;
set paragearenchant,4;
@@ -5125,7 +5120,8 @@ L_GetWeapon:
return;
}
-/* sec_in02,25,33,4 script Assistant 422,{
+/*
+sec_in02,25,33,4 script Assistant 422,{
mes "Password";
next;
input .@input;
@@ -5151,4 +5147,5 @@ L_GetWeapon:
}
mes "......meow wee.";
close;
-}*/
+}
+*/
diff --git a/npc/re/quests/pile_bunker.txt b/npc/re/quests/pile_bunker.txt
index c2c979430..0a6304c8d 100644
--- a/npc/re/quests/pile_bunker.txt
+++ b/npc/re/quests/pile_bunker.txt
@@ -3,16 +3,27 @@
//===== By: ==================================================
//= JayPee Mateo
//===== Current Version: =====================================
-//= 2.1
+//= 2.2
//===== Compatible With: =====================================
//= Hercules
//===== Description: =========================================
//= 1.0 A Pile Bunker quest based on iRO WiKi. [JayPee Mateo]
//= 2.0 Rewrited the Script a little so it looks a bit better. [Masao]
//= 2.1 Switched to official script, coded by Gennosuke Kouga. [Euphy]
+//= 2.2 Updated to match the official script. [Euphy]
//============================================================
yuno,179,174,4 script Gomer 851,{
+ if (checkweight(1201,1) == 0 || MaxWeight - Weight < 1000) {
+ mes "[Gomer]";
+ mes "You are carrying so much. Drop off some of your luggage and come back to me.";
+ close;
+ }
+ if (countitem(1549)) {
+ mes "[Gomer]";
+ mes "So how's that Pilebuncker working out for you?";
+ close;
+ }
if (Class != Job_Mechanic && Class != Job_Mechanic_T && Class != Job_Baby_Mechanic) {
mes "[Gomer]";
mes "I'm a retired Mechanic and I don't think I have any business with you.";
@@ -73,11 +84,7 @@ yuno,179,174,4 script Gomer 851,{
mes "Lastly, finding a Brocca is very hard, but you should be able to do something about it. Haha, go get it!";
close;
case 4:
- if (countitem(1549)) {
- mes "[Gomer]";
- mes "So how's that Pile Bunker working out for you?";
- close;
- } else if (countitem(1415) < 1 || countitem(999) < 200 || countitem(7325) < 30) {
+ if (countitem(999) < 200 || countitem(7325) < 30 || countitem(1415) < 1) {
mes "[Gomer]";
mes "You haven't brought all of the materials that I asked for.";
next;
@@ -104,11 +111,11 @@ yuno,179,174,4 script Gomer 851,{
next;
mes "[Gomer]";
mes "Oh, and it turns out that I didn't need all that Steel after all. So here, take most of it back.";
- delitem 999,50; // Steel
- delitem 7325,30; // Flexible Tube
- delitem 1415,1; // Brocca
- getitem 1549,1; // Pile Bunker
- getitem 1360,1; // Two-handed Axe [1]
+ delitem 999,50; //Steel
+ delitem 7325,30; //Tube
+ delitem 1415,1; //Skewer
+ getitem 1549,1; //Pilebuncker
+ getitem 1360,1; //Two_Handed_Axe
close;
}
}
diff --git a/npc/re/quests/quests_dicastes.txt b/npc/re/quests/quests_dicastes.txt
index 20320b078..6b1101169 100644
--- a/npc/re/quests/quests_dicastes.txt
+++ b/npc/re/quests/quests_dicastes.txt
@@ -3,7 +3,7 @@
//===== By: ==================================================
//= Gennosuke Kouga, Muad_Dib
//===== Current Version: =====================================
-//= 1.9a
+//= 2.0
//===== Compatible With: =====================================
//= Hercules
//===== Description: =========================================
@@ -28,6 +28,7 @@
//= 1.8b Updated "Calyon" NPC and fixed a check. [Euphy]
//= 1.9 Updated "Fish Tails" with RE coordinates.
//= 1.9a Minor fix. [Joseph]
+//= 2.0 Fixed variables. [Joseph]
//============================================================
// Entrance
@@ -782,18 +783,18 @@ dic_in01,43,273,1 script Transport Dept. 1 Mgr 449,{
next;
mes "[Transport Dept. 1 Manager]";
set .@s$, "Quantity check finished. Ahhh, you going to rest? Then why don't you visit the famous pub of the Capital? They have no yummy food though....";
- que_dic(1,12137,30000,7143,4,.@s);
- que_dic(1,12138,25000,744,5,.@s);
- que_dic(1,12139,47500,748,1,.@s);
- que_dic(1,12140,27500,736,15,.@s);
- que_dic(1,12141,27000,746,10,.@s);
- que_dic(1,12142,27500,740,15,.@s);
- que_dic(1,12143,21600,925,50,.@s);
- que_dic(1,12144,21400,965,50,.@s);
- que_dic(1,12145,20900,964,20,.@s);
- que_dic(1,12146,22400,911,30,.@s);
- que_dic(1,12147,20800,910,40,.@s);
- mes "Um......What do you want me to do?";
+ que_dic(1,12137,30000,7143,4,.@s$);
+ que_dic(1,12138,25000,744,5,.@s$);
+ que_dic(1,12139,47500,748,1,.@s$);
+ que_dic(1,12140,27500,736,15,.@s$);
+ que_dic(1,12141,27000,746,10,.@s$);
+ que_dic(1,12142,27500,740,15,.@s$);
+ que_dic(1,12143,21600,925,50,.@s$);
+ que_dic(1,12144,21400,965,50,.@s$);
+ que_dic(1,12145,20900,964,20,.@s$);
+ que_dic(1,12146,22400,911,30,.@s$);
+ que_dic(1,12147,20800,910,40,.@s$);
+ mes "Um...... What do you want me to do?";
next;
mes "[Transport Dept. 1 Manager]";
mes "....";
diff --git a/npc/re/quests/quests_eclage.txt b/npc/re/quests/quests_eclage.txt
new file mode 100644
index 000000000..e4f5cef60
--- /dev/null
+++ b/npc/re/quests/quests_eclage.txt
@@ -0,0 +1,1839 @@
+//===== rAthena Script =======================================
+//= Eclage Quest NPCs
+//===== By: ==================================================
+//= Euphy
+//===== Current Version: =====================================
+//= 0.1
+//===== Compatible With: =====================================
+//= rAthena SVN
+//===== Description: =========================================
+//= Quest NPCs related to Eclage.
+//===== Additional Comments: =================================
+//= 0.1 NPCs are mostly placeholders. [Euphy]
+//============================================================
+
+// Teleport Cats (14.2 Cat Hand Addition)
+//============================================================
+- script Teleport Cat#ep14_2 -1,{
+ switch(atoi(charat(strnpcinfo(1),16))) {
+ case 1:
+ setarray .@map$[0],"Entrance to Mora";
+ setarray .@cost[0],15;
+ break;
+ case 2:
+ setarray .@map$[0],"Near Eclage","Near Splendide";
+ setarray .@cost[0],15,55;
+ break;
+ case 3:
+ setarray .@map$[0],"Entrance to Mora","Midgard Allied Forces Post";
+ setarray .@cost[0],55,10;
+ break;
+ case 4:
+ setarray .@map$[0],"Near Splendide","Manuk Field";
+ setarray .@cost[0],10,10;
+ break;
+ case 5:
+ setarray .@map$[0],"Midgard Allied Forces Post","Near El Dicastes";
+ setarray .@cost[0],10,20;
+ break;
+ case 6:
+ setarray .@map$[0],"Manuk Field";
+ setarray .@cost[0],20;
+ break;
+ }
+ mes "[Teleport Cat]";
+ mes "What a nice day, isn't it!";
+ mes "Welcome to Cat Merchant Group. We do anything to please our customers. We would even lie on our back if you want!";
+ next;
+ mes "[Teleport Cat]";
+ mes "We provide teleport service between various regions based on our accumulated knowledge. We accept Malangdo Canned Specialties or Zeny, so you can pay however you like it~";
+ next;
+ set .@menu$,"Forget it:";
+ for(set .@i,0; .@i<getarraysize(.@map$); set .@i,.@i+1) {
+ set .@menu$, .@menu$+
+ .@map$[.@i]+" ("+.@cost[.@i]+" Canned Food):"+
+ .@map$[.@i]+" ("+.@cost[.@i]+",000 Zeny):";
+ }
+ set .@i, select(.@menu$)-2;
+ if (.@i == -1) {
+ mes "[Teleport Cat]";
+ mes "I'll see you later then.";
+ close;
+ }
+ set .@choice$, .@map$[.@i/2];
+ set .@price, .@cost[.@i/2];
+ if (.@i % 2) {
+ set .@price, .@price*1000;
+ if (Zeny < .@price) {
+ mes "[Teleport Cat]";
+ mes "I'm afraid it's not enough. Sorry, but it can't be done for free~";
+ close;
+ }
+ set Zeny, Zeny-.@price;
+ } else {
+ if (countitem(12636) < .@price) {
+ mes "[Teleport Cat]";
+ mes "I'm afraid it's not enough. Sorry, but it can't be done for free~";
+ close;
+ }
+ delitem 12636,.@price; //Malang_Sp_Can
+ }
+ if (compare(.@choice$,"Midgard Allied Forces Post")) warp "mid_camp",180,247;
+ else if (compare(.@choice$,"Manuk Field")) warp "man_fild02",133,47;
+ else if (compare(.@choice$,"Near Splendide")) warp "spl_fild02",51,240;
+ else if (compare(.@choice$,"Near El Dicastes")) warp "dic_fild01",159,264;
+ else if (compare(.@choice$,"Entrance to Mora")) warp "bif_fild02",291,323;
+ else if (compare(.@choice$,"Near Eclage")) warp "ecl_fild01",116,309;
+ close;
+}
+ecl_fild01,118,311,4 duplicate(Teleport Cat#ep14_2) Teleport Cat No.1 421
+bif_fild02,293,325,4 duplicate(Teleport Cat#ep14_2) Teleport Cat No.2 421
+spl_fild02,53,242,4 duplicate(Teleport Cat#ep14_2) Teleport Cat No.3 421
+mid_camp,207,234,4 duplicate(Teleport Cat#ep14_2) Teleport Cat No.4 421
+man_fild02,135,49,4 duplicate(Teleport Cat#ep14_2) Teleport Cat No.5 421
+dic_fild01,161,266,4 duplicate(Teleport Cat#ep14_2) Teleport Cat No.6 421
+
+// Eclage's Entrance
+//============================================================
+ecl_fild01,97,322,0 script #ep14_2Entrance 45,3,3,{
+OnTouch:
+ if (ep14_2_enter < 3) {
+ mes "[Security Guard]";
+ mes "Please wait a minute.";
+ mes "All first-time visitors to Eclage must fill out the necessary forms before entering.";
+ close;
+ }
+ warp "eclage",100,28;
+ end;
+}
+
+ecl_fild01,94,322,5 script Security Guard#ep14_2 447,{
+ if (ep14_2_enter == 0) {
+ mes "[Security Guard]";
+ mes "All first-time visitors to Eclage must fill out the necessary forms here before entering.";
+ next;
+ mes "[Security Guard]";
+ mes "Please understand because of a recent increase in the influx of people from Midgard through Bifrost, we had to create this process.";
+ next;
+ mes "[Security Guard]";
+ mes "Of course, the documents will be secured away after their use in access regulations, so you don't have to worry.";
+ next;
+ if(select("Fill out the forms.:Forget it.") == 2) {
+ mes "[Security Guard]";
+ mes "Please note that you would not be able to enter the city without filling out the forms.";
+ close;
+ }
+ mes "[Security Guard]";
+ mes "Please fill out your name, occupation, and level here.";
+ next;
+ mes "Write your name.";
+ input .@input1$;
+ next;
+ mes "Write your occupation.";
+ input .@input1$;
+ next;
+ mes "Write your level.";
+ input .@input1$;
+ next;
+ mes "[Security Guard]";
+ mes "If you completed your forms, please submit them to the administrator over there.";
+ mes "There may be some waiting time, so take your time.";
+ set ep14_2_enter,1;
+ setquest 11310;
+ close;
+ } else if (ep14_2_enter == 1) {
+ mes "[Security Guard]";
+ mes "Please submit your forms to the administrator over there after writing in your name, occupation, and level.";
+ mes "There may be some waiting time, so take your time.";
+ close;
+ } else if (ep14_2_enter == 2) {
+ mes "[Security Guard]";
+ mes "Great, you completed the forms.";
+ mes "Welcome to Eclage, the capital of the Laphines.";
+ next;
+ mes "[Security Guard]";
+ mes "Since Eclage is under the influence of Bifrost, there is fluent communication among the races.";
+ next;
+ mes "[Security Guard]";
+ mes "There would be no need for any separate translation, and there are enough bridges for on-foot races, so I hope you have a comfortable visit.";
+ set ep14_2_enter,3;
+ erasequest 11311;
+ close2;
+ warp "eclage",100,28;
+ end;
+ } else {
+ mes "[Security Guard]";
+ mes "Welcome to Eclage, the capital of the Laphines.";
+ next;
+ mes "[Security Guard]";
+ mes "Since Eclage is under the influence of Bifrost, there is fluent communication among the races.";
+ next;
+ mes "[Security Guard]";
+ mes "There would be no need for any separate translation, and there are enough bridges for on-foot races, so I hope you have a comfortable visit.";
+ close;
+ }
+}
+ecl_fild01,100,323,3 duplicate(Security Guard#ep14_2) Security Guard#ep14_2_2 447
+
+ecl_fild01,111,320,2 script Immigration Officer#ep1 445,{
+ if (ep14_2_enter == 0) {
+ mes "[Immigration Officer]";
+ mes "What do you need?";
+ mes "As you can see, I'm really busy here, so unless you need something, please don't bother me.";
+ emotion e_an;
+ close;
+ } else if (ep14_2_enter == 1) {
+ mes "[Immigration Officer]";
+ mes "Whew! I'm sorry to have kept you waiting.";
+ mes "There are just too many visitors.";
+ emotion e_wah;
+ next;
+ mes "[Immigration Officer]";
+ mes "So if you will place your forms here...";
+ next;
+ mes "[???]";
+ mes "Here!! These are my completed forms!!";
+ mes "This time it's all good, right?";
+ mes "Let me through quick!";
+ cutin "bu_du1.bmp",2;
+ emotion e_omg,1;
+ next;
+ cutin "bu_du1.bmp",255;
+ mes "[Immigration Officer]";
+ mes "I'm taking care of visitors in the order they arrived, so please wait for your turn.";
+ emotion e_swt;
+ next;
+ mes "[???]";
+ mes "What are you talking about!";
+ mes "I was waaaay before all of these guys!";
+ cutin "bu_du3.bmp",2;
+ next;
+ cutin "bu_du3.bmp",255;
+ mes "[Immigration Officer]";
+ mes "Well, your turn was delayed because you had to fill out your forms, so you have to wait until later.";
+ emotion e_ag;
+ next;
+ mes "[???]";
+ mes "What?! You just said you take care of visitors in the order they arrived!!!";
+ cutin "bu_du5.bmp",2;
+ next;
+ cutin "bu_du5.bmp",255;
+ mes "[Immigration Officer]";
+ mes "Yes, I did say that but...";
+ next;
+ mes "- SMACK!!! -";
+ next;
+ mes "[???]";
+ mes "OW!! Why did you hit me?";
+ cutin "bu_du4.bmp",2;
+ next;
+ mes "[???]";
+ mes "I'm so sorry.";
+ mes "My stupid friend here is causing trouble.";
+ cutin "bu_mark3.bmp",0;
+ next;
+ mes "[???]";
+ mes "Who are you calling stupid?!";
+ cutin "bu_du5.bmp",2;
+ next;
+ mes "[???]";
+ mes "If you hadn't filled out my name incorrectly in the first place, we wouldn't be waiting like this!";
+ cutin "bu_mark3.bmp",0;
+ next;
+ mes "[???]";
+ mes "Mark Esha or Madrid, they're all the same!";
+ cutin "bu_du3.bmp",2;
+ next;
+ mes "[Mark Esha]";
+ mes "They're not at all the same!";
+ mes "And what's more, how can you not know the name of your friend of 15 years?";
+ cutin "bu_mark4.bmp",0;
+ next;
+ mes "[???]";
+ mes "It's not that I didn't know- I did it on purpose!!";
+ mes "Madrid is just fine! Madrid!";
+ cutin "bu_du3.bmp",2;
+ next;
+ cutin "bu_du3.bmp",255;
+ mes "- SMACK -";
+ next;
+ mes "[Mark Esha]";
+ mes "Hu... I am so sorry that my friend is this stupid.";
+ mes "Please don't mind us and do what you need to do.";
+ cutin "bu_mark3.bmp",0;
+ next;
+ mes "[???]";
+ mes "AHHHH!!!";
+ mes "LET ME IN!!!!";
+ mes "How long do I have to wait out here!!!";
+ cutin "bu_du5.bmp",2;
+ next;
+ mes "[Mark Esha]";
+ mes "Would you stay put just for a second?!!!";
+ mes "Sorry. So sorry.";
+ cutin "bu_mark3.bmp",0;
+ next;
+ cutin "bu_mark3.bmp",255;
+ mes "[Immigration Officer]";
+ mes "Oh wow, this is just so crazy.";
+ mes "Test15696 Here, your documents are processed.";
+ mes "You may enter the city when you go talk to the security guard.";
+ emotion e_go;
+ next;
+ mes "[???]";
+ mes "Shuffle, shuffle";
+ cutin "bu_oliver0.bmp",0;
+ next;
+ cutin "bu_oliver0.bmp",255;
+ mes "[Immigration Officer]";
+ mes "And Mr. Deu Lean, please take your group and enter. It's just way too noisy.";
+ emotion e_an;
+ next;
+ mes "[Du Lian]";
+ mes "Mwahah!!";
+ mes "SEE THAT?!";
+ mes "Thanks to me, we got through faster!";
+ cutin "bu_du1.bmp",2;
+ next;
+ mes "[Mark Esha]";
+ mes "You mean slower...";
+ cutin "bu_mark4.bmp",0;
+ next;
+ mes "[Du Lian]";
+ mes "A real man does not get bogged down by the past!!";
+ mes "I may have been slow with the documentation but I will be the one to enter Eclage first!";
+ mes "Mwahah!";
+ cutin "bu_du2.bmp",2;
+ next;
+ mes "[Mark Esha]";
+ mes "......Whew";
+ mes "I'm so sorry for everything.";
+ cutin "bu_mark2.bmp",0;
+ next;
+ mes "[???]";
+ mes "Well......";
+ mes "Mr. Mark, Mr. Du is already gone.";
+ cutin "bu_maggi3.bmp",2;
+ next;
+ mes "[Mark Esha]";
+ mes "Oh.............";
+ mes "Oh......................";
+ cutin "bu_mark3.bmp",0;
+ next;
+ mes "[Mark Esha]";
+ mes "My goodness......";
+ emotion e_swt2,1;
+ set ep14_2_enter,2;
+ erasequest 11310;
+ setquest 11311;
+ close2;
+ cutin "bu_mark3.bmp",255;
+ end;
+ } else {
+ mes "[Immigration Officer]";
+ mes "Oh wow, this is just so crazy.";
+ mes strcharinfo(0)+".";
+ mes "Here, your documents are processed.";
+ mes "You may enter the city when you go talk to the security guard.";
+ emotion e_go;
+ close;
+ }
+}
+
+// Oliver Wolf Hood
+//============================================================
+eclage,102,32,4 script Fairy Carpenter#ep14_2 443,{
+ if (BaseLevel < 120) {
+ mes "[Fairy Carpenter]";
+ mes "The bridge is kind of broken so please be careful.";
+ emotion e_sob;
+ close;
+ }
+ if (checkquest(11312) == -1) {
+ mes "[Fairy Carpenter]";
+ mes "This area is kind of broken, so be careful.";
+ mes "Otherwise, you'll fall aaaaaall the way down.";
+ next;
+ switch(select("The work being done right now:The reason for the bridge being broken:Forget it.")) {
+ case 1:
+ //missing
+ close;
+ case 2:
+ mes "[Fairy Carpenter]";
+ mes "Oh, just a minute ago, there was a human benig who took a misstep and broke a tree branch while falling.";
+ emotion e_an;
+ next;
+ mes "[Fairy Carpenter]";
+ mes "Being close to the entrance and all, this really needs to be fixed soon.";
+ mes "I'm trying to decide whether I should put up a warning sign, gather the necessary materials for it, and fix it myself."; //custom
+ next;
+ switch(select("Give help.:Don't give help.")) {
+ case 1:
+ mes "[Fairy Carpenter]";
+ mes "Wow!!!";
+ mes "You are going to help me?!";
+ mes "So... so kind...";
+ next;
+ mes "[Fairy Carpenter]";
+ mes "I can't believe there's still this kind of kindness left in the world... Hmm, sweaty eyes...";
+ emotion e_sob;
+ next;
+ mes "[Fairy Carpenter]";
+ mes "Would you then bring me a new bridge to use for repair?";
+ mes "Since other people can get hurt, I'll use my magic to maintain this bridge in the meantime.";
+ emotion e_go;
+ //setquest 11312;
+ close;
+ case 2:
+ //missing
+ close;
+ }
+ case 3:
+ //missing
+ close;
+ }
+ }
+ select("What if you use magic to repair it?");
+ mes "[Fairy Carpenter]";
+ mes "Hmm, it's not impossible, but magic that deals with creation of life requires much magic power and shouldn't be used so freely.";
+ next;
+ mes "[Fairy Carpenter]";
+ mes "If I were to describe how stupid that would be... Well, it's like turning a deliciously baked chocolate cake back into flour.";
+ next;
+ mes "[Fairy Carpenter]";
+ mes "Since the broken part is about 19 meters from here...";
+ next;
+ mes "[Fairy Carpenter]";
+ mes "Ahh! Now that I remember, before we used to be able to order the exact necessary length, but because they are mass-producing them nowadays, they only provide preset lengths.";
+ next;
+ mes "[Fairy Carpenter]";
+ mes "To maximize the stability, it's better to avoid connecting multiple bridge pieces together,";
+ next;
+ mes "[Fairy Carpenter]";
+ mes "and this broken bridge... from here to there it's about 19 meters and the present pieces come in 3 meters, 5 meters, and 10 meters......";
+ emotion e_swt2;
+ next;
+ mes "[Fairy Carpenter]";
+ mes "Hmm.......";
+ next;
+ mes "[Fairy Carpenter]";
+ mes "Hmm.......";
+ mes "......";
+ emotion e_swt2;
+ next;
+ mes "[Fairy Carpenter]";
+ mes "......Hmm.........";
+ emotion e_swt2;
+ next;
+ mes "- It's probably just my imagination that smoke is coming out of his head, right? -";
+ next;
+ mes "[Fairy Carpenter]";
+ mes "Oh ho!";
+ mes "What do you think?";
+ emotion e_heh;
+ next;
+ mes "[Fairy Carpenter]";
+ mes "To make a bridge of 19 meters in length with the fewest number of pieces possible, how many of each 3, 5, or 10 meter length pieces would I need?";
+ emotion e_what;
+ next;
+ mes "[Fairy Carpenter]";
+ mes "Please write the number of pieces necessary for each length. If no pieces for that length are necessary, please write 0.";
+ input .@inputstr$;
+ if (.@inputstr$ != "002") {
+ //missing
+ close;
+ }
+ next;
+ mes "[Fairy Carpenter]";
+ mes "Yeah, that sounds good, right?";
+ mes "Especially since there wouldn't be a need to make them so straight.";
+ emotion e_ic;
+ next;
+ mes "[Fairy Carpenter]";
+ mes "Okay, if you talk to [Golie] who works outside the city near the tower, he will give you the new bridge pieces.";
+ //erasequest 11312;
+ //setquest 11313;
+ close;
+/*
+OnTouch:
+ if (ep14_2_hood == 0) {
+ mes "[Fairy Carpenter]";
+ mes "Hey!!!!!!!";
+ mes "Be careful over there!!";
+ close;
+ }
+ end;
+*/
+}
+
+eclage,283,275,4 script Glaces#ep14_2 438,{
+ mes "[Glaces]";
+ mes "Hm......";
+ mes "The guys are late.";
+ mes "I can only imagine that they would be busy just looking at the number of people visiting Eclage nowadays but...";
+ next;
+ mes "[Glaces]";
+ mes "Why... why do I have so much time at hand...?";
+ mes "Am I the only one with so much free time?";
+ mes "Am I really the only one?";
+ emotion e_omg;
+ close;
+}
+
+eclage,266,216,4 script Moreng#ep14_2 444,{
+ mes "[Moreng]";
+ mes "Eclage is a really nice place to live.";
+ mes "The flowers are always in full bloom and the weather is always comfortable.";
+ next;
+ mes "[Moreng]";
+ mes "If there were a beautiful Yai of my own, it would truly be a paradise!";
+ next;
+ mes "[Moreng]";
+ mes "Yai actually signifies an egg.";
+ mes "And to Laphines, Yai could even signify what is beyond a home...";
+ emotion e_shy;
+ close;
+}
+
+eclage,191,200,4 script Yube#ep14_2 446,{
+ mes "- Shuffle shuffle -";
+ mes "He's working on something.";
+ mes "Let's not bother him.";
+ close;
+}
+
+eclage,292,265,0 script #ep14_2Yube Entrance 45,2,2,{
+OnTouch:
+ mes "- Looks like the door is locked. -";
+ close;
+}
+
+eclage,265,166,4 script Shul#ep14_2 443,{
+ mes "[Shul]";
+ mes "Laphine's put their lives on the line to make Yai beautiful.";
+ mes "I'm a Laphine myself but that kind of priority is difficult to understand.";
+ close;
+}
+
+eclage,137,169,4 script Tato#ep14_2 439,{
+ mes "[Tato]";
+ mes "A friend of mine recently applied to the Splendide unit.";
+ mes "I heard Jotunheim is really cold. I hope he's doing well.";
+ close;
+}
+
+ecl_in01,60,71,4 script Old Man#ep14_2 443,{
+ mes "[Old Man]";
+ mes "Hohoho~!";
+ next;
+ mes "[Old Man]";
+ mes "Looks like there are a lot of interesting visitors nowadays...";
+ mes "When I was young, you had to put your life on the line to go into the foreign lands.";
+ next;
+ mes "[Old Man]";
+ mes "Nowadays, things are much more convenient with de-regulation and all.";
+ mes "And with the warps and flying to all these places, where's all the romance in adventures anymore?";
+ emotion e_pif;
+ next;
+ mes "[Old Man]";
+ mes "Young people nowadays probably don't even know how frog eggs taste like.";
+ next;
+ mes "[Old Man]";
+ mes "It seems like yesterday when I saved enough Jellopies to buy a Tsurugi, but even that Tsurugi is deserted somewhere in storage.";
+ emotion e_sob;
+ close;
+}
+
+ecl_in01,44,53,4 script Delivery Man#ep14_2 513,{
+ mes "[Delivery Man]";
+ mes "Sigh...";
+ mes "I need to get going in order to make it on time.";
+ next;
+ mes "[Delivery Man]";
+ mes "Wait a minute...";
+ mes "Is it actually better to deliver it later...";
+ mes "I remember seeing so many boxes of pickled Poring in the storage waiting to be delivered...";
+ emotion e_sob;
+ close;
+}
+
+ecl_in01,70,88,4 script Sack Merchant#ep14_2 495,{
+ mes "[Sack Merchant]";
+ mes "Meow?";
+ mes "Helloeow~";
+ mes "I have a treasure from a place very, very fareow~";
+ mes "Take a lookeow~";
+ mes "I'll give you a good priceow~";
+ close;
+}
+
+ecl_in01,73,51,4 script Murah#ep14_2 442,{
+ mes "[Murah]";
+ mes "Hmm... What amazing present should I give?";
+ emotion e_flash;
+ close;
+}
+
+ecl_fild01,192,94,4 script Golie#ep14_2 442,{
+ mes "[Golie]";
+ mes "To grow Elder Willow trees,";
+ mes "since Spring, Peco Peco";
+ mes "must have cried as such.";
+ next;
+ mes "[Golie]";
+ mes "To grow Elder Willow trees";
+ mes "the alarm in the clock tower";
+ mes "again must have cried as such.";
+ next;
+ mes "[Golie]";
+ mes "It's a song given to me by a bard from Midgard. The lyrical and nature-oriented words really resonated with me.";
+ next;
+ mes "[Golie]";
+ mes "I would love to hear any songs that you might know also.";
+ close;
+}
+
+ecl_fild01,97,315,4 script Traveler#ep14_2 732,{
+ mes "[Traveler]";
+ mes "Who are you?";
+ mes "I've never seen you before.";
+ next;
+ mes "[Traveler]";
+ mes "Oh, you came to ask me about the feather, too?";
+ mes "It's just a plain old decoration, but everyone really likes to bother me about it.";
+ next;
+ mes "[Traveler]";
+ mes "If you are thinking about selling it, you should just give up.";
+ mes "I have no wishes to sell it no matter how much you beg.";
+ next;
+ mes "[Traveler]";
+ mes "This feather...";
+ close;
+}
+
+// Wanted to be Big and Beautiful
+//============================================================
+eclage,282,255,4 script Wuhari#eclbig 620,{
+ mes "[Wuhari]";
+ mes "Ah... Is there anyone with more experienced with this...";
+ close;
+}
+
+eclage,163,228,4 script Goatie#eclbig 438,{
+ mes "[Goatie]";
+ mes "Have you ever been to the palace?";
+ mes "They say that it is so much more beautiful than our Yai's could ever be.";
+ next;
+ mes "[Goatie]";
+ mes "I guess people who have nothing can only dream.";
+ close;
+}
+
+eclage,170,195,4 script Svery#eclbig 443,{
+ mes "[Svery]";
+ mes "It's my wife's big wish to visit the palace.";
+ next;
+ mes "[Svery]";
+ mes "I want to grant that wish for her, but how could that ever be possible.";
+ mes "Especially given our situation...";
+ close;
+}
+
+eclage,126,151,4 script Pompe#eclbig 444,{
+ mes "[Pompe]";
+ mes "I saw it!";
+ next;
+ mes "[Pompe]";
+ mes "I really saw it!!";
+ close;
+}
+
+// Mystery Robbery Investigation
+//============================================================
+eclage,164,102,3 script Cruyan#eclage 442,{}
+
+eclage,222,131,4 script Wandering Merchant#ecla 807,{
+ mes "[Wandering Merchant]";
+ mes "Go away kids~";
+ close;
+}
+
+// Troublesome Fairie
+//============================================================
+ecl_in01,26,88,4 script Cecilia#nk 440,{
+ mes "[Cecilia]";
+ mes "Mm...mm... what should I do...";
+ next;
+ mes "- She seems too busy to talk to you. -";
+ close;
+}
+
+ecl_in01,80,77,4 script Dominic#nk 445,{
+ mes "[Dominic]";
+ mes "I won't stop you from walking around in Eclage but, don't bother me you outsider!";
+ close;
+}
+
+ecl_in02,160,36,4 script Eirinn#nk 441,{
+ mes "[Eirinn]";
+ mes "Oww, my stomach hurts!!";
+ mes "What are you looking at?";
+ next;
+ mes "[Eirinn]";
+ mes "I haven't really eaten anything unusual these days but why am I getting stomach aches so often!";
+ close;
+}
+
+ecl_in03,175,69,4 script Bourbon#nk 444,{
+ mes "[Bourbon]";
+ mes "How strange. I've been losing my stuff recently like things I put in my pocket or even the things I put away properly.";
+ close;
+}
+
+ecl_in01,82,80,0 script Monthly Eclage#pa0829 111,{
+ mes "^000099I see a plain-looking journal. It seems to deal with third-rate gossip stories.^000000";
+ close;
+}
+
+ecl_in01,82,78,0 script Magazine#01 111,{
+ mes "- I saw a book and stretched my hand out to reach for it. I think it's about Midgard. -";
+ next;
+ mes "[Dominic]";
+ mes "Hey, outsider,";
+ mes "who said you can touch my books?";
+ mes "Stay away from my bookshelves!";
+ close;
+}
+ecl_in01,82,79,0 duplicate(Magazine#01) Magazine#02 111
+ecl_in01,83,81,0 duplicate(Magazine#01) Exploration of Midgard::ExplorationMidgard1 111
+ecl_in01,82,84,0 duplicate(Magazine#01) Exploration of Midgard::ExplorationMidgard2 111
+ecl_in01,80,86,0 duplicate(Magazine#01) Exploration of Midgard::ExplorationMidgard3 111
+
+// Hiel's Workshop
+//============================================================
+eclage,155,91,4 script #pa0829Hiel's Door10 836,{
+ mes "[Notice]";
+ mes "Pan-galactic ultra genius engineer Hiel's strange and creepy workshop.";
+ mes "Normal Laphines, animals, and Saphas are prohibited.";
+ next;
+ if(select("Continue on my way.:Enter this place.") == 2)
+ warp "ecl_in04",107,213;
+ close;
+}
+
+ecl_in04,108,215,0 script Supreme Electronic Rope 111,{
+ mes "If you would like to go down, please press the bell~";
+ next;
+ if(select("Forget it.:Go down.") == 2)
+ warp "eclage",152,91;
+ close;
+}
+
+ecl_in04,105,216,0 script Hiel's Workshop#pa0829 111,{
+ mes "^000099It's a workshop with lots of oddities.^000000";
+ close;
+}
+
+ecl_in04,109,215,2 script Hiel#pa0829 621,{
+ mes "[Hiel]";
+ mes "It is said that the leaves from home tree have the length X with the average m and standard deviation of 4. If P(m<X<a)=0.3413 ... (Mumble mumble)";
+ next;
+ mes "^0000ffIt doesn't look like I'll understand anything he says. Let's get out of here.^000000";
+ close;
+}
+
+// For Eclage
+//============================================================
+function script F_Eclage_Traveler {
+ if (checkquest(7411) > -1 && checkquest(7412) > -1 && checkquest(7413) > -1) {
+ cutin "minuel01.bmp",4;
+ donpcevent "Eclage Guard#tl01::OnEnable";
+ mes "[Eclage Guard]";
+ mes "Excuse me for a moment.";
+ mes "Is there anyone from Splendide here?";
+ next;
+ select("I am, but why?");
+ mes "[Eclage Guard]";
+ mes "Ah, you are?";
+ mes "There's someone who wants to see you. Do you have time right now?";
+ next;
+ mes "[Eclage Guard]";
+ mes "You don't have to worry. It's nothing suspicious or bad.";
+ mes "We just wanted to ask you about Splendide, so please spare your time for us.";
+ next;
+ mes "[Eclage Guard]";
+ mes "I'll guide you if it's okay.";
+ next;
+ switch(select("Sure. Let's go.:I don't have time for it right now...")) {
+ case 1: //missing
+ break;
+ case 2:
+ mes "[Eclage Guard]";
+ mes "Oh, is that right?";
+ mes "That's too bad.";
+ mes "But if you have some time later, please pay us a visit.";
+ next;
+ break;
+ }
+ mes "[Eclage Guard]";
+ mes "I'll be at the east side of the plaze near the gate.";
+ mes "Please, find me there.";
+ mes "I'll be looking forward to seeing you.";
+ erasequest 7411;
+ erasequest 7412;
+ erasequest 7413;
+ setquest 7414;
+ set ep14_2_tl,1;
+ donpcevent "Eclage Guard#tl01::OnDisable";
+ close2;
+ cutin "minuel01.bmp",255;
+ end;
+ }
+ return;
+}
+
+ecl_in01,32,52,4 script Traveler Fome#tl01 515,3,3,{
+ if (ep14_2_tl == 0) {
+ if (checkquest(7411) == -1) {
+ mes "[Fome]";
+ mes "Come here and have a talk with us.";
+ mes "My name is Fome and I'm from the central region of Alpheim.";
+ mes "You are...";
+ next;
+ mes "[Fome]";
+ mes "Wait, let me guess!";
+ mes "You're a member of the famous Midgard expedition, right?!";
+ next;
+ select("Yes.:How did he know?");
+ mes "[Fome]";
+ mes "Well, it's simple.";
+ mes "There's no one who looks like you or dresses like you around Eclage.";
+ next;
+ mes "[Fome]";
+ mes "I heard the ways to Bifrost are blocked by a strange rift and soon, travelers who came here through the Hazy Forest started to appear.";
+ next;
+ mes "[Fome]";
+ mes "They are humans who came from Midgard passing through Jotunheim!";
+ mes "Seriously...I'm glad I came to Eclage.";
+ mes "I didn't expect to meet a person from Midgard!";
+ next;
+ mes "[Fome]";
+ mes "Eclage is crowded with travelers, and until recently, most of them were from Alpheim.";
+ mes "It's nice to see you. I was about to talk to you just now.";
+ next;
+ switch(select("Why is Eclage popular among travelers?:What is the main attraction of Eclage?")) {
+ case 1:
+ case 2: //missing
+ mes "[Fome]";
+ mes "Why does this place have so many travelers...?";
+ mes "First of all, I think it's due to the fact that you're able to communicate freely here since Eclage is with Bifrost.";
+ next;
+ mes "[Fome]";
+ mes "Thanks to Bifrost's will, everyone is able to communicate with no problem here just like you and I right now.";
+ next;
+ mes "[Fome]";
+ mes "Second, it's because Eclage is the end and the gateway of Alpheim.";
+ mes "It's the only way to get to Jotunheim.";
+ next;
+ mes "[Fome]";
+ mes "A great number of travelers who admire the unknown world come to Eclage.";
+ mes "Also, they want to see Bifrost, which connects Jotunheim and Alpheim, with their own eyes.";
+ next;
+ mes "[Fome]";
+ mes "Moreover, the biggest reason why Eclage is so crowded recently is...!!!";
+ next;
+ select("It is...?!");
+ emotion e_loud;
+ mes "[Fome]";
+ mes "A new Mayor Jun was born!";
+ next;
+ select("Whosa whatsits?");
+ mes "[Fome]";
+ mes "No, no, Mayor Jun. It's a Laphine name.";
+ mes "It's a...right, it means a 'king.'";
+ mes "The King is born!";
+ next;
+ mes "[Fome]";
+ mes "Although he is pretty old, he became a king.";
+ mes "As the king of Laphines, he is so beautiful.";
+ next;
+ select("When was that?");
+ mes "[Fome]";
+ mes "Mm? Maybe 10 years ago?";
+ mes "5 years ago? Or 15? Anyway, it's less than 100 years.";
+ next;
+ break;
+ }
+ setquest 7411;
+ callfunc "F_Eclage_Traveler";
+ mes "This traveler named Fome is going on forever about the king of Laphines.";
+ mes "It seems as if she doesn't care about others and is sinking into her own world, so it's hard to understand what she's talking about.";
+ mes "Let's talk to other travelers.";
+ close;
+ } else {
+ mes "[Fome]";
+ mes "Oh my, did I talk too much?";
+ mes "But you're really lucky.";
+ mes "If you tell them that you're here to congratulate on the birth of new Mayor Jun, you'll surely meet the great Kardui.";
+ next;
+ mes "[Fome]";
+ mes "Ah...how beautiful.";
+ mes "I heard some bad rumors but I don't believe in them at all~";
+ next;
+ mes "[Fome]";
+ mes "Ha, I almost went too far again.";
+ mes "Did you talk to Litrip and York?";
+ next;
+ mes "[Fome]";
+ mes "When it comes to Bifrost Tower, which is the most popular tourist attraction, Litrip knows the best!";
+ close;
+ }
+ } else if (ep14_2_tl == 1) {
+ mes "[Fome]";
+ mes "An Eclage Guard was looking for you just a minute ago, right?";
+ mes "I think he said he'll be waiting for you at the east gate. Don't you have to go?";
+ next;
+ mes "[Fome]";
+ mes "Since he was very polite and all, I'm sure it's something good.";
+ mes "Sure. The Laphines in Eclage are very generous to travelers.";
+ close;
+ } else {
+ mes "[Fome]";
+ mes "You seem very busy.";
+ mes "I heard so much about you from here and there.";
+ mes "I see that you're friends with Laphines already.";
+ close;
+ }
+OnTouch:
+ if (ep14_2_tl == 0 && checkquest(7411) == -1 && checkquest(7412) == -1 && checkquest(7413) == -1) {
+ mes "A group of travelers of Alpheim are having a conversation.";
+ emotion e_loud;
+ next;
+ if(select("Avoid them.:Join the group.") == 1) {
+ mes "They don't seem to care that much.";
+ close;
+ }
+ mes "When you approach, they stop talking for a second and make a seat for you.";
+ mes "Start a conversation.";
+ close;
+ }
+ end;
+}
+
+ecl_in01,32,51,6 script Traveler Litrip#tl02 513,{
+ if (ep14_2_tl == 0) {
+ if (checkquest(7412) == -1) {
+ mes "[Litrip]";
+ mes "Oh, look at this strange traveler.";
+ mes "Come here. My name is Litrip.";
+ next;
+ mes "[Litrip]";
+ mes "You're from Mora?";
+ mes "You must have seen Bifrost Tower on the way then?";
+ next;
+ switch(select("I saw it from the outside.:I've gone inside the tower.")) {
+ case 1:
+ mes "[Litrip]";
+ mes "Really? That's too bad.";
+ mes "Well, but it's good to play it safe since there are frightful monsters inside the tower.";
+ mes "It's certainly better than losing your life by being rash.";
+ next;
+ break;
+ case 2:
+ mes "[Litrip]";
+ mes "I see. Wasn't it pretty crazy?";
+ mes "Once upon a time, It used to be a very nice observatory.";
+ next;
+ mes "[Litrip]";
+ mes "Although it's occupied by horrible monsters now.";
+ mes "Seeing that you went into the tower and came out unharmed, I can tell you're pretty skilled.";
+ next;
+ break;
+ }
+ mes "[Litrip]";
+ mes "There's a rumor that a suspicious alchemist resides on top of the tower.";
+ mes "No one knows why, but I heard he's been there for a good while.";
+ next;
+ mes "[Litrip]";
+ mes "If that alchemist is still alive, he could be a living history himself since the tower, the alchemist, and Bifrost have existed even before Eclage was founded.";
+ next;
+ mes "[Litrip]";
+ mes "A good number of people still challenge themselves to find the mysterious legend of Bifrost but so far, none of them succeeded.";
+ next;
+ select("What about Laphines?");
+ mes "[Litrip]";
+ mes "Hmm, Laphines?";
+ mes "For some reason, they're not interested in Bifrost Tower at all.";
+ mes "I think they perceive it just as a natural object.";
+ next;
+ mes "[Litrip]";
+ mes "They're actually more than capable of solving the mystery if they wanted to but I feel like they're just respecting the existence of Bifrost Tower.";
+ next;
+ mes "[Litrip]";
+ mes "However, they don't necessarily stop people from going into the tower, either. So I'm thinking maybe they're just not aware of it.";
+ mes "If you're curious, go challenge yourself and solve the mystery of the tower.";
+ next;
+ setquest 7412;
+ callfunc "F_Eclage_Traveler";
+ mes "[Litrip]";
+ mes "If you ever happen to solve the mystery of Bifrost Tower, let me be the first one to know about it.";
+ mes "You're strong enough to explore the tower.";
+ mes "I only got to the first floor. Haha.";
+ next;
+ mes "[Litrip]";
+ mes "Have you talked to other friends?";
+ mes "Isn't information the most important thing to a traveler?";
+ close;
+ } else {
+ mes "[Litrip]";
+ mes "It's not fun listening to my story only.";
+ mes "You should go talk to Fome and Chiba, too.";
+ next;
+ mes "[Litrip]";
+ mes "And Let me know if you ever solve the mystery of Bifrost Tower.";
+ mes "I'll be looking forward to hearing from you, hahaha.";
+ close;
+ }
+ } else if (ep14_2_tl == 1) {
+ mes "[Litrip]";
+ mes "It seems like Laphines have some official affairs to do with you.";
+ mes "Didn't they tell you to come to the east gate?";
+ mes "You should go.";
+ close;
+ } else {
+ mes "[Litrip]";
+ mes "Since the last time I saw you talking to the guard, I hear your name here and there.";
+ mes "Is it something important? You've become pretty famous here.";
+ close;
+ }
+}
+
+ecl_in01,35,51,2 script Traveler Chiba#tl03 514,{
+ if (ep14_2_tl == 0) {
+ if (checkquest(7413) == -1) {
+ mes "[Chiba]";
+ mes "You're human from Midgard.";
+ mes "I'm Chiba.";
+ mes "As you can see, I'm a traveler just like you.";
+ next;
+ mes "[Chiba]";
+ mes "I think local area information is the most important when traveling.";
+ mes "You think so, too?";
+ next;
+ mes "[Chiba]";
+ mes "I heard there's a way to avoid a rift that is blocking Jotunheim...";
+ mes "Do people really travel through Hazy Forest?";
+ next;
+ switch(select("Yes.:By magic!")) {
+ case 1:
+ mes "[Chiba]";
+ mes "So it is.";
+ mes "That's how strong humans are, I guess.";
+ mes "When I was Mora, I heard there are many missing men in Hazy Forest...";
+ next;
+ break;
+ case 2:
+ mes "[Chiba]";
+ mes "Indeed... people who get to Mora first use magic to help others travel?";
+ mes "That's brilliant.";
+ next;
+ break;
+ }
+ mes "[Chiba]";
+ mes "Anyway it's true that there are active interactions thanks to you people.";
+ mes "I should be grateful for that.";
+ next;
+ mes "[Chiba]";
+ mes "Do you want to know something more interesting?";
+ mes "Everyone in Alpheim knows about it, but I'm sure you people have never heard about it.";
+ next;
+ mes "[Chiba]";
+ mes "Among Laphines, have you seen the taller ones with especially bright skin and gorgeous wings?";
+ next;
+ mes "[Chiba]";
+ mes "They're the 'Donas.' By the way, normal-looking Laphines are called 'Papang' in their language.";
+ mes "It sounds like some kind of a snack, but well, we should respect them.";
+ next;
+ mes "[Chiba]";
+ mes "The reason Donas are taller and gorgeous is because they're all candidates for Mayor.";
+ mes "That is, they all have a chance of becoming the king.";
+ next;
+ mes "[Chiba]";
+ mes "We're not talking about upper class or lower class here. They are classified according to their job.";
+ mes "It might not be important, but it's good to know about it as a foreigner.";
+ next;
+ mes "[Chiba]";
+ mes "Anyway, Donas have strong magical powers and they live longer. But since there are not many of them most of them are assigned to important positions.";
+ next;
+ mes "[Chiba]";
+ mes "The throne of the king of Laphines seems to be inherited by blood, but it isn't in reality.";
+ mes "Mayor Jun is known to emerge among the Donas but it's just exactly that.";
+ next;
+ mes "[Chiba]";
+ mes "He literally just emerges without any kind of a formal inheritance process.";
+ mes "Isn't it pretty interesting?";
+ next;
+ setquest 7413;
+ callfunc "F_Eclage_Traveler";
+ mes "[Chiba]";
+ mes "Try talking to the other travelers."; //custom
+ close;
+ } else {
+ mes "[Chiba]";
+ mes "Try talking to the other travelers."; //custom
+ close;
+ }
+ } else if (ep14_2_tl == 1) {
+ mes "[Chiba]";
+ mes "Wasn't there an Eclage Guard looking for you just now?";
+ mes "You'd better respect Laphines as much as possible in order to avoid any discord.";
+ mes "It's the basis of traveling.";
+ close;
+ } else {
+ mes "[Chiba]";
+ mes "So, you weren't a mere traveler after all.";
+ close;
+ }
+}
+
+ecl_in01,82,70,2 script Eclage Guard#tl02 447,{
+ if (ep14_2_tl == 0) {
+ mes "[Eclage Guard]";
+ mes "Welcome to Eclage."; //custom
+ close;
+ } else if (ep14_2_tl == 1) {
+ cutin "minuel02.bmp",2;
+ mes "[Eclage Guard]";
+ mes "Oh, you are here!";
+ mes "May I escort take you to the one who wants to meet you?";
+ next;
+ switch(select("Sure. Let's go.:I don't have time for it right now...")) {
+ case 1:
+ mes "[Eclage Guard]";
+ mes "Please follow me then.";
+ erasequest 7414;
+ setquest 7415;
+ set ep14_2_tl,2;
+ close2;
+ warp "ecl_in03",244,89;
+ cutin "minuel02.bmp",255;
+ end;
+ case 2:
+ mes "[Eclage Guard]";
+ mes "Ah...is that right?";
+ mes "I'll wait then.";
+ next;
+ mes "[Eclage Guard]";
+ mes "Don't worry about me.";
+ mes "I'll just wait here as long as it takes.";
+ mes "Well, it's my job. Don't worry.";
+ close2;
+ cutin "minuel02.bmp",255;
+ end;
+ }
+ } else if (ep14_2_tl == 2) {
+ cutin "minuel01.bmp",2;
+ mes "[Eclage Guard]";
+ mes "I thought you sill had something to do.";
+ mes "May I guide you?";
+ next;
+ switch(select("Yes, please.:No, it's okay.")) {
+ case 1:
+ mes "[Eclage Guard]";
+ mes "Please follow me then.";
+ close2;
+ warp "ecl_in03",244,89;
+ cutin "minuel02.bmp",255;
+ end;
+ case 2:
+ mes "[Eclage Guard]";
+ mes "Is that right?";
+ mes "I see. Come find me whenever you need it.";
+ close2;
+ cutin "minuel02.bmp",255;
+ end;
+ }
+ } else if (ep14_2_tl == 3) {
+ cutin "minuel01.bmp",2;
+ mes "[Eclage Guard]";
+ mes "I see you pretty often.";
+ mes "I was notified in advance that the Chief of Staff requested for an audience.";
+ next;
+ if (checkquest(7416,PLAYTIME) < 2) {
+ mes "[Eclage Guard]";
+ mes "But I'm afraid it's too early.";
+ mes "I think you have to wait for a while.";
+ close2;
+ cutin "minuel02.bmp",255;
+ end;
+ }
+ mes "[Eclage Guard]";
+ mes "I see you pretty often.";
+ mes "I was notified in advance that the Chief of Staff requested for an audience.";
+ next;
+ mes "[Eclage Guard]";
+ mes "Since it's about time, should I lead you in now?";
+ next;
+ switch(select("Yes, please.:I'll come back later.")) {
+ case 1:
+ mes "[Eclage Guard]";
+ mes "Follow me, please.";
+ set ep14_2_tl,4;
+ close2;
+ warp "ecl_in03",58,72;
+ cutin "minuel02.bmp",255;
+ end;
+ case 2:
+ mes "[Eclage Guard]";
+ mes "Do as you wish although Mayor Jun might be upset if you keep him waiting for too long.";
+ close2;
+ cutin "minuel02.bmp",255;
+ end;
+ }
+ } else if (ep14_2_tl == 4) {
+ cutin "minuel01.bmp",2;
+ mes "[Eclage Guard]";
+ mes "May I escort you to the audience chamber?";
+ next;
+ switch(select("Yes, please.:No, it's okay.")) {
+ case 1:
+ mes "[Eclage Guard]";
+ mes "Follow me, please.";
+ close2;
+ warp "ecl_in03",58,72;
+ cutin "minuel02.bmp",255;
+ end;
+ case 2:
+ mes "[Eclage Guard]";
+ mes "Thank you.";
+ mes "I thought you were using me for teleportation since you're here so often.";
+ close2;
+ cutin "minuel02.bmp",255;
+ end;
+ }
+ } else if (ep14_2_tl == 5) {
+ if (checkquest(7418) == -1) {
+ cutin "minuel01.bmp",2;
+ mes "[Eclage Guard]";
+ mes "Eh, good to see you again.";
+ mes "We should have introduced ourselves earlier if we knew we would run into each other so often like this.";
+ next;
+ mes "[Minuel]";
+ mes "I'm Minuel.";
+ mes "It's such a common name. I don't even know what it means.";
+ mes "I think my parents just gave me a name that is easy on the ear.";
+ next;
+ mes "[Minuel]";
+ mes "Come to think of it, I heard the news.";
+ mes "You've decided to work in Eclage...";
+ next;
+ switch(select("It's just a rumor.:Do they have a job for me?")) {
+ case 1:
+ mes "[Minuel]";
+ mes "Eh? Really?";
+ mes "That's too bad. There was a suitable job for you.";
+ mes "Well, I understand.";
+ close2;
+ cutin "minuel02.bmp",255;
+ end;
+ case 2:
+ mes "[Minuel]";
+ mes "Actually I don't have any time for myself since I have to be here all the time.";
+ mes "Not only I, but most Laphines who are in this business are faced with that position, too.";
+ next;
+ mes "[Minuel]";
+ mes "So, we don't have any time to decorate our Yai.";
+ mes "Of course we could buy the materials. But just like any other consumers, we would like to gather them on our own.";
+ next;
+ mes "[Minuel]";
+ mes "Since you're free to go anywhere,";
+ mes "could you gather some decorations for Yai?";
+ next;
+ switch(select("Sure.:No.")) {
+ case 1:
+ mes "[Minuel]";
+ mes "Thank you.";
+ mes "You need to find";
+ mes "5 Horns of Hillslion, 5 Magical Powers, and 5 Horse's Hooves each.";
+ next;
+ mes "[Minuel]";
+ mes "I would like to decorate it with unpolished beauty.";
+ mes "You can get the materials by hunting the monsters near Splendide, where I'm not supoosed to go.";
+ next;
+ mes "[Minuel]";
+ mes "I've heard some rumors about Hillslions, and they seem to appear in Sapha's areas.";
+ mes "Their horns, Mystic Horns of Cornuses that live in the grasslands and something called Horse's Hooves.";
+ next;
+ mes "[Minuel]";
+ mes "I'm sure you would know more about those hooves than I do.";
+ mes "I'll be counting on you!";
+ setquest 7418;
+ close2;
+ cutin "minuel02.bmp",255;
+ end;
+ case 2:
+ mes "[Minuel]";
+ mes "Ha, do you really think so?";
+ mes "You will be coming here again.";
+ mes "Soon, in the near future. Hehehe~";
+ close2;
+ cutin "minuel02.bmp",255;
+ end;
+ }
+ }
+ }
+ mes "[Minuel]";
+ mes "I asked you for 5 Horns of Hillslion, 5 Mystic Horns, and 5 Horse's Hooves.";
+ mes "You'll be able to get Mystic Horns by catching Cornuses near Splendide.";
+ close;
+ }
+}
+
+ecl_in03,245,93,2 script Chief of Staff#tl01 435,{
+ if (ep14_2_tl < 2) {
+ mes "[Chief of Staff]";
+ mes "Sorry, but no unauthorized entry is allowed here.";
+ close;
+ } else if (ep14_2_tl == 2) {
+ mes "[Chief of Staff]";
+ mes "Welcome to Eclage.";
+ mes "I ordered them to lead you here.";
+ next;
+ mes "[Shenime]";
+ mes "I'm in charge of the military supplies that are sent to the outpost of Splendide.";
+ mes "My name is Shenime.";
+ next;
+ mes "[Shenime]";
+ mes "Our supplies sent to Mora Village...";
+ mes "oww...I'm sorry. I've been having this headache recently...";
+ next;
+ mes "[Shenime]";
+ mes "Anyway, I've heard that there are people";
+ mes "who deliver our supplies to Splendide through Hazy Forest.";
+ next;
+ mes "[Shenime]";
+ mes "It's so good to see you in person.";
+ mes "People who are clever enough are already trying hard to build relationships with Eclage.";
+ next;
+ select("So, I'm not the first one?");
+ mes "[Shenime]";
+ mes "Yes, you're not...oww...";
+ mes "But it doesn't matter.";
+ mes "You humans are already doing so much for Splendide and us.";
+ next;
+ mes "[Shenime]";
+ mes "Oh, the reason I'm frowning is because of this headache.";
+ mes "Don't get me wrong.";
+ mes "Um...anyway, to go on with my story...";
+ next;
+ mes "[Shenime]";
+ mes "We are supposed to welcome you.";
+ mes "Should I get to the point now? I mean, the reason why I wanted to meet you.";
+ next;
+ mes "[Shenime]";
+ mes "As you know already, we're disconnected from Splendide due to the accident in Bifrost.";
+ mes "And for us Laphines, it's hard to go against the will of the forest and Bifrost.";
+ next;
+ mes "[Shenime]";
+ mes "I'm sure every fairy in Alpheim feels the same, too.";
+ mes "Anyway, I want to know what's going on in Splendide and Jotunheim nowadays.";
+ next;
+ mes "[Shenime]";
+ mes "I heard the battle against Manuk has recently calmed down to the point of a truce...";
+ mes "and it could have been that they didn't get supplies in time.";
+ next;
+ mes "You've answered Shenime's serious questions and describe the situation as far as you could remember.";
+ next;
+ select("Now that I think about it...");
+ mes "[Shenime]";
+ mes "What is it?";
+ mes "What you've told me is going to be very helpful.";
+ mes "Is there anything else you would like to talk about?";
+ next;
+ mes "["+strcharinfo(0)+"]";
+ mes "I was told that Sapha made Yggdrasil Tree sick,";
+ mes "and your side started a war in order to protect the tree...";
+ next;
+ mes "["+strcharinfo(0)+"]";
+ mes "...but what I know is a little bit different from that.";
+ mes "Apparently, the cause of the war seems to be the damage given to Yggdrasil Tree caused by Sapha's excessive mining, but...";
+ next;
+ mes "[Shenime]";
+ mes "Wait, stop there.";
+ next;
+ select("What's the matter?");
+ mes "[Shenime]";
+ mes "This war is like a holy war for us.";
+ mes "It's a war that we carry on upon our honor and dignity.";
+ next;
+ mes "[Shenime]";
+ mes "So whatever the truth you know is,";
+ mes "if you're not going to hold responsibility for the backlash it might bring,";
+ mes "don't say anything at all.";
+ next;
+ select("Why are you trying to hide the truth...");
+ mes "[Shenime]";
+ mes "This is a matter between Yggdrasil the world-ash and its protector.";
+ mes "Mayor Jun should be the one listening to your story, not me.";
+ next;
+ select("What?");
+ mes "[Shenime]";
+ mes "My work is done here.";
+ mes "What I'm saying is that I'm not the one to clear up your question.";
+ mes "I'll arrange a meeting with Mayor Jun for you.";
+ next;
+ mes "In the middle of the conversation, Shenime stopped talking and frowned as if he was having a headache again.";
+ mes "After massaging his head for a while, he looked much better and continued to go on.";
+ next;
+ mes "[Shenime]";
+ mes "Promise me that you will not tell anyone";
+ mes "about the truth that you believe.";
+ next;
+ if(select("No!:Yes, I promise.") == 1) {
+ mes "[Shenime]";
+ mes "You put me on the spot.";
+ mes "I don't want you to be the cause of friction.";
+ next;
+ mes "[Shenime]";
+ mes "Can't you just keep it to yourself before discussing the matter with Mayor Jun?";
+ next;
+ switch(select("No, I can't!:Fine, I won't tell anyone.")) {
+ case 1:
+ mes "[Shenime]";
+ mes "Oh well...";
+ mes "It's your loss...";
+ close;
+ case 2:
+ mes "[Shenime]";
+ mes "I see that you've made up your mind.";
+ next;
+ break;
+ }
+ }
+ mes "[Shenime]";
+ mes "I'll arrange a meeting to let Mayor Jun get to know you.";
+ mes "You need to wait a little bit. Please bear with us.";
+ next;
+ mes "[Shenime]";
+ mes "I'll notify the guard that brought you here.";
+ mes "Go find the guard after some time.";
+ mes "He will guide you.";
+ next;
+ mes "[Shenime]";
+ mes "Until then, I hope you have a good time.";
+ mes "I'll send you to the plaza.";
+ mes "By the way, the guard who is going to lead you will be at the east gate. Don't forget the time.";
+ erasequest 7415;
+ setquest 7416;
+ set ep14_2_tl,3;
+ close2;
+ warp "ecl_in01",47,28;
+ end;
+ } else if (ep14_2_tl == 3) {
+ if (checkquest(7416,PLAYTIME) < 2) {
+ mes "[Shenime]";
+ mes "You need to wait a little longer to see Mayor Jun.";
+ mes "He is pretty busy, so please bear with us.";
+ close;
+ }
+ mes "[Shenime]";
+ mes "There's another guard who was supposed to be guiding you...";
+ mes "I can't go anywhere right now.";
+ next;
+ mes "[Shenime]";
+ mes "There's a guard at the east side of the plaza near the gate.";
+ mes "I notified him already, so just ask him to guide you.";
+ close;
+ } else if (ep14_2_tl == 4) {
+ mes "[Shenime]";
+ mes "Did you tell Mayor Jun about what you think?";
+ mes "He should be the one to decide.";
+ next;
+ mes "[Shenime]";
+ mes "It seems like you haven't even met him yet. Ask the guard to guide you.";
+ close;
+ } else if (ep14_2_tl == 5) {
+ mes "[Shenime]";
+ mes "I've heard about you.";
+ mes "You've decided to work for Eclage?";
+ next;
+ mes "[Shenime]";
+ mes "At the starting point of Bifrost, there should be a messenger stamping his feet.";
+ next;
+ mes "[Shenime]";
+ mes "It's a messenger that we sent in an effort to contact Splendide regularly,";
+ mes "but I think it's still difficult to do so.";
+ next;
+ mes "[Shenime]";
+ mes "If you could help us with that, wouldn't other Laphines think better of you?";
+ close;
+ }
+}
+
+ecl_in03,41,90,2 script Mayor Jun Kardui#tl01 624,{
+ if (ep14_2_tl < 4) {
+ mes "[Kardui]";
+ mes "Mmm...";
+ mes "I don't know who you are, but could you wait until I call you?";
+ mes "I'll have to meet you some day, but now is not the right time.";
+ cutin "kardui01.bmp",1;
+ close2;
+ cutin "kardui01.bmp",255;
+ end;
+ } else if (ep14_2_tl == 4) {
+ mes "[Kardui]";
+ mes "Welcome to Eclage, stranger.";
+ mes "...this was a popular way of greeting each other, but I guess it's not fun anymore.";
+ cutin "kardui01.bmp",1;
+ next;
+ mes "[Kardui]";
+ mes "Anyway, you who came from a long way away";
+ mes "and reconized by the guardian.";
+ mes "There is a truth that you would like to tell me?";
+ next;
+ mes "[Kardui]";
+ mes "If that's the case, you will be very busy from now on.";
+ next;
+ select("What do you mean?");
+ mes "[Kardui]";
+ mes "You have to do a lot of work in order to convince me, the elders, and many other Laphines.";
+ next;
+ mes "[Kardui]";
+ mes "Of couse I could trust everything you say,";
+ mes "but will other Laphines accept a Mayor Jun who is swayed by a word of a foreigner?";
+ next;
+ cutin "kardui03.bmp",1;
+ mes "[Kardui]";
+ mes "Especially when that Mayor Jun is me. Ah...";
+ next;
+ cutin "kardui01.bmp",1;
+ mes "[Kardui]";
+ mes "Don't you understand?";
+ mes "Here, in Eclage, You have to get more recognition from Laphines.";
+ next;
+ if(select("Do I have to make a contribution?:It's about Yggdrasil!") == 1) {
+ mes "[Kardui]";
+ mes "See, you understood it right.";
+ next;
+ select("It's about Yggdrasil!");
+ }
+ cutin "kardui04.bmp",1;
+ mes "[Kardui]";
+ mes "Um.";
+ mes "I know.";
+ next;
+ mes "[Kardui]";
+ mes "You don't have to make a face.";
+ mes "No matter what I look like to you, I am the history and the spirit of Laphines, and also the protector of Yggdrasil.";
+ next;
+ mes "[Kardui]";
+ mes "Do you think I, who inherited the will of Yggdrasil, don't know anything?";
+ mes "I don't blame you since it is ignorance.";
+ next;
+ mes "[Kardui]";
+ mes "The war of Jotunheim will soon be over.";
+ mes "And it will happen not by constraint, but as a result of mutual agreement.";
+ next;
+ cutin "kardui01.bmp",1;
+ mes "[Kardui]";
+ mes "So, stranger,";
+ mes "don't worry about it and do you want to work with me for Eclage?";
+ next;
+ select("Then why do you make war and disregard the truth?");
+ cutin "kardui02.bmp",1;
+ mes "[Kardui]";
+ mes "Hmm...";
+ mes "I'll tell you when we get closer to each other.";
+ mes "I'm not obligated to talk about this important subject with a person I just met.";
+ next;
+ cutin "kardui01.bmp",1;
+ mes "[Kardui]";
+ mes "For now, I will tell the administrative ruler, the elders, and all the guards";
+ mes "about you,";
+ mes "and you will enjoy all the rights in Eclage as a person who works for the king.";
+ next;
+ select("Just hire a worker then!");
+ mes "[Kardui]";
+ mes "It's a part of building relationships with me, the king of a race. You don't like it?";
+ mes "If that's the case, I guess there's no friendship between the two of us.";
+ next;
+ select("What do you mean 'the two of us'?");
+ mes "[Kardui]";
+ mes "Us?";
+ mes "Umm...";
+ mes "Friends who share their secrets from now on?";
+ next;
+ mes "[Kardui]";
+ mes "...Haha...wasn't it funny?";
+ mes "What's up with that face.";
+ mes "Anyway, I allow you to visit anytime.";
+ next;
+ cutin "kardui04.bmp",1;
+ mes "[Kardui]";
+ mes "However, if you don't meet my expectation, you won't get anything.";
+ mes "I'll be looking forward to seeing you, stranger who will be my friend.";
+ erasequest 7416;
+ setquest 7417;
+ set ep14_2_tl,5;
+ close2;
+ cutin "kardui01.bmp",255;
+ end;
+ } else if (ep14_2_tl == 5) {
+ mes "[Kardui]";
+ mes "Now, you who work for the king!";
+ mes "Work your fingers to the bone for me!";
+ next;
+ cutin "kardui04.bmp",1;
+ mes "[Kardui]";
+ mes "...It's a joke.";
+ mes "I truly want you to become an important figure in Eclage.";
+ mes "Even if you don't, I want you to be recognized as a harmless person who gives benefit to Eclage.";
+ next;
+ mes "[Kardui]";
+ mes "It's going to be tough, but think of it as having insurance.";
+ mes "Some day, a person who remembers your name will be a great help to you.";
+ close2;
+ cutin "kardui01.bmp",255;
+ end;
+ }
+}
+
+ecl_in01,31,49,6 script Eclage Guard#tl01 447,{
+ mes "[Eclage Guard]";
+ mes "Oh, I should hurry and go back to where I was.";
+ mes "Excuse me.";
+ close;
+OnInit:
+OnDisable:
+ disablenpc "Eclage Guard#tl01";
+ end;
+OnEnable:
+ enablenpc "Eclage Guard#tl01";
+ end;
+}
+
+ecl_fild01,205,86,4 script Eclage Messenger Roy#tl 461,{
+ if (ep14_2_tl < 5) {
+ mes "[Roy]";
+ mes "I can make it to Mora Village.";
+ mes "But how can I go through Hazy Forest? All alone?";
+ mes "...Ah... I'm just feeling sorry for myself, so just continue on your way.";
+ close;
+ } else {
+ if (checkquest(7419) == -1) {
+ mes "[Roy]";
+ mes "It's hard.";
+ mes "It really is hard.";
+ mes "The more I think about it, I feel like Shenime has a nasty temper.";
+ emotion e_gasp;
+ next;
+ mes "[Roy]";
+ mes "You, who appeared in this time of crisis.";
+ mes "You, who went through Hazy Forest Maze... Are you the guidance of god? Or a blessing from god?";
+ next;
+ mes "[Roy]";
+ mes "I guess I have no other choice.";
+ mes "They say Laphines are nothing without their pride, but since I value my life over pride,";
+ mes "can I ask you a favor?";
+ next;
+ switch(select("What is it?:No.")) {
+ case 1:
+ mes "[Roy]";
+ mes "It's something difficult for Laphines, but for humans, it's very easy.";
+ mes "That is, brining the news from Splendide!";
+ next;
+ mes "[Roy]";
+ mes "I should take care of it but...";
+ mes "my magical powers are not all that great.";
+ next;
+ mes "[Roy]";
+ mes "...well, you don't need to know the details!";
+ mes "You just need to collect mails from the contact officer in Splendide.";
+ next;
+ mes "[Roy]";
+ mes "There's nothing confidential, so you can do it, too.";
+ mes "Bringing one mail. I'm sure it's easy for you.";
+ next;
+ switch(select("Leave it to me!:I don't want to.")) {
+ case 1:
+ mes "[Roy]";
+ mes "Good!";
+ mes "Go to Splendide and meet the contact officer!";
+ mes "Collect mails that are not confidential and could be a love letter to someone!";
+ mes "and bring them to me, please.";
+ setquest 7419;
+ next;
+ mes "[Roy]";
+ mes "Isn't that easy?";
+ mes "I'll be standing here and waiting for you to bring me that mail.";
+ close;
+ case 2:
+ mes "[Roy]";
+ mes "What? You're saying no after making me talk all this time?";
+ mes "....Well, things happen.";
+ mes "But you'll come back. So I'm not worried.";
+ next;
+ mes "[Roy]";
+ mes "Hehe. I knew it.";
+ mes "From the moment they picked me for this job,";
+ mes "everything is in 'the big invisible hand!!'";
+ close;
+ }
+ case 2:
+ mes "[Roy]";
+ mes "Ah...";
+ mes "It took you less than a second to say no, how clear is that.";
+ mes "Now, I'll erase the memory of this very moment!";
+ next;
+ mes "[Roy]";
+ mes "So that I could ask you again with a renewed mind.";
+ mes "Ahahahah...ha...hahha..hahaa..";
+ close;
+ }
+ }
+ mes "[Roy]";
+ mes "Let me explain again.";
+ mes "Go to Splendide and meet the contact officer!";
+ mes "Collect mails that are not confidential and could be a love letter to someone!";
+ mes "and bring them to me, please.";
+ close;
+ }
+}
+
+eclage,112,40,4 script Eclage Guard Leo#tl 461,{
+ if (ep14_2_tl < 5) {
+ mes "[Leo]";
+ mes "Welcome to Eclage, the capital of Laphines and a gateway to Alpheim.";
+ mes "I hope you enjoy your trip.";
+ close;
+ } else {
+ if (checkquest(7420) == -1) {
+ mes "[Leo]";
+ mes "Hi, how are you?";
+ emotion e_gasp;
+ next;
+ mes "[Leo]";
+ mes "How are you, really!";
+ next;
+ mes "[Leo]";
+ mes ".....";
+ next;
+ switch(select("Does he want something?:It's a strange fairy!")) {
+ case 1:
+ mes "[Leo]";
+ mes "Mayor Jun told us";
+ mes "that you would do anything for Laphines and Eclage.";
+ next;
+ mes "[Leo]";
+ mes "In order to take care of the urgent matter...";
+ next;
+ switch(select("No, I refuse!:What do you want me to do?")) {
+ case 1:
+ mes "[Leo]";
+ mes "Although you have all the rights to say no, this is what I get...";
+ mes "I understand.";
+ close;
+ case 2:
+ mes "[Leo]";
+ mes "It's nothing more than a request for Pinguicula's pickled fruits and Luciola's honey jam,";
+ mes "which are specialties of Splendide...";
+ next;
+ mes "[Leo]";
+ mes "I know it's something personal...but Hazy Forest is such a huge obstacle...";
+ mes "so I couldn't help but...";
+ next;
+ select("You said it's something urgent!!!");
+ mes "[Leo]";
+ mes "I feel like I might die if I don't eat them!!!";
+ mes "What's more urgent than this?!!?!?";
+ next;
+ mes "[Leo]";
+ mes "You visit Splendide pretty often anyway!";
+ mes "On your way back, just carry one under your arm, another in your hand, please~";
+ mes "I won't ask you anything like this ever again!";
+ next;
+ mes "[Leo]";
+ mes "So...is that yes?";
+ mes "I need 3 jars of Pinguicula's pickled fruits and another 3 jars of Luciola's honey jam~";
+ mes "They are sold inside the base of Splendide.";
+ setquest 7420;
+ next;
+ mes "[Leo]";
+ mes "You might need Splendide Coins to buy pickled fruits and honey jam.";
+ mes "You could earn those coins if you work in Splendide, so...hehe..........";
+ next;
+ mes "[Leo]";
+ mes "Helping out in Splendide is eventually helping Eclage, too.";
+ mes "Now, go for it!";
+ close;
+ }
+ case 2:
+ mes "[Leo]";
+ mes "Oh...no. I'm not a weird Laphine.";
+ mes "You got me wrong. It's a misunderstanding...";
+ close;
+ }
+ }
+ mes "[Leo]";
+ mes "I need 3 jars of Pinguicula's pickled fruits and another 3 jars of Luciola's honey jam~";
+ mes "They are specialties of the base of Splendide.";
+ mes "I'll be counting on you!";
+ close;
+ }
+}
+
+ecl_in03,245,54,2 script Working Laphine 439,{ //Laphine on official duty#tl01
+ mes "[Working Laphine]";
+ mes "This is the office area designated for official business.";
+ mes "You're not supposed to be here.";
+ close;
+}
+
+ecl_in03,244,57,4 script Resting Laphine#tl01 440,{
+ mes "Two Laphines from the upper class are talking about something.";
+ mes "One of them seems to be working and very annoyed.";
+ mes "As if they were aware of my stare, they waved me away with a show of irritation.";
+ close;
+}
+
+ecl_in02,98,32,2 script Eclage Guard#tl1b 461,{
+ mes "[Eclage Guard]";
+ mes "This the prison where we put criminals.";
+ mes "No outsiders can enter.";
+ close;
+}
+
+eclage,274,294,4 script Conversing Laphine 436,{ //Laphines in a conversation#tl02
+ mes "A female Laphine and a male Laphine are talking about something.";
+ mes "But they stopped talking as soon as they saw me.";
+ mes "I think I've interrupted the conversation.";
+ close;
+}
+
+eclage,275,294,2 script Eclage Resident#tl02 445,{
+ mes "[Male Laphine]";
+ mes "You're visiting Eclage?";
+ mes "I hope you have a good time here.";
+ close;
+}
+
+eclage,307,237,0 script Normal Yai#tllb 844,{
+ mes "This is a Laphine's Yai.";
+ mes "The door is locked shut.";
+ cutin "avn_labo.bmp",4;
+ close2;
+ cutin "avn_labo.bmp",255;
+ end;
+}
+
+// Unknown
+//============================================================
+ecl_fild01,173,95,4 script Diary Frog No. 30#worm 614,{
+ mes "[Diary Frog No. 30]";
+ mes "As you can see, I am a broken Diary Frog.";
+ mes "Professor Worm threw me out really hard all the way out here.";
+ mes "I didn't even do anything wrong!";
+ close;
+}
+
+eclage,156,56,0 script Residence Entrance 844,{}
diff --git a/npc/re/quests/quests_malangdo.txt b/npc/re/quests/quests_malangdo.txt
index 160c3f8a9..12462762d 100644
--- a/npc/re/quests/quests_malangdo.txt
+++ b/npc/re/quests/quests_malangdo.txt
@@ -1467,7 +1467,7 @@ mal_in01,114,169,5 script Rican#mal 547,{
mes "If you see my son, please tell him to get back soon~";
close;
} else if (ma_tomas > 99) {
- if (checkquest(11238,PLAYTIME) == 0 || checkquest(11238,PLAYTIME) == 1) {
+ if (checkquest(11238) != -1) {
if (countitem(6435) < 30) {
mes "[Rican]";
mes "You need exactly 30 to get a set!";
@@ -3523,7 +3523,7 @@ mal_in02,76,63,7 script Cleanyang 544,{
mes "Recently, there are 9 spot that hided cat's ship biscuit as well.";
next;
mes "[Cleanyang]";
- mes "Someone think that good angel took them all as I collected and threw away";
+ mes "Someone think that good angel took them all as I collected and threw away.";
mes "He still hide them that place.";
next;
mes "[Cleanyang]";
@@ -3542,7 +3542,7 @@ mal_in02,76,63,7 script Cleanyang 544,{
case 1:
mes "[Cleanyang]";
mes "My service to you today.";
- mes "The inside of ship Navi, home and cat tower too. Don't even miss a blade of grass";
+ mes "The inside of ship Navi, home and cat tower too. Don't even miss a blade of grass.";
mes "Search everywhere.";
setquest 7268;
close;
@@ -3601,7 +3601,7 @@ mal_in02,76,63,7 script Cleanyang 544,{
mes "He still hide them that place.";
next;
mes "[Cleanyang]";
- mes "It is so easy because I don't have to search everywhere, but";
+ mes "It is so easy because I don't have to search everywhere, but...";
mes "please search the 9 spot where hiding frequently.";
close;
case 3:
diff --git a/npc/re/quests/quests_malaya.txt b/npc/re/quests/quests_malaya.txt
index 9bab65bea..002130ee6 100644
--- a/npc/re/quests/quests_malaya.txt
+++ b/npc/re/quests/quests_malaya.txt
@@ -3,7 +3,7 @@
//===== By: ==================================================
//= Euphy
//===== Current Version: =====================================
-//= 0.2
+//= 0.3
//===== Compatible With: =====================================
//= rAthena SVN
//===== Description: =========================================
@@ -12,9 +12,10 @@
//===== Additional Comments: =================================
//= 0.1 Traders only. Adapted from Masao's conversion. [Euphy]
//= 0.2 Added Tribe Blacksmith [DeadlySilence]
+//= 0.3 Added "Secret in the Woods" quest [DeadlySilence]
//============================================================
-// Traders
+// Traders :: npc
//============================================================
ma_fild01,166,214,6 script Old Man in Dilemma#GA 575,{
if (MaxWeight - Weight < 600 || checkweight(1201,1) == 0) {
@@ -278,7 +279,6 @@ ma_fild01,238,198,4 script Tikbalang Expert#malaya 582,{
// MVP Armors :: mvpitem
// ============================================================
ma_fild01,158,243,6 script Tribe Blacksmith#malaya 582,{
-
mes "[Bayani]";
mes "I will upgrade your armor if you bring one that holds enormous power.";
next;
@@ -504,4 +504,980 @@ ma_fild01,158,243,6 script Tribe Blacksmith#malaya 582,{
mes "Ha ha. Perfect.";
mes "Congratulations. Your armor is better than ever.";
close;
+}
+
+// Secret in the Woods :: buwaya
+//============================================================
+malaya,305,281,3 script Guard#buwaya 570,7,7,{
+ if (malaya_hi < 10) {
+ mes "- From the wary looks on the guard's face, it is obvious he is at alert at the sight of you. He won't intimidate you but seems he won't even deal with you either. -";
+ next;
+ mes "- Would there be anyone to talk to in the village? -";
+ close;
+ } else if (malaya_hi < 20) {
+ mes "[Guard]";
+ mes "There is a small area called ^3131FFBaryo Mahiwaga^000000 outside of Port Malaya.";
+ mes "The place is closer to mother nature than what we have here.";
+ next;
+ mes "[Guard]";
+ mes "On the other hand, the area is full of fierce monsters. Take care of yourself while you're traveling there.";
+ close;
+ }
+ if (malaya_buwaya == 0) {
+ mes "[Guard]";
+ mes "There are more people leaving the village secretly these days. Are you also heading for the woods to look for the mysterious treasure?";
+ next;
+ if (BaseLevel < 100) {
+ mes "[Guard]";
+ mes "I take that back. On second thought, I don't think a weakling like you would even dare to go there.";
+ next;
+ mes "[Guard]";
+ mes "You'd better hold tight to your mommy's hand if you want to go outside of Port Malaya or else the monsters will eat you alive. Ha ha.";
+ close;
+ }
+ mes "[Guard]";
+ mes "Is that why there are more outsiders here these days? Now don't be sneaky and a know-it-all. How would you know if I'd offered to take you around?";
+ next;
+ if (select("Treasure?:Ignore.") == 2) {
+ mes "[Guard]";
+ mes "Are you ignoring me? Bah.";
+ close;
+ }
+ mes "[Guard]";
+ mes "Oh, so you aren't here to look for treasure?";
+ next;
+ mes "[Guard]";
+ mes "I hear people are talking about a mysterious treasure hidden deep in the woods.";
+ set malaya_buwaya,1;
+ setquest 2271;
+ next;
+ }
+ if (malaya_buwaya == 1) {
+ mes "[Guard]";
+ mes "Do you see that group of people over there? They always gather and talk about it every day.";
+ mes "Try talking to them if you are interested, too.";
+ close;
+ }
+ mes "[Guard]";
+ mes "So the talk about treasure was just a rumor? I'm not asking because I want to be rich overnight. Ha ha.";
+ close;
+OnTouch:
+ if ((malaya_hi > 19) && (malaya_buwaya == 0)) {
+ emotion e_gasp;
+ emotion e_gasp,1;
+ }
+ end;
+}
+malaya,276,288,5 script Port Malaya Villager::buwaya_A 582,{
+ if (malaya_hi < 20) {
+ mes "- Look at you warily while whispering to each other. -";
+ close;
+ } else if (malaya_buwaya == 1) {
+ emotion e_gasp,0,"buwaya_A";
+ mes "[Port Malaya Villager]";
+ mes "No, I heard they got lost in the woods.";
+ mes "Who would hide such a treasure from a small village like ours?";
+ next;
+ emotion e_swt2,0,"buwaya_B";
+ mes "[Port Malaya Villager]";
+ mes "Could it been a monster? My grandma said there is a dragon with a huge head living deep inside the woods.";
+ next;
+ emotion e_no,0,"buwaya_C";
+ mes "[Port Malaya Villager]";
+ mes "No. Listen to me.";
+ next;
+ mes "[Port Malaya Villager]";
+ mes "You all know ^3131FFTotoy^000000? The kid living at the ^3131FFInn^000000.";
+ mes "Well, did you know Totoy came back from the woods recently?";
+ next;
+ emotion e_omg,0,"buwaya_A";
+ emotion e_omg,0,"buwaya_B";
+ mes "[Port Malaya Villager]";
+ mes "Really??? He came back alive?";
+ next;
+ emotion e_gasp,0,"buwaya_C";
+ mes "[Port Malaya Villager]";
+ mes "Yeah. But the strange part is that the troublemaker ^3131FFTotoy^000000 now quietly stays home and never comes out.";
+ next;
+ emotion e_what,0,"buwaya_B";
+ mes "[Port Malaya Villager]";
+ mes "Why?";
+ next;
+ emotion e_gasp,0,"buwaya_C";
+ mes "[Port Malaya Villager]";
+ mes "Don't you get it? Totoy must have found the treasure.";
+ next;
+ emotion e_omg,0,"buwaya_A";
+ emotion e_omg,0,"buwaya_B";
+ mes "[Port Malaya Villager]";
+ mes "What!!!! Then ^3131FFTotoy^000000 is rich now?";
+ next;
+ emotion e_no,0,"buwaya_C";
+ mes "[Port Malaya Villager]";
+ mes "I don't think so.";
+ mes "I saw ^3131FFTotoy^000000 come back home, but Totoy wasn't carrying anything.";
+ mes "But then, I must have missed it because I ran back home right away.";
+ next;
+ emotion e_what,0,"buwaya_B";
+ mes "[Port Malaya Villager]";
+ mes "Then what is ^3131FFTotoy^000000 doing at home?";
+ next;
+ emotion e_dots,0,"buwaya_C";
+ mes "[Port Malaya Villager]";
+ mes "I think Totoy is making a plan to bring the treasure back without us knowing it.";
+ mes "To have the whole treasure for himself, that greedy kid.";
+ next;
+ emotion e_what,0,"buwaya_A";
+ mes "[Port Malaya Villager]";
+ mes "Is that true?";
+ next;
+ emotion e_lv2,0,"buwaya_B";
+ mes "[Port Malaya Villager]";
+ mes "The treasure would be in better hands with me ~";
+ mes "I would clean it every day so it shined and would use it as a beautiful ornament. Ah~~~";
+ next;
+ emotion e_dots,0,"buwaya_C";
+ mes "[Port Malaya Villager]";
+ mes "Then how about we talk to ^3131FFTotoy^000000 to spill the beans on where the treasure is?";
+ next;
+ emotion e_what,0,"buwaya_A";
+ mes "[Port Malaya Villager]";
+ mes "Wow. That is an awesome idea. No wonder you're the leader!";
+ next;
+ emotion e_dots,0,"buwaya_A";
+ mes "[Port Malaya Villager]";
+ mes "But will ^3131FFTotoy^000000 give up the information easily?";
+ mes "Because Totoy was sneaky enough to think of getting away with taking the whole treasure.";
+ next;
+ emotion e_sob,0,"buwaya_B";
+ mes "[Port Malaya Villager]";
+ mes "Then we should convince ^3131FFTotoy^000000 to tell us where the treasure is instead of looking for it ourselves.";
+ next;
+ emotion e_sob,0,"buwaya_B";
+ mes "[Port Malaya Villager]";
+ mes "Ah~~~ it is so hard to get something pretty these days ~~~!!!!";
+ set malaya_buwaya,2;
+ erasequest 2271;
+ setquest 2272;
+ close;
+ } else if (malaya_buwaya == 2) {
+ mes "- Better pay a visit to this Totoy to get more information about the treasure. -";
+ close;
+ } else {
+ mes "- People are talking with serious faces. -";
+ close;
+ }
+}
+malaya,278,288,3 duplicate(buwaya_A) Port Malaya Villager::buwaya_B 583
+malaya,276,286,7 duplicate(buwaya_A) Port Malaya Villager::buwaya_C 582
+
+ma_in01,47,101,3 script Totoy#buwaya 577,7,7,{
+ if ((malaya_hi < 20) || (malaya_buwaya < 2)) {
+ mes "- See someone shaky with dopey eyes. -";
+ close;
+ }
+ if (malaya_buwaya == 2) {
+ mes "- See someone shaky with dopey eyes. -";
+ next;
+ if (select("Tap him on the shoulder.:Ignore him.") == 2)
+ close;
+ emotion e_omg;
+ mes "[Totoy]";
+ mes "Wah! No! Go away! Leave me alone!";
+ next;
+ mes "[" + strcharinfo(0) + "]";
+ mes "Hey, are you alright?";
+ next;
+ mes "[Totoy]";
+ mes "Huh... you're a person? Who are you?";
+ next;
+ mes "- He looks you straight in the face but doesn't seem to recognize you. -";
+ next;
+ mes "[Totoy]";
+ mes "Who's there?";
+ next;
+ mes "[" + strcharinfo(0) + "]";
+ mes "I am " + strcharinfo(0) + ". You are Totoy, right? People say you've found a treasure. Is it true?";
+ next;
+ mes "[Totoy]";
+ mes "What treasure?";
+ mes "I can't see. I'm blinded. Please help me. I'm tired and frustrated.";
+ next;
+ mes "[" + strcharinfo(0) + "]";
+ mes "What happened?";
+ next;
+ mes "[Totoy]";
+ mes "Can't talk long. I need to heal my eyes first.";
+ mes "There should be some ^3131FFGreen Potion^000000 left inside the drawer. Will you take it out for me?";
+ set malaya_buwaya,3;
+ close;
+ } else if (malaya_buwaya == 3) {
+ if (!countitem(506)) {
+ mes "[Totoy]";
+ mes "Can't talk long. I need to heal my eyes first.";
+ mes "There should be some ^3131FFGreen Potion^000000 left inside the drawer. Will you get it for me?";
+ close;
+ }
+ mes "[Totoy]";
+ mes "Hello? Hey, are you still there? What happened to the Green Potion? Jeez, this is driving me crazy.";
+ next;
+ if (select("Hand over the Green Potion.:Do not hand over the potion.") == 2) {
+ mes "[Totoy]";
+ mes "Did you really leave? Hey! Darn!";
+ } else {
+ mes "[Totoy]";
+ mes "Gulp, gulp...";
+ delitem 506,1; //Green_Potion
+ set malaya_buwaya,4;
+ }
+ close;
+ } else if (malaya_buwaya == 4) {
+ emotion e_gasp;
+ mes "[Totoy]";
+ mes "I can see!! My eyes work!!!";
+ mes "Yay! I feel better now!";
+ next;
+ emotion e_dots,1;
+ emotion e_no1;
+ mes "[Totoy]";
+ mes "Wow! You look better than you sounded. Ha ha.";
+ next;
+ mes "[Totoy]";
+ mes "But what did you say? Something about a treasure?";
+ mes "Did you say I found a treasure?";
+ mes "What is that about?";
+ next;
+ select("Tell him what the people are talking about.");
+ emotion e_heh;
+ mes "[Totoy]";
+ mes "WHAT?";
+ mes "Puhaha! Totoy is rich! Became rich overnight! Chief Ed!";
+ next;
+ emotion e_pif;
+ mes "[Totoy]";
+ mes "Sorry but I went to the woods to collect bugs. Wish I saw a treasure while I was at it. Hmph!";
+ next;
+ emotion e_dots;
+ mes "[Totoy]";
+ mes "I did go deep in the woods because I wasn't getting anywhere with collecting bugs. But who would have thought I'd get into this mess?";
+ next;
+ if (select("What Totoy saw:About bugs") == 2) {
+ mes "[Totoy]";
+ mes "I only wanted to show people my collection of cute bugs. Ha ha.";
+ next;
+ emotion e_heh;
+ mes "[Totoy]";
+ mes "Dropping ice or bugs down peoples clothes is just like a daily greeting, isn't it?";
+ next;
+ mes "[Totoy]";
+ mes "I love to see people run around the village like they are in a marathon. He he.";
+ next;
+ }
+ mes "[Totoy]";
+ mes "I thought people wouldn't run away because of an ordinary bug so I went in the woods with Ed.";
+ next;
+ mes "[Totoy]";
+ mes "Ah, Ed is my cute puppy. He's very nice and cuddly. My best friend in the whole wide world.";
+ next;
+ emotion e_dots;
+ mes "[Totoy]";
+ mes "Ed usually barks a lot but I should have looked around when he barked and pulled on my sleeves.";
+ next;
+ mes "[Totoy]";
+ mes "- Totoy bends over and whispers to you as if walls have ears. -";
+ next;
+ mes "[Totoy]";
+ mes "There was a monster with a mouth the size of a house right behind me.";
+ next;
+ select("A monster?!");
+ mes "[Totoy]";
+ mes "Shssh! Be quiet. I've never seen a mouth that big before. It was full of a river of saliva flowing out of spiky teeth. Just the thought of it makes me want to hide.";
+ next;
+ mes "[Totoy]";
+ mes "The scariest part is that the monster has two heads. You won't believe it till you see it.";
+ next;
+ emotion e_sob;
+ mes "[Totoy]";
+ mes "Ed bit the monsters leg with all his might to let me get away. But I don't know what happened to him afterwards. Sniff~";
+ next;
+ mes "[Totoy]";
+ mes "That's when I hurt my eye. To tell you the truth I don't even remember how I came back.";
+ next;
+ select("About the monster");
+ mes "[Totoy]";
+ mes "Don't know. It was the first time I saw a monster like that. Who could live to tell the story?";
+ next;
+ mes "[Totoy]";
+ mes "Wait, maybe the ^FF0000Master of Hunting^000000 might know about the monster. They say he fought with all sorts of monsters.";
+ next;
+ mes "[Totoy]";
+ mes "I need some time alone. I need to make a tombstone for Ed. If you want to meet the ^FF0000Master of Hunting^000000, you'll find him near the Weapon Store.";
+ next;
+ mes "[Totoy]";
+ mes "And tell everyone else to stop spreading rumors about treasure. They don't know what I went through. Sniff! I'm going to put Ancient Worms in everyones clothes!";
+ set malaya_buwaya,5;
+ erasequest 2272;
+ setquest 2273;
+ close;
+ } else if (malaya_buwaya == 5) {
+ mes "[Totoy]";
+ mes "I have to make a grave for Ed. My loyal friend, Ed...";
+ mes "If you want to meet the ^FF0000Master of Hunting^000000, you'll find him near the Weapon Store.";
+ close;
+ } else if (malaya_buwaya == 6) {
+ mes "[Totoy]";
+ mes "Ed!! Eeeeeddddddd!!!";
+ mes "Can't believe you gave your life to save me. Wail!!!";
+ next;
+ mes "- Totoy can't be lying when he's crying his heart out like this. -";
+ close;
+ } else if (malaya_buwaya == 7) {
+ mes "[Totoy]";
+ mes "Where I saw the monster?";
+ next;
+ mes "[Totoy]";
+ mes "Um... Hmm...";
+ mes "I was so busy running away...";
+ next;
+ mes "[Totoy]";
+ mes "It was really deep in the woods. Probably even past Baryo Mahiwaga.";
+ mes "I think I heard the sound of ^3131FFFlowing Water^000000. A large whooshing sound. This is all I remember.";
+ close;
+ } else if ((malaya_buwaya > 7) && (malaya_buwaya < 12)) {
+ mes "[Totoy]";
+ mes "Poor Ed. I miss Ed. Wail!!!!";
+ close;
+ } else if (malaya_buwaya == 12) {
+ emotion e_sob;
+ mes "[Totoy]";
+ mes "Poor Ed. I miss Ed. Wail!!!!";
+ next;
+ enablenpc "Dog#buwaya_totoi";
+ mes "[Dog]";
+ mes "Bark bark!!";
+ next;
+ emotion e_omg;
+ mes "[Totoy]";
+ mes "Ed!!";
+ mes "Ed!!! You're alive!!!";
+ mes "You've come back!!! I'm so happy!!!!";
+ next;
+ mes "[Totoy]";
+ mes "Did you bring Ed back?";
+ mes "Thank you so much!";
+ mes "You didn't see the monster, did you?";
+ next;
+ mes "[" + strcharinfo(0) + "]";
+ mes "The monster is called Buwaya. I told the Guard about the monster. You better not go near the place again.";
+ next;
+ mes "[Totoy]";
+ mes "Okay!";
+ mes "He he. Ed, the woods are too dangerous so we can't go there for bugs anymore.";
+ next;
+ mes "[Dog]";
+ mes "Whimper...";
+ next;
+ mes "[Totoy]";
+ mes "But I'm sure we can find a way to keep our reputation with other creepy stuff!";
+ next;
+ mes "[Dog]";
+ mes "Bark bark!!";
+ next;
+ /*
+ // Better translation needed.
+ mes "[Totoy]";
+ mes "Um... hey!";
+ next;
+ select("You are a " + ((Sex) ? "boy" : "girl") + ", aren't you?");
+ emotion e_omg,1;
+ mes "[Totoy]";
+ mes "Huh?";
+ if (!Sex) {
+ mes "Totoy is a girl, and you are a boy.";
+ mes "You're not a boy?";
+ } else {
+ mes "Totoy is a girl, and you are a girl.";
+ mes "You're not a girl?";
+ }
+ next;
+ mes "[Totoy]";
+ mes "Is it because my name, Totoy? But that's the name my parents gave me thinking I would be a boy when I was born. Ha ha!";
+ next;
+ */
+ mes "[Totoy]";
+ mes "Anyway, thanks for bringing my best friend back.";
+ mes "I don't have much but would like to thank you. Wait, let me see what's inside my drawer. He he-";
+ set malaya_buwaya,13;
+ erasequest 2278;
+ setquest 2279;
+ close;
+ } else if (malaya_buwaya == 13) {
+// if (IsPremiumPcCafe == 10)
+// .@amount = 10;
+// else
+ .@amount = 5;
+ if (checkweight(1201,1) == 0 || MaxWeight - Weight < 2000) {
+ mes "- Wait!! -";
+ mes "- You have too many items on you. -";
+ mes "- Cannot receive the item. -";
+ mes "- Clean up your items -";
+ mes "- And please try again. -";
+ close;
+ }
+ mes "- Totoy goes through the drawer, turning it upside down. Making a mess of the room. -";
+ next;
+ mes "[Totoy]";
+ mes "Found it!";
+ next;
+ mes "[Totoy]";
+ mes "Here. My mom gave it to me but I don't know how to use it... He he.";
+ mes "I hope you can use it.";
+ next;
+ mes "[Totoy]";
+ mes "Visit me when you get bored!";
+ mes "Just don't ask about the treasure again~!";
+ next;
+ mes "[Dog]";
+ mes "Woof woof woof!!!!";
+ set malaya_buwaya,14;
+ getitem 6497,5; //Lesser_Agimat
+ disablenpc "Dog#buwaya_totoi";
+ erasequest 2279;
+ setquest 2280;
+ close;
+ } else {
+ mes "[Totoy]";
+ mes "Ed went out to play so I'm alone.";
+ mes "Would there be something awesome to surprise people with?";
+ close;
+ }
+OnTouch:
+ emotion e_omg;
+ end;
+}
+
+ma_in01,43,101,7 script Dog#buwaya_totoi 81,{
+ end;
+OnInit:
+ disablenpc "Dog#buwaya_totoi";
+ end;
+}
+
+ma_in01,44,105,3 script Drawer#buwaya 844,{
+ if (malaya_buwaya == 3) {
+ mes "- You look for the Green Potion in Totoys drawer. -";
+ next;
+ mes "- Rummaging, fumbling. -";
+ next;
+ mes "- Rummaging, fumbling. -";
+ mes "- Rummaging, fumbling. -";
+ next;
+ mes "- Clunk, clank, crunch. -";
+ next;
+ mes "[" + strcharinfo(0) + "]";
+ mes "What? I only see an empty potion bottle.";
+ mes "Does this mean I have to get the potion myself? That Totoy is really a troublemaker.";
+ close;
+ }
+ end;
+}
+
+malaya,290,152,5 script Master of Hunting#buwaya 578,{
+ if ((malaya_hi < 20) || (malaya_buwaya < 5)) {
+ mes "[Master of Hunting]";
+ mes "Oh! Ho! Ho!";
+ mes "I am the Master of Hunting! I'm not afraid of anything with just one exception! I'm afraid of outsiders...";
+ close;
+ }
+ if (malaya_buwaya == 5) {
+ mes "[Master of Hunting]";
+ mes "Yo! Ho! Ho!";
+ mes "I went all the way to Rune-Midgarts Kingdom to defeat the Angry Minorous.";
+ next;
+ mes "[Master of Hunting]";
+ mes "And I succeeded in killing Muka, the one with the voice of a demon that disturbs the peace of the world.";
+ mes "Wow! He was really tough. I'm starting to sweat just thinking of him.";
+ next;
+ mes "[Master of Hunting]";
+ mes "Yo! You look like you have a few battle stories yourself. Have you ever seen a Minorous? Ha ha ha!";
+ next;
+ mes "[Master of Hunting]";
+ mes "So you came here to learn all about my excellent hunting skills? Or to ask me to publish an essay on Master of Hunting? Ho!";
+ next;
+ if (select("About Totoys monster:Interrupt.") == 2) {
+ mes "[Master of Hunting]";
+ mes "Oh? Hey! Where are you going?!";
+ close;
+ }
+ mes "[Master of Hunting]";
+ mes "You say someone saw the monster?";
+ next;
+ mes "[Master of Hunting]";
+ mes "There are many monsters in and out of Port Malaya. What is so special about this one?";
+ next;
+ select("About a monster with two heads");
+ mes "[Master of Hunting]";
+ mes "Ho! A monster with two heads, you say? Are you kidding? Where on earth is there a monster with two heads?!";
+ next;
+ mes "[Master of Hunting]";
+ mes "The kid must have been scared by a Condor or something.";
+ mes "There's a saying that someone surprised to see a Permeter, will also be surprised to see a peach tree. Ha ha!";
+ next;
+ mes "[Master of Hunting]";
+ mes "You shouldn't lie to an adult. I understand you want the Master of Huntings attention. Ha ha!";
+ next;
+ if (select("I will prove it.:Suspicious of Totoy.") == 2) {
+ mes "[Master of Hunting]";
+ mes "Kids tell stories for their own reasons. I'm sure Totoy is the same.";
+ set malaya_buwaya,6;
+ close;
+ }
+ mes "[Master of Hunting]";
+ mes "Oh! Really? Bring proof if you really think the kid is telling the truth.";
+ next;
+ mes "[Master of Hunting]";
+ mes "Every living thing leaves some kind of trace behind. You also leave behind traces and scents wherever you go. Especially in private places, I mean. He he!";
+ next;
+ mes "[Master of Hunting]";
+ mes "Try collecting 10 Animal Samples from where the kid saw the monster. I will look for traces of that monster from the samples.";
+ next;
+ mes "[Master of Hunting]";
+ mes (Sex) ? "It won't be pleasant but any brave man could easily do it, don't you agree?" : "I don't want the hands of a pretty girl to smell bad but I could care less with someone like you. Ha ha!";
+ set malaya_buwaya,7;
+ erasequest 2273;
+ setquest 2274;
+ close;
+ } else if (malaya_buwaya == 6) {
+ mes "[Master of Hunting]";
+ mes "Oh, you're back!";
+ next;
+ if (select("Let's see if we have a monster in it!:I don't think there is a monster.") == 2) {
+ mes "[Master of Hunting]";
+ mes "It was a kid's joke. Ha ha.";
+ close;
+ }
+ mes "[Master of Hunting]";
+ mes "Oh! Really? Bring proof if you really think the kid is telling the truth.";
+ next;
+ mes "[Master of Hunting]";
+ mes "Every living thing leaves some kind of trace behind. You also leave behind traces and scents wherever you go. Especially in private places, I mean. He he!";
+ next;
+ mes "[Master of Hunting]";
+ mes "Try collecting 10 Animal Samples from where the kid saw the monster. I will look for traces of that monster from the samples.";
+ next;
+ mes "[Master of Hunting]";
+ mes (Sex) ? "It won't be pleasant but any brave man could easily do it, don't you agree?" : "I don't want the hands of a pretty girl to smell bad but I could care less with someone like you. Ha ha!";
+ set malaya_buwaya,7;
+ erasequest 2273;
+ setquest 2274;
+ close;
+ } else if (malaya_buwaya == 7) {
+ if (countitem(6519) < 10) {
+ mes "[Master of Hunting]";
+ mes "Bring me back samples if you want to prove there is a monster with two heads.";
+ close;
+ }
+ mes "[Master of Hunting]";
+ mes "Argh! That's so foul.";
+ mes "You've really brought back the samples.";
+ mes "Ho! Leave it there and come back after washing your hands. Even god won't smile down at you with that stench.";
+ set malaya_buwaya,8;
+ erasequest 2274;
+ setquest 2275;
+ close;
+ } else if (malaya_buwaya == 8) {
+ mes "[Master of Hunting]";
+ mes "Ho! Shall I?";
+ next;
+ mes "- Rummaging, fumbling. -";
+ next;
+ mes "- Rummaging, fumbling. -";
+ mes "- Wriggling, wiggling. -";
+ next;
+ mes "- Rummaging, fumbling. -";
+ mes "- Wriggling, wiggling. -";
+ mes "- Sway, swag. -";
+ next;
+ mes "[Master of Hunting]";
+ mes "Ho! This is!!";
+ next;
+ mes "[Master of Hunting]";
+ mes "Wow! Ho! Ho! Ho! Awesome!!!!!!";
+ next;
+ mes "[Master of Hunting]";
+ mes "You! Come here and feel this!";
+ set malaya_buwaya,9;
+ enablenpc "#buwaya_soil";
+ close;
+ } else if (malaya_buwaya == 9) {
+ mes "[Master of Hunting]";
+ mes "Don't just stand there. Touch the sample!";
+ enablenpc "#buwaya_soil";
+ close;
+ } else if (malaya_buwaya == 10) {
+ mes "[Master of Hunting]";
+ mes "Hurry and tell the Guard Leader that Buwaya is active again. Hurry! You'll find the Guard Leader at the north of the village.";
+ close;
+ } else {
+ mes "[Master of Hunting]";
+ mes "Snooze...";
+ close;
+ }
+}
+
+malaya,291,152,3 script #buwaya_soil 557,{
+ if (malaya_buwaya == 9) {
+ mes "- Rummaging, fumbling. -";
+ next;
+ mes "- Rummaging, fumbling. -";
+ mes "- Wriggling, wiggling. -";
+ next;
+ mes "- Rummaging, fumbling. -";
+ mes "- Wriggling, wiggling. -";
+ mes "- Sway, swag. -";
+ next;
+ if (rand(1,10) <= 5) {
+ mes "[" + strcharinfo(0) + "]";
+ mes "I don't see anything.";
+ next;
+ mes "[Master of Hunting]";
+ mes "It can't be! Look closer!";
+ } else {
+ mes "- Felt something pointy with the end of your fingers. -";
+ next;
+ mes "[" + strcharinfo(0) + "]";
+ mes "Ouch!";
+ mes "What is this?";
+ next;
+ mes "[Master of Hunting]";
+ mes "Ho! This is huge! And so dense that it can easily scratch steel!";
+ next;
+ mes "[Master of Hunting]";
+ mes "This is ^3131FFBuwaya^000000's tooth!";
+ mes "How could this be!";
+ next;
+ select("Buwaya?");
+ mes "[Master of Hunting]";
+ mes "Ah! Yes! Stop holding it up. It stinks. Go wash your hands.";
+ next;
+ mes "[Master of Hunting]";
+ mes "Hmm. The monster the kid saw must be Buwaya. No doubt about it.";
+ next;
+ mes "[Master of Hunting]";
+ mes "I've heard that the wife of the neighbor of my grandfather's uncle on my mom's side was also killed by Buwaya.";
+ next;
+ mes "[Master of Hunting]";
+ mes "They say no living thing is left after Buwaya passes by.";
+ mes "Totoy is one lucky kid. Wow!";
+ next;
+ mes "[Master of Hunting]";
+ mes "Buwaya was inactive for a long time. Wonder if it was hibernating? Hmm.";
+ next;
+ mes "[Master of Hunting]";
+ mes "Now that I know that a monster like that is out there, I should be cautious, too.";
+ mes "Must tell the villagers not to go too deep into the woods.";
+ next;
+ mes "[Master of Hunting]";
+ mes "Please go and tell the Guard Leader that Buwaya is active again.";
+ mes "I will contact other hunters in the meantime and think of a plan to kill Buwaya.";
+ set malaya_buwaya,10;
+ disablenpc "#buwaya_soil";
+ erasequest 2275;
+ setquest 2276;
+ }
+ close;
+ }
+ end;
+OnInit:
+ disablenpc "#buwaya_soil";
+ end;
+}
+
+- script Unknown Trace#buwaya -1,{
+ if (checkweight(1201,1) == 0 || MaxWeight - Weight < 2000) {
+ mes "- Wait!! -";
+ mes "- You have too many items on you. -";
+ mes "- Cannot receive the item. -";
+ mes "- Clean up your items -";
+ mes "- And please try again. -";
+ close;
+ }
+ if (malaya_buwaya == 7) {
+ if (countitem(6519) >= 10) {
+ mes "- You don't have to collect any more samples. -";
+ close;
+ }
+ mes "- You see something entangled with soil and grass. -";
+ next;
+ if (rand(1,10) <= 2) {
+ mes "- You are nauseous by the foul smell coming from the samples you are collecting. -";
+ sc_start SC_POISON,5000,0;
+ close;
+ }
+ mes "- You slowing and cautiously collect the squashy and slightly warm substance. -";
+ next;
+ mes "[" + strcharinfo(0) + "]";
+ mes "It's warm as a mother's bosom.";
+ getitem 6519,1; //Collected_Sample
+ disablenpc strnpcinfo(0);
+ initnpctimer;
+ close;
+ }
+ end;
+OnTimer20000:
+ enablenpc strnpcinfo(0);
+ stopnpctimer;
+ end;
+}
+ma_fild02,155,235,3 duplicate(Unknown Trace#buwaya) Unknown Trace#buwaya_1 557
+ma_fild02,143,142,3 duplicate(Unknown Trace#buwaya) Unknown Trace#buwaya_2 557
+ma_fild02,266,155,3 duplicate(Unknown Trace#buwaya) Unknown Trace#buwaya_3 557
+ma_fild02,221,91,3 duplicate(Unknown Trace#buwaya) Unknown Trace#buwaya_4 557
+ma_fild02,205,85,3 duplicate(Unknown Trace#buwaya) Unknown Trace#buwaya_5 557
+ma_fild02,300,98,3 duplicate(Unknown Trace#buwaya) Unknown Trace#buwaya_6 557
+ma_fild02,100,275,3 duplicate(Unknown Trace#buwaya) Unknown Trace#buwaya_7 557
+
+malaya,290,340,3 script Guard Leader#buwaya 571,{
+ if (checkweight(1201,1) == 0 || MaxWeight - Weight < 2000) {
+ mes "- Wait!! -";
+ mes "- You have too many items on you. -";
+ mes "- Cannot receive the item. -";
+ mes "- Clean up your items -";
+ mes "- And please try again. -";
+ close;
+ }
+ if (malaya_hi < 20) {
+ mes "- Look at you warily while whispering to each other. -";
+ close;
+ }
+ if (malaya_buwaya <= 10) {
+ mes "[Guard Leader]";
+ mes "We are busy as hell because of Bangungots servants attacking the hospital.";
+ next;
+ mes "[Guard Leader]";
+ mes "We are doing our best in securing the safety of our village so please enjoy your stay in Port Malaya.";
+ }
+ if (malaya_buwaya == 10) {
+ next;
+ if (select("Tell him about Buwaya.:Done with conversation.") == 2) {
+ close;
+ }
+ mes "[Guard Leader]";
+ mes "Buwaya? The merciless creature is back?";
+ next;
+ mes "[Guard Leader]";
+ mes "That's bad news. We are already short-handed by assigning everyone to fight off Bangungot.";
+ next;
+ mes "[Guard Leader]";
+ mes "And villagers need to go to the woods to collect fruits and vegetables.";
+ next;
+ mes "[Guard Leader]";
+ mes "Hmm... will you be able to help Port Malaya?";
+ next;
+ if (select("Leave it to me!:I'm pretty busy myself.") == 2) {
+ mes "[Guard Leader]";
+ mes "Really? That's no good. All the lives of the villagers will be at stake if we don't do something. How can a youth like you be so heartless. Are all outsiders like you? Hmph! Can't trust young people these days. Hmph.";
+ close;
+ }
+ mes "[Guard Leader]";
+ mes "I knew I could count on you.";
+ next;
+ mes "[Guard Leader]";
+ mes "Good. I will trust you.";
+ mes "I need to know where Buwaya will likely appear in order to secure villagers living area.";
+ mes "Guess Buwayas nest will be the best bet.";
+ next;
+ mes "[Guard Leader]";
+ mes "^3131FFShoot a smoke bomb^000000 once you reach the area.";
+ mes "Then we will run to where the smoke bomb was shot.";
+ next;
+ mes "[Guard Leader]";
+ mes "Then take care and good luck.";
+ set malaya_buwaya,11;
+ erasequest 2276;
+ setquest 2277;
+ } else if (malaya_buwaya == 11) {
+ mes "[Guard Leader]";
+ mes "^3131FFShoot a smoke bomb^000000 once you reach the area.";
+ mes "Then we will run to where the smoke bomb was shot.";
+ } else if ((malaya_buwaya == 12) || (malaya_buwaya == 13)) {
+ mes "[" + strcharinfo(0) + "]";
+ mes "Let's first bring Ed to Totoy.";
+ } else if (malaya_buwaya == 14) {
+ mes "[Guard Leader]";
+ mes "The Guard Leader gave you the location of Buwaya's cave.";
+ mes "This can't be happening.";
+ next;
+ mes "[Guard Leader]";
+ mes "I'm way out of men to assign to the Buwaya situation but well have to do something with what we got.";
+ next;
+ mes "[Guard Leader]";
+ mes "Here, this is a symbol of our gratitude.";
+ mes "If you would like to help with Buwaya again, please look for me.";
+ mes "Hope you have a great journey.";
+ set malaya_buwaya,15;
+ getexp 1000000, 600000;
+ completequest 2280;
+ } else {
+ set .@hunting, checkquest(2281,HUNTING);
+ if (.@hunting == -1) {
+ mes "[Guard Leader]";
+ mes "Hear Buwaya appeared from the depth of the Forest.";
+ mes "As everyone knows, all our manpower is dispatched to handle Bangungots servants attacking the hospital recently.";
+ next;
+ mes "[Guard Leader]";
+ mes "That is why we have no choice but to ask an outsider to help eliminate Buwaya.";
+ mes "They say Buwaya is a very strong and ugly monster with two heads.";
+ mes "Will you help us defeat Buwaya?";
+ next;
+ if (select("Of course.:Nope.") == 2) {
+ mes "[Guard Leader]";
+ mes "Buwaya is known to be a very dangerous monster.";
+ mes "There is no shame in rejecting this request.";
+ close;
+ }
+ if (BaseLevel < 130) {
+ mes "[Guard Leader]";
+ mes "This mission will be a dangerous one.";
+ mes "If you want to help get rid of Buwaya, you must be prepared.";
+ mes "Come back once you reach LV 130.";
+ close;
+ }
+ mes "[Guard Leader]";
+ mes "According to the legend, Buwaya kidnaps people and puts them in the sack on its back and then eats them later.";
+ next;
+ mes "[Guard Leader]";
+ mes "Keep this in mind and be cautious at all times.";
+ mes "I recommend asking trustful colleagues for help.";
+ setquest 2281;
+ } else if (.@hunting == 0 || .@hunting == 1) {
+ mes "[Guard Leader]";
+ mes "How is it going with the Buwaya situation?";
+ next;
+ if (select("I give up.:Still fighting.") == 2) {
+ mes "[Guard Leader]";
+ mes "Keep this in mind and be cautious at all times.";
+ mes "I recommend asking trustful colleagues for help.";
+ close;
+ }
+ mes "[Guard Leader]";
+ mes "Buwaya is known to be a very dangerous monster.";
+ mes "There is no shame in rejecting this request.";
+ erasequest 2281;
+ } else if (.@hunting == 2) {
+// if (IsPremiumPcCafe == 10) {
+// .@amount = 10;
+// else
+ .@amount = 5;
+ mes "[Guard Leader]";
+ mes "Can't believe you really got rid of Buwaya!";
+ mes "You aren't just any ordinary youth, aren't you? People of Port Malaya can now sleep at night.";
+ next;
+ mes "[Guard Leader]";
+ mes "Good work.";
+ erasequest 2281;
+ getitem 6497, .@amount; //Lesser_Agimat
+ getexp 0,600000;
+ } else {
+ mes "[Guard Leader]";
+ mes "I will not stand down until all of Port Malaya, including Baryo Mahiwaga, is safe from Buwaya. Promise to take care of yourself.";
+ erasequest 2281;
+ }
+ }
+ close;
+}
+
+ma_fild02,307,245,0 script #buwaya_todog1 139,3,3,{
+ end;
+OnTouch:
+ if (malaya_buwaya == 11) {
+ enablenpc "Dog#buwaya";
+ //mes "[Here something]";
+ mes "Bark bark!!";
+ close;
+ }
+ end;
+}
+ma_fild02,320,241,0 duplicate(#buwaya_todog1) #buwaya_todog2 139,3,3
+ma_fild02,317,250,0 duplicate(#buwaya_todog1) #buwaya_todog3 139,7,7
+
+ma_fild02,312,259,3 script Dog#buwaya 81,{
+ if (malaya_buwaya == 11) {
+ mes "[Dog]";
+ mes "Bark bark!!";
+ next;
+ mes "[" + strcharinfo(0) + "]";
+ mes "Why is a dog here?";
+ next;
+ if (select("Look closely at the dog.:Ignore it.") == 2) {
+ mes "[" + strcharinfo(0) + "]";
+ mes "Looks like a lost dog.";
+ close;
+ }
+ mes "- Looked real hard at the dirty dog and noticed an old collar on its neck. -";
+ next;
+ mes "- The collar says, 'Forever with Totoy'. -";
+ next;
+ mes "[" + strcharinfo(0) + "]";
+ mes "So you are Ed?";
+ next;
+ mes "[Dog]";
+ mes "Bark bark!";
+ next;
+ mes "[" + strcharinfo(0) + "]";
+ mes "You didn't get killed by Buwaya. You lucky little dog. Let's go back to your owner.";
+ next;
+ emotion e_ho;
+ mes "[Dog]";
+ mes "Bark bark!!";
+ next;
+ mes "[" + strcharinfo(0) + "]";
+ mes "Ah, before we go, do you happen to know where Buwaya's nest is?";
+ next;
+ mes "[Dog]";
+ mes "Woof!";
+ next;
+ mes "- Ed is one smart dog and understood what you asked him. Ed started to bark towards the north. -";
+ next;
+ mes "[" + strcharinfo(0) + "]";
+ mes "Buwaya is over there!";
+ mes "Then I should shoot the smoke bomb here.";
+ next;
+ mes "- You take the smoke bomb out of your inventory and shoot towards the sky. -";
+ next;
+ mes "^FF0000- Shoook-^000000";
+ enablenpc "Guard#buwayacave";
+ specialeffect2 EF_MVP;
+ next;
+ mes "[Guard]";
+ mes "Job well done!";
+ mes "So Buwaya lives in remote place like this. I will make sure this information goes to the Guard Leader!";
+ disablenpc "Guard#buwayacave";
+ next;
+ mes "[" + strcharinfo(0) + "]";
+ mes "Should I return Ed to Totoy first and then go see the Guard Leader?";
+ next;
+ mes "[Dog]";
+ mes "Bark bark!";
+ set malaya_buwaya,12;
+ disablenpc "Dog#buwaya";
+ erasequest 2277;
+ setquest 2278;
+ close;
+ } else if (malaya_buwaya == 12) {
+ mes "[" + strcharinfo(0) + "]";
+ mes "Lets first bring Ed to Totoy and then go back to the Guard Leader.";
+ close;
+ }
+ end;
+OnInit:
+ disablenpc "Dog#buwaya";
+ end;
+}
+
+ma_fild02,308,262,3 script Guard#buwayacave 570,{
+ end;
+OnInit:
+ disablenpc "Guard#buwayacave";
+ end;
} \ No newline at end of file
diff --git a/npc/re/quests/quests_mora.txt b/npc/re/quests/quests_mora.txt
index f1d8e5784..3e58961d2 100644
--- a/npc/re/quests/quests_mora.txt
+++ b/npc/re/quests/quests_mora.txt
@@ -7,6 +7,7 @@
//===== Compatible With: =====================================
//= rAthena SVN
//===== Description: =========================================
+//= [Official Conversion]
//= Quest NPCs related to Mora:
//== Theore's Request, Chesire's New Day,
//== Helping Lope and Euridi, Mora Daily Quests,
diff --git a/npc/re/quests/quests_morocc.txt b/npc/re/quests/quests_morocc.txt
new file mode 100644
index 000000000..95d2ef5e4
--- /dev/null
+++ b/npc/re/quests/quests_morocc.txt
@@ -0,0 +1,213 @@
+//===== rAthena Script =======================================
+//= Morroc Quest NPCs
+//===== By: ==================================================
+//= Euphy
+//===== Current Version: =====================================
+//= 1.0a
+//===== Compatible With: =====================================
+//= rAthena SVN
+//===== Description: =========================================
+//= [Official Conversion]
+//= Quest NPCs related to Morroc.
+//===== Additional Comments: =================================
+//= 1.0 First Version.
+//= 1.0a Gathered remaining dialogues. [Euphy]
+//============================================================
+
+// Pyramids Nightmare Mode
+//============================================================
+moc_prydb1,103,54,3 script Suspicious Cat#night 547,{
+ mes "[Suspicious Cat]";
+ mes "I can't believe a mummy could do this to me. Oh man, it hurts. Nobody should find out about this....";
+ next;
+ if(select("Mummy? What happened?:Pretend not to know anything.") == 2)
+ close;
+ mes "[Suspicious Cat]";
+ mes "You caught me! Darn it...I didn't expect my reputation as a tomb raider would get damaged like this...";
+ next;
+ mes "[Suspicious Cat]";
+ mes "But come on, they're so strange! They're mummies! Just mummies, you know? They shouldn't be that strong!";
+ next;
+ if(select("Strong mummies? Where are they?:End the conversation.") == 2) {
+ mes "[Suspicious Cat]";
+ mes "Whaaat~ you don't want to hear my story? Fine! You'd better not mention my name anywhere else!";
+ close;
+ }
+ mes "[Suspicious Cat]";
+ mes "Haha, it's a secret.";
+ mes "I found out while I was stealing... No, I mean, just walking through the pyramid.";
+ next;
+ mes "[Suspicious Cat]";
+ mes "When I saw a mummy coming toward me, I was like 'whatever' and didn't care. But then he knocked me down with a slap in the face! How could he do that to a cute cat like me! You bandaged freak... you just wait and see!";
+ next;
+ if(select("I would like to go, too.:End the conversation.") == 2)
+ close;
+ mes "[Suspicious Cat]";
+ mes "No way! I spent so much time finding that path!!";
+ next;
+ mes "[Suspicious Cat]";
+ mes "Hmm... but if you insist, just give me 5000 Zeny. I'll lead you.";
+ mes "What~? Don't give me that look! Do you have any idea how hard it is for a cat to survive in Midgard!";
+ next;
+ mes "[Suspicious Cat]";
+ mes "^FF0000But come to think of it, a weakling like you won't survive there. Maybe for a second if you're lucky?^000000";
+ mes "Well, it's none of my business. But I warned you anyway!";
+ next;
+ switch(select("Pay 5,000 zeny and set out.:Forget it.")) {
+ case 1:
+ if (Zeny < 5000) {
+ mes "[Suspicious Cat]";
+ mes "Where do you think you're going! You're so broke!";
+ close;
+ }
+ set Zeny, Zeny-5000;
+ mes "[Suspicious Cat]";
+ mes "Bah, what's up with this old money... you don't have anything sparkly or shiny?!";
+ mes "Ahh, just follow me!";
+ close2;
+ warp "moc_prydn1",93,96;
+ end;
+ case 2:
+ mes "[Suspicious Cat]";
+ mes "Gosh, you don't even have 5000 Zeny, do you?";
+ close;
+ }
+}
+
+moc_prydn1,94,98,3 script Suspicious Cat#night2 547,{
+ mes "[Suspicious Cat]";
+ mes "That stupid mummy slapped me again while you were looking away! Sniff sniff... Let's go back, meow!";
+ next;
+ switch(select("Go back to Thief Guild:Eliminate Verit:Eliminate Ancient Mummy:It's nothing")) {
+ case 1:
+ mes "[Suspicious Cat]";
+ mes "Right right... let's go back.";
+ close2;
+ warp "moc_prydb1",100,57;
+ end;
+ case 2:
+ set .@playtime, checkquest(2290,PLAYTIME);
+ if (.@playtime == 0 || .@playtime == 1) {
+ mes "[Suspicious Cat]";
+ mes "Look at that Verit, he's afraid of us! Kyaahaha! We're safe, at least for a while!";
+ close;
+ } else if (.@playtime == 2)
+ erasequest 2290;
+ set .@hunting, checkquest(2289,HUNTING);
+ if (.@hunting == -1) {
+ mes "[Suspicious Cat]";
+ mes "Did you know that cats and dogs don't get along?";
+ next;
+ mes "[Suspicious Cat]";
+ mes "Look at that ugly and hideous Verit. He's scowling, wagging his tail and trying to come closer.";
+ mes "Oh, you don't have a tail, right? He thinks I'm a thorn in his side, and he's trying to start a fight now!";
+ next;
+ mes "[Suspicious Cat]";
+ mes "Look at him, so greedy and drooly... I don't like the way he breathes, either. I can't stand how he's making those gobbling sounds...";
+ mes "It's so obvious that he's waiting to attack me from behind.";
+ next;
+ mes "[Suspicious Cat]";
+ mes "Gosh, I could have scratched his face so hard if it wasn't for my stomachache!";
+ mes "Hey, it's not because I'm afraid of Majoruros!";
+ next;
+ mes "[Suspicious Cat]";
+ mes "If you want to go home, you'd better beat up that ugly doggie! Otherwise, he'll bite you!";
+ next;
+ switch(select("Help him:Stay away")) {
+ case 1:
+ mes "[Suspicious Cat]";
+ mes "Good, the target number is 20! Good luck!";
+ setquest 2289;
+ close;
+ case 2:
+ mes "[Suspicious Cat]";
+ mes "Pah! You don't care about me? Fine, you traitor!";
+ close;
+ }
+ } else if (.@hunting == 0 || .@hunting == 1) {
+ mes "[Suspicious Cat]";
+ mes "Is Verit's training going well?";
+ next;
+ switch(select("Sure.:I want to stop.")) {
+ case 1:
+ mes "[Suspicious Cat]";
+ mes "Good. Keep up the good work!";
+ close;
+ case 2:
+ mes "[Suspicious Cat]";
+ mes "What? You're so irresponsible!";
+ erasequest 2289;
+ close;
+ }
+ } else if (.@hunting == 2) {
+ mes "[Suspicious Cat]";
+ mes "Hey, you're actually useful! Good job!";
+ mes "That Verit wouldn't dare come around here for a while, right? Muhahah!";
+ changequest 2289,2290;
+ getexp 300000,100000;
+ close;
+ }
+ case 3:
+ set .@playtime, checkquest(2291,PLAYTIME);
+ if (.@playtime == 0 || .@playtime == 1) {
+ mes "[Suspicious Cat]";
+ mes "Good, I'll make a good use of the time you gained! But I gotta do something about this stomachache first.....";
+ close;
+ } else if (.@playtime == 2)
+ erasequest 2291;
+ set .@hunting, checkquest(2292,HUNTING);
+ if (.@hunting == -1) {
+ mes "[Suspicious Cat]";
+ mes "Precious treasures are supposed to be hidden in the deep secret places here!";
+ mes "I'm sure the mummy's precious treasures are hidden in the second basement level.";
+ next;
+ mes "[Suspicious Cat]";
+ mes "But Ancient Mummies caught me off guard and hit my head before I knew it!";
+ next;
+ mes "[Suspicious Cat]";
+ mes "I'm sure they're trying to stop me from finding the treasures by decreasing my superior brain cells!!";
+ next;
+ mes "[Suspicious Cat]";
+ mes "They can't stop me! Let's go get rid of Ancient Mummies!!";
+ next;
+ mes "[Suspicious Cat]";
+ mes "Don't ask why! I'm sure you wouldn't want those beautiful treasures to be hidden in the dark either!";
+ next;
+ switch(select("Help him:Stay away")) {
+ case 1:
+ mes "[Suspicious Cat]";
+ mes "Alright, the target number is 20! Good luck!";
+ setquest 2292;
+ close;
+ case 2:
+ mes "[Suspicious Cat]";
+ mes "Bah, you're so cold-hearted.";
+ close;
+ }
+ } else if (.@hunting == 0 || .@hunting == 1) {
+ mes "[Suspicious Cat]";
+ mes "Is fighting Ancient Mummies going well?";
+ next;
+ switch(select("Sure.:I want to stop.")) {
+ case 1:
+ mes "[Suspicious Cat]";
+ mes "Good. Keep up the good work!";
+ close;
+ case 2:
+ mes "[Suspicious Cat]";
+ mes "What? You're so irresponsible!";
+ erasequest 2292;
+ close;
+ }
+ } else if (.@hunting == 2) {
+ mes "[Suspicious Cat]";
+ mes "Hey, you're actually useful! Good job!";
+ mes "That Ancient Mummy wouldn't dare come around here for a while, right? Muhahah!";
+ changequest 2292,2291;
+ getexp 600000,200000;
+ close;
+ }
+ case 4:
+ close;
+ }
+}
diff --git a/npc/re/scripts.conf b/npc/re/scripts.conf
index c1e40dae6..d7d449c1a 100644
--- a/npc/re/scripts.conf
+++ b/npc/re/scripts.conf
@@ -10,6 +10,7 @@ npc: npc/re/cities/alberta.txt
npc: npc/re/cities/brasilis.txt
npc: npc/re/cities/dewata.txt
npc: npc/re/cities/dicastes.txt
+npc: npc/re/cities/eclage.txt
npc: npc/re/cities/izlude.txt
npc: npc/re/cities/jawaii.txt
npc: npc/re/cities/malangdo.txt
@@ -25,6 +26,7 @@ npc: npc/re/guides/guides_brasilis.txt
npc: npc/re/guides/guides_comodo.txt
npc: npc/re/guides/guides_dewata.txt
npc: npc/re/guides/guides_dicastes.txt
+npc: npc/re/guides/guides_eclage.txt
npc: npc/re/guides/guides_einbroch.txt
npc: npc/re/guides/guides_geffen.txt
npc: npc/re/guides/guides_gonryun.txt
@@ -44,18 +46,26 @@ npc: npc/re/guides/guides_rachel.txt
npc: npc/re/guides/guides_umbala.txt
npc: npc/re/guides/guides_veins.txt
+// ------------------------ Instances ---------------------------
+npc: npc/re/instances/HazyForest.txt
+npc: npc/re/instances/MalangdoCulvert.txt
+npc: npc/re/instances/OctopusCave.txt
+
// ---------------- Kafras & Cool Event Corp. -------------------
npc: npc/re/kafras/kafras.txt
// -------------------------- Merchant --------------------------
npc: npc/re/merchants/3rd_trader.txt
+npc: npc/re/merchants/blessed_refiner.txt
npc: npc/re/merchants/diamond.txt
npc: npc/re/merchants/flute.txt
+npc: npc/re/merchants/hd_refiner.txt
npc: npc/re/merchants/inn.txt
npc: npc/re/merchants/quivers.txt
npc: npc/re/merchants/refine.txt
npc: npc/re/merchants/renters.txt
npc: npc/re/merchants/shops.txt
+npc: npc/re/ticket_refiner.txt
npc: npc/re/merchants/enchan_mal.txt
npc: npc/re/merchants/enchan_mora.txt
npc: npc/re/merchants/coin_exchange.txt
@@ -75,6 +85,7 @@ npc: npc/re/quests/eden/91-99.txt
npc: npc/re/quests/eden/eden_common.txt
npc: npc/re/quests/eden/eden_quests.txt
npc: npc/re/quests/eden/eden_service.txt
+npc: npc/re/quests/eden/eden_tutorial.txt
// --------------------------------------------------------------
//npc: npc/re/quests/cupet.txt
npc: npc/re/quests/homu_s.txt
@@ -84,10 +95,12 @@ npc: npc/re/quests/pile_bunker.txt
npc: npc/re/quests/quests_brasilis.txt
npc: npc/re/quests/quests_dewata.txt
npc: npc/re/quests/quests_dicastes.txt
+npc: npc/re/quests/quests_eclage.txt
npc: npc/re/quests/quests_izlude.txt
npc: npc/re/quests/quests_lighthalzen.txt
npc: npc/re/quests/quests_malangdo.txt
npc: npc/re/quests/quests_veins.txt
npc: npc/re/quests/quests_mora.txt
+npc: npc/re/quests/quests_morocc.txt
npc: npc/re/quests/monstertamers.txt
npc: npc/re/quests/quests_13_1.txt
diff --git a/npc/re/scripts_guild.conf b/npc/re/scripts_guild.conf
new file mode 100644
index 000000000..e5c01e436
--- /dev/null
+++ b/npc/re/scripts_guild.conf
@@ -0,0 +1,8 @@
+// --------------------------------------------------------------
+// - Renewal Guild Wars -
+// --------------------------------------------------------------
+
+// ----------------------- War of Emperium ----------------------
+// - Hall of Abyss
+npc: npc/re/guild/invest_main.txt
+npc: npc/re/guild/invest_npc.txt
diff --git a/npc/re/scripts_main.conf b/npc/re/scripts_main.conf
index fd393e5b7..6440ada21 100644
--- a/npc/re/scripts_main.conf
+++ b/npc/re/scripts_main.conf
@@ -35,6 +35,7 @@ import: npc/scripts_warps.conf
// ------------------- Renewal Script Files ---------------------
import: npc/re/scripts.conf
+import: npc/re/scripts_guild.conf
import: npc/re/scripts_jobs.conf
import: npc/re/scripts_monsters.conf
import: npc/re/scripts_warps.conf
diff --git a/npc/re/scripts_warps.conf b/npc/re/scripts_warps.conf
index f0b95a462..861da1958 100644
--- a/npc/re/scripts_warps.conf
+++ b/npc/re/scripts_warps.conf
@@ -18,6 +18,7 @@ npc: npc/re/warps/dungeons/bra_dun.txt
npc: npc/re/warps/dungeons/dic_dun.txt
npc: npc/re/warps/dungeons/ecl_dun.txt
npc: npc/re/warps/dungeons/iz_dun.txt
+npc: npc/re/warps/dungeons/moc_pryd.txt
// --------------------------- Fields ---------------------------
npc: npc/re/warps/fields/bif_fild.txt
diff --git a/npc/re/warps/dungeons/moc_pryd.txt b/npc/re/warps/dungeons/moc_pryd.txt
new file mode 100644
index 000000000..aa2feb937
--- /dev/null
+++ b/npc/re/warps/dungeons/moc_pryd.txt
@@ -0,0 +1,16 @@
+//===== rAthena Script =======================================
+//= Morroc Pyramid Nightmare Warp Script
+//===== By: ==================================================
+//= Euphy
+//===== Current Version: =====================================
+//= 1.0
+//===== Compatible With: =====================================
+//= rAthena SVN
+//===== Description: =========================================
+//= Warp Points for Morroc Pyramid Nightmare Mode
+//===== Additional Comments: =================================
+//= 1.0 First Version.
+//============================================================
+
+moc_prydn1,223,9,0 warp PyramidsN1-2 2,2,moc_prydn2,192,8
+moc_prydn2,195,8,0 warp PyramidsN2-1 2,3,moc_prydn1,220,9
diff --git a/npc/re/warps/fields/bra_fild.txt b/npc/re/warps/fields/bra_fild.txt
index c2078cdd2..85edc6c10 100644
--- a/npc/re/warps/fields/bra_fild.txt
+++ b/npc/re/warps/fields/bra_fild.txt
@@ -5,10 +5,11 @@
//===== Current Version: =====================================
//= 1.0
//===== Description: =========================================
-//= [Aegis Conversion]
+//= [Official Conversion]
//= Warp Points for Brasilis
//===== Additional Comments: =================================
//= 1.0 First version.
//============================================================
+
bra_fild01,72,34,0 warp bra_fild01_brasilis 1,1,brasilis,309,334
brasilis,308,336,0 warp brasilis_bra_fild01 1,1,bra_fild01,74,34
diff --git a/npc/scripts.conf b/npc/scripts.conf
index 65cfe53f5..4a0525a11 100644
--- a/npc/scripts.conf
+++ b/npc/scripts.conf
@@ -3,7 +3,6 @@
// --------------------------------------------------------------
npc: npc/MOTD.txt
-
// --------------------------------------------------------------
// - Core Scripts -
// --------------------------------------------------------------
@@ -101,6 +100,10 @@ npc: npc/events/god_se_festival.txt
//npc: npc/events/idul_fitri.txt
// - Official Lunar New Year (2008) Event (iRO)
//npc: npc/events/lunar_2008.txt
+// - Official RWC (2011) Golden Poring Event
+//npc: npc/events/RWC_2011.txt
+// - Official RWC (2012) Enchants Event
+//npc: npc/events/RWC_2012.txt
// - Official Memorial Day (2009) Event (iRO)
//npc: npc/events/MemorialDay_2008.txt
// - Official St. Patrick's Day (2008) Event (iRO)
diff --git a/npc/warps/dungeons/tha_t.txt b/npc/warps/dungeons/tha_t.txt
index ab707f62f..6eb983770 100644
--- a/npc/warps/dungeons/tha_t.txt
+++ b/npc/warps/dungeons/tha_t.txt
@@ -5,9 +5,9 @@
//===== Current Version: =====================================
//= 1.1 Beta
//===== Compatible With: =====================================
-//= Any rAthena Version i guess?
+//= Any Athena Version
//===== Description: =========================================
-//= It's the Thanatos Tower Warps...
+//= Warp Points for Thanatos Tower
//===== Additional Comments: =================================
//= 1.0 - First Release [Ishizu-chan]
//= 1.1 - Added Entrance Warp Guard