diff --git a/npc/merchants/quivers.txt b/npc/merchants/quivers.txt index 382a22c293..0eb3cc092e 100644 --- a/npc/merchants/quivers.txt +++ b/npc/merchants/quivers.txt @@ -9,11 +9,11 @@ //===== Description: ========================================= //= [Official Conversion] //= Turns arrows into Arrow Quivers. -// Breakdown of Subroutine "S_BuyQuiver" -// arg(0): Type of Arrow to be packaged (item ID). -// arg(1): How many of each 'getarg(0)' arrow per quiver. -// arg(2): The cost of making a 'getarg(0)' quiver. -// arg(3): The quiver given by the NPC (item ID). +//= Breakdown of Subroutine "S_BuyQuiver" +//= arg(0): Type of Arrow to be packaged (item ID). +//= arg(1): How many of each 'getarg(0)' arrow per quiver. +//= arg(2): The cost of making a 'getarg(0)' quiver. +//= arg(3): The quiver given by the NPC (item ID). //===== Additional Comments: ================================= //= 07/06/05 : Added 1st Version. [Muad_Dib] //= Converted to rAthena format by Dr.Evil @@ -21,7 +21,7 @@ //= Fixed a few spelling errors. [Nexon] //= 1.1 Added Holy Arrow Quivers [Playtester] //= 1.2 Rescripted to Aegis 10.3 standards. [L0ne_W0lf] -//= Removed "Holy Arrows" from the list. +//= Removed "Holy Arrows" from the list. //============================================================ payon_in01,5,134,5 script Inventor Jaax 89,{ diff --git a/npc/other/marriage.txt b/npc/other/marriage.txt index a354bec2da..de083a6663 100644 --- a/npc/other/marriage.txt +++ b/npc/other/marriage.txt @@ -3,7 +3,7 @@ //===== By: ================================================== //= L0ne_W0lf //===== Current Version: ===================================== -//= 1.2 +//= 1.3 //===== Compatible With: ===================================== //= rAthena SVN //===== Description: ========================================= @@ -13,12 +13,14 @@ //= Currently does not support same-sex marriages. //= Old script located in: npc/custom/marriage.txt //= - Variable in use: wedding_sign (max 1) -//= - Variable in use: $Wedding (max 1) -//= - Variab;e in use: $wed_groom$ $wed_bride$ +//= - Variable in use: $@wedding (max 1) +//= - Variable in use: $@wed_groom$ $@wed_bride$ //===== Additional Comments: ================================= //= 1.0 First version. [L0ne_W0lf] //= 1.1 Fixed a missing ")" [L0ne_W0lf] //= 1.2 Corrected duration of Wedding status. [L0ne_W0lf] +//= 1.3 Changed permanent global variables to temporary ones. [Euphy] +//= Added GM NPCs (commented). //============================================================ prt_church,97,100,4 script Wedding Staff#w 71,{ @@ -561,13 +563,13 @@ prt_church,100,128,4 script Bishop#w 60,{ } if (!getpartnerid()) { - if (!$wedding) { + if (!$@wedding) { if (wedding_sign == 1) { getpartymember(getcharid(1)); set .@partymembercount,$@partymembercount; if (.@partymembercount == 2) { if (sex) { - set $wedding,1; + set $@wedding,1; initnpctimer; mes "[Vomars]"; mes "Young lovers, please"; @@ -585,23 +587,23 @@ prt_church,100,128,4 script Bishop#w 60,{ mes "her and protect her. Now, may"; mes "I know the name of your bride?"; next; - input $wed_bride$; + input $@wed_bride$; mes "[Vomars]"; mes "Mr. " + strcharinfo(0) + "..."; mes "Do you swear on your life"; mes "that you will forever cherish"; mes "and care for your bride,"; - mes "Miss " + $wed_bride$ + "?"; + mes "Miss " + $@wed_bride$ + "?"; next; select("I do."); - set $wed_groom$,strcharinfo(0); + set $@wed_groom$,strcharinfo(0); mes "[Vomars]"; mes "Now, it is time for"; mes "your bride to make"; mes "her wedding vows."; mes "If she will come forward..."; close2; - mapannounce "prt_church","The groom, Mr. " + strcharinfo(0) + ", has made his vows to Miss " + $wed_bride$ + "...",bc_map; + mapannounce "prt_church","The groom, Mr. " + strcharinfo(0) + ", has made his vows to Miss " + $@wed_bride$ + "...",bc_map; cutin "",255; end; } @@ -632,13 +634,13 @@ prt_church,100,128,4 script Bishop#w 60,{ mes "to prepare for marriage."; goto L_End; } - else if ($wedding == 1) { + else if ($@wedding == 1) { if (wedding_sign == 1) { getpartymember(getcharid(1)); set .@partymembercount,$@partymembercount; if (.@partymembercount == 2) { if (sex == 0) { - if (strcharinfo(0) == $wed_bride$) { + if (strcharinfo(0) == $@wed_bride$) { mes "[Vomars]"; mes "Young lovers, please"; mes "remember this moment for"; @@ -646,11 +648,11 @@ prt_church,100,128,4 script Bishop#w 60,{ mes "and joy. May the love you share"; mes "grow with each passing day."; next; - mapannounce "prt_church","Let's hear what the bride, Miss "+$wed_bride$+", has to say...",bc_map; + mapannounce "prt_church","Let's hear what the bride, Miss "+$@wed_bride$+", has to say...",bc_map; mes "[Vomars]"; - mes "Miss "+$wed_bride$+"..."; + mes "Miss "+$@wed_bride$+"..."; mes "Do you swear to stay"; - mes "true to "+$wed_groom$+","; + mes "true to "+$@wed_groom$+","; mes "to be by his side, no matter"; mes "what the dangers may be?"; next; @@ -658,12 +660,12 @@ prt_church,100,128,4 script Bishop#w 60,{ cutin "wedding_bomars03",2; mapannounce "prt_church","Next couple, please proceed...",bc_map; mes "[Vomars]"; - mes "So "+$wed_groom$; + mes "So "+$@wed_groom$; mes "isn't the one you"; mes "want to marry? Hmm."; mes "I'm truly sorry for this"; mes "misunderstanding..."; - set $wedding,0; + set $@wedding,0; close2; stopnpctimer; cutin "",255; @@ -672,25 +674,25 @@ prt_church,100,128,4 script Bishop#w 60,{ mes "[Vomars]"; mes "Do you truly swear"; mes "fidelity and patience?"; - mes "Will you marry "+$wed_groom$+"?"; + mes "Will you marry "+$@wed_groom$+"?"; next; if (select("Yes, I do.:^FF0000No.^000000") == 1) { - if (isloggedin(getcharid(3,$wed_groom$))) { - if (marriage($wed_groom$)) { + if (isloggedin(getcharid(3,$@wed_groom$))) { + if (marriage($@wed_groom$)) { //Call Wedding effect wedding; //Give ring to Bride, and change to wedding sprite. sc_start SC_Wedding,3600000,1; getitem 2635,1; //Bride_Ring //Give ring to Groom, and change to wedding sprite. - attachrid(getcharid(3,$wed_groom$)); + attachrid(getcharid(3,$@wed_groom$)); sc_start SC_Wedding,3600000,1; getitem 2634,1; //Bridegroom_Ring detachrid; //Switch Script progression back to Bride - attachrid(getcharid(3,$wed_bride$)); + attachrid(getcharid(3,$@wed_bride$)); cutin "wedding_bomars02",2; - mapannounce "prt_church","I now pronounce you, "+$wed_groom$+" and "+$wed_bride$+", husband and wife.",bc_map; + mapannounce "prt_church","I now pronounce you, "+$@wed_groom$+" and "+$@wed_bride$+", husband and wife.",bc_map; mes "[Vomars]"; mes "By the power invested"; mes "in me as Royal Bishop of"; @@ -702,10 +704,10 @@ prt_church,100,128,4 script Bishop#w 60,{ mes "[Vomars]"; mes "And lastly..."; mes "Always be happy,"; - mes "dear "+$wed_bride$+"..."; - set $wed_groom$,""; - set $wed_bride$,""; - set $wedding,0; + mes "dear "+$@wed_bride$+"..."; + set $@wed_groom$,""; + set $@wed_bride$,""; + set $@wedding,0; close2; stopnpctimer; cutin "",255; @@ -724,7 +726,7 @@ prt_church,100,128,4 script Bishop#w 60,{ } else { cutin "wedding_bomars03",2; - mapannounce "prt_church","Alas! "+$wed_bride$+" has rejected "+$wed_groom$+"'s marriage proposal!",bc_map; + mapannounce "prt_church","Alas! "+$@wed_bride$+" has rejected "+$@wed_groom$+"'s marriage proposal!",bc_map; mes "[Vomars]"; mes "Hm. It seems that"; mes "you've changed your"; @@ -733,9 +735,9 @@ prt_church,100,128,4 script Bishop#w 60,{ mes "must do what your heart"; mes "tells you is right. Now, run!"; } - set $wed_groom$,""; - set $wed_bride$,""; - set $wedding,0; + set $@wed_groom$,""; + set $@wed_bride$,""; + set $@wedding,0; close2; stopnpctimer; cutin "",255; @@ -747,7 +749,7 @@ prt_church,100,128,4 script Bishop#w 60,{ } callsub S_Busy; } - if (strcharinfo(0) == $wed_bride$) { + if (strcharinfo(0) == $@wed_bride$) { mes "[Vomars]"; mes "Hm? It appears that"; mes "Happy Marry still hasn't"; @@ -775,11 +777,11 @@ L_End: end; S_Busy: - if ($wed_groom$ != "" && $wed_bride$ != "") { + if ($@wed_groom$ != "" && $@wed_bride$ != "") { mes "[Vomars]"; mes "The wedding of"; - mes "Miss "+ $wed_bride$ +" and"; - mes "Mister "+ $wed_groom$; + mes "Miss "+ $@wed_bride$ +" and"; + mes "Mister "+ $@wed_groom$; mes "is currently in progress."; mes "Please keep your voice down."; goto L_End; @@ -791,25 +793,171 @@ S_Busy: mes "turn. Thanks for understanding... ^FFFFFF ^000000"; goto L_End; -OnInit: - set $wedding,0; - end; - OnStop: stopnpctimer; end; OnReset: - set $wed_groom$,""; - set $wed_bride$,""; - set $wedding,0; + set $@wed_groom$,""; + set $@wed_bride$,""; + set $@wedding,0; end; OnTimer180000: mapannounce "prt_church","You've responded too slowly... Next couple, please proceed.",bc_map; - set $wed_groom$,""; - set $wed_bride$,""; - set $wedding,0; + donpcevent "Bishop#w::OnReset"; stopnpctimer; end; } + +/* +prt_church,28,178,4 script The King of Midgart 108,{ + mes "[Vomars]"; + mes "Wh-who are you?"; + mes "You must know the"; + mes "password to invoke"; + mes "my awesome powers."; + next; + input .@input; + if (.@input != 1854) { + mes "[Vomars]"; + mes "This is"; + mes "no place for"; + mes "fooling around."; + close2; + warp "prt_church",101,102; + end; + } + mes "[Wedding Switch]"; + mes "Is there a problem with"; + mes "the wedding ceremony?"; + mes "I can reset the Bishop"; + mes "Vomars NPC if you like."; + next; + switch(select("No, thanks:RESET")) { + case 1: + mes "[Wedding Switch]"; + mes "Alright, then."; + mes "However, if the"; + mes "Bishop Vomars"; + mes "NPC is stuck, it may"; + mes "be best to reset it."; + close; + case 2: + donpcevent "Bishop#w::OnStop"; + donpcevent "Bishop#w::OnReset"; + mapannounce "prt_church","You've responded too slowly... Next couple, please proceed.",bc_map; + mes "[Wedding Switch]"; + mes "The Bishop Vomars NPC"; + mes "has now been reactivated."; + mes "It should now be possible"; + mes "to proceed with weddings."; + close; + } +} + +prt_church,20,179,4 script Divorce Staff 71,{ + mes "[Bad Ending]"; + mes "Uh oh..."; + mes "You know I can't"; + mes "do anything for you."; + next; + input .@input; + if (.@input != 1854) { + mes "[Bad Ending]"; + mes "Hmm..."; + mes "You really"; + mes "shouldn't be"; + mes "in this place..."; + close; + } + mes "[Bad Ending]"; + mes "Great, you know the"; + mes "password! Now, did you"; + mes "want me to remove the"; + mes "Wedding Ring in your"; + mes "inventory?"; + next; + switch(select("Drop 1 Wedding Ring.:Keep it.")) { + case 1: + set .@ring, (Sex)?2634:2635; //Bridegroom_Ring, Bride_Ring + if (countitem(.@ring)) { + delitem .@ring,1; + mes "[Bad Ending]"; + mes "It's done!"; + } else { + mes "[Bad Ending]"; + mes "I couldn't find"; + mes "the Wedding Ring..."; + mes "Please make sure"; + mes "that it's not equipped."; + } + close; + case 2: + mes "[Bad Ending]"; + mes "You sure you want"; + mes "to keep that ring?"; + mes "Alright, but if it becomes"; + mes "a problem, you come to me."; + close; + } +} + +prt_church,22,179,4 script Remarry Staff 71,{ + mes "[Wedding Again]"; + mes "Hmm...?"; + mes "What exactly are"; + mes "you doing here?"; + next; + input .@input; + if (.@input != 1854) { + mes "[Wedding Again]"; + mes "Ahk!"; + mes "An adventurer"; + mes "like you shouldn't"; + mes "be in this place!"; + close; + } + if (getpartnerid()) { + mes "[Wedding Again]"; + mes "Hmm..."; + mes "I can only create"; + mes "a Wedding Ring if the"; + mes "character is married."; + close; + } + mes "[Wedding Again]"; + mes "Ah, I see that you"; + mes "know the password."; + mes "Alright, if you somehow"; + mes "lost your Wedding Ring,"; + mes "I can make you a new one."; + next; + switch(select("Make new Wedding Ring.:Cancel.")) { + case 1: + set .@ring, (Sex)?2634:2635; //Bridegroom_Ring, Bride_Ring + if (countitem(.@ring) || isequipped(.@ring)) { + mes "[Wedding Again]"; + mes "Wait, wait..."; + mes "You're wearing your"; + mes "Wedding Ring. I better"; + mes "not make you another since"; + mes "you don't need more than one."; + } else { + getitem .@ring,1; + mes "[Wedding Again]"; + mes "Here you go~"; + mes "It's your brand"; + mes "new Wedding Ring!"; + } + close; + case 2: + mes "[Wedding Again]"; + mes "Alright. If you ever"; + mes "lose your Wedding Ring,"; + mes "come to me if you happen"; + mes "to need a new one, okay?"; + close; + } +} +*/ diff --git a/npc/other/turbo_track.txt b/npc/other/turbo_track.txt index caf93dc74c..6edf85fa6b 100644 --- a/npc/other/turbo_track.txt +++ b/npc/other/turbo_track.txt @@ -7,6 +7,7 @@ //===== Compatible With: ===================================== //= rAthena SVN //===== Description: ========================================= +//= [Official Conversion] //= Turbo Track Course: //= - Solo Mode/Time Attack //= - Normal (Non-PVP) - 4/8/16 Person diff --git a/npc/pre-re/cities/alberta.txt b/npc/pre-re/cities/alberta.txt index f5408b6118..1707502117 100644 --- a/npc/pre-re/cities/alberta.txt +++ b/npc/pre-re/cities/alberta.txt @@ -7,6 +7,7 @@ //===== Compatible With: ===================================== //= rAthena SVN //===== Description: ========================================= +//= [Official Conversion] //= Alberta town NPCs. //===== Additional Comments: ================================= //= 1.0 First Version. diff --git a/npc/pre-re/cities/izlude.txt b/npc/pre-re/cities/izlude.txt index f3c120d3d1..4451b5d2b7 100644 --- a/npc/pre-re/cities/izlude.txt +++ b/npc/pre-re/cities/izlude.txt @@ -7,6 +7,7 @@ //===== Compatible With: ===================================== //= rAthena SVN //===== Description: ========================================= +//= [Official Conversion] //= Izlude town NPCs. //===== Additional Comments: ================================= //= 1.0 First Version. diff --git a/npc/pre-re/cities/jawaii.txt b/npc/pre-re/cities/jawaii.txt index 1f2d0fb6a0..909d221059 100644 --- a/npc/pre-re/cities/jawaii.txt +++ b/npc/pre-re/cities/jawaii.txt @@ -7,6 +7,7 @@ //===== Compatible With: ===================================== //= rAthena SVN //===== Description: ========================================= +//= [Official Conversion] //= Jawaii town NPCs. //===== Additional Comments: ================================= //= 1.0 First Version. diff --git a/npc/pre-re/other/turbo_track.txt b/npc/pre-re/other/turbo_track.txt index 1158b75278..906d40c88b 100644 --- a/npc/pre-re/other/turbo_track.txt +++ b/npc/pre-re/other/turbo_track.txt @@ -7,6 +7,7 @@ //===== Compatible With: ===================================== //= rAthena SVN //===== Description: ========================================= +//= [Official Conversion] //= Pre-Renewal duplicates. //===== Additional Comments: ================================= //= 1.0 Split Peco Peco Manager NPC. diff --git a/npc/re/airports/izlude.txt b/npc/re/airports/izlude.txt index ca4285d227..86394c432e 100644 --- a/npc/re/airports/izlude.txt +++ b/npc/re/airports/izlude.txt @@ -7,6 +7,7 @@ //===== Compatible With: ===================================== //= rAthena SVN //===== Description: ========================================= +//= [Official Conversion] //= Izlude Airport NPCs //===== Additional Comments: ================================= //= 1.0 Updated to match the new Izlude Map. [Masao] diff --git a/npc/re/cities/alberta.txt b/npc/re/cities/alberta.txt index a0a4175103..7cd510a89b 100644 --- a/npc/re/cities/alberta.txt +++ b/npc/re/cities/alberta.txt @@ -7,6 +7,7 @@ //===== Compatible With: ===================================== //= rAthena SVN //===== Description: ========================================= +//= [Official Conversion] //= Alberta town NPCs. //===== Additional Comments: ================================= //= 1.0 First Version. diff --git a/npc/re/cities/izlude.txt b/npc/re/cities/izlude.txt index 9390d709f0..8018acbe30 100644 --- a/npc/re/cities/izlude.txt +++ b/npc/re/cities/izlude.txt @@ -7,6 +7,7 @@ //===== Compatible With: ===================================== //= rAthena SVN //===== Description: ========================================= +//= [Official Conversion] //= Izlude town NPCs. //===== Additional Comments: ================================= //= 1.0 First Version. Still missing many new NPCs and their dialogues. [Masao] diff --git a/npc/re/cities/jawaii.txt b/npc/re/cities/jawaii.txt index c7c8d25f17..654479959e 100644 --- a/npc/re/cities/jawaii.txt +++ b/npc/re/cities/jawaii.txt @@ -7,6 +7,7 @@ //===== Compatible With: ===================================== //= rAthena SVN //===== Description: ========================================= +//= [Official Conversion] //= Jawaii town NPCs. //===== Additional Comments: ================================= //= 1.0 First Version. Renewal coordinates by Masao. diff --git a/npc/re/guild/invest_main.txt b/npc/re/guild/invest_main.txt index 7f80f91b4e..5fa37daeab 100644 --- a/npc/re/guild/invest_main.txt +++ b/npc/re/guild/invest_main.txt @@ -7,6 +7,7 @@ //===== Compatible With: ===================================== //= rAthena SVN //===== Description: ========================================= +//= [Official Conversion] //= Expansion for War of Emperium FE. //= Invest in each realm to unlock new maps: //= - Guild Dungeon F2, total 20,000,000z. diff --git a/npc/re/guild/invest_npc.txt b/npc/re/guild/invest_npc.txt index 3c6c45ee50..8961879004 100644 --- a/npc/re/guild/invest_npc.txt +++ b/npc/re/guild/invest_npc.txt @@ -7,6 +7,7 @@ //===== Compatible With: ===================================== //= rAthena SVN //===== Description: ========================================= +//= [Official Conversion] //= Expansion for War of Emperium FE. //= Invest in each realm to unlock new maps: //= - Guild Dungeon F2, total 20,000,000z. diff --git a/npc/re/jobs/repair.txt b/npc/re/jobs/repair.txt new file mode 100644 index 0000000000..b11ee26914 --- /dev/null +++ b/npc/re/jobs/repair.txt @@ -0,0 +1,316 @@ +//===== rAthena Script ======================================= +//= Job Repairs +//===== By: ================================================== +//= Euphy +//===== Current Version: ===================================== +//= 1.0 +//===== Compatible With: ===================================== +//= rAthena SVN +//===== Description: ========================================= +//= [Official Conversion] +//= Removes potentially conflicting job data. +//===== Additional Comments: ================================= +//= 1.0 First version. +//============================================================ + +/* +rAthena -> official job variable conversion +------------------------------------------- + +Knight: KNIGHT_Q -> job_knight_q +Priest: PRIEST_Q -> job_priest_q +Wizard: WIZ_Q -> job_wizard_q +Blacksmith: BSMITH_Q -> job_black +Assassin: ASSIN_Q -> job_assasin +Hunter: HNTR_Q -> job_hunter +Crusader: CRUS_Q -> job_crusader_q +Monk: MONK_Q -> job_monk +Sage: SAGE_Q -> job_sage_q +Alchemist: ALCH_Q -> job_alchemist_q +Rogue: ROGUE_Q -> job_rogue +Bard: BARD_Q -> job_bard_q +Dancer: DANC_Q -> job_dancer + +Rebirth: ADVJOB -> job_karma + +Rune Knight: job_rune_edq +Arch Bishop: job_arch +Warlock: job_wl +Mechanic: job__mechanic -> job_mechanic +Guillotine Cross: job_3rd_gc +Ranger: job_ranger01 +Royal Guard: job_royal -> job_roy +Sura: job_shu +Sorcerer: job_soc +Geneticist: job_gen +Shadow Chaser: job_sha -> job_3rd_sc +Minstrel: job_min +Wanderer: job_wan + +Gunslinger: GUNS_Q -> hg_gun +Ninja: NINJ_Q -> hg_nin +Taekwon: TK_Q -> job_taekwon +Star Gladiator: STGL_Q -> job_star +Soul Linker: SOUL_Q -> job_linker +Super Novice: SUPNOV_Q -> job_super +Expanded Super Novice: EXSUPNOV_Q -> job_super2 +*/ + +prt_in,38,104,4 script Valerie 811,{ + if (checkweight(1201,1) == 0) { + mes "I think you have too many items. Let's try it again after you take some out."; + close; + } + if (MaxWeight - Weight < 1000) { + mes "You're overweight with items so I don't think we can proceed any further. Challenge me after you've taken some items off."; + close; + } + mes "[Valerie]"; + mes "I am Valerie; I help those with abnormalities. I am friends with Valkyrie."; + next; + mes "[Valerie]"; + mes "If both abnormalities disappear then we must start the test over from scratch. What would you like to do?"; + next; + switch(select("I don't have any abnormalities:I think my body has some abnormalities")) { + case 1: + mes "[Valerie]"; + mes "That's a relief. Then please take care."; + close; + case 2: + mes "[Valerie]"; + mes "Are you sure you want to intialize it and start over?"; + next; + if(select("Nope:Yes, I want to start completely over") == 1) { + mes "[Valerie]"; + mes "I understand. I'll see you next time"; + close; + } + mes "[Valerie]"; + mes "All items related to the existing conditions will disappear. Are you okay with this?"; + next; + if(select("Nope:Yes, I want to start completely over.") == 1) { + mes "[Valerie]"; + mes "I understand. I'll see you next time."; + close; + } + mes "[Valerie]"; + mes "It seems that there are a sea of people who seemed to be cursed of not being able to get a significant other after going through with this. Are you still okay with this? "; + next; + if(select("Nope:I still want to intialize.") == 1) { + mes "[Valerie]"; + mes "I understand. I will see you next time."; + close; + } + mes "[Valerie]"; + mes "In extreme cases, some become crippled and can get ulcers. Do you still want to intilize former processes?"; + next; + if(select("Nope:Please intilize the former processes") == 1) { + mes "[Valerie]"; + mes "I understand. I will see you next time"; + close; + } + specialeffect2 EF_INVENOM; + progressbar "0xffff00",3; + + // Warlock - quest items + if (isequipped(2796) || isequipped(2797)) { + mes "[Valerie]"; + mes "Please unequip the Magical Stone or Magical Stone Ring and try again."; + close; + } + if (countitem(2796) || countitem(2797)) { + if (isequipped(2796) || isequipped(2797)) { + mes "[Valerie]"; + mes "Please talk to me after your replace all Magical Stones."; + close; + } + setarray .@items[0], 2796, 2797, 6152, 6151; //Magical_Stone,Magical_Stone_,Glittering_Crystal,Peice_Of_Great_Bradium + for(set .@i,0; .@i<4; set .@i,.@i+1) { + if (countitem(.@items[.@i])) + delitem .@items[.@i], countitem(.@items[.@i]); + } + mes "[Valerie]"; + mes "You're carrying something that is unnecessary. I will sort it out for you."; + close; + } + + // Baby and third job characters meet no further conditions. + if (eaclass()&(EAJL_BABY|EAJL_THIRD)) { + mes "[Valerie]"; + mes "I don't think you should have any further business with me."; + close; + } + + // Rebirth - variable + if ((Class >= Job_Swordman && Class <= Job_Crusader2) && ADVJOB != 0) { + set ADVJOB,0; + mes "[Valerie]"; + mes "You're carrying big karma- You should erase it."; + next; + mes "[Valerie]"; + mes "Please talk to me again as there could be additional problems."; + close; + } + + // Second job - variable and quests + // callsub L_Second, "", ; + if (Class == Job_Swordman) { + callsub L_Second, "KNIGHT_Q", 9012; + callsub L_Second, "CRUS_Q", 3015; + } else if (Class == Job_Archer) { + callsub L_Second, "HNTR_Q", 4013; + callsub L_Second, "BARD_Q", 3004; + callsub L_Second, "DANC_Q", 7006; + } else if (Class == Job_Mage) { + callsub L_Second, "WIZ_Q", 9018; + callsub L_Second, "SAGE_Q", 2052; + } else if (Class == Job_Merchant) { + callsub L_Second, "BSMITH_Q", 2016; + callsub L_Second, "ALCH_Q", 2040; + } else if (Class == Job_Thief) { + callsub L_Second, "ASSIN_Q", 8008; + callsub L_Second, "ROGUE_Q", 2027; + } else if (Class == Job_Acolyte) { + callsub L_Second, "PRIEST_Q", 8016; + callsub L_Second, "MONK_Q", 3032; + } + + // Third job - variable and quests + // callsub L_Third, "",
, , {, }; + if (BaseJob == Job_Assassin) + callsub L_Third, "job_3rd_gc", 7100, 7091, 7116; + else if (BaseJob == Job_Blacksmith) + callsub L_Third, "job__mechanic", 10101, 10090, 10101; + else if (BaseJob == Job_Hunter) + callsub L_Third, "job_ranger01", 8262, 8254, 8262; + else if (BaseJob == Job_Knight) + callsub L_Third, "job_rune_edq", 3219, 3200, 3220; + else if (BaseJob == Job_Priest) + callsub L_Third, "job_arch", 2191, 2187, 2191; + else if (BaseJob == Job_Wizard) + callsub L_Third, "job_wl", 11112, 11106, 11112; + else if (BaseJob == Job_Alchemist) + callsub L_Third, "job_gen", 2223, 2209, 2217, 2223; + else if (BaseJob == Job_Bard) + callsub L_Third, "job_min", 11154, 11135, 11154; + else if (BaseJob == Job_Crusader) + callsub L_Third, "job_royal", 0, 12090, 12094; + else if (BaseJob == Job_Dancer) + callsub L_Third, "job_wan", 2222, 2218, 2222; + else if (BaseJob == Job_Monk) + callsub L_Third, "job_shu", 11158, 11155, 11158; + else if (BaseJob == Job_Rogue) + callsub L_Third, "job_sha", 7180, 7160, 7180; + else if (BaseJob == Job_Sage) + callsub L_Third, "job_soc", 12098, 12096, 12098; + + mes "[Valerie]"; + mes "I don't think you should have any further business with me."; + close; + } + +L_Second: + if (getd(getarg(0)) != 0) { + setd getarg(0),0; + if (checkquest(getarg(1)) == 2) + erasequest getarg(1); + mes "[Valerie]"; + mes "I will help clear your problems for you that came from your former attempts."; + next; + mes "[Valerie]"; + mes "Please talk to me again as there could be additional problems."; + close; + } else + return; + +L_Third: + if (getd(getarg(0)) != 0) { + setd getarg(0),0; + if (getarg(1)) { + if (checkquest(getarg(1)) == 2) + erasequest getarg(1); + } + for(set .@i,getarg(2); .@i<=getarg(3); set .@i,.@i+1) { + if (checkquest(.@i) > -1) + erasequest .@i; + } + if (getarg(4,0)) { + if (checkquest(getarg(4)) > -1) + erasequest getarg(4); + } + mes "[Valerie]"; + mes "I will help clear your problems for you that came from your former attempts."; + next; + mes "[Valerie]"; + mes "Please talk to me again as there could be additional problems."; + close; + } else + return; +} + +- script Valerie#sign -1,{ + mes "^ff00ffI couldn't pay the office rent so I am temporarily relocating to the building across from the Prontera Refinery.^000000"; + mes ""; + mes "^ff00ffValerie^000000"; + close; +} +in_moc_16,17,33,4 duplicate(Valerie#sign) Valerie#asn 837 +ein_in01,13,28,4 duplicate(Valerie#sign) Valerie#bls 837 +hu_in01,386,377,4 duplicate(Valerie#sign) Valerie#hnt 837 +prt_in,88,108,4 duplicate(Valerie#sign) Valerie#knt 837 +prt_church,19,36,4 duplicate(Valerie#sign) Valerie#prst 837 +gef_tower,110,30,4 duplicate(Valerie#sign) Valerie#wiz 837 +comodo,215,155,4 duplicate(Valerie#sign) Valerie#danc 837 +prt_castle,45,167,4 duplicate(Valerie#sign) Valerie#cru 837 +prt_monk,59,253,4 duplicate(Valerie#sign) Valerie#mnk 837 +moc_ruins,90,104,4 duplicate(Valerie#sign) Valerie#rg 837 +yuno_in02,43,62,4 duplicate(Valerie#sign) Valerie#sag 837 +prt_church,103,86,4 duplicate(Valerie#sign) Valerie#arch 837 +que_job01,75,92,4 duplicate(Valerie#sign) Valerie#gc 837 +yuno,129,150,4 duplicate(Valerie#sign) Valerie#mech 837 +tur_dun01,159,40,4 duplicate(Valerie#sign) Valerie#ran 837 +prt_in,167,24,4 duplicate(Valerie#sign) Valerie#rk 837 +spl_in02,81,102,4 duplicate(Valerie#sign) Valerie#wl 837 +alde_alche,38,181,4 duplicate(Valerie#sign) Valerie#alche 837 +alberta,198,129,4 duplicate(Valerie#sign) Valerie#min 837 +in_rogue,376,104,4 duplicate(Valerie#sign) Valerie#sc 837 +ve_in,244,122,4 duplicate(Valerie#sign) Valerie#shu 837 +xmas,166,209,4 duplicate(Valerie#sign) Valerie#wan 837 + +/* +sec_in02,12,40,5 script Job Repair 57,1,1,{ + mes "Please input your password."; + next; + input .@inputstr$; + if (.@inputstr$ == "1854") { + set job_arch,100; + set job_3rd_gc,100; + set job__mechanic,100; + set job_ranger01,100; + set job_rune_edq,100; + set job_wl,100; + set job_gen,100; + set job_min,100; + set job_royal,100; + set job_sha,100; + set job_soc,100; + set job_shu,100; + set job_wan,100; + set KNIGHT_Q,100; + set PRIEST_Q,100; + set WIZ_Q,100; + set BSMITH_Q,100; + set ASSIN_Q,100; + set HNTR_Q,100; + set CRUS_Q,100; + set MONK_Q,100; + set SAGE_Q,100; + set ALCH_Q,100; + set ROGUE_Q,100; + set BARD_Q,100; + set DANC_Q,100; + set ADVJOB,15; + } + close; +} +*/ diff --git a/npc/re/merchants/alchemist.txt b/npc/re/merchants/alchemist.txt index 1ea6d0a7e9..54f7af5e16 100644 --- a/npc/re/merchants/alchemist.txt +++ b/npc/re/merchants/alchemist.txt @@ -7,6 +7,7 @@ //===== Compatible With: ===================================== //= rAthena SVN //===== Description: ========================================= +//= [Official Conversion] //= Merchants for Alchemist Materials and Manuals. //===== Additional Comments: ================================= //= 1.0 Split Geneticist shop from main file. [Euphy] diff --git a/npc/re/merchants/card_separation.txt b/npc/re/merchants/card_separation.txt index a81aeb746a..3bad9cebd2 100644 --- a/npc/re/merchants/card_separation.txt +++ b/npc/re/merchants/card_separation.txt @@ -3,7 +3,7 @@ //===== By: ================================================== //= Muad_Dib //===== Current Version: ===================================== -//= 1.0 +//= 1.1 //===== Compatible With: ===================================== //= rAthena SVN //===== Description: ========================================= @@ -11,9 +11,10 @@ //= Separates cards from equipment. //===== Additional Comments: ================================= //= 1.0 First Version. [Euphy] +//= 1.1 Added "Richard" NPC. [Euphy] //============================================================ -malangdo,215,166,4 script Jeremy#mal 553,{ +- script ::CardSeparation_mal -1,{ disable_items; if (checkweight(1201,1) == 0) { mes "You have too many kinds of objects. Let's try to continue after reducing those objects."; @@ -23,19 +24,32 @@ malangdo,215,166,4 script Jeremy#mal 553,{ mes "Can't continue because you have too many heavy objects. Let's try to continue after reducing the weight."; close; } - mes "[Jeremy]"; - mes "Long time no see~"; - mes "I have learned a new skill that separates cards from Armor, Shoes, Garment and Headgear. Do you want to try it?"; + if (strnpcinfo(1) == "Jeremy") { + set .@Jeremy,1; + set .@n$, "[Jeremy]"; + setarray .@equip_name$[0], "Armor", "Shoes", "Garment", "Upper Hat"; + setarray .@equip_slot[0], EQI_ARMOR,EQI_SHOES,EQI_GARMENT,EQI_HEAD_TOP; + + mes .@n$; + mes "Long time no see~"; + mes "I have learned a new skill that separates cards from Armor, Shoes, Garment and Headgear. Do you want to try it?"; + } else { + set .@Jeremy,0; + set .@n$, "[Richard]"; + setarray .@equip_name$[0], "Left hand", "Right hand"; + setarray .@equip_slot[0], EQI_HAND_L, EQI_HAND_R; + + mes .@n$; + mes "Silly Jeremy does not want to touch weapons and shields because of picking several cards that might be damaged. That is why I prepared a card separaion skill for weapons and shields..."; + } next; - mes "[Jeremy]"; + mes .@n$; mes "Generally the fee is 1,000,000 Zeny. During the card separation, you can use ^990000special items that reduce the rate of destroying equipment or cards^000000. We don't charge additional zeny for this."; next; - mes "[Jeremy]"; + mes .@n$; mes "There is a possibility of destroying them even using a special item. Also, ^ff0000the refine level might be lost^000000. Do you have any equipment to separate?"; next; - setarray .@equip_name$[0], "Armor", "Shoes", "Garment", "Upper Hat"; - setarray .@equip_slot[0], EQI_ARMOR,EQI_SHOES,EQI_GARMENT,EQI_HEAD_TOP; for(set .@i,0; .@i= 4700) // Armor Enchant System - set .@equip_card[.@i],0; - } - if (!getarraysize(.@equip_card)) { - mes "[Jeremy]"; - mes "The card is not equipped. Do you want to check again?"; - close; - } - // Detect MVP cards. + setarray .@equip_card[0], getequipcardid(.@equip_num,0),getequipcardid(.@equip_num,1),getequipcardid(.@equip_num,2),getequipcardid(.@equip_num,3); set .@mvp_list$, "|4408|4128|4456|4168|4142"+ //Gloom_Under_Night_Card, Golden_Bug_Card, Nidhogg_Shadow_Card, Dark_Lord_Card, Doppelganger_Card "|4134|4137|4386|4407|4357"+ //Dracula_Card, Drake_Card, Detale_Card, Randgris_Card, B_Seyren_Card @@ -109,15 +116,64 @@ malangdo,215,166,4 script Jeremy#mal 553,{ "|4403|4399|4376|4441|4302"+ //Kiel_Card, Thanatos_Card, Lady_Tanee_Card, Fallen_Bishop_Card, Tao_Gunka_Card "|4305|4148|4318|4121|4365"+ //Turtle_General_Card, Pharaoh_Card, Knight_Windstorm_Card, Phreeoni_Card, B_Katrinn_Card "|4363|4324|4361|4330|4342|"; //B_Magaleta_Card, Garm_Card, B_Harword_Card, Dark_Snake_Lord_Card, Rsx_0806_Card - if ((.@equip_card[0] && compare(.@mvp_list$,"|"+.@equip_card[0]+"|")) || - (.@equip_card[1] && compare(.@mvp_list$,"|"+.@equip_card[1]+"|")) || - (.@equip_card[2] && compare(.@mvp_list$,"|"+.@equip_card[2]+"|")) || - (.@equip_card[3] && compare(.@mvp_list$,"|"+.@equip_card[3]+"|"))) - set .@boss_chk,1; + if (.@Jeremy) { + for(set .@i,0; .@i<4; set .@i,.@i+1) { + if (.@equip_card[.@i] >= 4700) // Armor Enchant System + set .@equip_card[.@i],0; + } + if (!getarraysize(.@equip_card)) { + mes .@n$; + mes "The card is not equipped. Do you want to check again?"; + close; + } + if ((.@equip_card[0] && compare(.@mvp_list$,"|"+.@equip_card[0]+"|")) || + (.@equip_card[1] && compare(.@mvp_list$,"|"+.@equip_card[1]+"|")) || + (.@equip_card[2] && compare(.@mvp_list$,"|"+.@equip_card[2]+"|")) || + (.@equip_card[3] && compare(.@mvp_list$,"|"+.@equip_card[3]+"|"))) + set .@boss_chk,1; + } else { + // Official "Richard" script uses a hardcoded list including every possible item. + //if (!getequipisequiped(.@equip_num)) { + // mes "[Richard]"; + // mes "I'm sorry. We don't provide that equipmnet yet."; + // close; + //} + + mes "[Richard]"; + mes "Which number socket do you want to separate the card? From the left socket, they are sorted 1,2,3,4."; + next; + set .@menu$,""; + for(set .@i,0; .@i<4; set .@i,.@i+1) { + if (.@equip_card[.@i] && .@equip_card[.@i] < 4700) // Armor Enchant System + set .@menu$, .@menu$+"Socket "+(.@i+1)+" - "+getitemname(.@equip_card[.@i])+":"; + else + set .@menu$, .@menu$+"^777777Socket "+(.@i+1)+" - No card^000000:"; + } + set .@i, select("Stop the work:"+.@menu$); + switch(.@i) { + case 1: + mes .@n$; + mes "Whenever you need to work, please come to me."; + close; + default: + set .@slot, .@i-2; + if (.@equip_card[.@slot] == 0 || .@equip_card[.@slot] >= 4700) { + mes .@n$; + mes "This socket is not equipped with any card. Why don't you check again?"; + close; + } + break; + } + if (compare(.@mvp_list$,"|"+.@equip_card[.@slot]+"|")) + set .@boss_chk,1; + } if (.@boss_chk == 0) { - mes "[Jeremy]"; - mes "Except cards, ^ff0000all enchanted effects will disappear.^000000 If you agree to this, please choose the work type:"; + mes .@n$; + if (.@Jeremy) + mes "Except cards, ^ff0000all enchanted effects will disappear.^000000 If you agree to this, please choose the work type:"; + else + mes "Please choose the working fee."; next; set .@menu$, "Next time...:"+ @@ -126,20 +182,20 @@ malangdo,215,166,4 script Jeremy#mal 553,{ ((countitem(6440))?"Use Ordinary Lubricant":"^999999Ordinary Lubricant (Insufficient)^000000"); switch(select(.@menu$)) { case 1: - mes "[Jeremy]"; + mes .@n$; mes "Whenever you need the work, visit me here."; close; case 2: if (Zeny < 1000000) { - mes "[Jeremy]"; + mes .@n$; mes "You don't have enough zeny. Please come back with enough fees."; close; } - mes "[Jeremy]"; + mes .@n$; mes "This is pretty old equipment. There is a high rate of destroying the cards or equipment during the work. Are you sure you want to continue?"; next; if(select("Next time...:Continue") == 1) { - mes "[Jeremy]"; + mes .@n$; mes "Whenever you need the work, visit me here."; close; } @@ -150,15 +206,15 @@ malangdo,215,166,4 script Jeremy#mal 553,{ break; case 3: if (countitem(6441) == 0) { - mes "[Jeremy]"; + mes .@n$; mes "You don't have Premium Lubricant."; close; } - mes "[Jeremy]"; + mes .@n$; mes "If you use the Premium Lubricant, the rate of destruction will be decreased highly, but I can't give you a 100% guarantee. Are you sure you want to continue?"; next; if(select("Next time...:Continue") == 1) { - mes "[Jeremy]"; + mes .@n$; mes "Whenever you need the work, visit me here."; close; } @@ -169,15 +225,15 @@ malangdo,215,166,4 script Jeremy#mal 553,{ break; case 4: if (countitem(6440) == 0) { - mes "[Jeremy]"; + mes .@n$; mes "You don't have Ordinary Lubricant."; close; } - mes "[Jeremy]"; + mes .@n$; mes "If you use the Ordinary Lubricant, the rate of destruction will be decreased highly, but I can't give you a 100% guarantee. Are you sure you want to continue?"; next; if(select("Next time...:Continue") == 1) { - mes "[Jeremy]"; + mes .@n$; mes "Whenever you need the work, visit me here."; close; } @@ -188,28 +244,34 @@ malangdo,215,166,4 script Jeremy#mal 553,{ break; } } else if (.@boss_chk == 1) { - mes "[Jeremy]"; + mes .@n$; mes "This equipment contains a precious MVP card. This card can't be separated with lubricant. If you bring the super surfactant ^0000ffSillit Pong^000000, I will be able to work."; next; switch(select("Next time...:I have a Sillit Pong.")) { case 1: - mes "[Jeremy]"; + mes .@n$; mes "Whenever you need the work, visit me here."; close; case 2: if (countitem(6443) == 0) { - mes "[Jeremy]"; + mes .@n$; mes "You don't have Sillit Pong."; close; } break; } - mes "[Jeremy]"; - mes "Except cards, ^ff0000all enchanted effects will disappear.^000000 If you agree to this, please choose the work type:"; + mes .@n$; + if (.@Jeremy) { + mes "Except cards, ^ff0000all enchanted effects will disappear.^000000 If you agree to this, please choose the work type:"; + set .@menu$,"Alright, let's do it!"; + } else { + mes "May I continue?"; + set .@menu$,"I got it. Just do it quickly!"; + } next; - switch(select("Next time...:Alright, let's do it!")) { + switch(select("Next time...:"+.@menu$)) { case 1: - mes "[Jeremy]"; + mes .@n$; mes "Whenever you need the work, visit me here."; close; case 2: @@ -229,20 +291,37 @@ malangdo,215,166,4 script Jeremy#mal 553,{ if (rand(1,.@sf_r_num) >= 61) set .@equip_refine,0; - // Chance of retaining equipment. - if (rand(1,.@sf_w_num) < 61) { - set .@equip_safe,1; - getitem2 .@equip_id,1,1,.@equip_refine,0,0,0,0,0; - } - - // Chance of retaining cards. - for(set .@i,0; .@i<4; set .@i,.@i+1) { - if (.@equip_card[.@i]) { - if (rand(1,.@sf_c_num) < 61) - getitem .@equip_card[.@i],1; - else - set .@card_break,1; + if (.@Jeremy) { + // Chance of retaining equipment. + if (rand(1,.@sf_w_num) < 61) { + set .@equip_safe,1; + getitem2 .@equip_id,1,1,.@equip_refine,0,0,0,0,0; } + + // Chance of retaining cards. + for(set .@i,0; .@i<4; set .@i,.@i+1) { + if (.@equip_card[.@i]) { + if (rand(1,.@sf_c_num) < 61) + getitem .@equip_card[.@i],1; + else + set .@card_break,1; + } + } + } else { + set .@card, .@equip_card[.@slot]; + set .@equip_card[.@slot],0; + + // Chance of retaining equipment. + if (rand(1,.@sf_w_num) < 61) { + set .@equip_safe,1; + getitem2 .@equip_id,1,1,.@equip_refine,0,.@equip_card[0],.@equip_card[1],.@equip_card[2],.@equip_card[3]; + } + + // Chance of retaining card. + if (rand(1,.@sf_c_num) < 61) + getitem .@card,1; + else + set .@card_break,1; } // Display corresponding effect. @@ -273,7 +352,9 @@ malangdo,215,166,4 script Jeremy#mal 553,{ mes "Card has been damaged. ^ff0000Unrecoverable.^000000"; } next; - mes "[Jeremy]"; + mes .@n$; mes "That is all for the results of the card separation. Please come again."; close; } +malangdo,215,166,4 duplicate(CardSeparation_mal) Jeremy#pa0829 553 +malangdo,208,166,6 duplicate(CardSeparation_mal) Richard#pa0829 559 diff --git a/npc/re/merchants/catalog.txt b/npc/re/merchants/catalog.txt index be9f74c039..a531424567 100644 --- a/npc/re/merchants/catalog.txt +++ b/npc/re/merchants/catalog.txt @@ -7,6 +7,7 @@ //===== Compatible With: ===================================== //= rAthena SVN //===== Description: ========================================= +//= [Official Conversion] //= Catalogs allow players to easily search for items in-game, //= and to buy/sell directly from the catalog interface. //===== Additional Comments: ================================= diff --git a/npc/re/merchants/flute.txt b/npc/re/merchants/flute.txt index 90b63afc71..94fd665d74 100644 --- a/npc/re/merchants/flute.txt +++ b/npc/re/merchants/flute.txt @@ -7,6 +7,7 @@ //===== Compatible With: ===================================== //= rAthena SVN //===== Description: ========================================= +//= [Official Conversion] //= Sells Falcon Flute and Wolf Flute. //===== Additional Comments: ================================= //= 1.0 First Version. [Masao] diff --git a/npc/re/merchants/quivers.txt b/npc/re/merchants/quivers.txt index 45e44401a0..a5cfebcdbd 100644 --- a/npc/re/merchants/quivers.txt +++ b/npc/re/merchants/quivers.txt @@ -7,12 +7,13 @@ //===== Compatible With: ===================================== //= rAthena SVN //===== Description: ========================================= +//= [Official Conversion] //= Turns arrows into Arrow Quivers. -// Breakdown of Subroutine "S_BuyQuiver" -// arg(0): Type of Arrow to be packaged (item ID). -// arg(1): How many of each 'getarg(0)' arrow per quiver. -// arg(2): The cost of making a 'getarg(0)' quiver. -// arg(3): The quiver given by the NPC (item ID). +//= Breakdown of Subroutine "S_BuyQuiver" +//= arg(0): Type of Arrow to be packaged (item ID). +//= arg(1): How many of each 'getarg(0)' arrow per quiver. +//= arg(2): The cost of making a 'getarg(0)' quiver. +//= arg(3): The quiver given by the NPC (item ID). //===== Additional Comments: ================================= //= 1.0 Added Mora NPC. [Euphy] //= 1.1 Updated to match the official scripts. [Euphy] diff --git a/npc/re/merchants/renters.txt b/npc/re/merchants/renters.txt index 1fe4b36821..efac5ca197 100644 --- a/npc/re/merchants/renters.txt +++ b/npc/re/merchants/renters.txt @@ -7,6 +7,7 @@ //===== Compatible With: ===================================== //= rAthena SVN //===== Description: ========================================= +//= [Official Conversion] //= Renewal-specific breeder NPCs. //===== Additional Comments: ================================= //= 2.1 Moved some renters to a separate renewal file. [Daegaladh] diff --git a/npc/re/merchants/stone_change.txt b/npc/re/merchants/stone_change.txt index 3e7da84659..2ceaf414d6 100644 --- a/npc/re/merchants/stone_change.txt +++ b/npc/re/merchants/stone_change.txt @@ -7,6 +7,7 @@ //===== Compatible With: ===================================== //= rAthena SVN //===== Description: ========================================= +//= [Official Conversion] //= Organizes ores in a player's inventory. //===== Additional Comments: ================================= //= 1.0 First version. diff --git a/npc/re/other/turbo_track.txt b/npc/re/other/turbo_track.txt index 5c43f7af82..e4ec873d2d 100644 --- a/npc/re/other/turbo_track.txt +++ b/npc/re/other/turbo_track.txt @@ -7,6 +7,7 @@ //===== Compatible With: ===================================== //= rAthena SVN //===== Description: ========================================= +//= [Official Conversion] //= Renewal duplicates. //===== Additional Comments: ================================= //= 1.0 Split Mount Manager NPC. diff --git a/npc/re/scripts_jobs.conf b/npc/re/scripts_jobs.conf index 14e532bcfe..1d6e9f8f9b 100644 --- a/npc/re/scripts_jobs.conf +++ b/npc/re/scripts_jobs.conf @@ -28,3 +28,5 @@ npc: npc/re/jobs/3-2/wanderer.txt // - Novice npc: npc/re/jobs/novice/novice.txt npc: npc/re/jobs/novice/supernovice_ex.txt +// - Job Repairs +npc: npc/re/jobs/repair.txt