//Le Livre d'Ymir http://www.bookofymir.net/ //traduit par No Healing //===== eAthena Script ======================================= //= Episode 12 Socket Enchant NPC //===== By: ================================================== //= Gepard //===== Current Version: ===================================== //= 1.1 //===== Compatible With: ===================================== //= eAthena SVN //===== Description: ========================================= //= [Aegis Conversion] //= Adds slots to selected weapons and armor. //===== Additional Comments: ================================= //= 1.0 First version. //= 1.1 Duplicates now spawn from floating NPCs. [L0ne_W0lf] //============================================================ - script Leablem#dummy::SocketEnchant2 -1,{ if (checkweight(1201,1) == 0) { mes "- Une petite minute! Vous portez trop d'objets sur vous et vous ne pouvez pas en recevoir d'autres. Revenez après vous en être débarrassé de quelques-uns. -"; close; } mes "[Leablem]"; mes "Bien le " + ( isday() ? "bonjour" : "bonsoir" ) + "! Je m'appelle Leablem, et je suis un spécialiste de l'ajout d'emplacements dans les armes et les armures. Ce n'est pas toujours facile, mais j'en tire une certaine fierté."; next; mes "[Leablem]"; mes "J'ai appris la plupart de ce que je sais de mon frère Seyablem, mais je pense avoir encore beaucoup à apprendre. Comprenez bien que contrairement à mon frère, mes capacités sont limitées."; next; mes "[Leablem]"; mes "Il était un peu réticent à m'enseigner ce qu'il savait au début: il aurait voulu que son talent reste unique... Mais il m'a finalement appris comment faire."; next; mes "[Leablem]"; mes "J'ai appris beaucoup grâce à lui mais je n'ai toujours pas très confiance en moi. Malgré tout, je peux voir ce que je peux faire."; next; mes "[Leablem]"; mes "En fait, il y a une chose que mon frère ne veut pas que je fasse... Je ne veux pas qu'il se fâche. Je n'en dirai pas plus."; next; mes "[Leablem]"; mes "Mais dites-moi: à quel équipement voudriez-vous que je rajoute un emplacement? Le coût de mes services et les chances de succès dépendent de ce sur quoi je travaille."; next; switch(select("Arme:Armure:De quoi ne voulez-vous pas parler?:Plus d'informations:Quitter la conversation")) { case 1: mes "[Leablem]"; mes "Une arme vous dites? Bien sûr, pas de problèmes. Les armes sont regroupées en quatre classes différentes. La classe C est la plus facile à travailler, et la classe S la plus difficile. Vous voudriez que j'ajoute un emplacement à un objet de quelle classe?"; next; switch(select("C:B:A:S")) { case 1: mes "[Leablem]"; mes "Classe C, je vois. Quel genre d'arme avez-vous?"; next; switch(select("Livre de Mère Nature:Livre des Flots:Livre de la Bourrasque:Livre du Soleil Éclatant")) { case 1: callfunc "Func_Socket2",1554,1569,40,66,200,1010,10; case 2: callfunc "Func_Socket2",1553,1568,40,66,200,1010,10; case 3: callfunc "Func_Socket2",1556,1571,40,66,200,1010,10; case 4: callfunc "Func_Socket2",1555,1570,40,66,200,1010,10; } case 2: mes "[Leablem]"; mes "Classe B, je vois. Quel genre d'arme avez-vous?"; next; switch(select("Hache d'Orc:Cimeterre:Pointe")) { case 1: callfunc "Func_Socket2",1304,1309,40,66,200,984,1; case 2: callfunc "Func_Socket2",1113,1114,40,66,200,984,1; case 3: callfunc "Func_Socket2",1523,1538,40,61,300,984,1; } case 3: mes "[Leablem]"; mes "Classe A? Vous avez le goût du risque! Mais on va essayer. Quel genre d'arme avez-vous?"; next; switch(select("Tueur de Dragons:Katar de l'Antre de la Terre:Katar des Flammes Déchaînées:Katar des Terres Gelées:Katar aux Lames de Vent:Masse Dorée:Luth Oriental:Fouet Royal:Lance Fantôme:Gae Bolg:Schweizersabel")) { case 1: callfunc "Func_Socket2",13001,13030,40,61,500,984,2; case 2: callfunc "Func_Socket2", 1257, 1276,40,66,500,984,2; case 3: callfunc "Func_Socket2", 1258, 1277,40,66,500,984,2; case 4: callfunc "Func_Socket2", 1256, 1275,40,66,500,984,2; case 5: callfunc "Func_Socket2", 1259, 1278,40,66,500,984,2; case 6: callfunc "Func_Socket2", 1524, 1539,40,61,500,984,2; case 7: callfunc "Func_Socket2", 1918, 1922,40,61,500,984,2; case 8: callfunc "Func_Socket2", 1970, 1976,40,61,500,984,2; case 9: callfunc "Func_Socket2", 1477, 1479,40,56,500,984,2; case 10: callfunc "Func_Socket2", 1474, 1480,40,56,500,984,2; case 11: callfunc "Func_Socket2", 1167, 1178,40,61,500,984,2; } case 4: mes "[Leablem]"; mes "Uh, Classe S?! Oh, par tous les dieux! Vous êtes sérieu"+( sex ? "x" : "se" )+"? *Tremble*"; mes "Alors... À quel type d'arme de Classe S voulez-vous que j'ajoute un emplacement?"; next; switch(select("Zephyrus:Brise-Armure:Fléau des Dragons:Brise-Lame:Dague d'Assassin:Grande Croix:Bourreau")) { case 1: callfunc "Func_Socket2",1468, 1481,40,51,1000,984,5,999,10; case 2: callfunc "Func_Socket2",1225,13032,40,51,1000,984,5,999,10; case 3: callfunc "Func_Socket2",1166, 1180,40,51,1000,984,5,999,10; case 4: callfunc "Func_Socket2",1224,13031,40,51,1000,984,5,999,10; case 5: callfunc "Func_Socket2",1232,13033,40,51,1000,984,5,999,10; case 6: callfunc "Func_Socket2",1528, 1540,40,51,1000,984,5,999,10; case 7: callfunc "Func_Socket2",1169, 1179,40,51,1000,984,5,999,10; } } case 2: mes "[Leablem]"; mes "Une armure, vous dites? Bien sûr, aucun problème. Les armures sont divisées en quatre classes. La classe C est la plus facile à travailler, et la classe S la plus difficile. Vous voudriez que j'ajoute un emplacement à un objet de quelle classe?"; next; switch(select("C:B:A:S")) { case 1: mes "[Leablem]"; mes "La Classe C class, je vois. Alors, quel type d'armure avez-vous?"; next; switch(select("Tournesol:Chapeau de Remise des Diplômes:Gros Ruban:Casquette de Marin")) { case 1: callfunc "Func_Socket2",2253,5351,40,66,100,999,3; case 2: callfunc "Func_Socket2",5012,5347,40,66,100,999,3; case 3: callfunc "Func_Socket2",2244,5348,40,66,100,999,5; case 4: callfunc "Func_Socket2",5016,5349,40,66,100,999,5; } case 2: mes "[Leablem]"; mes "Une armure de Classe B, hein? Bien, quel type d'armure avez-vous?"; next; switch(select("Anneau des Morts:Chaussures à Serres")) { case 1: callfunc "Func_Socket2",2609,2715,40,61,300,999,5; case 2: callfunc "Func_Socket2",2409,2432,40,61,300,999,5; } case 3: mes "[Leablem]"; mes "Une armure de Classe A? Vous avez le goût du risque, mais ça me va. Alors, quel type d'armure avez-vous?"; next; switch(select("Bandeau de Pirate:Bottes de Cuir Noir")) { case 1: callfunc "Func_Socket2",2287,5350,50,61,500,985,1; // 50,61 - it's not a typo case 2: callfunc "Func_Socket2",2425,2434,40,51,500,985,1; } case 4: mes "[Leablem]"; mes "Uh, Classe S?! Oh, par tous les dieux! Vous êtes sérieu"+( sex ? "x" : "se" )+"? *Tremble*"; mes "Alors... À quel type d'armure de Classe S voulez-vous que j'ajoute un emplacement?"; next; switch(select("Manteau de Magicien:Robe Sacrée:Mission Divine:Maillot-de-Corps:Sous-Vêtements")) { case 1: callfunc "Func_Socket2",2334,2372,40,51,1000,985,1; // Mage Coat has 10% success chance case 2: callfunc "Func_Socket2",2327,2373,45,51,1000,985,1; // the rest has 5% case 3: callfunc "Func_Socket2",2111,2128,45,51,1000,985,1; case 4: callfunc "Func_Socket2",2522,2523,45,51,1000,985,1; case 5: callfunc "Func_Socket2",2339,2371,45,51,1000,985,1; } } case 3: mes "[Leablem]"; mes "Oh, ce n'est rien de grave, mais il pense que les hommes ne devraient pas toucher à ces choses-là. Je ferais mieux d'oublier..."; next; mes "[Leablem]"; mes "... Le service en soi a de très grandes chances de succès, mais il demande beaucoup de matériaux et coûte très cher alors je doute que beaucoup de gens l'utiliseraient même si j'en faisais profiter le public."; next; mes "[Leablem]"; mes "...Humm..."; next; mes "[Leablem]"; mes "............."; next; mes "[Leablem]"; mes "............."; next; mes "[Leablem]"; mes "Mais vous avez l'air intéressé"+( sex ? "" : "e" )+"... Si vous voulez, je peux vous en parler. Mais vous devez me promettre de garder le secret. Mon frère serait fou de rage s'il apprenait que je vous en ai parlé!"; next; mes "[Leablem]"; mes "Ce service très spécial a 90% de chances de succès, mais il demande 2 Lingots et 200 millions de zénys: il permet d'ajouter un emplacement à un Heaume du Roi Soleil."; next; mes "[Leablem]"; mes "Mon frère m'a dit qu'il était interdit de modifier cet objet depuis des temps anciens, mais la curiosité est humaine, et je pense être très humain... Alors j'ai essayé et mis au point cette technique."; next; switch(select("Utiliser ce Service","Quitter la conversation")) { case 1: mes "[Leablem]"; mes "................."; next; mes "[Leablem]"; mes "................."; next; mes "[Leablem]"; mes "...Que... Quoi? Non, ce n'est pas la peine de me regarder comme ça! Je ne le ferai pas! Quand je dis non, c'est non!"; next; mes "[Leablem]"; mes "Non, je ne le ferai pas! Hors de question!"; next; mes "[Leablem]"; mes "Je ne peux pas le faire..."; next; mes "[Leablem]"; mes "Je ne peux pas... C'est..."; next; mes "[Leablem]"; mes "................."; next; mes "[Leablem]"; mes "Hum..."; next; mes "[Leablem]"; mes "Vous êtes vraiment obstiné"+( sex ? "" : "e" )+", vous! D'accord, je vais faire une exception. Mais n'en parlez à personne, et surtout pas à mon frère, c'est bien compris?"; next; mes "[Leablem]"; mes "Bien, dans ce cas, apportez-moi:"; mes "^FF00002 Lingots^000000, ^FF0000200 millions de zénys^000000 -- le prix du service --,"; mes "et un ^FF0000Heaume du Roi Soleil.^000000"; mes "^FF0000Vous savez que la chance de réussite est de 90%, n'est-ce pas?^000000"; mes "Rapportez-moi ça sans attendre afin que je puisse m'y mettre au plus vite."; next; if ((Zeny > 199999999) && (countitem(969) > 1) && (countitem(5022) > 0)) { mes "[Leablem]"; mes "Oh mais vous avez tout ça! Bien, commençons. Priez les dieux pour que ça réussisse."; next; set .@a, rand(1,100); if ((.@a > 4) && (.@a < 95)) { specialeffect EF_LORD; mes "[Leablem]"; mes "Excellent! Regardez, j'ai ajouté un emplacement au parfait endroit! Félicitations!"; delitem 5022,1; //Helm_Of_Sun delitem 969,2; //Gold set Zeny, Zeny - 200000000; getitem 5353,1; //Helm_Of_Sun_ next; mes "[Leablem]"; mes "Bon. C'est la première et la dernière fois que je fais ça pour vous. Et n'en parlez à personne, c'est bien compris?"; close; } else { specialeffect EF_SUI_EXPLOSION; mes "[Leablem]"; mes "Wah! Oh, par tous les dieux! J'ai raté! J'imagine que je n'ai vraiment pas de chance. Il n'y a plus rien à faire maintenant... C'est pour ça que je ne voulais pas le faire!"; delitem 5022,1; //Helm_Of_Sun delitem 969,2; //Gold set Zeny, Zeny - 200000000; next; mes "[Leablem]"; mes "Ne me redemandez jamais de faire quelque chose comme ça à nouveau!"; mes "Bah~"; close; } } else { mes "[Leablem]"; mes "Hum..."; next; mes "[Leablem]"; mes "Vous n'avez même pas ça sur vous. Pourquoi donc me demandez-vous d'essayer? Bon, j'en ai assez. Je ne le ferais pas pour vous, même si vous m'apportiez tous les matériaux."; close; } case 2: mes "[Leablem]"; mes "Ne répétez à personne ce que je vous ai dit, c'est bien compris?"; close; } case 4: mes "[Leablem]"; mes "Vous voulez plus d'informations? Eh bien je crois que vous n'avez pas besoin de savoir grand-chose de plus. Cependant, je peux vous donner un tuyau."; next; mes "[Leablem]"; mes "Les spécialistes de ce genre de chose dans les différentes villes sont plus ou moins habiles selon le taux de raffinage de l'équipement. Tout du moins c'est ce qu'on raconte."; next; mes "[Leablem]"; mes "Certains sont plus habiles avec des objets qui n'ont pas été raffinés, et d'autres le sont avec des objets raffinés de nombreuses fois."; next; mes "[Leablem]"; mes "Si l'ajout d'emplacement échoue, l'objet sera détruit. Je fais de mon mieux, mais ce n'est pas une tâche facile."; next; mes "[Leablem]"; mes "Oh, une dernière chose:"; mes "^FF0000n'ayez jamais sur vous deux objets du même type quand vous voulez lui ajouter un emplacement, ou celui-ci sera ajouté à l'un des deux au hasard, et si jamais ça se passait mal vous pourriez perdre un objet auquel vous teniez.^000000"; next; mes "[Leablem]"; mes "Voilà, j'espère que ça vous aide."; close; case 5: mes "[Leablem]"; mes "Comme vous voulez."; close; } } payon,236,199,3 duplicate(SocketEnchant2) Leablem#pay 86,{ lighthalzen,96,137,3 duplicate(SocketEnchant2) Leablem#lhz 86 prontera,244,169,5 duplicate(SocketEnchant2) Leablem#prt 86 moc_ruins,154,86,3 duplicate(SocketEnchant2) Leablem#moc 86 function script Func_Socket2 { mes "[Leablem]"; if(getarg(7,0) != 0 && getarg(8,0) != 0) { mes getitemname(getarg(0)) + "... Bien, dans ce cas vous devrez m'apporter:"; mes "^FF0000" + (getarg(4) >= 1000 ? (getarg(4)/1000 + ",000") : getarg(4)) + ",000 zénys pour payer mes services,"; mes "^FF0000" + getarg(6) + " " + getitemname(getarg(5)) + " et " + getarg(8) + " " + getitemname(getarg(7)) + "."; mes "^FF0000Bien sûr, il vous faudra aussi un " + getitemname(getarg(0)) + ".^000000"; } else { mes getitemname(getarg(0)) + "... Bien, dans ce cas vous devrez m'apporter:"; mes "^FF0000" + (getarg(4) >= 1000 ? (getarg(4)/1000 + ",000") : getarg(4)) + ",000 zénys pour payer mes services et " + getarg(6) + " " + getitemname(getarg(5)) + (getarg(6) > 1 && getarg(5) != 999 ? "s":"") + "."; mes "^FF0000Bien sûr, il vous faudra aussi un " + getitemname(getarg(0)) + "."; } next; mes "[Leablem]"; mes "Avez-vous tout ça? Au passage, si l'ajout d'emplacement échoue, vous perdrez tous les matériaux ainsi que votre " + (getiteminfo(getarg(0),5)&2 ? "arme" : "armure") + "."; // EQP_HAND_R = 2, it's a weapon, otherwise armor mes "Gardez aussi à l'esprit que si jamais vous avez attaché une carte à votre " + (getiteminfo(getarg(0),5)&2 ? "arme" : "armure") + ", vous la perdrez même si l'opération est un succès."; next; switch(select("Ajouter un emplacement.:Essayer une prochaine fois.")) { case 1: if ((Zeny >= getarg(4)*1000) && (countitem(getarg(5)) >= getarg(6)) && (countitem(getarg(7,512)) >= getarg(8,0)) && (countitem(getarg(0)) > 0)) // if there's no getarg(7) and getarg(8) provided, check itemcount against 0 (we still need a valid item ID though) { mes "[Leablem]"; mes "Bien, dans ce cas allons-y! Priez pour que je réussisse..."; next; set .@a, rand(1,100); if ((.@a > getarg(2)) && (.@a < getarg(3))) { specialeffect EF_LORD; mes "[Leablem]"; mes "Génial! On dirait que ça a marché! Ça a l'air d'être du bon travail. Félicitations!"; delitem getarg(0),1; delitem getarg(5),getarg(6); if (getarg(7,0) != 0 && getarg(8,0) != 0) delitem getarg(7),getarg(8); set Zeny, Zeny - getarg(4)*1000; getitem getarg(1),1; next; mes "[Leablem]"; mes "À la prochaine, l'ami"+ ( sex ? "" : "e" ) +"!"; close; } else { specialeffect EF_SUI_EXPLOSION; mes "[Leablem]"; mes "Ouah! ... Je suis désolé, ça n'a pas marché. Mais je n'y suis pour rien... Les dieux en avaient surement décidé ainsi, n'est-ce pas? Ne soyez pas déçu"+ ( sex ? "" : "e" ) +": vous aurez surement plus de chance la prochaine fois."; delitem getarg(0),1; delitem getarg(5),getarg(6); if (getarg(7,0) != 0 && getarg(8,0) != 0) delitem getarg(7),getarg(8); set Zeny, Zeny - getarg(4)*1000; next; mes "[Leablem]"; mes "À la prochaine, l'ami"+ ( sex ? "" : "e" ) +"!"; close; } } else { mes "[Leablem]"; mes "Vous n'avez pas écouté ou quoi? Il me faut tous ces objets! Apportez-moi ça au plus vite!"; close; } case 2: mes "[Leablem]"; mes "A très bientôt!"; close; } }