//===== eAthena Script ======================================= //= Adoption NPC //= ( Creado para el proyecto GuiaRO ) //===== By: ========================= //= Kutt Katrea (kg.designer@gmail.com) //===== Current Version: =================== //= 1.0 //===== Compatible With: ===================== //= eAthena SVN //===== Description: ============================================ //= Un NPC para adopción alternativo, reemplaza al NPC de adopción normal. //= Permite adoptar tanto a Novices como a First Jobs. //= El nivel base máximo para adoptar puede ser configurado en el archivo: [.adopt_lv] //= Autocontenido. Todo el proceso lo efectua un solo NPC. //===== Additional Comments: ========================================== //= V 1.0: Lanzamiento inicial. //===================================================================== // Esta obra está licenciada bajo una Licencia Creative Commons Atribución-No Comercial-Compartir Obras Derivadas Igual 3.0 Unported. // http://creativecommons.org/licenses/by-nc-sa/3.0/ //===================================================================== prt_church,83,122,0 warp prtch03 1,2,prt_church,164,171 prt_church,162,171,0 warp prtch01-3 1,2,prt_church,86,122 prt_church.gat,172,177,6 script Adopcion::adoption_agent 61,{ set @charid, getcharid(0); if ( .aip == 0 ) goto L_initAdoption; if ( getnpctimer(0) > 120000 ) goto L_cancel; if ( @charid != .own_id && @charid != .partner_id && @charid != .child_id) goto L_adoptionInProgress; if ( .aip == 1 ) goto L_talkToPartner; if ( .aip == 2 ) goto L_talkToChild; L_cancel: if ( @charid !=.own_id && @charid !=.partner_id && @charid!=.child_id) goto L_cancelAnnounce; mes .show_name$; mes "Los siento, pero su adopción se cancelo por retraso"; next; L_cancelAnnounce: set .aip, 0; set .own_id, 0; set .partner_id, 0; set .child_id, 0; npctalk "La adopcion anterior se canceló por retraso."; L_initAdoption: if ( Upper == 2 ) goto L_isBaby; mes .show_name$; mes "Hola, yo dirijo este centro de adopción."; mes "¿Que necesitas?"; next; menu "Informes",L_informes,"Adoptar",L_adopt,"Nada",-; L_comeBack: mes .show_name$; mes "Vuelve cuando quieras"; close; L_informes: mes .show_name$; mes "Para poder adoptar es necesario que los padres sean una pareja casada y que ambos tengan nivel base 70 o más."; mes "El personaje a adoptar debe ser Novice o Primer Job (no renacido) de nivel base máximo " + .adopt_lv + "."; close; L_adopt: mes .show_name$; mes "Para adoptar necesitan estar aqui tu pareja y el personaje a ser adoptado"; mes "Además, solo puedes adoptar una sola vez."; next; if ( select("Continuar la adopción", "Cancelar la adopción") - 1 ) goto L_comeBack; if ( BaseLevel >= 70 ) goto L_checkMarriage; mes .show_name$; mes "Debes tener al menos Nivel Base 70 para poder adoptar"; close2; goto L_flagstozero; L_checkMarriage: if ( getchildid() ) goto L_hasAdopted; set @partner_id, getpartnerid(); if ( ! @partner_id ) goto L_noMarried; if ( ! ispartneron() ) goto L_partnerOffline; if ( .aip ) goto L_adoptionInProgress; set .aip, 1; set .own_id, @charid; set .own_name$, strcharinfo(0); set .partner_id, @partner_id; L_getChildName: mes .show_name$; mes "¿Podrias decirme el nombre del personaje que quieren adoptar?"; next; input .child_name$; set .child_id, getcharid(0, .child_name$); if ( .child_id ) goto L_gotoTalkToPartner; mes .show_name$; mes "Ese jugador no existe o no esta en línea"; next; if ( select("Elegir otro nombre", "Cancelar adopción") - 1 ) goto L_cancelByOwn; goto L_getChildName; L_gotoTalkToPartner: if ( .child_id == .own_id ) goto L_cantAdoptYourself; if ( .child_id == .partner_id ) goto L_cantAdoptYourPartner; npctalk "La pareja de " + .own_name$ + ", ¿puede hablar conmigo, por favor?. Tienes 2 minutos."; initnpctimer; L_needToTalkPartner: mes .show_name$; mes "Ahora, necesito hablar con tu pareja."; close; L_talkToPartner: if ( @charid == .partner_id ) goto L_partnerAccept; if ( @charid == .own_id ) goto L_needToTalkPartner; mes .show_name$; mes "En un momento te llamo, no desesperes."; close; L_partnerAccept: stopnpctimer; mes .show_name$; mes "Tu pareja dice que quieren adoptar a ^0000FF" + .child_name$ + "^000000"; mes "¿Estas de acuerdo?"; next; if ( select("Si", "No") -1 ) goto L_cancelByPartner; if ( BaseLevel >= 70 ) goto L_checkAccept; mes .show_name$; mes "Debes tener al menos Nivel Base 70 para poder adoptar"; close2; goto L_cancelByRequirements; L_checkAccept: set .partner_name$, strcharinfo(0); set .aip, 2; npctalk "¿Puede " + .child_name$ + " hablar conmigo?. Tienes 2 minutos."; initnpctimer; L_needToTalkChild: mes .show_name$; mes "Para terminar, necesito hablar con su futuro hijo, " + .child_name$; close; L_talkToChild: if (@charid != .child_id ) goto L_needToTalkChild; stopnpctimer; mes .show_name$; mes "^0000FF" + .own_name$ + "^000000 y ^0000FF" + .partner_name$ + "^000000 desean adoptarte."; mes "¿Los aceptas como padres?"; next; if ( select("Si", "No") - 1 ) goto L_cancelBySon; if ( Class > Job_Thief ) goto L_cancelByJob; if ( BaseLevel > .adopt_lv ) goto L_cancelByLevel; mes .show_name$; mes "Procederé a terminar el trámite"; next; if ( ! getcharid(0, .own_name$) ) goto L_cancelByNotBothOnline; if ( ! getcharid(0, .partner_name$) ) goto L_cancelByNotBothOnline; adopt .own_name$, .partner_name$, .child_name$; announce .own_name$ + " y " + .partner_name$ + " han adoptado a " + .child_name$, bc_all; set .aip, 0; set .own_id, 0; set .partner_id, 0; set .child_id, 0; mes .show_name$; mes "Que sean una familia muy feliz"; next; goto L_comeBack; L_cantAdoptYourself: mes .show_name$; mes "¡No puedes adoptarte a ti mismo!"; next; goto L_cancelByOwn; L_cantAdoptYourPartner: mes .show_name$; mes "¡No puedes adoptar a tu pareja!"; next; goto L_cancelByOwn; L_cancelByJob: mes .show_name$; mes "Lo siento, solo es posible adoptar Novices y First Job."; close2; goto L_cancelByRequirements; L_cancelByLevel: mes .show_name$; mes "Lo siento, tu nivel es demasiado alto para ser adoptado."; close2; goto L_cancelByRequirements; L_cancelByNotBothOnline: mes .show_name$; mes "Lo siento, ambos padres deben estar online para terminar el trámite."; close2; goto L_cancelByRequirements; L_cancelByPartner: npctalk .own_name$ + ", tu pareja no esta de acuerdo en adoptar a " + .child_name$; goto L_cancelByOwn; L_cancelBySon: npctalk .child_name$ + " no quiere ser adoptado por " + .own_name$ + " y " + .partner_name$; L_cancelByOwn: set .aip, 0; set .own_id, 0; set .partner_id, 0; set .child_id, 0; mes .show_name$; mes "El tramite de adopción se ha cancelado"; close; L_adoptionInProgress: mes .show_name$; mes "Hay una adopción en proceso, ¿puedes esperar un momento?"; mes "Espera a que termine para poder seguir con tu trámite."; close; L_noMarried: mes .show_name$; if ( Sex ) mes "Lo siento, pero para adoptar necesitas estar casado"; else mes "Lo siento, pero para adoptar necesitas estar casada"; close; L_partnerOffline: mes .show_name$; mes "La adopción no puede continuar si tu pareja no esta en línea."; close; L_hasAdopted: mes .show_name$; mes "Lo siento, pero solo puedes adoptar una vez"; close; L_isBaby: mes .show_name$; if ( Sex ) mes "¿Como te tratan tus padres, pequeño?"; else mes "¿Como te tratan tus padres, pequeña?"; close; OnTimer120000: npctalk "La adopcion se canceló por retraso."; goto L_flagstozero; L_cancelByRequirements: npctalk "La adopcion se canceló por incumplimiento de requisitos."; L_flagstozero: set .aip, 0; set .own_id, 0; set .partner_id, 0; set .child_id, 0; end; OnInit: set .show_name$, "^ff0000Adoption^000000"; set .adopt_lv, 20; }