From e3afdc2af4c5e50c79237ee092e25f39b7428e47 Mon Sep 17 00:00:00 2001 From: Michieru Date: Thu, 24 Oct 2013 12:10:43 +0200 Subject: Update to last rAthena npc. Fix some typos change sc_bleeding to -> sc_blooding Updated RE EXP for quests_brasilis.txt --- npc/re/merchants/card_separation.txt | 231 +++++++++++++++++++++++------------ 1 file changed, 155 insertions(+), 76 deletions(-) (limited to 'npc/re/merchants/card_separation.txt') diff --git a/npc/re/merchants/card_separation.txt b/npc/re/merchants/card_separation.txt index 386474000..8187d4fe7 100644 --- a/npc/re/merchants/card_separation.txt +++ b/npc/re/merchants/card_separation.txt @@ -1,19 +1,18 @@ //===== Hercules Script ====================================== //= Card Separation System -//===== By: ================================================== +//===== By: ================================================== //= Muad_Dib -//===== Current Version: ===================================== -//= 1.0 -//===== Compatible With: ===================================== -//= Hercules -//===== Description: ========================================= +//===== Current Version: ===================================== +//= 1.1 +//===== Description: ========================================= //= [Official Conversion] //= Separates cards from equipment. -//===== Additional Comments: ================================= +//===== 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 +22,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 +114,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 +180,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 +204,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 +223,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 +242,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 +289,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; - } + 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; + // 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 +350,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 -- cgit v1.2.3-60-g2f50