summaryrefslogtreecommitdiff
path: root/npc
diff options
context:
space:
mode:
Diffstat (limited to 'npc')
-rw-r--r--npc/custom/expandedbartershop.txt63
-rw-r--r--npc/re/jobs/2e/rebellion.txt1035
-rw-r--r--npc/re/other/achievement_treasures.txt342
-rw-r--r--npc/re/scripts.conf1
-rw-r--r--npc/re/scripts_jobs.conf1
-rw-r--r--npc/scripts_custom.conf1
6 files changed, 1443 insertions, 0 deletions
diff --git a/npc/custom/expandedbartershop.txt b/npc/custom/expandedbartershop.txt
new file mode 100644
index 000000000..5ba988ad9
--- /dev/null
+++ b/npc/custom/expandedbartershop.txt
@@ -0,0 +1,63 @@
+//===== Hercules Script ======================================
+//= Expanded barter shop demo
+//===== By: ==================================================
+//= 4144
+//===== Current Version: =====================================
+//= 1.0
+//===== Description: =========================================
+//= Expanded barter shop demo in prontera.
+//============================================================
+
+prontera,160,284,4 trader Expanded Barter Shop#prt 4_M_KID1,{
+ end;
+OnInit:
+ tradertype(NST_EXPANDED_BARTER);
+
+ // Selling Orange_Potion with items price and 4 items price
+ startsellitem(Orange_Potion, 2, 100000);
+ sellitemcurrency(Banana, 2);
+ sellitemcurrency(Apple, 1);
+ sellitemcurrency(Carrot, 2);
+ sellitemcurrency(Sweet_Potato, 1);
+ endsellitem();
+
+ // sell item with price only in zeny
+ sellitem(White_Herb, 1, 100);
+ // sell item with zeny and item price
+ sellitem(Blue_Herb, 22, 200, Orange_Potion, 2, 3);
+
+ // sell item with price only in zeny (infinite amount)
+ sellitem(Green_Herb, 3, -1);
+
+ // sell item with zeny and two items price (1)
+ sellitem(Orange_Potion, 20, 100000, Banana, 2, -1, Berserk_Potion, 10, -1);
+
+ // sell item with zeny and two items price (same as before but with different zeny price)
+ sellitem(Orange_Potion, 1, 100000, Banana, 2, -1, Berserk_Potion, 10, -1);
+
+ // sell item with item price
+ sellitem(Blade, 0, 1000, Sword, 2, -1);
+
+ // sell item with zeny and two items price
+ sellitem(Scimiter, 2000, -1, Sword, 1, 2, Sword, 1, 5);
+
+ // sell item with zeny and two items price (selling another Orange_Potion)
+ sellitem(Orange_Potion, 1, 100000, Green_Herb, 2, -1);
+
+ // modify selling Orange_Potion with items price (same as previous)
+ // modification reset amount stored in db
+ startsellitem(Orange_Potion, 1, 100);
+ sellitemcurrency(Green_Herb, 2);
+ endsellitem();
+
+ // sell item with zeny and item price (selling another White_Herb)
+ sellitem(White_Herb, 10, 100, Banana, 1, -1);
+
+ // stop selling blades
+// stopselling(Blade, 1);
+
+ // sell item with zeny and two items price (modify amount for entry (1))
+// sellitem(Orange_Potion, 1, 200000, Banana, 2, -1, Berserk_Potion, 10, -1);
+
+ end;
+}
diff --git a/npc/re/jobs/2e/rebellion.txt b/npc/re/jobs/2e/rebellion.txt
new file mode 100644
index 000000000..53beb11f5
--- /dev/null
+++ b/npc/re/jobs/2e/rebellion.txt
@@ -0,0 +1,1035 @@
+//================= Hercules Script =======================================
+//= _ _ _
+//= | | | | | |
+//= | |_| | ___ _ __ ___ _ _| | ___ ___
+//= | _ |/ _ \ '__/ __| | | | |/ _ \/ __|
+//= | | | | __/ | | (__| |_| | | __/\__ \
+//= \_| |_/\___|_| \___|\__,_|_|\___||___/
+//================= License ===============================================
+//= This file is part of Hercules.
+//= http://herc.ws - http://github.com/HerculesWS/Hercules
+//=
+//= Copyright (C) 2020 Hercules Dev Team
+//= Copyright (C) Dastgir
+//=
+//= Hercules is free software: you can redistribute it and/or modify
+//= it under the terms of the GNU General Public License as published by
+//= the Free Software Foundation, either version 3 of the License, or
+//= (at your option) any later version.
+//=
+//= This program is distributed in the hope that it will be useful,
+//= but WITHOUT ANY WARRANTY; without even the implied warranty of
+//= MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+//= GNU General Public License for more details.
+//=
+//= You should have received a copy of the GNU General Public License
+//= along with this program. If not, see <http://www.gnu.org/licenses/>.
+//=========================================================================
+//= Rebellion Job Quest
+//================= Description ===========================================
+//= Job change Quest from Gunslinger -> Rebellion
+//================= Current Version =======================================
+//= 1.0
+//=========================================================================
+
+job_gun,1,1,1 script Administrator1 CLEAR_NPC,{
+ callfunc("F_GM_NPC");
+ mes("Please enter the password.");
+ .@success = callfunc("F_GM_NPC", 1854, 0);
+ if (.@sucess != 1)
+ close();
+
+ mes("[Time Administrator]");
+ mes("What time would you like to return?");
+ next();
+ .@select = select("Cancel", "Test monster spawn", "Start from beginning", "Furnace Zone", "Shooting Zone", "Complete the test");
+ if (.@select == 1) {
+ close();
+ } else if (.@select == 2) {
+ donpcevent("#target::OnStart");
+ donpcevent("#nontarget::OnStart");
+ close();
+ } else if (.@select == 4) {
+ .@questComplete = 12341;
+ } else if (.@select == 5) {
+ .@questComplete = 12342;
+ } else if (.@select == 6) {
+ .@questComplete = 12344;
+ }
+ for (.@i = 12340; .@i <= 12345; .@i++) {
+ erasequest(.@i);
+ if (.@i <= .@questComplete) {
+ setquest(.@i);
+ completequest(.@i);
+ }
+ }
+ close();
+
+OnInit:
+ disablenpc(strnpcinfo(NPC_NAME));
+ end;
+}
+
+// Warps
+job_gun,56,26,0 warp rebelroom#1 2,2,einbroch,49,97
+job_gun,18,10,0 warp rebelroom#2 2,2,job_gun,81,29
+job_gun,165,22,0 warp rebelroom#3 2,2,job_gun,196,35
+job_gun,197,49,0 warp rebelroom#4 2,2,job_gun,157,21
+
+job_gun,88,144,0 warp shootingrange#1 3,3,job_gun,93,123
+job_gun,105,97,0 warp shootingrange#2 3,3,job_gun,125,98
+job_gun,156,115,0 warp shootingrange#3 3,3,job_gun,157,137
+job_gun,152,154,0 warp shootingrange#4 3,3,job_gun,135,154
+job_gun,130,146,0 warp shootingrange#5 3,3,job_gun,120,130
+
+job_gun,165,18,1 script Furnace Controller#1 CLEAR_NPC,{
+ if (Class != Job_Gunslinger) {
+ mes("Only authorized user can do the operation.");
+ close();
+ }
+ if (getstatus(SC_MONSTER_TRANSFORM, 1) != G_L_SHECIL) {
+ mes("Not an authorized user. Abort the operation.");
+ close();
+ }
+ if (questprogress(12342) != 1) {
+ mes("Not an authorized user. Abort the operation.");
+ close();
+ }
+ mes("Do you want to dredge the mold up from the furnace?");
+ next();
+ if (select("Quit.", "Begin.") == 1) {
+ mes("Switch to the Standby mode.");
+ close();
+ }
+ hideonnpc("Furnace Controller#1");
+ donpcevent("Furnace Controller#2::OnStart");
+ mes("Initializing Furnace Controller ZX-3100...");
+ close();
+
+OnInit:
+ hideoffnpc("Furnace Controller#1");
+ end;
+}
+
+job_gun,214,36,1 script Auto Anvil#1 CLEAR_NPC,{
+ if (Class != Job_Gunslinger) {
+ mes("Only authorized user can do the operation.");
+ close();
+ }
+ if (countitem(Tiny_Flame) > 0) {
+ mes("Unauthorized firearm creation has been detected. Report to Manager Elwin.");
+ close();
+ }
+ if (checkweight(Tiny_Flame, 1) == 0) {
+ mes("You have too many items, please reduce them to continue.");
+ close();
+ }
+ if (getstatus(SC_MONSTER_TRANSFORM, 1) != G_L_SHECIL || countitem(Steel_Article_) <= 4 || questprogress(12342) != 1) {
+ mes("Not an authorized user. Abort the operation.");
+ close();
+ }
+
+ mes("Do you want to use the auto anvil and shape the standard Steel Artifacts into a firearm?");
+ next();
+ if (select("Quit.", "Begin.") == 1) {
+ mes("For your safety, please step away from the auto anvil.");
+ close();
+ }
+ if (rand(1, 10) > 6) {
+ specialeffect(EF_REPAIRWEAPON);
+ mes("You have successfully created a firearm using the auto anvil. ^ff0000Please report before your transformation expires^000000.");
+ delitem(Steel_Article_, 5);
+ getitem(Tiny_Flame, 1);
+ } else {
+ specialeffect(EF_SUI_EXPLOSION);
+ mes("Failed to create a firearm.");
+ delitem(Steel_Article_, 5);
+ }
+ close();
+
+OnInit:
+ hideoffnpc("Auto Anvil#1");
+ end;
+}
+
+job_gun,165,18,1 script Furnace Controller#2 CLEAR_NPC,{
+ mes("The system is busy dredging a completed mold from the furnace.");
+ close();
+
+OnInit:
+ hideonnpc("Furnace Controller#2");
+ end;
+
+OnStart:
+ hideoffnpc("Furnace Controller#2");
+ sleep(3000);
+ mapannounce("job_gun", "Furnace Controller: Dredging a mold up from the furnace... Workers, stand by at the production line.", bc_map, "0x00ff44");
+ sleep(500);
+ .@wh_start = 0;
+ while (true) {
+ if (.@wh_start >= 30)
+ break;
+
+ .@eff_rnd = rand(1, 100);
+ if (.@eff_rnd < 33) { // 0 - 32
+ donpcevent("Heating Furnace#3::OnStart");
+ } else if (.@eff_rnd > 66) { // 67-100
+ donpcevent("Heating Furnace#4::OnStart");
+ } else { // 33-66
+ donpcevent("Heating Furnace#5::OnStart");
+ }
+ sleep(200);
+ makeitem(Steel_Article, 1, "job_gun", rand(127, 143), rand(26, 29));
+ if (rand(1, 10) > 7) {
+ makeitem(Steel_Article_, 1, "job_gun", rand(127, 143), rand(26, 29));
+ }
+ .@wh_start += 1;
+ sleep(500);
+
+ }
+ sleep(2000);
+ mapannounce("job_gun", "Furnace Controller: Finishing the operation... Entering Standby mode in 15 seconds.", bc_map, "0x00ff44");
+ sleep(15000);
+ hideonnpc("Furnace Controller#2");
+ hideoffnpc("Furnace Controller#1");
+ end;
+}
+
+job_gun,130,31,1 script Heating Furnace#3 CLEAR_NPC,{
+ end;
+
+OnStart:
+ specialeffect(EF_FIREPILLAR);
+ sleep(500);
+ specialeffect(EF_FIREPILLARBOMB);
+ end;
+}
+
+job_gun,136,31,1 script Heating Furnace#4 CLEAR_NPC,{
+ end;
+
+OnStart:
+ specialeffect(EF_FIREPILLAR);
+ sleep(500);
+ specialeffect(EF_FIREPILLARBOMB);
+ end;
+}
+
+job_gun,141,31,1 script Heating Furnace#5 CLEAR_NPC,{
+ end;
+
+OnStart:
+ specialeffect(EF_FIREPILLAR);
+ sleep(500);
+ specialeffect(EF_FIREPILLARBOMB);
+ end;
+}
+
+function script F_summonTargetMonster {
+ .@monster_id = getarg(0);
+ .@max_mob_count = getarg(1);
+ .@monster_name$ = getarg(2);
+ .@event_name$ = getarg(3);
+ while(true) {
+ .@mob_dead_num = mobcount("job_gun", .@event_name$);
+ if (.@mob_dead_num >= .@max_mob_count)
+ break;
+
+ switch(rand(1, 5)) {
+ case 1:
+ .@mobx = rand(88, 99);
+ .@moby = rand(143, 147);
+ break;
+ case 2:
+ .@mobx = rand(92, 96);
+ .@moby = rand(95, 122);
+ break;
+ case 3:
+ .@mobx = rand(143, 159);
+ .@moby = rand(99, 100);
+ break;
+ case 4:
+ .@mobx = rand(157, 158);
+ .@moby = rand(137, 160);
+ break;
+ case 5:
+ .@mobx = rand(119, 134);
+ .@moby = rand(156, 160);
+ break;
+ }
+ monster("job_gun", .@mobx, .@moby, .@monster_name$, .@monster_id, 1, .@event_name$);
+ }
+ return;
+}
+
+job_gun,1,4,1 script #target CLEAR_NPC,{
+ end;
+
+OnStart:
+ killmonster("job_gun", "#target::OnTargetDead");
+ callfunc("F_summonTargetMonster", J_REB_SHECIL1, 16, _("Standard-issue Target"), "#target::OnTargetDead");
+ end;
+
+OnInit:
+ hideonnpc("#target");
+ callfunc("F_summonTargetMonster", J_REB_SHECIL1, 16, _("Standard-issue Target"), "#target::OnTargetDead");
+ end;
+
+OnTargetDead:
+ hideonnpc("#target");
+ callfunc("F_summonTargetMonster", J_REB_SHECIL1, 16, _("Standard-issue Target"), "#target::OnTargetDead");
+ end;
+}
+
+job_gun,1,5,1 script #nontarget CLEAR_NPC,{
+ end;
+OnStart:
+ killmonster("job_gun", "#nontarget::OnNonTargetDead");
+ hideonnpc("#nontarget");
+ callfunc("F_summonTargetMonster", J_REB_SHECIL2, 56, _("Defective Target"), "#nontarget::OnNonTargetDead");
+ end;
+
+OnInit:
+ hideonnpc("#nontarget");
+ callfunc("F_summonTargetMonster", J_REB_SHECIL2, 56, _("Defective Target"), "#nontarget::OnNonTargetDead");
+ end;
+
+OnNonTargetDead:
+ hideonnpc("#nontarget");
+ callfunc("F_summonTargetMonster", J_REB_SHECIL2, 56, _("Defective Target"), "#nontarget::OnNonTargetDead");
+ end;
+}
+
+moc_fild12,261,318,3 script Suspicious Man 4_M_MOCASS2,2,2,{
+ end;
+OnTouch:
+ if (Class != Job_Gunslinger || BaseLevel < 99 || JobLevel < 70)
+ end;
+ if (questprogress(12340) < 1) {
+ mes("[Suspicious Man]");
+ mes("Finally I've found you, Vagabond Spike! Your neck is mine!");
+ next();
+ select("Say what?");
+
+ mes("[Suspicious Man]");
+ mes("*Snort* Don't pretend like you don't know. Look at this poster! You're in it!");
+ next();
+ select("I see the resemblance, but that's not me.");
+
+ mesf("[%s]", strcharinfo(PC_NAME));
+ mes("Forget the resemblance. Where did you get that poster? I've never committed a crime.");
+ next();
+ mes("[Suspicious Man]");
+ mes("I knew you'd try to lie your way out.");
+ next();
+ mes("[Suspicious Man]");
+ mes("The ^0000ffEinbroch Private Pub^000000 has released that wanted poster. You have many bounty hunters like me on your heels.");
+ next();
+ mes("[Suspicious Man]");
+ mes("I don't care if you're the right one so long as you look it and I can take you dead or alive.");
+ next();
+ } else {
+ mes("[Suspicious Man]");
+ mes("It's you again! You've got guts to come back here!");
+ next();
+ }
+ switch (select("Make a run for it.", "Fight him.")) {
+ case 1:
+ mes("^0000ffI should run for now and think about this later.^000000");
+ close2();
+ break;
+ case 2:
+ mes("^0000ffHe's not the only bounty hunter after me, if he's telling the truth. I need time to strategize.^000000");
+ close2();
+ break;
+ }
+ setquest(12340);
+ warp("moc_fild12", 186, 83);
+ end;
+}
+
+einbroch,54,97,3 script Bouncer 4_M_REBELLION,2,2,{
+ if (Class != Job_Gunslinger) {
+ mes("[Bouncer]");
+ mes("No loitering around the venue.");
+ close();
+ }
+ if (questprogress(12340) < 1) {
+ mes("[Bouncer]");
+ mes("Under construction, can't get in.");
+ close();
+ } else if (questprogress(12340) == 1) {
+ mes("[Bouncer]");
+ mes("*Gasp* You! I thought you were already captured. Ooh, doesn't matter now. You're my Get Out of Jail Free card!");
+ next();
+ select("I'm not the criminal you think I am!");
+ mes("[Bouncer]");
+ mes("You aren't?");
+ next();
+ mes("^0000ffThe bouncer examines your face.^000000");
+ next();
+ mes("[Bouncer]");
+ mes("Hm, you bear a striking resemblance, though you don't look not as menacing as that criminal Spike");
+ next();
+ select("I want to talk to the poster publisher.");
+ mes("[Bouncer]");
+ mes("Your problem is a bit out of my league. Get in. If I find out you're the real deal all along, I'll see that you'll never see the outside again.");
+ close2();
+ warp("job_gun", 81, 29);
+ } else if (questprogress(12340) > 1) {
+ mes("[Bouncer]");
+ mes("You're back. Why?");
+ next();
+ if (select("I want in.", "I was passing by.") == 2) {
+ mes("[Bouncer]");
+ mes("You're silly.");
+ close();
+ }
+ mes("[Bouncer]");
+ mes("Go ahead. Stay out of trouble.");
+ close2();
+ warp("job_gun", 70, 28);
+ }
+ end;
+}
+
+job_gun,68,33,3 script Ruthless Rebellion 4_F_REBELLION,2,2,{
+ mes("[Ruthless Rebellion]");
+ mes("Do you know how to use a gun?");
+ close();
+}
+
+job_gun,78,33,6 script Suspicious Gunslinger 4_M_JOB_BLACKSMITH,2,2,{
+ mes("[Suspicious Gunslinger]");
+ mes("... ");
+ next();
+ mes("[Quiet Gunslinger]");
+ mes("Don't say I look like a blacksmith you know.");
+ close();
+}
+
+job_gun,74,24,6 script Drunken Man 4_M_LIEMAN,2,2,{
+ mes("[Drunken Man]");
+ mes("*Hiccups* Oh, I'm the owner here.");
+ mes("Oh wait, am I in the pub or someplace else? Zzz...");
+ close();
+}
+
+job_gun,64,33,6 script Anxious Man 4_M_ALCHE_A,2,2,{
+ mes("[Anxious Man]");
+ mes("Maybe I'm in the wrong place. This place doesn't look like a pub.");
+ close();
+}
+
+job_gun,86,29,3 script Kulbertinov 4_M_REBELLION,2,2,{
+ if (Class != Job_Gunslinger) {
+ mes("[Kulbertinov]");
+ mes("Are you looking for me?");
+ close();
+ }
+ if (questprogress(12340) < 1) {
+ mes("[Kulbertinov]");
+ mes("Can I help you?");
+ close();
+ } else if (questprogress(12340) == 1) {
+ mes("[Kulbertinov]");
+ mes("What do you want?");
+ next();
+ select("I'm mistaken for a criminal!");
+ mes("[Kulbertinov]");
+ mes("Wait a minute... Mwah hah hah!");
+ next();
+ mes("^0000ffHe scans your face, then guffaws.^000000");
+ next();
+ mes("[Kulbertinov]");
+ mes("I'm sorry. For a moment, I thought Spike came back to life. He was found dead three days ago.");
+ next();
+ select("He was captured already?");
+ mes("[Kulbertinov]");
+ mes("Yes, and the bounty hunter was already paid. The news hasn't spread, and you're the spitting image of him. Go figure.");
+ next();
+ select("You have to do something!");
+ mes("[Kulbertinov]");
+ mes("I'm sorry, but I can't talk to every single bounty hunter for you. Of course, I'm willing to compensate for your inconvenience.");
+ next();
+ mes("[Kulbertinov]");
+ mes("Hey, how about you join our ranks? At the very last, you won't get shot.");
+ next();
+ select("You want me become a bounty hunter?");
+ mes("[Kulbertinov]");
+ mes("No, bounty hunting is just a pastime. We're the experts of all the firearms in the world.");
+ next();
+ mes("[Kulbertinov]");
+ mes("Carefree spirits!");
+ mes("Magical spitfires!");
+ mes("We call ourselves the ^0000ffRebellion^000000.");
+ next();
+ mes("[Kulbertinov]");
+ mes("You look like you know how to use a gun. How'd you like to join our ranks? You won't have to worry about other bounty hunters anymore too.");
+ next();
+ switch (select("Let me think it over.", "I don't think I have a choice.")) {
+ case 1:
+ mes("[Kulbertinov]");
+ mes("You can think it over and over, but the answer won't change. Just take the offer.");
+ break;
+ case 2:
+ mes("[Kulbertinov]");
+ mes("Good thinking. Might as well do it now and get it over with.");
+ break;
+ }
+ next();
+ mes("[Kulbertinov]");
+ mes("Talk to Enwin Conick. She guides drifting spirits like you to the way of the Rebellion. I'll send word to her. Ah, and don't point your gun at her.");
+ setquest(12341);
+ completequest(12340);
+ } else if (questprogress(12340) > 1) {
+ mes("[Kulbertinov]");
+ mes("Do you have business with Elwin Conick?");
+ next();
+ if (select("No.", "Send me to Elwin Conick.") == 1) {
+ mes("[Kulbertinov]");
+ mes("All right. Care for a shot of vodka?");
+ close();
+ }
+ mes("[Kulbertinov]");
+ mes("Okay, I'll let her know.");
+ }
+ close2();
+ warp("job_gun", 19, 15);
+ end;
+}
+
+job_gun,19,24,3 script Elwin Conick#1 4_F_REBELLION,2,2,{
+ if (Class != Job_Gunslinger) {
+ mes("[Elwin Conick]");
+ mes("If you don't want to join Rebellions, just get out.");
+ close2();
+ warp("job_gun", 81, 29);
+ end;
+ }
+ if (questprogress(12341) == 1) {
+ mes("[Elwin Conick]");
+ mes("Do you to join us Rebellions?");
+ next();
+ mes("^0000ffThe short woman with keen eyes stares into your eyes.^000000");
+ next();
+ mes("[Elwin Conick]");
+ mes("Sign here.");
+ next();
+ mes("^0000ffThe undersigned party [_____] will not speak of the test even if he or she suffers injury, mutilation, or death in an unforeseen accident that may occur during the test.^000000");
+ next();
+ select("WHAT?!");
+ mes("[Elwin Conick]");
+ mes("Do you want join us or not?");
+ next();
+ if (select("I give up.", "...I'll sign.") == 1) {
+ mes("[Elwin Conick]");
+ mes("Your choice.");
+ close2();
+ warp("job_gun", 81, 29);
+ end;
+ }
+ mes("[Elwin Conick]");
+ mes("Good. Now, follow me.");
+ close2();
+ warp("job_gun", 117, 41);
+ end;
+ }
+ if (questprogress(12342) == 1) {
+ mes("[Elwin Conick]");
+ mes("Do you want to try again?");
+ next();
+ if (select("I give up.", "Do it.") == 1) {
+ mes("[Elwin Conick]");
+ mes("Your choice.");
+ close2();
+ warp("job_gun", 81, 29);
+ end;
+ }
+ mes("[Elwin Conick]");
+ mes("Follow me.");
+ close2();
+ warp("job_gun", 117, 41);
+ end;
+ }
+ if (questprogress(12343) == 1) {
+ mes("[Elwin Conick]");
+ mes("You still have Ivan's shooting test, do you want to try again?");
+ next();
+ if (select("I give up.", "Do it.") == 1) {
+ mes("[Elwin Conick]");
+ mes("It's not worth to give up, now go out and relax.");
+ close2();
+ warp("job_gun", 81, 29);
+ end;
+ }
+ mes("[Elwin Conick]");
+ mes("Remember to give your best.");
+ close2();
+ warp("job_gun", 120, 130);
+ end;
+ }
+ if (questprogress(12343) > 1) {
+ mes("[Elwin Conick]");
+ mes("Ivan's shooting test have not finished yet, do you want to try again?");
+ next();
+ if (select("I give up.", "Do it.") == 1) {
+ mes("[Elwin Conick]");
+ mes("It's not worth to give up, now go out and relax.");
+ close2();
+ warp("job_gun", 81, 29);
+ end;
+ }
+ mes("[Elwin Conick]");
+ mes("Remember to give your best.");
+ close2();
+ warp("job_gun", 120, 130);
+ end;
+ }
+ if (questprogress(12345) == 1) {
+ mes("[Elwin Conick]");
+ mes("Ivan is waiting for you, go find him.");
+ close2();
+ warp("job_gun", 120, 130);
+ end;
+ }
+ mes("[Elwin Conick]");
+ mes("You have no more test to take. Why don't you go out and have a drink?");
+ close2();
+ warp("job_gun", 81, 29);
+ end;
+}
+
+job_gun,117,46,3 script Elwin Conick#2 4_F_REBELLION,2,2,{
+ if (Class != Job_Gunslinger) {
+ mes("[Elwin Conick]");
+ mes("If you don't want to join Rebellions, just get out.");
+ close2();
+ warp("job_gun", 81, 29);
+ end;
+ }
+ if (getstatus(SC_MONSTER_TRANSFORM, 1) == G_L_SHECIL) {
+ mes("^0000ffYou are already in the test form. If you have finished all your tests, report to Elwin Conick in the Assembly Room^000000.");
+ close();
+ } else if (getstatus(SC_MONSTER_TRANSFORM, 1) > 1) {
+ mes("[Elwin Conick]");
+ mes("Look at yourself, do you really want to test?");
+ next();
+ mes("^0000ffElwin see you turn into another form and she is very angry. Wait for your current form ends, and then find her again.^000000");
+ next();
+ if (select("Wait.", "Go away.") == 1) {
+ mes("[Elwin Conick]");
+ mes("It's not worth to give up, now go out and relax..");
+ close();
+ }
+ mes("[Elwin Conick]");
+ mes("Come back when you aren't in any form.");
+ close2();
+ warp("job_gun", 81, 29);
+ end;
+ }
+ if (questprogress(12341) == 1) {
+ .@st_job1 = countitem(Steel_Article);
+ .@st_job2 = countitem(Steel_Article_);
+ if (.@st_job1 > 0) {
+ delitem(Steel_Article, .@st_job1);
+ mes("[Elwin Conick]");
+ mes("Any leftover Steel Artifacts must be returned after the test.");
+ close();
+ }
+ if (.@st_job2 > 0) {
+ delitem(Steel_Article_, .@st_job2);
+ mes("[Elwin Conick]");
+ mes("Any leftover Steel Artifacts must be returned after the test.");
+ close();
+ }
+ if (countitem(Tiny_Flame) > 0) {
+ delitem(Tiny_Flame, 1);
+ mes("[Elwin Conick]");
+ mes("Time over. You failed the test. Let me take all your leftover test materials.");
+ close();
+ }
+ setquest(12342);
+ completequest(12341);
+ .@showDialog = true;
+ } else if (questprogress(12342) == 1) {
+ .@st_job1 = countitem(Steel_Article);
+ .@st_job2 = countitem(Steel_Article_);
+ if (.@st_job1 > 0) {
+ delitem(Steel_Article, .@st_job1);
+ mes("[Elwin Conick]");
+ mes("Any leftover Steel Artifacts must be returned after the test.");
+ close();
+ }
+ if (.@st_job2 > 0) {
+ delitem(Steel_Article_, .@st_job2);
+ mes("[Elwin Conick]");
+ mes("Time over. You failed the test. Let me take all your leftover test materials.");
+ close();
+ }
+ if (countitem(Tiny_Flame) > 0) {
+ delitem(Tiny_Flame, 1);
+ mes("[Elwin Conick]");
+ mes("Time over. You failed the test. Let me take all your leftover test materials.");
+ close2();
+ end;
+ }
+ .@showDialog = true;
+ }
+ if (.@showDialog) {
+ mes("[Elwin Conick]");
+ mes("Listen up. I'm not going to great lengths trying to explain the test to you.");
+ next();
+ select("Okay.");
+ mes("[Elwin Conick]");
+ mes("This is where the firearm molds are cast. Everywhere you can see Steel Artifacts are being produced.");
+ next();
+ mes("[Elwin Conick]");
+ mes("You'll be asked to control switches on the machine and select 5 standard Steel Artifacts.");
+ next();
+ mes("[Elwin Conick]");
+ mes("You'll then take them to the next Assembly Room and assemble them into a complete firearm. You'll be given 3 minutes to finish all that. ^0000ffTo check the elapsed time, you'll be transformed into a different job^000000.");
+ next();
+ mes("[Elwin Conick]");
+ mes("I'll be in the next room, waiting for you to bring me a complete firearm. Remember, ^0000ffyou fail the test when your transformation expires after 3 minutes^000000.");
+ montransform(G_L_SHECIL, 180000);
+ close();
+ }
+ mes("[Elwin Conick]");
+ mes("Ah? Are you lost? You need to register first and then get back here.");
+ close2();
+ warp("job_gun", 81, 29);
+ end;
+}
+
+job_gun,198,39,3 script Elwin Conick#3 4_F_REBELLION,2,2,{
+ if (Class != Job_Gunslinger) {
+ mes("[Elwin Conick]");
+ mes("If you don't want to join Rebellions, just get out.");
+ close2();
+ warp("job_gun", 81, 29);
+ end;
+ }
+ if (questprogress(12342) != 1) {
+ mes("[Elwin Conick]");
+ mes("Ah? Are you lost? You need to register first and then get back here.");
+ close2();
+ warp("job_gun", 81, 29);
+ end;
+ }
+ if (getstatus(SC_MONSTER_TRANSFORM, 1) == G_L_SHECIL) {
+ if (countitem(Tiny_Flame) == 0) {
+ mes("[Elwin Conick]");
+ mes("Are you done? I don't see any completed firearm in your inventory.");
+ close();
+ }
+ delitem(Tiny_Flame, 1);
+ mes("[Elwin Conick]");
+ mes("It's shoddy but not bad, given the time. You passed.");
+ next();
+ mes("[Elwin Conick]");
+ mes("Let me take all your leftover test materials.");
+ .@st_job1 = countitem(Steel_Article);
+ .@st_job2 = countitem(Steel_Article_);
+ if (.@st_job1 > 0) {
+ delitem(Steel_Article, .@st_job1);
+ }
+ if (.@st_job2 > 0) {
+ delitem(Steel_Article_, .@st_job2);
+ }
+ next();
+ mes("[Elwin Conick]");
+ mes("Now you can move on to the next course. Ivan Sidorenko will oversee your test.");
+ completequest(12342);
+ close2();
+ warp("job_gun", 120, 133);
+ end;
+
+ } else if (getstatus(SC_MONSTER_TRANSFORM, 1) > 1) {
+ mes("[Elwin Conick]");
+ mes("Look at yourself, do you really want to test?");
+ next();
+ mes("^0000ffElwin see you turn into another form and she is very angry. Wait for your current form ends, and then find her again.^000000");
+ next();
+ if (select("Wait.", "Go away.") == 1) {
+ mes("[Elwin Conick]");
+ mes("It's not worth to give up, now go out and relax..");
+ close();
+ }
+ mes("[Elwin Conick]");
+ mes("Come back when you aren't in any form.");
+ close2();
+ warp("job_gun", 81, 29);
+ end;
+ } else {
+ mes("[Elwin Conick]");
+ mes("Time over. You failed the test. Let me take all your leftover test materials.");
+ .@st_job1 = countitem(Steel_Article);
+ .@st_job2 = countitem(Steel_Article_);
+ if (.@st_job1 > 0) {
+ delitem(Steel_Article, .@st_job1);
+ }
+ if (.@st_job2 > 0) {
+ delitem(Steel_Article_, .@st_job2);
+ }
+ if (countitem(Tiny_Flame) > 0) {
+ delitem(Tiny_Flame, 1);
+ }
+ next();
+ mes("[Elwin Conick]");
+ mes("Let's start again.");
+ close2();
+ warp("job_gun", 117, 41);
+ end;
+ }
+ end;
+}
+
+job_gun,120,138,3 script Ivan Sidorenko#1 4_M_REBELLION,2,2,{
+ if (Class != Job_Gunslinger) {
+ mes("[Ivan Sidorenko]");
+ mes("This is shooting test area, you can't come here as you like.");
+ close2();
+ warp("job_gun", 81, 29);
+ end;
+ }
+ if (questprogress(12342) < 2) {
+ mes("[Ivan Sidorenko]");
+ mes("There seems to be a mistake, you can't stay here.");
+ close2();
+ warp("job_gun", 81, 29);
+ end;
+ }
+ if (questprogress(12343) < 1) {
+ mes("[Ivan Sidorenko]");
+ mes("Hey, stay focused--we're using live ammo here, and you can get shot anytime.");
+ next();
+ mes("[Ivan Sidorenko]");
+ mes("Let me make this quick. Basically you'll be running in this shooting range consisting of 5 sections.");
+ next();
+ mes("[Ivan Sidorenko]");
+ mes("The objective is to find enemies in the midst of a crowd quickly and without fail.");
+ next();
+ mes("[Ivan Sidorenko]");
+ mes("Among all the targets, you must shoot only the ^0000ffStandard-issue Targets^000000. If you make a mistake, you'll lose points.");
+ next();
+ mes("[Ivan Sidorenko]");
+ mes("Let's try. There aren't many ^0000ffStandard-issue Targets^000000, so keep your eyes peeled.");
+ next();
+ mes("[Ivan Sidorenko]");
+ mes("^0000ffYou have 3 minutes to finish this test. If you can't finish before your transformation expires^000000, you'll fail. If that happens, just follow the path back to me.");
+ next();
+ mes("[Ivan Sidorenko]");
+ mes("^0000ffYou'll fail if you miss a Standard-issue Target, or shoot 3 incorrect targets^000000. Let's get started.");
+ setquest(12343);
+ setquest(12344);
+ montransform(G_L_SHECIL, 180000);
+ close2();
+ warp("job_gun", 102, 146);
+ end;
+ } else if (questprogress(12343) == 1) {
+ .@standard_target = 0;
+ .@failed_target = 0;
+ .@total_target = 0;
+ if (questprogress(12343, HUNTING) == 2) {
+ .@standard_target = 10;
+ }
+ if (questprogress(12344, HUNTING) == 2) {
+ .@failed_target = 2;
+ }
+ if (getstatus(SC_MONSTER_TRANSFORM, 1) != G_L_SHECIL) {
+ .@total_target = 5;
+ }
+ .@target_count = .@standard_target - (.@failed_target + .@total_target); //
+ if (.@target_count > 9) { // Killed 10 Standard, 0 Failed
+ completequest(12343);
+ completequest(12344);
+ setquest(12345);
+ mes("[Ivan Sidorenko]");
+ mes("Good job. I didn't think you could pass so quickly.");
+ next();
+ mes("[Ivan Sidorenko]");
+ mes("You may leave and wait outside. I'll bring other instructors' evaluation reports to see you.");
+ close2();
+ warp("job_gun", 210, 132);
+ end;
+ } else if (.@target_count == 8) { // Killed 10 Standard, 3 failed
+ erasequest(12343);
+ erasequest(12344);
+ mes("[Ivan Sidorenko]");
+ mes("You're quick enough, but you shot too many incorrect targets. You failed.");
+ next();
+ } else if (.@target_count == 5) { // Timeout
+ erasequest(12343);
+ erasequest(12344);
+ mes("[Ivan Sidorenko]");
+ mes("You accurate enough, but you took too much time. Slow Rebellions don't survive long enough.");
+ next();
+ } else if (.@target_count < 5) { // Timeout and failed targets
+ erasequest(12343);
+ erasequest(12344);
+ mes("[Ivan Sidorenko]");
+ mes("You failed at both speed and accuracy. How did you survive this long?");
+ next();
+ } else {
+ erasequest(12343);
+ erasequest(12344);
+ mes("[Ivan Sidorenko]");
+ mes("There's a problem, the statistic seems to be wrong. Well... This can happen sometimes.");
+ next();
+ }
+ mes("[Ivan Sidorenko]");
+ mes("Let's try again. Be more careful this time.");
+ setquest(12343);
+ setquest(12344);
+ montransform(G_L_SHECIL, 180000);
+ close2();
+ warp("job_gun", 102, 146);
+ end;
+ } else {
+ mes("[Ivan Sidorenko]");
+ mes("How did you not leave?");
+ next();
+ mes("[Ivan Sidorenko]");
+ mes("You may leave and wait outside. I'll bring other instructors' evaluation reports to see you.");
+ close2();
+ warp("job_gun", 210, 132);
+ end;
+ }
+ end;
+}
+
+job_gun,220,132,3 script Ivan Sidorenko#2 4_M_REBELLION,2,2,{
+ .@now_weight = MaxWeight - Weight;
+ if (checkweight(Knife, 1) == 0) {
+ mes("You have too many items, please reduce them to continue.");
+ close();
+ }
+ if (.@now_weight < 1000) {
+ mes("The items in your inventory are weighing you down. Lighten your weight first.");
+ close();
+ }
+ if (questprogress(12345) != 1) {
+ mes("[Ivan Sidorenko]");
+ mes("There must have been a mistake. You aren't supposed to remain here.");
+ close2();
+ warp("job_gun", 81, 29);
+ end;
+ }
+ if (Class == Job_Gunslinger) {
+ if (BaseLevel < 99 || JobLevel < 70) {
+ mes("[Ivan Sidorenko]");
+ mes("Huh? You look so weak? I have nothing more to say.");
+ close();
+ }
+ if (SkillPoint != 0) {
+ mes("[Ivan Sidorenko]");
+ mes("Oh no~ You still have Skill Points.");
+ close();
+ }
+ mes("[Ivan Sidorenko]");
+ mes("Kulbertinov, Elwin, and I've evaluated your Rebellion test results.");
+ next();
+ mes("[Ivan Sidorenko]");
+ mes("And...");
+ next();
+ mes("[Ivan Sidorenko]");
+ mes("You've met all our requirements including the attitude and the test performance.");
+ next();
+ mes("[Ivan Sidorenko]");
+ mes("That's right, you're now a member of the Rebellion. Get ready to be wowed.");
+ next();
+ jobchange(Job_Rebellion);
+ completequest(12345);
+ mes("[Ivan Sidorenko]");
+ mes("And Elwin wants you to have this. Take good care of it. He made it for you.");
+ getitem(Freedom_Flame, 1);
+ next();
+ mes("[Ivan Sidorenko]");
+ mes("See you later.");
+ close2();
+ warp("job_gun", 81, 29);
+ end;
+ } else if (Class == Job_Rebellion) {
+ mes("[Ivan Sidorenko]");
+ mes("This life should be fun, not boring.");
+ next();
+ mes("[Ivan Sidorenko]");
+ mes("And by becoming a Rebellion your life should be upgraded. So, go and create a great journey, make us proud!");
+ close();
+ } else {
+ mes("[Ivan Sidorenko]");
+ mes("Do you have something to say to me, don't you?");
+ close();
+ }
+}
+
+job_gun,220,138,4 trader Prop Vending Machine 2_VENDING_MACHINE1,{
+ end;
+OnInit:
+ sellitem(Slug_Bullet_1);
+ sellitem(Slug_Bullet_2);
+ sellitem(Slug_Bullet_3);
+ sellitem(Slug_Bullet_4);
+ sellitem(Slug_Bullet_5);
+ sellitem(Fullmetal_Jacket_Bullet);
+ sellitem(Mine_Projectile);
+ sellitem(Dragon_Tail_Missile);
+ end;
+}
+
+job_gun,216,138,4 script Butler Karlex 1_M_01,{
+ mes("[Butler Karlex]");
+ mes("Use this temporary storage to keep your items safe while on the Advancement test.");
+ next();
+ .@select = select("Cancel", "Open the storage.");
+ mes("[Butler Karlex]");
+ mes("Thank you for using the service.");
+ close2();
+ if (.@select == 2) {
+ openstorage();
+ }
+ end;
+}
+
+prontera,92,209,4 trader Rebellion Weapons 2_VENDING_MACHINE1,{
+ end;
+OnInit:
+ sellitem(H_FEATHER_H_FIRE);
+ sellitem(ALTAIR_ARES);
+ sellitem(COLORSCOPE);
+ sellitem(RAG203);
+ sellitem(DEATHFIRE);
+ sellitem(R_THUNDER);
+ sellitem(P_BREAKER);
+ sellitem(MINIMAY);
+ sellitem(TEMPEST);
+ sellitem(END_OF_HORIZON);
+ sellitem(Southern_Cross_R);
+ end;
+}
+
+prontera,96,209,4 trader Rebellion Accessories 2_VENDING_MACHINE1,{
+ end;
+OnInit:
+ sellitem(Slug_Bullet);
+ sellitem(Fullmetal_Jacket_Bullet);
+ sellitem(Mine_Projectile);
+ sellitem(Dragon_Tail_Missile);
+ sellitem(Special_Alloy_Trap);
+ sellitem(Bullet);
+ sellitem(Silver_Bullet_);
+ sellitem(Shell_Of_Blood_);
+ sellitem(AP_Ammo);
+ sellitem(Blaze_Bullet);
+ sellitem(Freezing_Bullet);
+ sellitem(Electric_Shock_Bullet);
+ sellitem(Magical_Stone_Bullet);
+ sellitem(Sanctified_Bullet);
+ sellitem(Flare_Bullet);
+ sellitem(Lightning_Bullet);
+ sellitem(Poison_Bullet);
+ sellitem(Blind_Bullet);
+ sellitem(Ice_Bullet);
+ end;
+}
diff --git a/npc/re/other/achievement_treasures.txt b/npc/re/other/achievement_treasures.txt
new file mode 100644
index 000000000..38fb69d77
--- /dev/null
+++ b/npc/re/other/achievement_treasures.txt
@@ -0,0 +1,342 @@
+//================= Hercules Script =======================================
+//= _ _ _
+//= | | | | | |
+//= | |_| | ___ _ __ ___ _ _| | ___ ___
+//= | _ |/ _ \ '__/ __| | | | |/ _ \/ __|
+//= | | | | __/ | | (__| |_| | | __/\__ \
+//= \_| |_/\___|_| \___|\__,_|_|\___||___/
+//================= License ===============================================
+//= This file is part of Hercules.
+//= http://herc.ws - http://github.com/HerculesWS/Hercules
+//=
+//= Copyright (C) 2020 Hercules Dev Team
+//=
+//= Hercules is free software: you can redistribute it and/or modify
+//= it under the terms of the GNU General Public License as published by
+//= the Free Software Foundation, either version 3 of the License, or
+//= (at your option) any later version.
+//=
+//= This program is distributed in the hope that it will be useful,
+//= but WITHOUT ANY WARRANTY; without even the implied warranty of
+//= MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+//= GNU General Public License for more details.
+//=
+//= You should have received a copy of the GNU General Public License
+//= along with this program. If not, see <http://www.gnu.org/licenses/>.
+//=========================================================================
+// Exploration Achievements
+//=========================================================================
+
+- script achievement_tr FAKE_NPC,{
+ sscanf(strnpcinfo(NPC_NAME_HIDDEN), "tr%d", .@id);
+ if (!achievement_iscompleted(.@id))
+ achievement_progress(.@id, 1, 1, true);
+ end;
+OnInit:
+ cloakonnpc(strnpcinfo(NPC_NAME));
+ end;
+}
+
+- script achievement_wp FAKE_NPC,{
+OnTouch:
+ sscanf(strnpcinfo(NPC_NAME_HIDDEN), "wp%d", .@id);
+ if (!achievement_iscompleted(.@id))
+ cloakoffnpc(sprintf("#tr%d", .@id), playerattached());
+ end;
+}
+
+// Treasure Chests
+prt_fild01,146,126,4 duplicate(achievement_tr) #tr120001 4_TREASURE_BOX
+prt_fild02,142,221,4 duplicate(achievement_tr) #tr120002 4_TREASURE_BOX
+prt_fild03,172,139,4 duplicate(achievement_tr) #tr120003 4_TREASURE_BOX
+prt_fild04,118,57,4 duplicate(achievement_tr) #tr120004 4_TREASURE_BOX
+prt_fild05,189,291,4 duplicate(achievement_tr) #tr120005 4_TREASURE_BOX
+prt_fild06,298,304,4 duplicate(achievement_tr) #tr120006 4_TREASURE_BOX
+prt_fild07,44,104,4 duplicate(achievement_tr) #tr120007 4_TREASURE_BOX
+prt_fild08,203,222,4 duplicate(achievement_tr) #tr120008 4_TREASURE_BOX
+prt_fild09,37,354,4 duplicate(achievement_tr) #tr120009 4_TREASURE_BOX
+prt_fild10,177,206,4 duplicate(achievement_tr) #tr120010 4_TREASURE_BOX
+gef_fild00,73,119,4 duplicate(achievement_tr) #tr120011 4_TREASURE_BOX
+gef_fild01,222,224,4 duplicate(achievement_tr) #tr120012 4_TREASURE_BOX
+gef_fild05,202,292,4 duplicate(achievement_tr) #tr120013 4_TREASURE_BOX
+gef_fild06,279,105,4 duplicate(achievement_tr) #tr120014 4_TREASURE_BOX
+gef_fild07,184,249,4 duplicate(achievement_tr) #tr120015 4_TREASURE_BOX
+gef_fild09,170,73,4 duplicate(achievement_tr) #tr120016 4_TREASURE_BOX
+gef_fild11,239,248,4 duplicate(achievement_tr) #tr120017 4_TREASURE_BOX
+moc_fild11,188,218,4 duplicate(achievement_tr) #tr120018 4_TREASURE_BOX
+moc_fild12,234,96,4 duplicate(achievement_tr) #tr120019 4_TREASURE_BOX
+moc_fild13,290,207,4 duplicate(achievement_tr) #tr120020 4_TREASURE_BOX
+moc_fild16,196,108,4 duplicate(achievement_tr) #tr120021 4_TREASURE_BOX
+moc_fild17,269,105,4 duplicate(achievement_tr) #tr120022 4_TREASURE_BOX
+moc_fild18,54,284,4 duplicate(achievement_tr) #tr120023 4_TREASURE_BOX
+pay_fild01,167,243,4 duplicate(achievement_tr) #tr120024 4_TREASURE_BOX
+pay_fild02,105,240,4 duplicate(achievement_tr) #tr120025 4_TREASURE_BOX
+pay_fild03,144,97,4 duplicate(achievement_tr) #tr120026 4_TREASURE_BOX
+pay_fild04,257,95,4 duplicate(achievement_tr) #tr120027 4_TREASURE_BOX
+pay_fild07,365,37,4 duplicate(achievement_tr) #tr120028 4_TREASURE_BOX
+pay_fild08,237,345,4 duplicate(achievement_tr) #tr120029 4_TREASURE_BOX
+pay_fild09,251,42,4 duplicate(achievement_tr) #tr120030 4_TREASURE_BOX
+pay_fild10,196,38,4 duplicate(achievement_tr) #tr120031 4_TREASURE_BOX
+mjolnir_01,47,60,4 duplicate(achievement_tr) #tr120032 4_TREASURE_BOX
+mjolnir_02,77,49,4 duplicate(achievement_tr) #tr120033 4_TREASURE_BOX
+mjolnir_03,190,200,4 duplicate(achievement_tr) #tr120034 4_TREASURE_BOX
+mjolnir_04,201,146,4 duplicate(achievement_tr) #tr120035 4_TREASURE_BOX
+mjolnir_05,43,327,4 duplicate(achievement_tr) #tr120036 4_TREASURE_BOX
+mjolnir_06,162,290,4 duplicate(achievement_tr) #tr120037 4_TREASURE_BOX
+mjolnir_07,321,127,4 duplicate(achievement_tr) #tr120038 4_TREASURE_BOX
+mjolnir_08,175,225,4 duplicate(achievement_tr) #tr120039 4_TREASURE_BOX
+mjolnir_09,299,123,4 duplicate(achievement_tr) #tr120040 4_TREASURE_BOX
+mjolnir_10,353,371,4 duplicate(achievement_tr) #tr120041 4_TREASURE_BOX
+mjolnir_11,325,178,4 duplicate(achievement_tr) #tr120042 4_TREASURE_BOX
+mjolnir_12,110,298,4 duplicate(achievement_tr) #tr120043 4_TREASURE_BOX
+cmd_fild01,112,200,4 duplicate(achievement_tr) #tr120044 4_TREASURE_BOX
+cmd_fild02,86,94,4 duplicate(achievement_tr) #tr120045 4_TREASURE_BOX
+cmd_fild03,144,190,4 duplicate(achievement_tr) #tr120046 4_TREASURE_BOX
+cmd_fild04,151,191,4 duplicate(achievement_tr) #tr120047 4_TREASURE_BOX
+cmd_fild06,221,108,4 duplicate(achievement_tr) #tr120048 4_TREASURE_BOX
+cmd_fild07,269,322,4 duplicate(achievement_tr) #tr120049 4_TREASURE_BOX
+cmd_fild08,181,136,4 duplicate(achievement_tr) #tr120050 4_TREASURE_BOX
+cmd_fild09,211,266,4 duplicate(achievement_tr) #tr120051 4_TREASURE_BOX
+yuno_fild01,284,138,4 duplicate(achievement_tr) #tr120052 4_TREASURE_BOX
+yuno_fild12,76,268,4 duplicate(achievement_tr) #tr120053 4_TREASURE_BOX
+yuno_fild02,142,191,4 duplicate(achievement_tr) #tr120054 4_TREASURE_BOX
+yuno_fild03,135,329,4 duplicate(achievement_tr) #tr120055 4_TREASURE_BOX
+yuno_fild04,35,369,4 duplicate(achievement_tr) #tr120056 4_TREASURE_BOX
+yuno_fild06,262,220,4 duplicate(achievement_tr) #tr120057 4_TREASURE_BOX
+yuno_fild07,113,339,4 duplicate(achievement_tr) #tr120058 4_TREASURE_BOX
+yuno_fild08,179,209,4 duplicate(achievement_tr) #tr120059 4_TREASURE_BOX
+yuno_fild09,166,228,4 duplicate(achievement_tr) #tr120060 4_TREASURE_BOX
+yuno_fild11,141,357,4 duplicate(achievement_tr) #tr120061 4_TREASURE_BOX
+hu_fild01,347,312,4 duplicate(achievement_tr) #tr120062 4_TREASURE_BOX
+hu_fild02,80,152,4 duplicate(achievement_tr) #tr120063 4_TREASURE_BOX
+hu_fild04,322,313,4 duplicate(achievement_tr) #tr120064 4_TREASURE_BOX
+hu_fild06,204,228,4 duplicate(achievement_tr) #tr120065 4_TREASURE_BOX
+hu_fild05,197,210,4 duplicate(achievement_tr) #tr120066 4_TREASURE_BOX
+ein_fild01,266,277,4 duplicate(achievement_tr) #tr120067 4_TREASURE_BOX
+ein_fild03,99,332,4 duplicate(achievement_tr) #tr120068 4_TREASURE_BOX
+ein_fild04,334,305,4 duplicate(achievement_tr) #tr120069 4_TREASURE_BOX
+ein_fild05,337,233,4 duplicate(achievement_tr) #tr120070 4_TREASURE_BOX
+ein_fild06,174,245,4 duplicate(achievement_tr) #tr120071 4_TREASURE_BOX
+ein_fild07,188,50,4 duplicate(achievement_tr) #tr120072 4_TREASURE_BOX
+ein_fild08,258,78,4 duplicate(achievement_tr) #tr120073 4_TREASURE_BOX
+ein_fild09,330,76,4 duplicate(achievement_tr) #tr120074 4_TREASURE_BOX
+lhz_fild01,118,73,4 duplicate(achievement_tr) #tr120075 4_TREASURE_BOX
+lhz_fild02,239,243,4 duplicate(achievement_tr) #tr120076 4_TREASURE_BOX
+lhz_fild03,313,132,4 duplicate(achievement_tr) #tr120077 4_TREASURE_BOX
+ra_fild01,138,166,4 duplicate(achievement_tr) #tr120078 4_TREASURE_BOX
+ra_fild03,224,275,4 duplicate(achievement_tr) #tr120079 4_TREASURE_BOX
+ra_fild08,326,45,4 duplicate(achievement_tr) #tr120080 4_TREASURE_BOX
+ra_fild12,352,165,4 duplicate(achievement_tr) #tr120081 4_TREASURE_BOX
+ra_fild04,92,302,4 duplicate(achievement_tr) #tr120082 4_TREASURE_BOX
+ra_fild05,59,59,4 duplicate(achievement_tr) #tr120083 4_TREASURE_BOX
+ra_fild06,362,230,4 duplicate(achievement_tr) #tr120084 4_TREASURE_BOX
+ve_fild01,180,234,4 duplicate(achievement_tr) #tr120085 4_TREASURE_BOX
+ve_fild02,65,194,4 duplicate(achievement_tr) #tr120086 4_TREASURE_BOX
+ve_fild03,197,242,4 duplicate(achievement_tr) #tr120087 4_TREASURE_BOX
+ve_fild04,288,279,4 duplicate(achievement_tr) #tr120088 4_TREASURE_BOX
+ve_fild07,33,113,4 duplicate(achievement_tr) #tr120089 4_TREASURE_BOX
+ecl_fild01,234,217,4 duplicate(achievement_tr) #tr120090 4_TREASURE_BOX
+bif_fild02,155,322,4 duplicate(achievement_tr) #tr120091 4_TREASURE_BOX
+bif_fild01,147,64,4 duplicate(achievement_tr) #tr120092 4_TREASURE_BOX
+spl_fild01,335,315,4 duplicate(achievement_tr) #tr120093 4_TREASURE_BOX
+spl_fild02,153,358,4 duplicate(achievement_tr) #tr120094 4_TREASURE_BOX
+spl_fild03,61,286,4 duplicate(achievement_tr) #tr120095 4_TREASURE_BOX
+man_fild01,41,172,4 duplicate(achievement_tr) #tr120096 4_TREASURE_BOX
+man_fild02,268,357,4 duplicate(achievement_tr) #tr120097 4_TREASURE_BOX
+man_fild03,198,91,4 duplicate(achievement_tr) #tr120098 4_TREASURE_BOX
+dic_fild01,227,82,4 duplicate(achievement_tr) #tr120099 4_TREASURE_BOX
+dic_fild02,147,196,4 duplicate(achievement_tr) #tr120100 4_TREASURE_BOX
+ama_fild01,187,337,4 duplicate(achievement_tr) #tr120101 4_TREASURE_BOX
+gon_fild01,171,332,4 duplicate(achievement_tr) #tr120102 4_TREASURE_BOX
+lou_fild01,104,232,4 duplicate(achievement_tr) #tr120103 4_TREASURE_BOX
+ayo_fild01,289,70,4 duplicate(achievement_tr) #tr120104 4_TREASURE_BOX
+mosk_fild02,176,77,4 duplicate(achievement_tr) #tr120105 4_TREASURE_BOX
+bra_fild01,99,193,4 duplicate(achievement_tr) #tr120106 4_TREASURE_BOX
+dew_fild01,175,287,4 duplicate(achievement_tr) #tr120107 4_TREASURE_BOX
+ma_fild01,308,206,4 duplicate(achievement_tr) #tr120108 4_TREASURE_BOX
+ma_fild02,246,323,4 duplicate(achievement_tr) #tr120109 4_TREASURE_BOX
+abbey03,27,72,4 duplicate(achievement_tr) #tr120110 4_TREASURE_BOX
+abyss_03,86,55,4 duplicate(achievement_tr) #tr120111 4_TREASURE_BOX
+alde_dun04,90,107,4 duplicate(achievement_tr) #tr120112 4_TREASURE_BOX
+ama_dun03,60,163,4 duplicate(achievement_tr) #tr120113 4_TREASURE_BOX
+anthell02,253,41,4 duplicate(achievement_tr) #tr120114 4_TREASURE_BOX
+ayo_dun02,150,256,4 duplicate(achievement_tr) #tr120115 4_TREASURE_BOX
+beach_dun3,102,71,4 duplicate(achievement_tr) #tr120116 4_TREASURE_BOX
+bra_dun02,171,121,4 duplicate(achievement_tr) #tr120117 4_TREASURE_BOX
+c_tower4,37,158,4 duplicate(achievement_tr) #tr120118 4_TREASURE_BOX
+dew_dun02,87,272,4 duplicate(achievement_tr) #tr120119 4_TREASURE_BOX
+dic_dun03,216,211,4 duplicate(achievement_tr) #tr120120 4_TREASURE_BOX
+ecl_tdun04,37,37,4 duplicate(achievement_tr) #tr120121 4_TREASURE_BOX
+ein_dun02,31,255,4 duplicate(achievement_tr) #tr120122 4_TREASURE_BOX
+gef_dun02,222,163,4 duplicate(achievement_tr) #tr120123 4_TREASURE_BOX
+gl_sew04,288,6,4 duplicate(achievement_tr) #tr120124 4_TREASURE_BOX
+gl_knt02,126,235,4 duplicate(achievement_tr) #tr120125 4_TREASURE_BOX
+gl_cas02,53,151,4 duplicate(achievement_tr) #tr120126 4_TREASURE_BOX
+gl_prison1,126,158,4 duplicate(achievement_tr) #tr120127 4_TREASURE_BOX
+gon_dun03,166,231,4 duplicate(achievement_tr) #tr120128 4_TREASURE_BOX
+ice_dun03,45,261,4 duplicate(achievement_tr) #tr120129 4_TREASURE_BOX
+in_sphinx5,154,107,4 duplicate(achievement_tr) #tr120130 4_TREASURE_BOX
+iz_dun05,64,223,4 duplicate(achievement_tr) #tr120131 4_TREASURE_BOX
+kh_dun02,70,107,4 duplicate(achievement_tr) #tr120132 4_TREASURE_BOX
+lhz_dun03,240,221,4 duplicate(achievement_tr) #tr120133 4_TREASURE_BOX
+lou_dun03,29,228,4 duplicate(achievement_tr) #tr120134 4_TREASURE_BOX
+mag_dun02,197,77,4 duplicate(achievement_tr) #tr120135 4_TREASURE_BOX
+mjo_dun03,76,220,4 duplicate(achievement_tr) #tr120136 4_TREASURE_BOX
+moc_pryd06,102,121,4 duplicate(achievement_tr) #tr120137 4_TREASURE_BOX
+orcsdun02,31,72,4 duplicate(achievement_tr) #tr120138 4_TREASURE_BOX
+pay_dun04,120,124,4 duplicate(achievement_tr) #tr120139 4_TREASURE_BOX
+prt_maze03,11,14,4 duplicate(achievement_tr) #tr120140 4_TREASURE_BOX
+prt_sewb4,19,183,4 duplicate(achievement_tr) #tr120141 4_TREASURE_BOX
+tha_t06,150,176,4 duplicate(achievement_tr) #tr120142 4_TREASURE_BOX
+thor_v03,220,221,4 duplicate(achievement_tr) #tr120143 4_TREASURE_BOX
+treasure02,19,142,4 duplicate(achievement_tr) #tr120144 4_TREASURE_BOX
+tur_dun04,134,130,4 duplicate(achievement_tr) #tr120145 4_TREASURE_BOX
+xmas_dun02,120,224,4 duplicate(achievement_tr) #tr120146 4_TREASURE_BOX
+
+// Hidden Warps
+prt_fild01,146,126,0 duplicate(achievement_wp) #wp120001 HIDDEN_WARP_NPC,5,5
+prt_fild02,142,221,0 duplicate(achievement_wp) #wp120002 HIDDEN_WARP_NPC,5,5
+prt_fild03,172,139,0 duplicate(achievement_wp) #wp120003 HIDDEN_WARP_NPC,5,5
+prt_fild04,118,57,0 duplicate(achievement_wp) #wp120004 HIDDEN_WARP_NPC,5,5
+prt_fild05,189,291,0 duplicate(achievement_wp) #wp120005 HIDDEN_WARP_NPC,5,5
+prt_fild06,298,304,0 duplicate(achievement_wp) #wp120006 HIDDEN_WARP_NPC,5,5
+prt_fild07,44,104,0 duplicate(achievement_wp) #wp120007 HIDDEN_WARP_NPC,5,5
+prt_fild08,203,222,0 duplicate(achievement_wp) #wp120008 HIDDEN_WARP_NPC,5,5
+prt_fild09,37,354,0 duplicate(achievement_wp) #wp120009 HIDDEN_WARP_NPC,5,5
+prt_fild10,177,206,0 duplicate(achievement_wp) #wp120010 HIDDEN_WARP_NPC,5,5
+gef_fild00,73,119,0 duplicate(achievement_wp) #wp120011 HIDDEN_WARP_NPC,5,5
+gef_fild01,222,224,0 duplicate(achievement_wp) #wp120012 HIDDEN_WARP_NPC,5,5
+gef_fild05,202,292,0 duplicate(achievement_wp) #wp120013 HIDDEN_WARP_NPC,5,5
+gef_fild06,279,105,0 duplicate(achievement_wp) #wp120014 HIDDEN_WARP_NPC,5,5
+gef_fild07,184,249,0 duplicate(achievement_wp) #wp120015 HIDDEN_WARP_NPC,5,5
+gef_fild09,170,73,0 duplicate(achievement_wp) #wp120016 HIDDEN_WARP_NPC,5,5
+gef_fild11,239,248,0 duplicate(achievement_wp) #wp120017 HIDDEN_WARP_NPC,5,5
+moc_fild11,188,218,0 duplicate(achievement_wp) #wp120018 HIDDEN_WARP_NPC,5,5
+moc_fild12,234,96,0 duplicate(achievement_wp) #wp120019 HIDDEN_WARP_NPC,5,5
+moc_fild13,290,207,0 duplicate(achievement_wp) #wp120020 HIDDEN_WARP_NPC,5,5
+moc_fild16,196,108,0 duplicate(achievement_wp) #wp120021 HIDDEN_WARP_NPC,5,5
+moc_fild17,269,105,0 duplicate(achievement_wp) #wp120022 HIDDEN_WARP_NPC,5,5
+moc_fild18,54,284,0 duplicate(achievement_wp) #wp120023 HIDDEN_WARP_NPC,5,5
+pay_fild01,167,243,0 duplicate(achievement_wp) #wp120024 HIDDEN_WARP_NPC,5,5
+pay_fild02,105,240,0 duplicate(achievement_wp) #wp120025 HIDDEN_WARP_NPC,5,5
+pay_fild03,144,97,0 duplicate(achievement_wp) #wp120026 HIDDEN_WARP_NPC,5,5
+pay_fild04,257,95,0 duplicate(achievement_wp) #wp120027 HIDDEN_WARP_NPC,5,5
+pay_fild07,365,37,0 duplicate(achievement_wp) #wp120028 HIDDEN_WARP_NPC,5,5
+pay_fild08,237,345,0 duplicate(achievement_wp) #wp120029 HIDDEN_WARP_NPC,5,5
+pay_fild09,251,42,0 duplicate(achievement_wp) #wp120030 HIDDEN_WARP_NPC,5,5
+pay_fild10,196,38,0 duplicate(achievement_wp) #wp120031 HIDDEN_WARP_NPC,5,5
+mjolnir_01,47,60,0 duplicate(achievement_wp) #wp120032 HIDDEN_WARP_NPC,5,5
+mjolnir_02,77,49,0 duplicate(achievement_wp) #wp120033 HIDDEN_WARP_NPC,5,5
+mjolnir_03,190,200,0 duplicate(achievement_wp) #wp120034 HIDDEN_WARP_NPC,5,5
+mjolnir_04,201,146,0 duplicate(achievement_wp) #wp120035 HIDDEN_WARP_NPC,5,5
+mjolnir_05,43,327,0 duplicate(achievement_wp) #wp120036 HIDDEN_WARP_NPC,5,5
+mjolnir_06,162,290,0 duplicate(achievement_wp) #wp120037 HIDDEN_WARP_NPC,5,5
+mjolnir_07,321,127,0 duplicate(achievement_wp) #wp120038 HIDDEN_WARP_NPC,5,5
+mjolnir_08,175,225,0 duplicate(achievement_wp) #wp120039 HIDDEN_WARP_NPC,5,5
+mjolnir_09,299,123,0 duplicate(achievement_wp) #wp120040 HIDDEN_WARP_NPC,5,5
+mjolnir_10,353,371,0 duplicate(achievement_wp) #wp120041 HIDDEN_WARP_NPC,5,5
+mjolnir_11,325,178,0 duplicate(achievement_wp) #wp120042 HIDDEN_WARP_NPC,5,5
+mjolnir_12,110,298,0 duplicate(achievement_wp) #wp120043 HIDDEN_WARP_NPC,5,5
+cmd_fild01,112,200,0 duplicate(achievement_wp) #wp120044 HIDDEN_WARP_NPC,5,5
+cmd_fild02,86,94,0 duplicate(achievement_wp) #wp120045 HIDDEN_WARP_NPC,5,5
+cmd_fild03,144,190,0 duplicate(achievement_wp) #wp120046 HIDDEN_WARP_NPC,5,5
+cmd_fild04,151,191,0 duplicate(achievement_wp) #wp120047 HIDDEN_WARP_NPC,5,5
+cmd_fild06,221,108,0 duplicate(achievement_wp) #wp120048 HIDDEN_WARP_NPC,5,5
+cmd_fild07,269,322,0 duplicate(achievement_wp) #wp120049 HIDDEN_WARP_NPC,5,5
+cmd_fild08,181,136,0 duplicate(achievement_wp) #wp120050 HIDDEN_WARP_NPC,5,5
+cmd_fild09,211,266,0 duplicate(achievement_wp) #wp120051 HIDDEN_WARP_NPC,5,5
+yuno_fild01,284,138,0 duplicate(achievement_wp) #wp120052 HIDDEN_WARP_NPC,5,5
+yuno_fild12,76,268,0 duplicate(achievement_wp) #wp120053 HIDDEN_WARP_NPC,5,5
+yuno_fild02,142,191,0 duplicate(achievement_wp) #wp120054 HIDDEN_WARP_NPC,5,5
+yuno_fild03,135,329,0 duplicate(achievement_wp) #wp120055 HIDDEN_WARP_NPC,5,5
+yuno_fild04,35,369,0 duplicate(achievement_wp) #wp120056 HIDDEN_WARP_NPC,5,5
+yuno_fild06,262,220,0 duplicate(achievement_wp) #wp120057 HIDDEN_WARP_NPC,5,5
+yuno_fild07,113,339,0 duplicate(achievement_wp) #wp120058 HIDDEN_WARP_NPC,5,5
+yuno_fild08,179,209,0 duplicate(achievement_wp) #wp120059 HIDDEN_WARP_NPC,5,5
+yuno_fild09,166,228,0 duplicate(achievement_wp) #wp120060 HIDDEN_WARP_NPC,5,5
+yuno_fild11,141,357,0 duplicate(achievement_wp) #wp120061 HIDDEN_WARP_NPC,5,5
+hu_fild01,347,312,0 duplicate(achievement_wp) #wp120062 HIDDEN_WARP_NPC,5,5
+hu_fild02,80,152,0 duplicate(achievement_wp) #wp120063 HIDDEN_WARP_NPC,5,5
+hu_fild04,322,313,0 duplicate(achievement_wp) #wp120064 HIDDEN_WARP_NPC,5,5
+hu_fild06,204,228,0 duplicate(achievement_wp) #wp120065 HIDDEN_WARP_NPC,5,5
+hu_fild05,197,210,0 duplicate(achievement_wp) #wp120066 HIDDEN_WARP_NPC,5,5
+ein_fild01,266,277,0 duplicate(achievement_wp) #wp120067 HIDDEN_WARP_NPC,5,5
+ein_fild03,99,332,0 duplicate(achievement_wp) #wp120068 HIDDEN_WARP_NPC,5,5
+ein_fild04,334,305,0 duplicate(achievement_wp) #wp120069 HIDDEN_WARP_NPC,5,5
+ein_fild05,337,233,0 duplicate(achievement_wp) #wp120070 HIDDEN_WARP_NPC,5,5
+ein_fild06,174,245,0 duplicate(achievement_wp) #wp120071 HIDDEN_WARP_NPC,5,5
+ein_fild07,188,50,0 duplicate(achievement_wp) #wp120072 HIDDEN_WARP_NPC,5,5
+ein_fild08,258,78,0 duplicate(achievement_wp) #wp120073 HIDDEN_WARP_NPC,5,5
+ein_fild09,330,76,0 duplicate(achievement_wp) #wp120074 HIDDEN_WARP_NPC,5,5
+lhz_fild01,118,73,0 duplicate(achievement_wp) #wp120075 HIDDEN_WARP_NPC,5,5
+lhz_fild02,239,243,0 duplicate(achievement_wp) #wp120076 HIDDEN_WARP_NPC,5,5
+lhz_fild03,313,132,0 duplicate(achievement_wp) #wp120077 HIDDEN_WARP_NPC,5,5
+ra_fild01,138,166,0 duplicate(achievement_wp) #wp120078 HIDDEN_WARP_NPC,5,5
+ra_fild03,224,275,0 duplicate(achievement_wp) #wp120079 HIDDEN_WARP_NPC,5,5
+ra_fild08,326,45,0 duplicate(achievement_wp) #wp120080 HIDDEN_WARP_NPC,5,5
+ra_fild12,352,165,0 duplicate(achievement_wp) #wp120081 HIDDEN_WARP_NPC,5,5
+ra_fild04,92,302,0 duplicate(achievement_wp) #wp120082 HIDDEN_WARP_NPC,5,5
+ra_fild05,59,59,0 duplicate(achievement_wp) #wp120083 HIDDEN_WARP_NPC,5,5
+ra_fild06,362,230,0 duplicate(achievement_wp) #wp120084 HIDDEN_WARP_NPC,5,5
+ve_fild01,180,234,0 duplicate(achievement_wp) #wp120085 HIDDEN_WARP_NPC,5,5
+ve_fild02,65,194,0 duplicate(achievement_wp) #wp120086 HIDDEN_WARP_NPC,5,5
+ve_fild03,197,242,0 duplicate(achievement_wp) #wp120087 HIDDEN_WARP_NPC,5,5
+ve_fild04,288,279,0 duplicate(achievement_wp) #wp120088 HIDDEN_WARP_NPC,5,5
+ve_fild07,33,113,0 duplicate(achievement_wp) #wp120089 HIDDEN_WARP_NPC,5,5
+ecl_fild01,234,217,0 duplicate(achievement_wp) #wp120090 HIDDEN_WARP_NPC,5,5
+bif_fild02,155,322,0 duplicate(achievement_wp) #wp120091 HIDDEN_WARP_NPC,5,5
+bif_fild01,147,64,0 duplicate(achievement_wp) #wp120092 HIDDEN_WARP_NPC,5,5
+spl_fild01,335,315,0 duplicate(achievement_wp) #wp120093 HIDDEN_WARP_NPC,5,5
+spl_fild02,153,358,0 duplicate(achievement_wp) #wp120094 HIDDEN_WARP_NPC,5,5
+spl_fild03,61,286,0 duplicate(achievement_wp) #wp120095 HIDDEN_WARP_NPC,5,5
+man_fild01,41,172,0 duplicate(achievement_wp) #wp120096 HIDDEN_WARP_NPC,5,5
+man_fild02,268,357,0 duplicate(achievement_wp) #wp120097 HIDDEN_WARP_NPC,5,5
+man_fild03,198,91,0 duplicate(achievement_wp) #wp120098 HIDDEN_WARP_NPC,5,5
+dic_fild01,227,82,0 duplicate(achievement_wp) #wp120099 HIDDEN_WARP_NPC,5,5
+dic_fild02,147,196,0 duplicate(achievement_wp) #wp120100 HIDDEN_WARP_NPC,5,5
+ama_fild01,187,337,0 duplicate(achievement_wp) #wp120101 HIDDEN_WARP_NPC,5,5
+gon_fild01,171,332,0 duplicate(achievement_wp) #wp120102 HIDDEN_WARP_NPC,5,5
+lou_fild01,104,232,0 duplicate(achievement_wp) #wp120103 HIDDEN_WARP_NPC,5,5
+ayo_fild01,289,70,0 duplicate(achievement_wp) #wp120104 HIDDEN_WARP_NPC,5,5
+mosk_fild02,176,77,0 duplicate(achievement_wp) #wp120105 HIDDEN_WARP_NPC,5,5
+bra_fild01,99,193,0 duplicate(achievement_wp) #wp120106 HIDDEN_WARP_NPC,5,5
+dew_fild01,175,287,0 duplicate(achievement_wp) #wp120107 HIDDEN_WARP_NPC,5,5
+ma_fild01,308,206,0 duplicate(achievement_wp) #wp120108 HIDDEN_WARP_NPC,5,5
+ma_fild02,246,323,0 duplicate(achievement_wp) #wp120109 HIDDEN_WARP_NPC,5,5
+abbey03,27,72,0 duplicate(achievement_wp) #wp120110 HIDDEN_WARP_NPC,5,5
+abyss_03,86,55,0 duplicate(achievement_wp) #wp120111 HIDDEN_WARP_NPC,5,5
+alde_dun04,90,107,0 duplicate(achievement_wp) #wp120112 HIDDEN_WARP_NPC,5,5
+ama_dun03,60,163,0 duplicate(achievement_wp) #wp120113 HIDDEN_WARP_NPC,5,5
+anthell02,253,41,0 duplicate(achievement_wp) #wp120114 HIDDEN_WARP_NPC,5,5
+ayo_dun02,150,256,0 duplicate(achievement_wp) #wp120115 HIDDEN_WARP_NPC,5,5
+beach_dun3,102,71,0 duplicate(achievement_wp) #wp120116 HIDDEN_WARP_NPC,5,5
+bra_dun02,171,121,0 duplicate(achievement_wp) #wp120117 HIDDEN_WARP_NPC,5,5
+c_tower4,37,158,0 duplicate(achievement_wp) #wp120118 HIDDEN_WARP_NPC,5,5
+dew_dun02,87,272,0 duplicate(achievement_wp) #wp120119 HIDDEN_WARP_NPC,5,5
+dic_dun03,216,211,0 duplicate(achievement_wp) #wp120120 HIDDEN_WARP_NPC,5,5
+ecl_tdun04,37,37,0 duplicate(achievement_wp) #wp120121 HIDDEN_WARP_NPC,5,5
+ein_dun02,31,255,0 duplicate(achievement_wp) #wp120122 HIDDEN_WARP_NPC,5,5
+gef_dun02,222,163,0 duplicate(achievement_wp) #wp120123 HIDDEN_WARP_NPC,5,5
+gl_sew04,288,6,0 duplicate(achievement_wp) #wp120124 HIDDEN_WARP_NPC,5,5
+gl_knt02,126,235,0 duplicate(achievement_wp) #wp120125 HIDDEN_WARP_NPC,5,5
+gl_cas02,53,151,0 duplicate(achievement_wp) #wp120126 HIDDEN_WARP_NPC,5,5
+gl_prison1,126,158,0 duplicate(achievement_wp) #wp120127 HIDDEN_WARP_NPC,5,5
+gon_dun03,166,231,0 duplicate(achievement_wp) #wp120128 HIDDEN_WARP_NPC,5,5
+ice_dun03,45,261,0 duplicate(achievement_wp) #wp120129 HIDDEN_WARP_NPC,5,5
+in_sphinx5,154,107,0 duplicate(achievement_wp) #wp120130 HIDDEN_WARP_NPC,5,5
+iz_dun05,64,223,0 duplicate(achievement_wp) #wp120131 HIDDEN_WARP_NPC,5,5
+kh_dun02,70,107,0 duplicate(achievement_wp) #wp120132 HIDDEN_WARP_NPC,5,5
+lhz_dun03,240,221,0 duplicate(achievement_wp) #wp120133 HIDDEN_WARP_NPC,5,5
+lou_dun03,29,228,0 duplicate(achievement_wp) #wp120134 HIDDEN_WARP_NPC,5,5
+mag_dun02,197,77,0 duplicate(achievement_wp) #wp120135 HIDDEN_WARP_NPC,5,5
+mjo_dun03,76,220,0 duplicate(achievement_wp) #wp120136 HIDDEN_WARP_NPC,5,5
+moc_pryd06,102,121,0 duplicate(achievement_wp) #wp120137 HIDDEN_WARP_NPC,5,5
+orcsdun02,31,72,0 duplicate(achievement_wp) #wp120138 HIDDEN_WARP_NPC,5,5
+pay_dun04,120,124,0 duplicate(achievement_wp) #wp120139 HIDDEN_WARP_NPC,5,5
+prt_maze03,11,14,0 duplicate(achievement_wp) #wp120140 HIDDEN_WARP_NPC,5,5
+prt_sewb4,19,183,0 duplicate(achievement_wp) #wp120141 HIDDEN_WARP_NPC,5,5
+tha_t06,150,176,0 duplicate(achievement_wp) #wp120142 HIDDEN_WARP_NPC,5,5
+thor_v03,220,221,0 duplicate(achievement_wp) #wp120143 HIDDEN_WARP_NPC,5,5
+treasure02,19,142,0 duplicate(achievement_wp) #wp120144 HIDDEN_WARP_NPC,5,5
+tur_dun04,134,130,0 duplicate(achievement_wp) #wp120145 HIDDEN_WARP_NPC,5,5
+xmas_dun02,120,224,0 duplicate(achievement_wp) #wp120146 HIDDEN_WARP_NPC,5,5
diff --git a/npc/re/scripts.conf b/npc/re/scripts.conf
index 2499d99b2..5ecf6b741 100644
--- a/npc/re/scripts.conf
+++ b/npc/re/scripts.conf
@@ -136,6 +136,7 @@
"npc/re/other/turbo_track.txt",
// - Clan System
"npc/re/other/clans.txt",
+"npc/re/other/achievement_treasures.txt",
//================= Quests ================================================
// - Eden Group -------------------------------------------------
diff --git a/npc/re/scripts_jobs.conf b/npc/re/scripts_jobs.conf
index f112334de..6dd99e813 100644
--- a/npc/re/scripts_jobs.conf
+++ b/npc/re/scripts_jobs.conf
@@ -40,6 +40,7 @@
"npc/re/jobs/1-1e/taekwon.txt",
// - 2e
"npc/re/jobs/2e/kagerou_oboro.txt",
+"npc/re/jobs/2e/rebellion.txt",
// - 3-1
"npc/re/jobs/3-1/archbishop.txt",
"npc/re/jobs/3-1/mechanic.txt",
diff --git a/npc/scripts_custom.conf b/npc/scripts_custom.conf
index 4e346238f..bf970b8ca 100644
--- a/npc/scripts_custom.conf
+++ b/npc/scripts_custom.conf
@@ -51,6 +51,7 @@
//"npc/custom/item_signer.txt",
//"npc/custom/woe_controller.txt",
//"npc/custom/bartershop.txt",
+//"npc/custom/expandedbartershop.txt",
//================= Other Scripts =========================================
// -- MVP Arena