//Le Livre d'Ymir http://www.bookofymir.net/ //traduit par Myllena //===== eAthena Script ======================================= //= Kafra Express - Uncarder Module //===== By: ================================================== //= Skotlex //===== Current Version: ===================================== //= 1.6 //===== 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( "- Retour", "- Voir le détail des Prix", "- "+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 "Très bien, écoutez-moi bien..."; next; mes "["+@name$+"]"; if ($@keuc_BaseCost) mes "Le prix de base est de "+$@keuc_BaseCost+" Zenys."; mes "Chaque carte qui doit être enlevée ajoute un prix de +"+$@keuc_CardCost+" Zenys."; mes "Le niveau de raffinage de l'équipement concerné peut entraîner une hausse du prix:"; mes "Armures: "+$@keuc_UpgradeCostA+" Zenys par niveau."; mes "Armes de Niveau 1: "+$@keuc_UpgradeCostW1+" Zenys par niveau."; mes "Armes de Niveau 2: "+$@keuc_UpgradeCostW2+" Zenys par niveau."; mes "Armes de Niveau 3: "+$@keuc_UpgradeCostW3+" Zenys par niveau."; mes "Armes de Niveau 4: "+$@keuc_UpgradeCostW4+" Zenys par niveau."; if ($@keuc_Mat1 && $@keuc_Qty1) { mes "Les matériaux requis sont:"; mes "- "+$@keuc_Qty1+" "+getitemname($@keuc_Mat1)+"."; } if ($@keuc_Mat2 && $@keuc_Qty2) mes "- "+$@keuc_Qty2+" "+getitemname($@keuc_Mat2)+"."; if ($@keuc_Fail1Chance || $@keuc_Fail2Chance) mes "Il y a un risque que le processus échoue et que vous perdiez tous vos objets."; 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, "Il n'y a pas de carte à retirer là-dessus!"; 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( "- Annuler", "- Retirer les cartes ("+@price+" Zenys, l'objet en priorité)", "- Retirer les cartes ("+@price+" Zenys, les cartes en priorité)" ); } 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, "Vous n'avez pas tous les matériaux nécessaires..."; return 0; } if (!(callfunc("F_keCharge",@cost,$@keuc_discount,1))) { callfunc "F_keIntro", e_ag, "Désolée, mais vous n'avez pas assez d'argent."; 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 "Les cartes sont perdues..."; if (@failtype == 2) mes "L'équipement a été perdu..."; if (@failtype == 0) mes "Les cartes et l'équipement ont été perdus..."; callfunc "F_keIntro", e_swt, "...oups."; return 1; } }