diff options
Diffstat (limited to 'npc/re/merchants/card_separation.txt')
-rw-r--r-- | npc/re/merchants/card_separation.txt | 279 |
1 files changed, 279 insertions, 0 deletions
diff --git a/npc/re/merchants/card_separation.txt b/npc/re/merchants/card_separation.txt new file mode 100644 index 000000000..a81aeb746 --- /dev/null +++ b/npc/re/merchants/card_separation.txt @@ -0,0 +1,279 @@ +//===== rAthena Script ======================================= +//= Card Separation System +//===== By: ================================================== +//= Muad_Dib +//===== Current Version: ===================================== +//= 1.0 +//===== Compatible With: ===================================== +//= rAthena SVN +//===== Description: ========================================= +//= [Official Conversion] +//= Separates cards from equipment. +//===== Additional Comments: ================================= +//= 1.0 First Version. [Euphy] +//============================================================ + +malangdo,215,166,4 script Jeremy#mal 553,{ + disable_items; + if (checkweight(1201,1) == 0) { + mes "You have too many kinds of objects. Let's try to continue after reducing those objects."; + close; + } + if (MaxWeight - Weight < 10000) { + 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?"; + next; + mes "[Jeremy]"; + 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 "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<getarraysize(.@equip_slot); set .@i,.@i+1) { + if (getequipisequiped(.@equip_slot[.@i])) + set .@menu$, .@menu$+getequipname(.@equip_slot[.@i])+":"; + else + set .@menu$, .@menu$+"^999999"+.@equip_name$[.@i]+" (empty)^000000:"; + } + + set .@i, select("Stop the work:How is it possible?:"+.@menu$); + switch(.@i) { + case 1: + mes "[Jeremy]"; + mes "Whenever you need the work, visit me here."; + close; + case 2: + mes "[Jeremy]"; + mes "You wonder what is so special. Well, I hate to give only a guide, so let me tell you the story..."; + next; + mes "^000099Jeremy is stretching his shoulders and hands. He might be waiting for someone to talk with him.^000000"; + next; + mes "[Jeremy]"; + mes "Do you know that Malangdo's specialty is canned food?"; + next; + select("I knew that well. Is it that limited?"); + mes "[Jeremy]"; + mes "Hehe... Everyone loves it. But there were some problems before."; + next; + select("Problems? Is there any faulty fish?"); + mes "[Jeremy]"; + mes "No, the fish does not have any problem. The problem is lots of fish oil produced after processing. That is such an industrial waste."; + next; + mes "[Jeremy]"; + mes "However, after a revitalizing refining process, this fish oil became valuable to use for old equipment care and industrial lubricant."; + next; + mes "[Jeremy]"; + mes "In addition, this oil is so useful to separate relics from equipped weapons that we can't buy Premium Lubricant and Ordinary Lubricant with Zeny."; + next; + mes "[Jeremy]"; + mes "Well, don't worry about money. Surely the Premium Lubricant is expensive. If you pay some zeny, I can give you cheaper lubricant."; + next; + mes "[Jeremy]"; + mes "I'm not sure about the quality of success. Anyway, this is so cheap, right?"; + close; + default: + set .@equip_num, .@equip_slot[.@i-3]; + if (!getequipisequiped(.@equip_num)) { + mes "[Jeremy]"; + mes "In this part, there is nothing?"; + close; + } + break; + } + setarray .@equip_card[0], getequipcardid(.@equip_num,0),getequipcardid(.@equip_num,1),getequipcardid(.@equip_num,2),getequipcardid(.@equip_num,3); + 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 "[Jeremy]"; + mes "The card is not equipped. Do you want to check again?"; + close; + } + + // Detect MVP cards. + 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 + "|4146|4132|4147|4372|4145"+ //Maya_Card, Mistress_Card, Baphomet_Card, Bacsojin_Card, Berzebub_Card + "|4374|4352|4367|4236|4425"+ //Apocalips_H_Card, B_Ygnizem_Card, B_Shecil_Card, Amon_Ra_Card, Atroce_Card + "|4359|4123|4144|4135|4143"+ //B_Eremes_Card, Eddga_Card, Osiris_Card, Orc_Load_Card, Orc_Hero_Card + "|4263|4131|4430|4276|4419"+ //Incant_Samurai_Card, Moonlight_Flower_Card, Ifrit_Card, Lord_Of_Death_Card, Ktullanux_Card + "|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 (.@boss_chk == 0) { + mes "[Jeremy]"; + mes "Except cards, ^ff0000all enchanted effects will disappear.^000000 If you agree to this, please choose the work type:"; + next; + set .@menu$, + "Next time...:"+ + ((Zeny >= 1000000)?"Use 1,000,000z (Do not use special item):":"^999999Use 1,000,000z (Insufficient)^000000:")+ + ((countitem(6441))?"Use Premium Lubricant:":"^999999Premium Lubricant (Insufficient)^000000:")+ + ((countitem(6440))?"Use Ordinary Lubricant":"^999999Ordinary Lubricant (Insufficient)^000000"); + switch(select(.@menu$)) { + case 1: + mes "[Jeremy]"; + mes "Whenever you need the work, visit me here."; + close; + case 2: + if (Zeny < 1000000) { + mes "[Jeremy]"; + mes "You don't have enough zeny. Please come back with enough fees."; + close; + } + mes "[Jeremy]"; + 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 "Whenever you need the work, visit me here."; + close; + } + set .@sf_c_num,150; + set .@sf_r_num,150; + set .@sf_w_num,150; + set Zeny, Zeny - 1000000; + break; + case 3: + if (countitem(6441) == 0) { + mes "[Jeremy]"; + mes "You don't have Premium Lubricant."; + close; + } + mes "[Jeremy]"; + 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 "Whenever you need the work, visit me here."; + close; + } + set .@sf_c_num,75; + set .@sf_r_num,75; + set .@sf_w_num,75; + delitem 6441,1; //High_RankLubricant + break; + case 4: + if (countitem(6440) == 0) { + mes "[Jeremy]"; + mes "You don't have Ordinary Lubricant."; + close; + } + mes "[Jeremy]"; + 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 "Whenever you need the work, visit me here."; + close; + } + set .@sf_c_num,75; + set .@sf_r_num,150; + set .@sf_w_num,150; + delitem 6440,1; //General_Lubricant + break; + } + } else if (.@boss_chk == 1) { + mes "[Jeremy]"; + 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 "Whenever you need the work, visit me here."; + close; + case 2: + if (countitem(6443) == 0) { + mes "[Jeremy]"; + 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:"; + next; + switch(select("Next time...:Alright, let's do it!")) { + case 1: + mes "[Jeremy]"; + mes "Whenever you need the work, visit me here."; + close; + case 2: + set .@sf_c_num,60; + set .@sf_r_num,60; + set .@sf_w_num,60; + delitem 6443,1; //Sillit_Pong_Bottle + break; + } + } + + set .@equip_id, getequipid(.@equip_num); + set .@equip_refine, getequiprefinerycnt(.@equip_num); + delequip .@equip_num; + + // Chance of retaining refine level. + 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; + } + } + + // Display corresponding effect. + if (!.@equip_safe && .@card_break) + specialeffect2 EF_LORD; + else if (.@equip_safe && .@card_break) + specialeffect2 EF_SUI_EXPLOSION; + else if (!.@equip_safe && !.@card_break) + specialeffect2 EF_FIREPILLAR; + else + specialeffect2 EF_MAXPOWER; + + // Output results. + mes "-- Result of Card Separation --"; + if (.@equip_safe) { + mes "Crack has not occured during the card separation process."; + mes "^0000FFEquipment separation is normal.^000000"; + } else { + mes "Crack has occured during the card separation process."; + mes "Equipment has been damaged. ^ff0000Unrecoverable.^000000"; + } + mes "-------------------"; + if (!.@card_break) { + mes "Erosion of surface has not occured during the card separation process."; + mes "^0000ffCard separation has succeeded.^000000"; + } else { + mes "Erosion of surface has occured during the card separation process."; + mes "Card has been damaged. ^ff0000Unrecoverable.^000000"; + } + next; + mes "[Jeremy]"; + mes "That is all for the results of the card separation. Please come again."; + close; +} |