//Le Livre d'Ymir http://www.bookofymir.net/ //traduit par Myllena //===== eAthena Script ======================================= //= Socket Enchant //===== By: ================================================== //= eAthena dev team //===== Current Version: ===================================== //= 2.0 //===== Compatible With: ===================================== //= eAthena SVN //===== Description: ========================================= //= [Aegis Conversion] //= Adds slots to selected weapons and armor. //===== Additional Comments: ================================= //= 0.1a added missing L_No: to 2 funcs [Lupus] //= 0.1b Removed duplicates [Toms] //= 0.2 Added missing next;'s [Evera] //= 0.3 Fixed Zweihander[+] id [Lupus] //= 1.0 Fixed ingredients check [Lupus] //= 1.1 Updated to official. [SinSloth] //= 1.1b Optimized/cleaned [ultramage] //= 1.2 Fixed some typos and a nasty bug. [SinSloth] //= 1.3 Fixed a wrong item ID with Sphinx Hat. [SinSloth] //= 1.4 Corrected NPC names to fall within proper restrictions. [L0ne_W0lf] //= 1.5 Removed Ontouch trigger area from NPCs. [L0ne_W0lf] //= 1.6 Replaced effect numerics with constants. [Samuray22] //= 1.7 Adjusted prices on some armor and weapons. [L0ne_W0lf] //= 1.8 Added missing Gae Bolg and Dragon Slayer. [Kisuka] //= 1.9 Moved Episode 12 items to separate NPC. //= Some cleanup & optimization. [Gepard] //= 2.0 Duplicates now spawn from floating NPCs. [L0ne_W0lf] //============================================================ - script Seiyablem#dummy::SocketEnchant -1,{ if (checkweight(1201,1) == 0) { mes "Attendez une minute! Vous portez trop d'articles sur vous. Veuillez revenir après avoir déposé quelques objets dans votre Stock Kafra."; close; } mes "[Seiyablem]"; mes ( isday() ? "Bonjour" : "Bonsoir" ) + "."; mes "Je suis un ingénieur spécialisé dans l'amélioration des Armes et Armures classiques."; mes "Le tarif, les matériaux nécessaires, et la chance de réussite, dépendent des spécificités de l'objet sur lequel je dois travailler."; next; mes "[Seiyablem]"; mes "Améliorer une arme ou une armure peut paraître simple, mais c'est en fait bien plus compliqué qu'on ne le croit."; mes "Êtes-vous intéressé par mes services?"; next; switch( select( "Amélioration d'une Arme.","Amélioration d'une Armure.","Amélioration?","Annuler." ) ) { case 1: mes "[Seiyablem]"; mes "Vous voulez améliorer une Arme?"; mes "Les Armes sont classées en différentes catégories suivant la difficulté à travailler sur celles-ci. Les Armes de Classe C sont relativement faciles à travailler, et les Armes de Classe S sont les plus coriaces."; mes "Quelle est la Classe de l'Arme sur laquelle vous voulez essayer une amélioration?"; next; switch( select( "Classe C","Classe B","Classe A","Classe S" ) ) { case 1: mes "[Seiyablem]"; mes "Une arme de Classe C?"; mes "Cela paraît raisonnable."; mes "Veuillez choisir votre arme:"; next; switch(select("Trident","Corde","Violon")) { case 1: callfunc "Func_Socket",1460,1461,40,66,200,1010,10; case 2: callfunc "Func_Socket",1950,1951,40,66,200,1010,10; case 3: callfunc "Func_Socket",1901,1902,40,66,200,1010,10; } case 2: mes "[Seiyablem]"; mes "Une arme de Classe B?"; mes "Très bien..."; mes "Veuillez choisir votre arme:"; next; switch( select( "Fléau","Gladius","Arc Gakkung","Pique","Haedonggum","Luth","Câble","Waghnak","Arbalète")) { case 1: callfunc "Func_Socket",1519,1520,40,61,300,1010,10; case 2: callfunc "Func_Socket",1219,1220,40,61,300, 984, 1,999,5; case 3: callfunc "Func_Socket",1714,1716,40,61,300, 984, 2,999,5; case 4: callfunc "Func_Socket",1407,1408,40,61,200,1010,10; case 5: callfunc "Func_Socket",1123,1128,40,61,300, 984, 2,999,5; case 6: callfunc "Func_Socket",1905,1906,40,61,300,1011,10; case 7: callfunc "Func_Socket",1954,1955,40,61,300,1011,10; case 8: callfunc "Func_Socket",1801,1802,40,61,300,1010,10; case 9: callfunc "Func_Socket",1713,1715,40,61,300, 984, 2,999,5; } case 3: mes "[Seiyablem]"; mes "Ooh une arme de Classe A?"; mes "Nous entrons en territoire à haut risque!"; mes "Veuillez choisir votre arme:"; next; switch( select( "Arc de Chasse","Bâton de Survie (Intelligence)","Zweihander","Flamberge","Percemaille","Baliste","Gourdin","Furie","Claymore")) { case 1: callfunc "Func_Socket",1718,1726,40,61,500,984,2,999,10; case 2: callfunc "Func_Socket",1619,1620,40,61,500,984,5,999,10; case 3: callfunc "Func_Socket",1168,1171,40,61,800,984,5,999,10; case 4: callfunc "Func_Socket",1129,1149,40,61,500,984,2,999,10; case 5: callfunc "Func_Socket",1261,1266,40,61,700,984,5,999,10; case 6: callfunc "Func_Socket",1722,1727,40,61,500,984,5,999,10; case 7: callfunc "Func_Socket",1522,1532,40,61,500,984,2,999,10; case 8: callfunc "Func_Socket",1814,1816,40,61,500,984,5,999,10; case 9: callfunc "Func_Socket",1163,1172,40,61,500,984,2,999,10; // NPC says "5 Oridecon" (Aegis) but takes only 2 } case 4: mes "[Seiyablem]"; mes "Whoa, whoa, whoa..."; mes "Une arme de Classe S? Très bien..."; mes "Ce serait un miracle si j'y arrivais, mais bon... On ne sait jamais!"; mes "Veuillez choisir votre arme:"; next; switch(select("Gungnir","Couteau Empoisonné","Pic à Glace","Sucsamad","Ginnungagap","Coutelas","Faux","Bâton de Survie (Dextérité)")) { case 1: callfunc "Func_Socket", 1413, 1418,40,51,1000,984,5,999,10; case 2: callfunc "Func_Socket", 1239,13016,40,51,1000,984,5,999,10; case 3: callfunc "Func_Socket", 1230,13017,40,51,2000,984,5,999,10; case 4: callfunc "Func_Socket", 1236,13018,40,51,1000,984,5,999,10; case 5: callfunc "Func_Socket",13002,13019,40,51,1000,984,5,999,10; case 6: callfunc "Func_Socket", 1135,13400,40,51,1000,984,5,999,10; case 7: callfunc "Func_Socket", 1466, 1476,40,51,1000,984,5,999,10; case 8: callfunc "Func_Socket", 1617, 1618,40,51,2000,984,5,999,10; } } case 2: mes "[Seiyablem]"; mes "Une armure, vous dites?"; mes "D'accord, pas de problème."; mes "Les armures sont divisées en quatre Classes différentes, qui dépendent de la difficulté de réussite."; mes "La Classe C est celle sur laquelle il est le plus facile de travailler, et la Classe S la plus difficile."; mes "De quelle Classe est l'Armure sur laquelle vous voulez essayer une amélioration?"; next; switch(select("Classe C","Classe B","Classe A","Classe S" ) ) { case 1: mes "[Seiyablem]"; mes "Une armure de Classe C?"; mes "Cela paraît raisonnable."; mes "Veuillez choisir votre armure:"; next; switch(select("Manteau","Blouson","Serre-Tête","Calotte")) { case 1: callfunc "Func_Socket",2307,2308,40,66,200,999,3; case 2: callfunc "Func_Socket",2309,2310,40,66,200,999,3; case 3: callfunc "Func_Socket",2232,2233,40,66,200,999,3; case 4: callfunc "Func_Socket",2216,2217,40,66,200,999,3; } case 2: mes "[Seiyablem]"; mes "Une armure de Classe B? Très bien..."; mes "Veuillez choisir votre armure:"; next; switch( select( "Bouclier Scintillant","Cotte de Mailles","Saint Robe","Robe de Soie","Bottes","Chaussures","Cache-Nez [1]","Garde","Rondache","Bouclier","Toque de Bongun")) { case 1: callfunc "Func_Socket",2107,2108,40,61,250,999,5; case 2: callfunc "Func_Socket",2314,2315,40,61,250,999,5; case 3: callfunc "Func_Socket",2325,2326,40,61,300,999,5; case 4: callfunc "Func_Socket",2321,2322,40,61,300,999,5; case 5: callfunc "Func_Socket",2405,2406,40,61,300,999,5; case 6: callfunc "Func_Socket",2403,2404,40,61,300,999,5; case 7: callfunc "Func_Socket",2503,2504,40,61,300,999,5; case 8: callfunc "Func_Socket",2101,2102,40,61,300,999,5; case 9: callfunc "Func_Socket",2103,2104,40,61,300,999,5; case 10: callfunc "Func_Socket",2105,2106,40,61,250,999,5; case 11: callfunc "Func_Socket",5046,5168,40,61,250,999,5; } case 3: mes "[Seiyablem]"; mes "Ooh, une armure de Classe A?"; mes "Nous entrons en territoire à haut risque!"; mes "Veuillez choisir votre armure:"; next; switch( select( "Casque Serti","Chapeau Séelique","Livre de Mémoires","Justaucorps","Harnois","Armure Complète","Vêtements de Voleur","Grèves","Coiffe","Surveste","Heaume","Tenue de Ninja","Heaume d'Orc","Vieille Cape","Calotte","Casque d'Or","Broche","Toque de Munak")) { case 1: callfunc "Func_Socket",2230,2231,40,61,400,985,1; case 2: callfunc "Func_Socket",5114,5120,40,61,400,985,1; case 3: callfunc "Func_Socket",2109,2121,40,61,400,985,1; case 4: callfunc "Func_Socket",2330,2331,40,61,400,985,1; case 5: callfunc "Func_Socket",2341,2342,40,61,400,985,1; case 6: callfunc "Func_Socket",2316,2317,40,61,400,985,1; case 7: callfunc "Func_Socket",2335,2336,40,61,400,985,1; case 8: callfunc "Func_Socket",2411,2412,40,61,400,985,1; case 9: callfunc "Func_Socket",5092,5093,40,61,400,985,1; case 10: callfunc "Func_Socket",2505,2506,40,61,400,985,1; case 11: callfunc "Func_Socket",2228,2229,40,61,400,985,1; case 12: callfunc "Func_Socket",2337,2359,40,61,400,985,1; case 13: callfunc "Func_Socket",2299,5157,40,61,400,985,1; case 14: callfunc "Func_Socket",2507,2525,40,61,400,985,1; case 15: callfunc "Func_Socket",2251,5158,40,61,400,985,1; case 16: callfunc "Func_Socket",2246,5159,40,61,400,985,1; case 17: callfunc "Func_Socket",2605,2625,40,61,400,985,1; case 18: callfunc "Func_Socket",2264,5167,40,61,300,985,1; } case 4: mes "[Seiyablem]"; mes "Hum... Une armure de Classe S?"; mes "Vous êtes sûr de vous?"; mes "Très bien... Veuillez choisir votre armure... Mais je ne vous garantis rien!"; next; switch(select("Cornes Majestueuses","Serre-Tête à Pointes","Casque en Os","Chapeau du Capitaine","Couronne","Tiare","Chapeau de Pharaon","Robe d'Incantation","Boucle d'Oreille","Anneau","Palette")) { case 1: callfunc "Func_Socket",2256,5160,40,51,2000,985,2; case 2: callfunc "Func_Socket",2258,5161,40,51,2000,985,2; case 3: callfunc "Func_Socket",5017,5162,40,51,2000,985,2; case 4: callfunc "Func_Socket",5019,5163,40,51,2000,985,2; case 5: callfunc "Func_Socket",2235,5165,40,51,2000,985,2; case 6: callfunc "Func_Socket",2234,5164,40,51,2000,985,2; case 7: callfunc "Func_Socket",5053,5166,40,51,1000,985,2; case 8: callfunc "Func_Socket",2343,2360,40,51,1000,985,2; case 9: callfunc "Func_Socket",2602,2622,40,51,1000,985,2; case 10: callfunc "Func_Socket",2601,2621,40,51,1000,985,2; case 11: callfunc "Func_Socket",2619,2671,40,51,1000,985,2; } } case 3: mes "[Seiyablem]"; mes "Je peux essayer d'améliorer une arme ou une armure pour vous, à savoir, tenter d'y ajouter un emplacement pour une carte."; mes "C'est très compliqué, et je vous mentirais si je vous disais que je maîtrise parfaitement ce processus."; mes "Ceci dit, je pense avoir identifié certains facteurs de réussite..."; next; mes "[Seiyablem]"; mes "Dans certaines villes, les tentatives d'addition d'Emplacements ont plus de chances de réussir s'il s'agit d'un équipement peu raffiné."; mes "Dans d'autres villes, c'est l'inverse."; mes "Bizarre, non?"; next; mes "[Seiyablem]"; mes "Oh, il y a également quelque chose de très important à savoir avant de se lancer dans une tentative d'amélioration d'équipement."; mes "Si vous me demandez d'ajouter un emplacement pour une carte à un objet, faites bien attention de ne pas en avoir plusieurs du même type dans votre inventaire."; next; mes "[Seiyablem]"; mes "Par exemple, si vous possédez un Manteau +7 et un Manteau normal dans votre inventaire, il se peut que je ne choisisse pas le bon pendant le processus d'amélioration."; mes "Faites donc bien attention."; next; mes "[Seiyablem]"; mes "^FF0000Ne portez sur vous que l'équipement sur lequel vous souhaitez que je travaille^000000."; mes "Par mesure de sécurité, il vaut mieux déposer tous vos autres équipements dans votre Stock Kafra."; close; case 4: mes "[Seiyablem]"; mes "A bientôt, aventurier."; close; } } function script Func_Socket { mes "[Seiyablem]"; mes "Vous souhaitez tenter une amélioration sur l'objet " +getitemname(getarg(0))+ "?"; mes "Très bien alors apportez-moi ^FF0000" + getarg(6) + " " + getitemname(getarg(5)) + (getarg(6) > 1 && getarg(5) != 999 ? "s":"") + "^000000, " + (getarg(7,0) != 0 && getarg(8,0) != 0 ? ("^FF0000" + getarg(8,0) + " " + getitemname(getarg(7,0)) + (getarg(8,0) > 1 && getarg(7,0) != 999 ? "s":"") + "^000000 ") : "") + "ainsi que ^FF0000" + (getarg(4) >= 1000 ? (getarg(4)/1000 + ",000") : getarg(4)) + ",000 Zenys^000000."; next; mes "[Seiyablem]"; if (getiteminfo(getarg(0),5)&2) // EQP_HAND_R = 2, it's a weapon { mes "[Seiyablem]"; mes "Je peux tenter l'amélioration de cet équipement si vous avez les matériaux et l'argent nécessaires sur vous."; mes "Cependant, sachez qu'il y a une chance que le processus échoue."; mes "Je dois donc vous avertir..."; next; mes "[Seiyablem]"; mes "Si le processus d'amélioration échoue, l'^FF0000Arme^000000, ^FF0000ainsi que toutes les cartes présentes le cas échéant, seront détruites^000000."; mes "Souhaitez-vous poursuivre le processus d'amélioration de votre Arme?"; next; } else // armor { mes "[Seiyablem]"; mes "Je peux tenter l'amélioration de cet équipement si vous avez les matériaux et l'argent nécessaires sur vous."; mes "Cependant, sachez qu'il y a une chance que le processus échoue."; mes "Je dois donc vous avertir..."; next; mes "[Seiyablem]"; mes "Si le processus d'amélioration échoue, l'^FF0000Armure^000000, ^FF0000son raffinement^000000 ^FF0000ainsi que toutes les cartes présentes le cas échéant, seront détruites^000000."; mes "Souhaitez-vous poursuivre le processus d'amélioration de votre Armure?"; next; } switch(select("Bien sûr!","J'ai changé d'avis.")) { 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 "[Seiyablem]"; mes "Très bien! Le vrai travail va pouvoir commencer!"; mes "Vous feriez mieux de m'encourager ou de prier... enfin comme vous voulez, mais je ne garantis pas le résultat."; next; set .@a, rand(1,100); if ((.@a > getarg(2)) && (.@a < getarg(3))) { specialeffect getarg(3) == 51 ? EF_LORD : EF_SANCTUARY; // only S Class items have Lord of Vermillion effect mes "[Seiyablem]"; mes "Eh bien on dirait que c'est une réussite!"; mes "Et voilà pour vous!"; 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 "[Seiyablem]"; mes "A bientôt, mon pote!"; close; } else { specialeffect EF_SUI_EXPLOSION; mes "[Seiyablem]"; mes "Wah! ...Je suis désolé, mais j'ai échoué."; mes "Ne soyez pas déçu, vous retenterez votre chance une autre fois, d'accord?"; 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 "[Seiyablem]"; mes "A bientôt!"; close; } } else { mes "[Seiyablem]"; mes "J'aimerais beaucoup travailler sur votre équipement, mais il vous manque certaines choses..."; mes "Êtes-vous certain d'avoir l'équipement en question, les matériaux, et l'argent nécessaires?"; close; } case 2: mes "[Seiyablem]"; mes "Besoin de temps pour réfléchir, hein?"; mes "Je comprends."; mes "Souvenez-vous simplement du fameux adage qui dit que la chance sourit aux audacieux~"; close; } } payon,140,151,5 duplicate(SocketEnchant) Seiyablem#pay 84 lhz_in02,281,35,5 duplicate(SocketEnchant) Seiyablem#lhz 84 prt_in,33,70,5 duplicate(SocketEnchant) Seiyablem#prt 84 morocc,51,41,4 duplicate(SocketEnchant) Seiyablem#moc 84 - script Jeune Homme#dummy::SocketMan -1,{ mes "[Jeune Homme]"; mes "J'étudie afin de devenir Ingénieur d'Amélioration d'Armes et d'Armures."; mes "C'est un nouveau domaine d'études, qui permet d'ajouter des emplacements pour une carte aux équipements... Une activité très lucrative qui plus est."; next; mes "[Jeune Homme]"; mes "Bien sûr, il faut beaucoup de chance et d'argent pour ce faire..."; mes "Mais si vous êtes vraiment chanceux, vous pouvez obtenir des Armes ou des Armures uniques, avec plus d'emplacements pour une carte qu'à l'origine!"; mes "Ça semble dingue, non?"; next; mes "[Jeune Homme]"; mes "Mais ne vous réjouissez pas trop vite."; mes "Ce travail d'Amélioration ne peut être pratiqué que sur certains équipements, et l'ajout d'emplacements pour une carte ne peut pas dépasser deux supplémentaires."; mes "J'ai encore tellement à apprendre..."; close; } prt_in,31,57,1 duplicate(SocketMan) Jeune Homme#prt 97 payon,143,143,7 duplicate(SocketMan) Jeune Homme#pay 97 morocc,60,42,3 duplicate(SocketMan) Jeune Homme#moc 97 lhz_in02,269,33,5 duplicate(SocketMan) Jeune Homme#lhz 97