
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@10018 54d463be-8e91-2dee-dedb-b68131a5f0ec
165 lines
4.5 KiB
Plaintext
165 lines
4.5 KiB
Plaintext
//===== eAthena Script =======================================
|
|
//= Kafra Express - Uncarder Module
|
|
//===== By: ==================================================
|
|
//= Skotlex
|
|
//===== Current Version: =====================================
|
|
//= 1.5
|
|
//===== Compatible With: =====================================
|
|
//= eAthena SVN R3424+
|
|
//===== Description: =========================================
|
|
//= Part of the Kafra Express Script Package.
|
|
//= Offers uncarding services.
|
|
//===== Additional Comments: =================================
|
|
//= See config.txt for configuration.
|
|
//============================================================
|
|
|
|
- script keInit_uncard -1,{
|
|
OnInit: //Load Config
|
|
donpcevent "keConfig::OnLoadUncard";
|
|
end;
|
|
}
|
|
|
|
function script F_keUncard {
|
|
|
|
function SF_uncard;
|
|
|
|
do {
|
|
set @kmenu, select(
|
|
"- Return",
|
|
"- See Price Specifics",
|
|
"- "+getequipname(1),
|
|
"- "+getequipname(2),
|
|
"- "+getequipname(3),
|
|
"- "+getequipname(4),
|
|
"- "+getequipname(5),
|
|
"- "+getequipname(6),
|
|
"- "+getequipname(7),
|
|
"- "+getequipname(8),
|
|
"- "+getequipname(9),
|
|
"- "+getequipname(10)
|
|
);
|
|
if (@kmenu == 1)
|
|
return;
|
|
if (@kmenu == 2) { //Details
|
|
mes "Okay, listen up...";
|
|
next;
|
|
mes "["+@name$+"]";
|
|
if ($@keuc_BaseCost)
|
|
mes "The base cost is of "+$@keuc_BaseCost+"z.";
|
|
mes "Each card to be removed incurs a cost of +"+$@keuc_CardCost+"z.";
|
|
mes "The refine level of the compounded equipment can incur an additional cost:";
|
|
mes "Armors: "+$@keuc_UpgradeCostA+"z per level.";
|
|
mes "Lv1 Weapons: "+$@keuc_UpgradeCostW1+"z per level.";
|
|
mes "Lv2 Weapons: "+$@keuc_UpgradeCostW2+"z per level.";
|
|
mes "Lv3 Weapons: "+$@keuc_UpgradeCostW3+"z per level.";
|
|
mes "Lv4 Weapons: "+$@keuc_UpgradeCostW4+"z per level.";
|
|
|
|
if ($@keuc_Mat1 && $@keuc_Qty1) {
|
|
mes "The materials needed are:";
|
|
mes "- "+$@keuc_Qty1+" "+getitemname($@keuc_Mat1)+".";
|
|
}
|
|
if ($@keuc_Mat2 && $@keuc_Qty2)
|
|
mes "- "+$@keuc_Qty2+" "+getitemname($@keuc_Mat2)+".";
|
|
|
|
if ($@keuc_Fail1Chance || $@keuc_Fail2Chance)
|
|
mes "There is a chance the process might fail and you'll lose your items.";
|
|
|
|
next;
|
|
callfunc "F_keIntro", -1, "";
|
|
} else {
|
|
if (SF_uncard(@kmenu-2))
|
|
return;
|
|
}
|
|
} while (@kmenu >1);
|
|
return;
|
|
|
|
//Subfunction SF_uncard (equipment-position)
|
|
//Attempts to uncard the equipment.
|
|
function SF_uncard {
|
|
set @part, getarg(0);
|
|
if(getequipcardcnt(@part) == 0) {
|
|
callfunc "F_keIntro", e_ag, "There are no cards to remove there!";
|
|
return 0;
|
|
}
|
|
set @cost, $@keuc_BaseCost;
|
|
set @cost, @cost + $@keuc_CardCost*getequipcardcnt(@part);
|
|
|
|
switch (getequipweaponlv(@part)) {
|
|
case 0: //Armor
|
|
set @upgradeCost, $@keuc_UpgradeCostA;
|
|
break;
|
|
case 1: //Lv1 Weapons
|
|
set @upgradeCost, $@keuc_UpgradeCostW1;
|
|
break;
|
|
case 2: //Lv2 Weapons
|
|
set @upgradeCost, $@keuc_UpgradeCostW2;
|
|
break;
|
|
case 3: //Lv3 Weapons
|
|
set @upgradeCost, $@keuc_UpgradeCostW3;
|
|
break;
|
|
default: //Lv4 Weapons
|
|
set @upgradeCost, $@keuc_UpgradeCostW4;
|
|
}
|
|
|
|
set @cost, @cost + @upgradeCost*getequiprefinerycnt(@part);
|
|
|
|
set @price, callfunc("F_keCost",@cost,$@keuc_discount);
|
|
|
|
if ($@keuc_Fail1Chance) {
|
|
set @failsave, select(
|
|
"- Cancel",
|
|
"- Remove cards ("+@price+"z, item gets priority)",
|
|
"- Remove cards ("+@price+"z, cards get priority)"
|
|
);
|
|
} else {
|
|
set @failsave, select(
|
|
"- Cancel",
|
|
"- Remove cards ("+@price+"z)"
|
|
);
|
|
}
|
|
if (@failsave == 1)
|
|
return 0;
|
|
set @failsave, @failsave-1; //1: Save item, 2: Save Card
|
|
|
|
if (($@keuc_Mat1 && countitem($@keuc_Mat1) < $@keuc_Qty1)
|
|
|| ($@keuc_Mat2 && countitem($@keuc_Mat2) < $@keuc_Qty2)) {
|
|
callfunc "F_keIntro", e_pif, "You do not have all the materials I need...";
|
|
return 0;
|
|
}
|
|
|
|
if (!(callfunc("F_keCharge",@cost,$@keuc_discount,1))) {
|
|
callfunc "F_keIntro", e_ag, "Sorry, you don't have enough zeny.";
|
|
return 0;
|
|
}
|
|
|
|
if ($@keuc_Mat1 && $@keuc_Qty1)
|
|
delitem $@keuc_Mat1, $@keuc_Qty1;
|
|
if ($@keuc_Mat2 && $@keuc_Qty2)
|
|
delitem $@keuc_Mat2, $@keuc_Qty2;
|
|
|
|
set @failtype,-1;
|
|
//Recycling cost...
|
|
set @cost, rand(1000);
|
|
if (@cost < $@keuc_Fail2Chance) //Total Failure
|
|
set @failtype, 0;
|
|
else if (@cost < $@keuc_Fail1Chance) //Partial Failure
|
|
set @failtype, @failsave;
|
|
else if (@cost < $@keuc_Fail0Chance) //Harmless Failure
|
|
set @failtype, 3;
|
|
else { //Success
|
|
successremovecards @part;
|
|
emotion e_ho;
|
|
return 1;
|
|
}
|
|
failedremovecards @part,@failtype;
|
|
if (@failtype == 1)
|
|
mes "The cards were lost...";
|
|
if (@failtype == 2)
|
|
mes "The item was lost...";
|
|
if (@failtype == 0)
|
|
mes "Lost the cards and item...";
|
|
callfunc "F_keIntro", e_swt, "...oops.";
|
|
return 1;
|
|
}
|
|
|
|
} |