From c42b3221cc0b4c9e451e446daaebe15b5b853682 Mon Sep 17 00:00:00 2001 From: Churrufli Date: Sat, 15 Aug 2026 10:07:06 +0200 Subject: [PATCH 1/8] Adventure Mode: Spanish localization UI strings + Shandalar quests/shops --- .../src/forge/adventure/stage/GameStage.java | 4 +- .../src/forge/adventure/util/MapDialog.java | 4 +- .../Shandalar/world/quests-es-ES.json | 11470 ++++++++++++++++ .../Shandalar/world/shops-es-ES.json | 7760 +++++++++++ .../common/maps/map/main_story/spawn.tmx | 76 +- forge-gui/res/languages/es-ES.properties | 35 + .../tools/updateAdventureTranslations.py | 293 + 7 files changed, 19600 insertions(+), 42 deletions(-) create mode 100644 forge-gui/res/adventure/Shandalar/world/quests-es-ES.json create mode 100644 forge-gui/res/adventure/Shandalar/world/shops-es-ES.json create mode 100644 forge-gui/tools/updateAdventureTranslations.py diff --git a/forge-gui-mobile/src/forge/adventure/stage/GameStage.java b/forge-gui-mobile/src/forge/adventure/stage/GameStage.java index 4944c9822a4e..a1980ef16938 100644 --- a/forge-gui-mobile/src/forge/adventure/stage/GameStage.java +++ b/forge-gui-mobile/src/forge/adventure/stage/GameStage.java @@ -438,8 +438,8 @@ public boolean keyDown(int keycode) { if (TileMapScene.instance().currentMap().isInMap()) { DialogData noQuicksave = new DialogData(); DialogData noQuicksaveOK = new DialogData(); - noQuicksave.text = "Game not saved. Quicksave is only available on the world map."; - noQuicksaveOK.name = "OK"; + noQuicksave.text = Forge.getLocalizer().getMessageorUseDefault("lblQuicksaveOnlyOnWorldMap", "Game not saved. Quicksave is only available on the world map."); + noQuicksaveOK.name = Forge.getLocalizer().getMessage("lblOK"); noQuicksave.options = new DialogData[]{noQuicksaveOK}; MapDialog noQuicksaveDialog = new MapDialog(noQuicksave, MapStage.getInstance(), -1, null); showDialog(); diff --git a/forge-gui-mobile/src/forge/adventure/util/MapDialog.java b/forge-gui-mobile/src/forge/adventure/util/MapDialog.java index 43b7e1f70905..1729da728331 100644 --- a/forge-gui-mobile/src/forge/adventure/util/MapDialog.java +++ b/forge-gui-mobile/src/forge/adventure/util/MapDialog.java @@ -167,7 +167,7 @@ private boolean loadDialog(DialogData dialog) { //Displays a dialog with dialogu if (actor instanceof CharacterSprite) sprite = ((CharacterSprite) actor).getAvatar(); String text; //Check for localized string (locname), otherwise print text. - if (dialog.loctext != null && !dialog.loctext.isEmpty()) text = L.getMessage(dialog.loctext); + if (dialog.loctext != null && !dialog.loctext.isEmpty()) text = L.getMessageorUseDefault(dialog.loctext, dialog.text); else text = dialog.text; disposeAudio(); if (dialog.voiceFile != null) { @@ -228,7 +228,7 @@ public void run() { for (DialogData option : dialog.options) { if (isConditionOk(option.condition)) { String name; //Get localized label if present. - if (option.locname != null && !option.locname.isEmpty()) name = L.getMessage(option.locname); + if (option.locname != null && !option.locname.isEmpty()) name = L.getMessageorUseDefault(option.locname, option.name); else name = option.name; TextraButton B; if (option.isDisabled) { diff --git a/forge-gui/res/adventure/Shandalar/world/quests-es-ES.json b/forge-gui/res/adventure/Shandalar/world/quests-es-ES.json new file mode 100644 index 000000000000..e5be672543a8 --- /dev/null +++ b/forge-gui/res/adventure/Shandalar/world/quests-es-ES.json @@ -0,0 +1,11470 @@ +[ + { + "id": 1, + "isTemplate": true, + "name": "Sal ahí fuera y mata", + "description": "Derrota a dos $(enemy_1) y cobra la recompensa.", + "offerDialog": { + "text": "\"¡Eh, tú! Sí, tú, el gran mago malvado con cara de sorpresa.\" Un anciano demacrado te grita desde el sitio en el que está sentado; habrías jurado que ese lado de la calle estaba vacío hace apenas unos segundos.", + "options": [ + { + "name": "\"Bueno, lo de gran mago malvado lo has acertado. ¿Qué necesitas?\"", + "text": "\"Ahora mismo hay una recompensa por $(enemy_1), si hablas con la gente adecuada.\" Sonríe de oreja a oreja. \"Yo no soy esa gente, pero sé dónde encontrarla.\"", + "options": [ + { + "name": "\"¿Dónde está la trampa?\"", + "text": "\"No hay trampa, solo un trato. No estoy en forma para pelear ahora mismo, pero ando corto de oro. Acaba con un $(enemy_1) para ti y otro para mí, yo te presento a quien hay que conocer, y repartimos los beneficios.\"", + "options": [ + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "1", + "POIReference": "" + } + ], + "name": "\"Está bien, trato hecho.\" (Aceptar misión)" + }, + { + "name": "\"¿$(enemy_1)? ¿Dos? No merece la pena ni buscarlos.\" (Rechazar misión)" + } + ] + }, + { + "name": "\"¿Y si encuentro yo mismo a esa gente adecuada?\"", + "text": "Se encoge de hombros como si le diera igual. \"Entonces tendré que buscarme a alguien más grande, más malo y, sobre todo, más rápido que tú.\"", + "options": [ + { + "name": "\"Suerte con eso.\" (Rechazar misión)" + }, + { + "name": "\"Digamos que me cruzo con uno o dos $(enemy_1). ¿Qué me estás proponiendo?\"", + "text": "\"No hay trampa, solo un trato. No estoy en forma para pelear ahora mismo, pero ando corto de oro. Acaba con un $(enemy_1) para ti y otro para mí, yo te presento a quien hay que conocer, y repartimos los beneficios.\"", + "options": [ + { + "name": "\"No me compensa. Lo siento.\" (Rechazar misión)" + }, + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "1", + "POIReference": "" + } + ], + "name": "\"Pues ve preparando la presentación.\" (Aceptar misión)" + } + ] + } + ] + } + ] + } + ] + }, + "prologue": {}, + "epilogue": {}, + "failureDialog": { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": -2, + "POIReference": "$(poi_2)" + } + ], + "text": "Tras dedicar a buscar $(enemy_1) todo el tiempo que estabas dispuesto a dedicar, tachas este asunto de tus notas. (-2 de reputación local)", + "options": [ + { + "name": "(Misión fallida)" + } + ] + }, + "declinedDialog": { + "text": "Vuelve mañana y quizás tenga algo que sí quieras hacer.", + "options": [ + { + "name": "(Captando la indirecta, que de sutil tiene poco, te marchas.)" + } + ] + }, + "rewardDescription": "La mitad de una recompensa sin especificar", + "stages": [ + { + "id": 1, + "name": "Derrota a $(enemy_1)", + "description": "Derrota a $(enemy_1) dos veces, que es tu parte del trato.", + "mapFlag": "", + "mapFlagValue": 1, + "count3": 2, + "worldMapOK": true, + "objective": "Defeat", + "enemyTags": [ + "BiomeColorless" + ], + "prologue": { + "text": "El bioma de los yermos suele ser un buen sitio para buscar $(enemy_1).", + "options": [ + { + "name": "(Continuar la misión)" + } + ] + }, + "epilogue": {}, + "POIToken": "" + }, + { + "id": 2, + "name": "Viajar", + "description": "Vuelve al pueblo a cobrar tu parte de la recompensa.", + "mapFlag": "", + "mapFlagValue": 1, + "here": true, + "objective": "Travel", + "prerequisiteIDs": [ + 1 + ], + "prologue": { + "text": "Ya despachada la pareja de $(enemy_1), toca ir a cobrar. Recuerda que puedes seguir esta misión desde tu registro de misiones para orientarte.", + "options": [ + { + "name": "(Continuar la misión)" + } + ] + }, + "epilogue": { + "text": "Encuentras a tu socio en esta empresa exactamente donde lo dejaste. Poco socio, entonces, pero cumple su parte del trato y te marchas con tu mitad del botín.", + "options": [ + { + "action": [ + { + "grantRewards": [ + { + "type": "gold", + "count": 500 + }, + { + "type": "shards", + "count": 10 + }, + { + "type": "card", + "probability": 0.2, + "count": 2, + "rarity": [ + "Common" + ], + "colorType": "Colorless" + }, + { + "type": "card", + "probability": 0.2, + "count": 2, + "rarity": [ + "Common" + ], + "colorType": "Colorless" + }, + { + "type": "card", + "probability": 0.2, + "count": 1, + "rarity": [ + "Common" + ], + "colorType": "Any" + }, + { + "type": "card", + "probability": 0.2, + "count": 1, + "rarity": [ + "Common" + ], + "colorType": "Any" + } + ] + } + ], + "name": "(Completar misión)" + } + ] + }, + "POIToken": "" + } + ], + "questSourceTags": [ + "waste_town_generic", + "waste_town_tribal", + "waste_town_identity" + ] + }, + { + "id": 2, + "isTemplate": true, + "name": "Ansia de viajar", + "description": "Haz una entrega en un lugar lejano.", + "offerDialog": { + "text": "\"Disculpa, pero tienes pinta de haber viajado mucho.\" Un mago de aspecto agotado reclama tu atención. \"Tengo una carta de gran importancia que DEBE entregarse en mano en $(poi_1), en las tierras de $(biome_1). ¿Te encargarías de ello?\"", + "options": [ + { + "name": "\"¿Por qué tiene que ser en mano?\"", + "text": "Titubea. \"Bueno, siendo franco, la destinataria es un tanto... peculiar. Ya no se fía de los métodos de entrega mágicos. ¿Te lo puedes creer? Un pequeño accidente de invocación y...\"", + "options": [ + { + "name": "\"Pues entonces quizá no sea yo la persona indicada. Ya sabes, siendo mago...\"", + "text": "\"No, no, no pasará nada. ¡De verdad!\" Se detiene un momento. \"Solo... quizá no lo menciones. Y quizá mientas si te pregunta. Con eso deberías estar a salvo.\"", + "options": [ + { + "name": "\"...¿a salvo? Mira, de repente creo que tengo cosas mejores que hacer.\" (Rechazar misión)" + }, + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "2", + "POIReference": "" + } + ], + "name": "\"Me gusta vivir peligrosamente.\" (Aceptar misión)" + } + ] + } + ] + }, + { + "name": "\"Llevarle el correo a alguien no suena precisamente a viajar. No, gracias.\" (Rechazar misión)" + }, + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "2", + "POIReference": "" + } + ], + "name": "\"Claro, me vendría bien cambiar de aires.\" (Aceptar misión)" + } + ] + }, + "prologue": {}, + "epilogue": { + "text": "Tras mucho viaje, algo de teletransporte, o ambas cosas, por fin llegas a tu destino. La carta que llevas, al menos, no ha sufrido lo más mínimo.", + "options": [ + { + "name": "(Continuar)", + "text": "Te acercas al edificio que te describieron y una mujer te llama desde una ventana del piso de arriba. \"¡Tú! ¡Tienes algo mío! ¡Dámelo! ¡Dámelo! ¡Dámelo!\"", + "options": [ + { + "name": "\"Por supuesto.\" Conjuras una ráfaga de viento para llevar la carta hasta su ventana.", + "text": "\"¡Ahhh! ¡Lo sabía! ¡Sabía que olías a magia!\" Cierra la ventana de golpe y se niega a abrir la puerta.", + "options": [ + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": 1, + "POIReference": "" + } + ], + "name": "\"Supongo que debería haber pedido la recompensa primero.\" (+1 de reputación local. Completar misión)" + }, + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": -1, + "POIReference": "" + } + ], + "name": "(Echar la puerta abajo)", + "text": "Varios vecinos del pueblo se han fijado en ti tras el arrebato de la mujer. Quizá, después de todo, no sea buena idea. (-1 de reputación local)", + "options": [ + { + "name": "Murmuras para tus adentros: \"No merece la pena montar una escena, supongo.\" (Completar misión)" + } + ] + } + ] + }, + { + "name": "\"Si te refieres a esta carta, entonces sí.\" Te acercas.", + "text": "Baja un cubo atado a una cuerda. Dentro hay una bolsita de monedas. \"¡¡¡Dámelo!!!\"", + "options": [ + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "grantRewards": [ + { + "type": "gold", + "count": 150, + "addMaxCount": 300 + }, + { + "type": "card", + "count": 1, + "rarity": [ + "Common", + "Uncommon" + ], + "cardText": "courier" + } + ], + "issueQuest": "", + "addMapReputation": 2, + "POIReference": "" + } + ], + "name": "Coges las monedas y dejas la carta en el cubo. \"He de decir que tu actitud me resulta inquietante.\"", + "text": "(+2 de reputación local)", + "options": [ + { + "name": "(Completar misión)" + } + ] + } + ] + } + ] + } + ] + }, + "failureDialog": { + "text": "El viaje ha dejado de merecer la pena, y renuncias a intentar llegar a $(poi_1).", + "options": [ + { + "name": "(Misión fallida)" + } + ] + }, + "declinedDialog": { + "text": "Vuelve mañana y quizás tenga algo que sí quieras hacer.", + "options": [ + { + "name": "(Captando la indirecta, que de sutil tiene poco, te marchas.)" + } + ] + }, + "rewardDescription": "Un cambio de aires, como poco", + "stages": [ + { + "id": 1, + "name": "Viajar", + "description": "Emprende el largo viaje hasta $(poi_1)", + "mapFlag": "", + "mapFlagValue": 1, + "count1": 80, + "count2": 15, + "POITags": [ + "Town" + ], + "objective": "Travel", + "prologue": { + "text": "No hay nada como una buena caminata para estirar las piernas, ¿verdad? Seguramente podrías ahorrarte tiempo con los hechizos adecuados, pero... ¿será seguro?", + "options": [ + { + "name": "(Comenzar la misión)" + } + ] + }, + "epilogue": {}, + "POIToken": "" + } + ] + }, + { + "id": 3, + "isTemplate": true, + "name": "(Casi) abierto al público", + "description": "Ayuda a un nuevo comerciante a abrir su tienda.", + "offerDialog": { + "text": "Un hombre corpulento en un rincón de la taberna te llama la atención. \"Me han dicho que buscas trabajo.\"", + "options": [ + { + "name": "\"Lo siento, te has equivocado de persona.\" (Rechazar misión)" + }, + { + "name": "Mientras pague, sí. ¿Qué necesitas?", + "text": "Soy nuevo en el pueblo y quiero abrir una tienda de hechizos. Pero necesito unos suministros que tuve que dejar atrás. ¿Puedes ir a recogerlos por mí a $(poi_1)?", + "options": [ + { + "name": "\"¿Y la paga?\"", + "text": "\"¿Qué tal una muestra de la mercancía?\"", + "options": [ + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "3", + "POIReference": "" + } + ], + "name": "\"Trato hecho.\" (Aceptar misión)" + }, + { + "name": "\"Buscaba algo un poco más concreto. Paso.\" (Rechazar misión)" + } + ] + }, + { + "name": "\"Lo siento, soy un mago ocupado, lo que significa que no tengo tiempo para recados. Suerte con la tienda.\" (Rechazar misión)" + } + ] + } + ] + }, + "prologue": {}, + "epilogue": {}, + "failureDialog": { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": -5, + "POIReference": "$(poi_1)" + } + ], + "text": "No toda empresa está destinada a prosperar. En este caso han fracasado dos: una empresa comercial y una aventura. (-5 de reputación local)", + "options": [ + { + "name": "(Misión fallida)" + } + ] + }, + "declinedDialog": { + "text": "Vuelve mañana y quizás tenga algo que sí quieras hacer.", + "options": [ + { + "name": "(Captando la indirecta, que de sutil tiene poco, te marchas.)" + } + ] + }, + "rewardDescription": "Una muestra de la mercancía", + "stages": [ + { + "id": 1, + "name": "Marcharse", + "description": "Sal del pueblo.", + "anyPOI": true, + "mapFlag": "", + "mapFlagValue": 1, + "objective": "Leave", + "prologue": {}, + "epilogue": { + "text": "(Recuerda que puedes seguir esta misión desde tu registro de misiones para que te indique cómo llegar.)", + "options": [ + { + "name": "(Comenzar la misión)" + } + ] + }, + "POIToken": "" + }, + { + "id": 2, + "name": "Viajar", + "description": "Ve a $(poi_2) a recoger la mercancía del vendedor.", + "mapFlag": "", + "mapFlagValue": 1, + "count1": 50, + "count2": 20, + "POITags": [ + "BiomeColorless", + "Town" + ], + "objective": "Travel", + "prerequisiteIDs": [ + 1 + ], + "prologue": {}, + "epilogue": { + "text": "Al llegar al punto de recogida, encuentras entre los suministros un libro de hechizos de aspecto más bien modesto. Cabe suponer que esta es la mercancía que tu patrón piensa vender.", + "options": [ + { + "name": "Recoges el género y emprendes el camino de vuelta.", + "text": "Justo cuando empiezas a recogerlo todo, un libro de hechizos se desliza por un desgarrón que no habías visto en el saco. Se abre al caer al suelo.\t", + "options": [ + { + "name": "Decides examinar el libro de hechizos.", + "text": "Como corresponde a una tienda recién abierta, el contenido son en su mayoría hechizos comunes.", + "options": [ + { + "action": [ + { + "grantRewards": [ + { + "type": "card", + "count": 1, + "rarity": [ + "Uncommon" + ] + } + ] + } + ], + "name": "Coge un hechizo, rápido y con discreción, antes de continuar.", + "text": "Recibes un hechizo de calidad dudosa.", + "options": [ + { + "name": "Al fin y al cabo me llevo una muestra de la mercancía... (Marcharse)" + } + ] + }, + { + "name": "Pasar los objetos a otro saco y seguir" + }, + { + "name": "Buscar algo más útil", + "text": "Al fondo de la colección encuentras algunas cosas al menos algo más infrecuentes. Y también reparas en un chiquillo que te observa desde debajo de un árbol junto al camino.", + "options": [ + { + "name": "Pasas los objetos a otro saco y sigues. (Continuar misión)" + }, + { + "action": [ + { + "grantRewards": [ + { + "type": "card", + "count": 1, + "rarity": [ + "Uncommon" + ] + } + ] + }, + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": -2, + "POIReference": "$(poi_2)" + }, + { + "grantRewards": [ + { + "type": "card", + "count": 4, + "rarity": [ + "Uncommon" + ] + } + ] + } + ], + "name": "\"No es más que un crío. Da igual.\" Coges una de las cartas y te marchas.", + "text": "(-2 de reputación local)", + "options": [ + { + "name": "(Continuar la misión)" + } + ] + } + ] + } + ] + }, + { + "name": "Pasas los objetos a otro saco y sigues. (Continuar misión)" + } + ] + } + ] + }, + "POIToken": "" + }, + { + "id": 3, + "name": "Viajar", + "description": "Vuelve a $(poi_1)", + "mapFlag": "", + "mapFlagValue": 1, + "here": true, + "POITags": [ + "BiomeColorless" + ], + "objective": "Travel", + "prerequisiteIDs": [ + 2 + ], + "prologue": {}, + "epilogue": { + "text": "Mientras estabas fuera, el nuevo comerciante ha montado una carpa llena de estanterías desparejadas y vacías. Ahora estarán algo menos vacías, pero dudas que su negocio vaya a prosperar.", + "options": [ + { + "action": [ + { + "grantRewards": [ + { + "type": "card", + "count": 4, + "rarity": [ + "Common" + ] + }, + { + "type": "shards", + "count": 5, + "addMaxCount": 5 + } + ] + } + ], + "name": "(Completar misión)" + } + ] + }, + "POIToken": "" + } + ], + "questSourceTags": [ + "waste_town_generic", + "waste_town_identity", + "waste_town_tribal" + ] + }, + { + "id": 4, + "isTemplate": true, + "name": "De cacería", + "description": "Encuentra y mata al $(enemy_2) antes de que escape.", + "offerDialog": { + "text": "Un elfo bien vestido, probablemente un mercader, se acerca a ti. \"Aventurero, ¿estás disponible? Un $(enemy_2) lleva un tiempo causando problemas en esta zona y necesitamos a alguien que se ocupe del asunto.\"", + "options": [ + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "4", + "POIReference": "$(poi_1)" + } + ], + "name": "\"Los $(enemy_2) son mi especialidad. Dalo por hecho.\" (Aceptar misión)" + }, + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": -1, + "POIReference": "$(poi_1)" + } + ], + "name": "\"Ahora mismo tengo cosas mejores que hacer.\" (Rechazar misión)", + "text": "El elfo no dice nada, pero se le nota decepcionado. (-1 de reputación local)", + "options": [ + { + "name": "(Continuar)" + } + ] + }, + { + "name": "\"¿Hay alguna recompensa publicada?\"", + "text": "\"Oficialmente, no.\" El elfo se lo piensa un momento. \"Pero extraoficialmente puedo ofrecerte una pequeña selección de hechizos y fragmentos de maná.\"", + "options": [ + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "4", + "POIReference": "$(poi_1)" + } + ], + "name": "\"Yo me encargo.\" (Aceptar misión)" + }, + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": -2, + "POIReference": "" + } + ], + "name": "\"¿Por un $(enemy_2)? No, gracias.\" (Rechazar misión)", + "text": "El elfo no dice nada, pero se le nota decepcionado. (-2 de reputación local)", + "options": [ + { + "name": "(Continuar)" + } + ] + } + ] + } + ] + }, + "prologue": {}, + "epilogue": { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": 3, + "POIReference": "" + } + ], + "text": "Consciente o inconscientemente, te sacudes los hombros al volver a entrar en el pueblo. Los lugareños parecen encantados de que hayas resuelto su problema. (+3 de reputación local)", + "options": [ + { + "action": [ + { + "grantRewards": [ + { + "type": "card", + "count": 2, + "colors": [ + "Green" + ], + "rarity": [ + "Common" + ], + "colorType": "MonoColor" + }, + { + "type": "card", + "probability": 0.5, + "count": 2, + "colors": [ + "Green" + ], + "rarity": [ + "Common", + "Uncommon" + ], + "colorType": "MonoColor" + }, + { + "type": "card", + "count": 1, + "colors": [ + "Green" + ], + "rarity": [ + "Uncommon" + ], + "colorType": "MonoColor" + }, + { + "type": "shards", + "count": 4, + "addMaxCount": 4 + } + ] + } + ], + "name": "(Completar misión)" + } + ] + }, + "failureDialog": { + "text": "Lo diste todo, pero hoy no ha sido una cacería exitosa ni de lejos. El $(enemy_2) seguirá siendo un problema para la zona. (-2 de reputación del pueblo)", + "options": [ + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": -2, + "POIReference": "$(poi_1)" + } + ], + "name": "(Misión fallida)" + } + ] + }, + "declinedDialog": { + "text": "Vuelve mañana y quizás tenga algo que sí quieras hacer.", + "options": [ + { + "name": "(Captando la indirecta, que de sutil tiene poco, te marchas.)" + } + ] + }, + "rewardDescription": "Fragmentos, comunes e infrecuentes verdes", + "stages": [ + { + "id": 1, + "name": "Marcharse", + "description": "Sal del pueblo para empezar la cacería.", + "anyPOI": true, + "mapFlag": "", + "mapFlagValue": 1, + "objective": "Leave", + "prologue": {}, + "epilogue": {}, + "POIToken": "" + }, + { + "id": 2, + "name": "Caza a un $(enemy_2)", + "description": "Encuentra y derrota al $(enemy_2) antes de que escape. Solo tienes una oportunidad, así que aprovéchala.", + "mapFlag": "", + "mapFlagValue": 1, + "count3": 30, + "worldMapOK": true, + "objective": "Hunt", + "prerequisiteIDs": [ + 1 + ], + "enemyTags": [ + "BiomeGreen" + ], + "prologue": {}, + "epilogue": {}, + "POIToken": "" + }, + { + "id": 3, + "name": "Viajar", + "description": "Vuelve al pueblo a cobrar la recompensa por el $(enemy_2).", + "mapFlag": "", + "mapFlagValue": 1, + "here": true, + "objective": "Travel", + "prerequisiteIDs": [ + 2 + ], + "prologue": {}, + "epilogue": {}, + "POIToken": "" + } + ], + "questSourceTags": [ + "forest_town_generic", + "forest_town_identity", + "forest_town_tribal", + "forest_capital" + ] + }, + { + "id": 5, + "isTemplate": true, + "name": "Un entierro programado", + "description": "Encuentra y mata al $(enemy_2) antes de que escape.", + "offerDialog": { + "text": "Un humanoide con capa y capucha se acerca a ti y habla con voz baja y áspera. \"Tú servirás. Necesito un $(enemy_2). Vivo o muerto. Y cuando digo vivo, quiero decir muerto. Rápido.\"", + "options": [ + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "5", + "POIReference": "$(poi_1)" + } + ], + "name": "\"Con mucho gusto.\" (Aceptar misión)" + }, + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": -1, + "POIReference": "$(poi_1)" + } + ], + "name": "\"Eso suena bastante siniestro.\" (Rechazar misión)", + "text": "El silencio que sigue es mucho más siniestro, pero la figura acaba dándose la vuelta y marchándose. (-1 de reputación del pueblo)", + "options": [ + { + "name": "(Continuar)" + } + ] + }, + { + "name": "\"La urgencia sale cara.\"", + "text": "\"También sale caro no ser el siguiente entierro programado.\" Mientras sigues asimilando esa frase, la figura continúa: \"Diez fragmentos de maná. Y puedes quedarte los huesos.\"", + "options": [ + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "5", + "POIReference": "$(poi_1)" + } + ], + "name": "\"Dime dónde está.\" (Aceptar misión)" + }, + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": -2, + "POIReference": "" + } + ], + "name": "\"¿Por un $(enemy_2)? No, gracias.\" (Rechazar misión)", + "text": "El aire se enfría un instante mientras se da la vuelta y se aleja. (-2 de reputación del pueblo)", + "options": [ + { + "name": "(Continuar)" + } + ] + } + ] + } + ] + }, + "prologue": {}, + "epilogue": { + "text": "Nada más cruzar las puertas, un par de gules se acercan correteando y te quitan el cadáver. Desaparecen dentro de un edificio cercano. Apenas unos instantes después, uno vuelve con un cofre de madera mientras el otro se lleva otro idéntico. (+3 de reputación local)", + "options": [ + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": 3, + "POIReference": "" + }, + { + "grantRewards": [ + { + "type": "card", + "count": 1, + "subTypes": [ + "Skeleton" + ] + }, + { + "type": "shards", + "count": 10 + }, + { + "type": "card", + "probability": 0.5, + "count": 2, + "colors": [ + "Black" + ], + "rarity": [ + "common" + ], + "colorType": "MonoColor" + }, + { + "type": "card", + "probability": 0.5, + "count": 1, + "colors": [ + "Black" + ], + "rarity": [ + "uncommon" + ], + "colorType": "MonoColor" + } + ] + } + ], + "name": "(Completar misión)" + } + ] + }, + "failureDialog": { + "text": "El $(enemy_2) escapa y pierdes tu oportunidad. Esperemos que eso no acabe con la recolección de tus propias piezas. (-2 de reputación del pueblo)", + "options": [ + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": -2, + "POIReference": "$(poi_1)" + } + ], + "name": "(Misión fallida)" + } + ] + }, + "declinedDialog": { + "text": "Vuelve mañana y quizás tenga algo que sí quieras hacer.", + "options": [ + { + "name": "(Captando la indirecta, que de sutil tiene poco, te marchas.)" + } + ] + }, + "rewardDescription": "Fragmentos y huesos", + "stages": [ + { + "id": 1, + "name": "Marcharse", + "description": "Sal del pueblo para localizar a tu víctima.", + "anyPOI": true, + "mapFlag": "", + "mapFlagValue": 1, + "objective": "Leave", + "prologue": {}, + "epilogue": {}, + "POIToken": "" + }, + { + "id": 2, + "name": "Caza a un $(enemy_2)", + "description": "Encuentra y derrota al $(enemy_2) antes de que escape. Solo tienes una oportunidad, así que aprovéchala.", + "mapFlag": "", + "mapFlagValue": 1, + "count3": 30, + "worldMapOK": true, + "objective": "Hunt", + "prerequisiteIDs": [ + 1 + ], + "enemyTags": [ + "BiomeBlack" + ], + "prologue": {}, + "epilogue": {}, + "POIToken": "" + }, + { + "id": 3, + "name": "Viajar", + "description": "Vuelve al pueblo a cobrar la recompensa por el $(enemy_2). Y los huesos.", + "mapFlag": "", + "mapFlagValue": 1, + "here": true, + "objective": "Travel", + "prerequisiteIDs": [ + 2 + ], + "prologue": {}, + "epilogue": {}, + "POIToken": "" + } + ], + "questSourceTags": [ + "swamp_town_generic", + "swamp_town_identity", + "swamp_town_tribal", + "swamp_capital" + ] + }, + { + "id": 6, + "isTemplate": true, + "name": "Justicia en las altas llanuras", + "description": "Atrapa al $(enemy_2) antes de que escape.", + "offerDialog": { + "text": "Al salir de la posada del lugar, ves a un miliciano colgando carteles de se busca.", + "options": [ + { + "name": "(Continuar)", + "text": "Mientras sigues por el pueblo, ves a otra persona toqueteando un cartel, arrancándolo. El parecido es asombroso.", + "options": [ + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": -1, + "POIReference": "" + } + ], + "name": "Te encoges de hombros. No es tu problema. (Rechazar misión)", + "text": "El criminal te echa un vistazo y se escabulle a toda prisa. (-1 de reputación)", + "options": [ + { + "name": "(Continuar)" + } + ] + }, + { + "name": "Te acercas al sospechoso.", + "text": "Al oír tus pasos, el $(enemy_2) sale corriendo a toda velocidad.", + "options": [ + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": -1, + "POIReference": "" + } + ], + "name": "Definitivamente no es tu problema. (Rechazar misión)", + "text": "El $(enemy_2) se cuela por una puerta abarrotada con la cabeza gacha y le pierdes la pista. (-1 de reputación)", + "options": [ + { + "name": "(Continuar)" + } + ] + }, + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "6", + "POIReference": "" + } + ], + "name": "Salir tras él. (Aceptar misión)" + } + ] + }, + { + "name": "Carraspeas de forma exagerada.", + "text": "El $(enemy_2) deja caer un pequeño zurrón al echar a correr.", + "options": [ + { + "action": [ + { + "grantRewards": [ + { + "type": "card", + "probability": 0.5, + "count": 1, + "addMaxCount": 2, + "rarity": [ + "Common" + ], + "cardTypes": [ + "Artifact" + ] + }, + { + "type": "gold", + "count": 300, + "addMaxCount": 100 + } + ] + } + ], + "name": "Examinar el zurrón caído", + "text": "Se escapa, pero dentro del zurrón encuentras algunas baratijas y oro, con toda probabilidad robados. (-2 de reputación)", + "options": [ + { + "name": "(Continuar, rechazar misión)" + } + ] + }, + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "6", + "POIReference": "" + } + ], + "name": "Salir tras él. (Aceptar misión)" + } + ] + } + ] + } + ] + }, + "prologue": {}, + "epilogue": { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": 3, + "POIReference": "" + } + ], + "text": "Buscas el cuartel de la guardia del pueblo, dispuesto a reclamar la recompensa por $(enemy_2). El capitán de la milicia asiente mientras le explicas lo ocurrido y luego te entrega una recompensa escasa. (+3 de reputación local)", + "options": [ + { + "action": [ + { + "grantRewards": [ + { + "type": "gold", + "count": 100 + }, + { + "type": "card", + "count": 2, + "colors": [ + "White" + ], + "rarity": [ + "Common" + ] + }, + { + "type": "shards", + "count": 3 + } + ] + } + ], + "name": "Echas un vistazo rápido a lo que te ha entregado y piensas en los objetos robados que encontraste en tu objetivo.", + "text": "¿Sabrá que yo podría haber encontrado algo?", + "options": [ + { + "name": "Entregar el botín robado. (Completar misión)", + "text": "Recibes un segundo asentimiento, más respetuoso que el anterior. \"Gracias, ciudadano.\" (+1 de reputación)", + "options": [ + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": 1, + "POIReference": "" + } + ], + "name": "(Continuar)" + } + ] + }, + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": -1, + "POIReference": "$(poi_1)" + }, + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "grantRewards": [ + { + "type": "card", + "count": 2, + "addMaxCount": 1, + "colors": [ + "White" + ], + "rarity": [ + "Common", + "Uncommon" + ], + "colorType": "MonoColor" + }, + { + "type": "card", + "count": 1, + "colors": [ + "White" + ], + "rarity": [ + "Rare", + "Uncommon" + ], + "colorType": "MonoColor" + }, + { + "type": "card", + "count": 2, + "addMaxCount": 1, + "colors": [ + "White" + ], + "rarity": [ + "Common", + "Uncommon" + ], + "colorType": "MonoColor" + }, + { + "type": "card", + "count": 1, + "colors": [ + "White" + ], + "rarity": [ + "Rare", + "Uncommon" + ], + "colorType": "MonoColor" + } + ] + } + ], + "name": "No mencionar lo que encontraste. (Completar misión)", + "text": "(-1 de reputación) El capitán no te quita ojo mientras te vas, pero no dice nada más.", + "options": [ + { + "name": "(Continuar)" + } + ] + } + ] + } + ] + }, + "failureDialog": { + "text": "El $(enemy_2) ha escapado y es probable que vuelva a dar problemas en el futuro. (-2 de reputación del pueblo)", + "options": [ + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": -2, + "POIReference": "$(poi_1)" + } + ], + "name": "(Misión fallida)" + } + ] + }, + "declinedDialog": { + "text": "Vuelve mañana y quizás tenga algo que sí quieras hacer.", + "options": [ + { + "name": "(Captando la indirecta, que de sutil tiene poco, te marchas.)" + } + ] + }, + "rewardDescription": "Fragmentos, comunes e infrecuentes blancos", + "stages": [ + { + "id": 1, + "name": "Marcharse", + "description": "Empieza la persecución.", + "anyPOI": true, + "mapFlag": "", + "mapFlagValue": 1, + "objective": "Leave", + "prologue": {}, + "epilogue": {}, + "POIToken": "" + }, + { + "id": 2, + "name": "Caza a un $(enemy_2)", + "description": "Lleva al $(enemy_2) ante la justicia antes de que pueda escapar.", + "mapFlag": "", + "mapFlagValue": 1, + "count3": 30, + "worldMapOK": true, + "objective": "Hunt", + "prerequisiteIDs": [ + 1 + ], + "enemyTags": [ + "BiomeWhite", + "Human" + ], + "prologue": {}, + "epilogue": {}, + "POIToken": "" + }, + { + "id": 3, + "name": "Viajar", + "description": "Vuelve al pueblo a cobrar la recompensa por el $(enemy_2).", + "mapFlag": "", + "mapFlagValue": 1, + "here": true, + "objective": "Travel", + "prerequisiteIDs": [ + 2 + ], + "prologue": {}, + "epilogue": {}, + "POIToken": "" + } + ], + "questSourceTags": [ + "plains_town_generic", + "plains_town_identity", + "plains_town_tribal", + "plains_capital" + ] + }, + { + "id": 7, + "isTemplate": true, + "name": "Arenas sagradas", + "description": "Encuentra y mata al $(enemy_2) antes de que escape.", + "offerDialog": { + "text": "Al salir de la fresca sombra de la taberna del lugar, te encuentras cara a cara con un viashino ataviado con ropas tribales.", + "options": [ + { + "name": "\"...¿Puedo ayudarte en algo?\"", + "text": "\"Chamán Izka caza profanadores de arenas sagradas. Tú ayudarás.\"", + "options": [ + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "7", + "POIReference": "" + } + ], + "name": "\"No era eso lo que quería decir, pero... vale. Una venganza sagrada suena a algo poco común por aquí.\" (Aceptar misión)" + }, + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": -2, + "POIReference": "" + } + ], + "name": "\"No me gusta la arena.\" (Rechazar misión)", + "text": "La cola del viashino azota el aire de un lado a otro. \"Szil recordará esto.\" (-2 de reputación)", + "options": [ + { + "name": "(Continuar)" + } + ] + } + ] + }, + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": -1, + "POIReference": "$(poi_1)" + } + ], + "name": "Pasas de largo sin aminorar el paso. (Rechazar misión)", + "text": "La cola del viashino se crispa cuando pasas a su lado, pero te deja marchar. (-1 de reputación del pueblo)", + "options": [ + { + "name": "(Continuar)" + } + ] + } + ] + }, + "prologue": {}, + "epilogue": { + "text": "El viashino se queda inmóvil un momento, midiéndote con una larga mirada evaluadora. \"Chamán Cresh te da las gracias y desea que tus huevos eclosionen bien.\" (+3 de reputación local)", + "options": [ + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": 3, + "POIReference": "" + }, + { + "grantRewards": [ + { + "type": "shards", + "count": 5 + }, + { + "type": "card", + "count": 3, + "colors": [ + "Red" + ], + "rarity": [ + "Common", + "Uncommon" + ] + } + ] + } + ], + "name": "(Completar misión)" + } + ] + }, + "failureDialog": { + "text": "El $(enemy_2) no recibirá su castigo hoy. (-2 de reputación del pueblo)", + "options": [ + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": -2, + "POIReference": "$(poi_1)" + } + ], + "name": "(Misión fallida)" + } + ] + }, + "declinedDialog": { + "text": "Vuelve mañana y quizás tenga algo que sí quieras hacer.", + "options": [ + { + "name": "(Captando la indirecta, que de sutil tiene poco, te marchas.)" + } + ] + }, + "rewardDescription": "Fragmentos, comunes e infrecuentes rojos", + "stages": [ + { + "id": 1, + "name": "Marcharse", + "description": "Sal del pueblo para empezar la cacería.", + "anyPOI": true, + "mapFlag": "", + "mapFlagValue": 1, + "objective": "Leave", + "prologue": {}, + "epilogue": {}, + "POIToken": "" + }, + { + "id": 2, + "name": "Caza a un $(enemy_2)", + "description": "Encuentra y derrota al $(enemy_2) antes de que escape. Solo tienes una oportunidad, así que aprovéchala.", + "mapFlag": "", + "mapFlagValue": 1, + "count3": 30, + "worldMapOK": true, + "objective": "Hunt", + "prerequisiteIDs": [ + 1 + ], + "enemyTags": [ + "BiomeRed" + ], + "prologue": {}, + "epilogue": {}, + "POIToken": "" + }, + { + "id": 3, + "name": "Viajar", + "description": "Vuelve al pueblo a cobrar la recompensa por el $(enemy_2).", + "mapFlag": "", + "mapFlagValue": 1, + "here": true, + "objective": "Travel", + "prerequisiteIDs": [ + 2 + ], + "prologue": {}, + "epilogue": {}, + "POIToken": "" + } + ], + "questSourceTags": [ + "mountain_town_generic", + "mountain_town_identity", + "mountain_town_tribal", + "mountain_capital" + ] + }, + { + "id": 8, + "isTemplate": true, + "name": "Instrucción a distancia", + "description": "Encuentra al $(enemy_2) antes de que escape, y monta un espectáculo.", + "offerDialog": { + "text": "Un mago con túnica se acerca a ti llevando consigo a alguien de vestimenta mucho más corriente. \"Tú, el de ahí, eres mago de batalla, ¿verdad?\"", + "options": [ + { + "name": "\"Entre otras cosas, sí.\"", + "text": "Se vuelve hacia su acompañante. \"Como ves, el aspecto desangelado lo delataba por completo.\"", + "options": [ + { + "name": "Carraspeas.", + "text": "El mago se vuelve de nuevo hacia ti. \"Mi nuevo aprendiz cree que quiere ser mago de batalla. Para disuadirlo, haré que te observe por adivinación mientras luchas contra un $(enemy_2).\"", + "options": [ + { + "name": "Te detienes un momento, midiendo bien tus palabras. \"No sé yo si me siento cómodo con eso.\" (Rechazar misión)", + "text": "El mago frunce el ceño y se desvanece. Su acompañante, desconcertado, da media vuelta y regresa por donde había venido. (-1 de reputación del pueblo)", + "action": [ + { + "addMapReputation": -1 + } + ] + }, + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "7", + "POIReference": "" + } + ], + "name": "Te ríes. \"Entonces le montaré un buen espectáculo, siempre que no parpadee. Dime dónde está tu $(enemy_2).\" (Aceptar misión)" + } + ] + } + ] + }, + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": -1, + "POIReference": "$(poi_1)" + } + ], + "name": "\"Y muy ocupado, además.\" (Rechazar misión)", + "text": "El mago frunce el ceño y se desvanece. Su acompañante, desconcertado, da media vuelta y regresa por donde había venido. (-1 de reputación del pueblo)", + "options": [ + { + "name": "(Continuar)" + } + ] + }, + { + "name": "\"¿Quién lo pregunta?\"", + "text": "\"Soy Morelith el Grande, aunque quien pregunta a través de mí es mi necio aprendiz.\" El joven hace una mueca y aparta la mirada, aparentemente avergonzado.", + "options": [ + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": 1, + "POIReference": "" + } + ], + "name": "\"¡Vaya por Dios! ¡Cómo no iba a reconocer al legendario maestro de las ilusiones! ¿Qué puedo hacer por ti?\"", + "text": "(+1 de reputación) \"Mi nuevo aprendiz cree que quiere ser mago de batalla. Para disuadirlo, haré que te observe por adivinación mientras luchas contra un $(enemy_2).\"", + "options": [ + { + "name": "Te detienes un momento, midiendo bien tus palabras. \"No sé yo si me siento cómodo con eso.\" (Rechazar misión)", + "text": "Morelith se vuelve hacia su aprendiz y habla con severidad. \"Los magos de batalla no solo son por lo general incompetentes, sino también maleducados.\"", + "options": [ + { + "name": "Se te pasa por la cabeza una respuesta mucho más agresiva que la anterior, pero lo piensas mejor. (Marcharse)" + } + ] + }, + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "8", + "POIReference": "" + } + ], + "name": "Te ríes. \"Entonces le montaré un buen espectáculo, siempre que no parpadee. Dime dónde está tu $(enemy_2).\" (Aceptar misión)" + } + ] + }, + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": -2, + "POIReference": "" + } + ], + "name": "\"¿Morelith el Grande? Más bien Morelith el Mediano. No tengo tiempo para esto.\" (Rechazar misión)", + "text": "El mago, indignado, se teletransporta junto a su acompañante. El gentío del mercado se percata y baja un poco la voz. Quizá Morelith sea alguien importante por aquí. (-2 de reputación del pueblo)", + "options": [ + { + "name": "(Continuar)" + } + ] + } + ] + } + ] + }, + "prologue": {}, + "epilogue": { + "text": "Sientes una euforia que se suma a la inquietante sensación de haber sido observado. También te preguntas si has oído un bufido indignado o si te lo has imaginado. Sea como sea, tus bolsillos rebosan de recompensas conjuradas. (+3 de reputación local)", + "options": [ + { + "action": [ + { + "grantRewards": [ + { + "type": "card", + "count": 1, + "colors": [ + "Blue" + ], + "rarity": [ + "Uncommon", + "Common" + ], + "subTypes": [ + "Illusion" + ] + }, + { + "type": "card", + "count": 2, + "colors": [ + "Blue" + ], + "rarity": [ + "Common" + ] + }, + { + "type": "card", + "probability": 0.8, + "count": 1, + "colors": [ + "Blue" + ], + "rarity": [ + "Uncommon" + ] + }, + { + "type": "card", + "count": 1, + "colors": [ + "Blue" + ], + "rarity": [ + "Uncommon" + ] + }, + { + "type": "shards", + "count": 2, + "addMaxCount": 3 + } + ], + "addMapReputation": 3 + } + ], + "name": "(Completar misión)" + } + ] + }, + "failureDialog": { + "text": "Ahora tienes la sensación de que te observan Y encima se burlan de ti. (-2 de reputación del pueblo)", + "options": [ + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": -2, + "POIReference": "$(poi_1)" + } + ], + "name": "(Misión fallida)" + } + ] + }, + "declinedDialog": { + "text": "Vuelve mañana y quizás tenga algo que sí quieras hacer.", + "options": [ + { + "name": "(Captando la indirecta, que de sutil tiene poco, te marchas.)" + } + ] + }, + "rewardDescription": "Fragmentos, comunes e infrecuentes azules", + "stages": [ + { + "id": 1, + "name": "Marcharse", + "description": "Sal del pueblo para empezar la cacería.", + "anyPOI": true, + "mapFlag": "", + "mapFlagValue": 1, + "objective": "Leave", + "prologue": {}, + "epilogue": { + "text": "A un solo paso de las puertas del pueblo, te asalta la súbita e inquebrantable sensación de que te están observando.", + "options": [ + { + "name": "(Continuar)" + } + ] + }, + "POIToken": "" + }, + { + "id": 2, + "name": "Caza a un $(enemy_2)", + "description": "Encuentra y derrota al $(enemy_2) antes de que escape. Solo tienes una oportunidad, así que aprovéchala.", + "mapFlag": "", + "mapFlagValue": 1, + "count3": 30, + "worldMapOK": true, + "objective": "Hunt", + "prerequisiteIDs": [ + 1 + ], + "enemyTags": [ + "BiomeBlue" + ], + "prologue": {}, + "epilogue": {}, + "POIToken": "" + }, + { + "id": 3, + "name": "Viajar", + "description": "Vuelve al pueblo a cobrar la recompensa por el $(enemy_2).", + "mapFlag": "", + "mapFlagValue": 1, + "here": true, + "objective": "Travel", + "prerequisiteIDs": [ + 2 + ], + "prologue": {}, + "epilogue": {}, + "POIToken": "" + } + ], + "questSourceTags": [ + "island_town_generic", + "island_town_identity", + "island_town_tribal", + "island_capital" + ] + }, + { + "id": 9, + "isTemplate": true, + "name": "Acaba con ellos", + "description": "Encuentra y mata al $(enemy_2) antes de que escape.", + "offerDialog": { + "text": "Han levantado un tablón de trabajos a la puerta de la posada, y ves que está cubierto de papeles y carteles variados.", + "options": [ + { + "name": "Te alejas, con tus propios objetivos ya en mente. (Rechazar misión)" + }, + { + "name": "Te tomas un momento para repasar el tablón.", + "text": "La mayoría de los anuncios son anodinos, están desgastados por la intemperie o escritos en una lengua que desconoces. Unos pocos, sin embargo, te llaman la atención.", + "options": [ + { + "name": "Examinas una hoja nueva con un dibujo sencillo pero nítido.", + "text": "No hay ni una palabra escrita, pero el dibujo es claramente un $(enemy_2).", + "options": [ + { + "name": "\"Un artista así debería buscarse una ciudad más grande.\" Te alejas, impresionado pero sin interés. (Rechazar misión)" + }, + { + "name": "Con la curiosidad de saber por qué esto está en el tablón, tu mirada se detiene un instante.", + "text": "Mientras contemplas el papel sin palabras, unas palabras se abren paso hasta tu mente por medios desconocidos. 'ENCUENTRA.' '{COLOR=red}¡MATA!{ENDCOLOR}' 'RECOMPENSA.'", + "options": [ + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "9", + "POIReference": "$(poi_1)" + } + ], + "name": "'SÍ.' (Aceptar misión)" + }, + { + "name": "'¿RECOMPENSA?'", + "text": "'{COLOR=red}¡MATA!{ENDCOLOR}.' 'RECOMPENSA.'", + "options": [ + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "9", + "POIReference": "$(poi_1)" + } + ], + "name": "'SÍ.' (Aceptar misión)" + }, + { + "name": "Inquieto por la situación, niegas con la cabeza y te alejas. (Rechazar misión)" + } + ] + }, + { + "name": "Decides que esos pensamientos invasivos, si es que se les puede llamar así, no son bienvenidos, y das un paso atrás.", + "text": "Los pensamientos te persiguen con urgencia un instante. '{COLOR=red}MMMMaaaata...{ENDCOLOR}' Pero al dar otro paso atrás, las palabras se desvanecen de tu mente.", + "options": [ + { + "name": "Sin perder un segundo, te alejas. Muy lejos. (Rechazar misión)" + } + ] + } + ] + } + ] + }, + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": -2, + "POIReference": "" + } + ], + "name": "Examinas una hoja vieja y hecha jirones, con dos tintas descoloridas pero casi del todo legibles.", + "text": "Lo que sigue es la petición de mano más triste de la que has oído hablar jamás, no digamos ya leído de primera mano. Para empezar, va dirigida \"a quien corresponda\".", + "options": [ + { + "name": "Sigues leyendo.", + "text": "Y además, otra letra distinta ha garabateado sobre lo que quizá fuera la parte verdaderamente romántica lo siguiente: \"No te molestes. Lo maté ayer.\"", + "options": [ + { + "name": "Niegas con la cabeza y te alejas. (Rechazar misión)" + } + ] + }, + { + "name": "Te ahorras los detalles y te alejas. (Rechazar misión)" + } + ] + }, + { + "name": "Un anuncio de lo más colorido te llama la atención.", + "text": "{RAINBOW=2;2;1;0.8}¡¡¡¡CIRCO DE SHANDALAR, PRÓXIMAMENTE EN TODAS PARTES!!!!", + "options": [ + { + "name": "No sabes muy bien qué estabas buscando, pero desde luego no era un circo. (Rechazar misión)" + } + ] + } + ] + } + ] + }, + "prologue": {}, + "epilogue": { + "text": "Tu patrón desconocido sigue sin aparecer por ninguna parte, y tampoco vuelves a saber de él. Pero encuentras una caja esperándote bajo el tablón de trabajos. La caja está protegida por conjuros, como confirman las marcas de quemadura a un lado y el olor a pelo chamuscado, pero se abre a tu llegada. (+3 de reputación local)", + "options": [ + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": 3, + "POIReference": "" + }, + { + "grantRewards": [ + { + "type": "shards", + "count": 5 + }, + { + "type": "card", + "count": 1, + "rarity": [ + "Uncommon" + ] + }, + { + "type": "card", + "count": 1, + "rarity": [ + "Common" + ], + "colorType": "Colorless" + }, + { + "type": "card", + "count": 1, + "rarity": [ + "Common" + ] + }, + { + "type": "card", + "count": 1, + "rarity": [ + "Uncommon" + ], + "colorType": "Colorless" + } + ] + } + ], + "name": "(Completar misión)" + } + ] + }, + "failureDialog": { + "text": "El $(enemy_2) se te escapa. (-2 de reputación del pueblo)", + "options": [ + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": -2, + "POIReference": "$(poi_1)" + } + ], + "name": "(Misión fallida)" + } + ] + }, + "declinedDialog": { + "text": "Vuelve mañana y quizás tenga algo que sí quieras hacer.", + "options": [ + { + "name": "(Captando la indirecta, que de sutil tiene poco, te marchas.)" + } + ] + }, + "rewardDescription": "Fragmentos, comunes e infrecuentes", + "stages": [ + { + "id": 1, + "name": "Marcharse", + "description": "Sal del pueblo para empezar la cacería.", + "anyPOI": true, + "mapFlag": "", + "mapFlagValue": 1, + "objective": "Leave", + "prologue": {}, + "epilogue": {}, + "POIToken": "" + }, + { + "id": 2, + "name": "Caza a un $(enemy_2)", + "description": "Encuentra y derrota al $(enemy_2) antes de que escape. Solo tienes una oportunidad, así que dalo todo.", + "mapFlag": "", + "mapFlagValue": 1, + "count3": 30, + "worldMapOK": true, + "objective": "Hunt", + "prerequisiteIDs": [ + 1 + ], + "enemyTags": [ + "BiomeColorless" + ], + "prologue": {}, + "epilogue": {}, + "POIToken": "" + }, + { + "id": 3, + "name": "Viajar", + "description": "Vuelve al pueblo a cobrar la recompensa por el $(enemy_2).", + "mapFlag": "", + "mapFlagValue": 1, + "here": true, + "objective": "Travel", + "prerequisiteIDs": [ + 2 + ], + "prologue": {}, + "epilogue": {}, + "POIToken": "" + } + ], + "questSourceTags": [ + "waste_town_generic", + "waste_town_tribal", + "waste_town_identity" + ] + }, + { + "id": 10, + "isTemplate": true, + "name": "Sitio para que crezca vida nueva", + "description": "Limpia de enemigos $(poi_1) y vuelve a informar.", + "offerDialog": { + "text": "Una druida se acerca a ti. \"¿Nos ayudarás a salvar nuestro mundo?\"", + "options": [ + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": -1, + "POIReference": "" + } + ], + "name": "¿Y qué crees que estoy intentando hacer? (Rechazar misión)", + "text": "Atónita, la druida te ve marchar. (-1 de reputación local)", + "options": [ + { + "name": "(Continuar)" + } + ] + }, + { + "name": "\"Por supuesto. ¿Qué criaturitas del bosque hay que rescatar hoy?\"", + "text": "La druida niega con la cabeza. \"Casi todas, pero no son asunto tuyo directamente.\"", + "options": [ + { + "name": "\"¿Y cuál lo es, entonces?\"", + "text": "\"Los habitantes de $(poi_1), aquí cerca. Hay que eliminarlos, por el bien del equilibrio y para asegurar que quede espacio donde pueda crecer vida nueva.\" Asiente como si fuera un hecho indiscutible.", + "options": [ + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "10", + "POIReference": "" + } + ], + "name": "\"Vaya. No esperaba que la cosa fuera por ahí, pero... vale. Tú primera.\" (Aceptar misión)" + }, + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": -1, + "POIReference": "" + } + ], + "name": "\"Lo siento, ahora mismo tengo preocupaciones más grandes.\" (Rechazar misión)", + "text": "(-1 de reputación local) La druida mantiene el gesto impasible. \"Pronto esas cosas también estarán equilibradas.\"", + "options": [ + { + "name": "(Continuar)" + } + ] + } + ] + } + ] + }, + { + "name": "\"Empiezo a pensar que ese es mi papel en la vida. ¿Qué puedo hacer por ti?\"", + "text": "\"Hay que eliminar a los habitantes de $(poi_1), aquí cerca, por el bien del equilibrio y para asegurar que quede espacio donde pueda crecer vida nueva.\" Asiente como si fuera un hecho indiscutible.", + "options": [ + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "10", + "POIReference": "" + } + ], + "name": "\"Salvando el mundo, un enemigo derrotado cada vez.\" (Aceptar misión)" + }, + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": -1, + "POIReference": "" + } + ], + "name": "\"No estoy nada seguro de tener tiempo para eso ahora mismo.\"", + "text": "El rostro de la druida no cambia, pero su voz se vuelve un punto más queda. \"El bosque recordará esto.\" (-1 de reputación local)", + "options": [ + { + "name": "(Continuar)" + } + ] + } + ] + } + ] + }, + "prologue": {}, + "epilogue": { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": 3, + "POIReference": "" + } + ], + "text": "Vuelves al pueblo y encuentras a la druida esperándote justo a las afueras. \"El equilibrio ha sido restaurado.\" (+3 de reputación local)", + "options": [ + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": -1, + "POIReference": "" + }, + { + "grantRewards": [ + { + "type": "card", + "probability": 0.5, + "count": 1, + "colors": [ + "Green" + ], + "rarity": [ + "Rare", + "Mythic Rare" + ] + }, + { + "type": "card", + "probability": 0.5, + "count": 1, + "colors": [ + "Green" + ], + "rarity": [ + "Rare", + "Mythic Rare" + ] + }, + { + "type": "card", + "count": 2, + "colors": [ + "Green" + ], + "rarity": [ + "Mythic Rare", + "Rare" + ] + }, + { + "type": "card", + "count": 2, + "colors": [ + "Green" + ], + "rarity": [ + "Uncommon" + ] + }, + { + "type": "card", + "count": 2, + "colors": [ + "Green" + ] + } + ] + } + ], + "name": "\"Casi. Creo que falta una recompensa, para nivelar la balanza.\"", + "text": "La druida frunce levemente el ceño, pero te entrega un fardo atado con pequeñas enredaderas. (-1 de reputación local)", + "options": [ + { + "action": [ + { + "grantRewards": [ + { + "type": "shards", + "count": 15 + } + ] + } + ], + "name": "(Completar misión)" + } + ] + }, + { + "action": [ + { + "grantRewards": [ + { + "type": "card", + "probability": 0.5, + "count": 1, + "colors": [ + "Green" + ], + "rarity": [ + "Rare", + "Mythic Rare" + ] + }, + { + "type": "card", + "probability": 0.5, + "count": 1, + "colors": [ + "Green" + ], + "rarity": [ + "Rare", + "Mythic Rare" + ] + }, + { + "type": "card", + "count": 2, + "colors": [ + "Green" + ], + "rarity": [ + "Mythic Rare", + "Rare" + ] + }, + { + "type": "card", + "count": 2, + "colors": [ + "Green" + ], + "rarity": [ + "Uncommon" + ] + }, + { + "type": "card", + "count": 2, + "colors": [ + "Green" + ] + }, + { + "type": "shards", + "count": 15 + } + ] + } + ], + "name": "Asientes. \"Como debe ser.\"", + "text": "La druida te entrega un fardo atado con pequeñas enredaderas.", + "options": [ + { + "name": "(Completar misión)" + } + ] + } + ] + }, + "failureDialog": { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": -2, + "POIReference": "$(poi_2)" + } + ], + "text": "Tras pensarlo, decides que las recompensas prometidas no compensan el esfuerzo de expulsar a los actuales ocupantes de $(poi_1). (-2 de reputación local)", + "options": [ + { + "name": "(Misión fallida)" + } + ] + }, + "declinedDialog": { + "text": "Vuelve mañana y quizás tenga algo que sí quieras hacer.", + "options": [ + { + "name": "(Captando la indirecta, que de sutil tiene poco, te marchas.)" + } + ] + }, + "rewardDescription": "Fragmentos de maná, cartas infrecuentes y raras", + "stages": [ + { + "id": 1, + "name": "Limpiar", + "description": "Viaja a $(poi_1) y derrota a todos los enemigos de dentro. El lugar objetivo está en el bioma de bosque.", + "mapFlag": "", + "mapFlagValue": 1, + "POITags": [ + "BiomeGreen", + "Hostile", + "Sidequest" + ], + "objective": "Clear", + "prologue": {}, + "epilogue": {}, + "POIToken": "" + }, + { + "id": 2, + "name": "Viajar", + "description": "Vuelve al pueblo e informa de que has limpiado $(poi_1).", + "mapFlag": "", + "mapFlagValue": 1, + "here": true, + "objective": "Travel", + "prerequisiteIDs": [ + 1 + ], + "prologue": {}, + "epilogue": {}, + "POIToken": "" + } + ], + "questSourceTags": [ + "forest_town_generic", + "forest_town_identity", + "forest_town_tribal", + "forest_capital" + ] + }, + { + "id": 11, + "isTemplate": true, + "name": "Aviso de desahucio", + "description": "Limpia una mazmorra de enemigos.", + "offerDialog": { + "text": "Cuando te acercas a la plaza del pueblo, un hombre baja de un carromato cargado hasta arriba. Mira alrededor y se dirige hacia ti. \"¡Tú, el de ahí, tienes pinta de ser alguien competente!\"", + "options": [ + { + "name": "\"Da la casualidad de que Competente es mi segundo nombre.\"", + "text": "Se queda perplejo un momento, pero vuelve a mirar el carromato como si lo distrajera. \"Esperaba que pudieras ocuparte de un asunto por mí.\"", + "options": [ + { + "name": "¿Un asunto? ¿Qué clase de asunto?", + "text": "\"Verás, algunos vecinos del pueblo quieren marcharse y empezar de cero en otra parte. Teníamos un sitio elegido para asentarnos, pero... parece que está ocupado.\"", + "options": [ + { + "name": "\"Entiendo. ¿Y supongo que quieres que se eche a los ocupantes actuales?", + "text": "\"¡Sí! ¡Exactamente eso! Al fin y al cabo, ¡aquí tengo esta escritura que dice que $(poi_1) es nuestro!\" Te enseña brevemente unos papeles, pero te fijas en que parte de la tinta está corrida.", + "options": [ + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "11", + "POIReference": "" + } + ], + "name": "\"En fin, espero que vuestro nuevo asentamiento me recuerde con cariño a la hora de poner precios.\" Anotas la ubicación y prometes limpiarla. (Aceptar misión)" + }, + { + "name": "\"Creo que no me interesa. Lo siento.\" (Rechazar misión)" + } + ] + }, + { + "name": "\"¿Y para qué me necesitas exactamente?\"", + "text": "\"¡Pues porque no sirvo de nada en una pelea mientras protejo mis pertenencias!\" Vuelve a echar otro vistazo al carro.", + "options": [ + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "11", + "POIReference": "" + } + ], + "name": "\"Está bien, está bien... Espero que lleves algo en ese carromato que haga que me merezca la pena.\" Anotas la ubicación y partes a limpiarla. (Aceptar misión)" + }, + { + "name": "\"Creo que no me interesa. Lo siento.\" (Rechazar misión)" + } + ] + } + ] + } + ] + }, + { + "name": "\"Competente y con prisa.\" Lo esquivas y sigues tu camino. (Rechazar misión)" + } + ] + }, + "prologue": {}, + "epilogue": { + "text": "Tu patrón no podría estar más contento de verte volver al pueblo, porque significa que él ya puede irse. (+1 de reputación en $(poi_3))", + "options": [ + { + "action": [ + { + "grantRewards": [ + { + "type": "shards", + "count": 15 + }, + { + "type": "card", + "probability": 0.5, + "count": 1, + "rarity": [ + "Rare", + "Mythic Rare" + ] + }, + { + "type": "card", + "count": 2, + "rarity": [ + "Uncommon" + ] + }, + { + "type": "card", + "count": 2, + "rarity": [ + "Rare" + ] + }, + { + "type": "card", + "probability": 0.5, + "count": 1, + "rarity": [ + "Rare", + "Mythic Rare" + ] + }, + { + "type": "card", + "probability": 0.5, + "count": 2 + } + ], + "addMapReputation": 1, + "POIReference": "$(poi_3)" + } + ], + "name": "\"Quizá te convenga dedicarle un rato a limpiarlo antes de mudarte, pero el sitio es todo tuyo.\" (Completar misión)" + } + ] + }, + "failureDialog": { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": -2, + "POIReference": "$(poi_2)" + } + ], + "text": "Decides que las recompensas prometidas no compensan expulsar a los actuales ocupantes de $(poi_1). Además, ellos llegaron primero. (-2 de reputación local)", + "options": [ + { + "name": "(Misión fallida)" + } + ] + }, + "declinedDialog": { + "text": "Vuelve mañana y quizás tenga algo que sí quieras hacer.", + "options": [ + { + "name": "(Captando la indirecta, que de sutil tiene poco, te marchas.)" + } + ] + }, + "rewardDescription": "Fragmentos de maná, cartas infrecuentes y raras", + "stages": [ + { + "id": 1, + "name": "Limpiar", + "description": "Viaja a $(poi_1) y derrota a todos los enemigos de dentro.", + "mapFlag": "", + "mapFlagValue": 1, + "count2": 25, + "POITags": [ + "Hostile", + "Sidequest" + ], + "objective": "Clear", + "prologue": {}, + "epilogue": {}, + "POIToken": "" + }, + { + "id": 2, + "name": "Marcharse", + "description": "Sal de la mazmorra recién despejada (aunque todavía no limpia).", + "anyPOI": true, + "mapFlag": "", + "mapFlagValue": 1, + "objective": "Leave", + "prerequisiteIDs": [ + 1 + ], + "prologue": {}, + "epilogue": {}, + "POIToken": "$(poi_1)" + }, + { + "id": 3, + "name": "Vuelve al pueblo", + "description": "Regresa con el colono a $(poi_3)", + "here": true, + "objective": "Travel", + "prerequisiteIDs": [ + 2 + ] + } + ] + }, + { + "id": 12, + "isTemplate": true, + "name": "Un campo recién arado", + "description": "Limpia de enemigos $(poi_2) y vuelve a informar.", + "offerDialog": { + "text": "\"Necesitamos un campo nuevo para aumentar la cosecha.\" Un hombre curtido pero imponente, con sencillas ropas de labrador, se dirige a ti sin rodeos. \"Este pueblo crece más rápido que mi grano.\"", + "options": [ + { + "name": "Un hombre directo merece una respuesta directa. \"Puedo encargarme de eso.\"", + "text": "\"Bien. Solo necesito que despejes a los actuales ocupantes de la zona que quiero sembrar. De todos modos, llevan tiempo molestando en la granja.\"", + "options": [ + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "12", + "POIReference": "" + } + ], + "name": "\"Dalo por hecho.\" (Aceptar misión)" + }, + { + "name": "\"Ah, ahí está la trampa. No, gracias.\" (Rechazar misión)" + }, + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "12", + "POIReference": "" + } + ], + "name": "\"Estarán abonando tu grano en un abrir y cerrar de ojos.\" (Aceptar misión)" + } + ] + }, + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": -1, + "POIReference": "" + } + ], + "name": "\"Eso no parece ser problema mío.\" (Rechazar misión)", + "text": "Se encoge de hombros y sigue a lo suyo. (-1 de reputación local)", + "options": [ + { + "name": "(Continuar)" + } + ] + } + ] + }, + "prologue": {}, + "epilogue": { + "text": "Apenas has terminado de despejar la zona y el imponente granjero ya está preparando a uno de sus animales para engancharlo al arado ahí fuera. Al verte llegar, te lanza un zurrón. \"Gracias.\" Y vuelve al trabajo.", + "options": [ + { + "action": [ + { + "grantRewards": [ + { + "type": "shards", + "count": 15 + }, + { + "type": "card", + "probability": 0.5, + "count": 1, + "colors": [ + "White" + ], + "rarity": [ + "Rare", + "Mythic Rare" + ] + }, + { + "type": "card", + "count": 2, + "colors": [ + "White" + ], + "rarity": [ + "Uncommon" + ] + }, + { + "type": "card", + "count": 2, + "colors": [ + "White" + ], + "rarity": [ + "Rare" + ] + }, + { + "type": "card", + "probability": 0.5, + "count": 1, + "colors": [ + "White" + ], + "rarity": [ + "Rare", + "Mythic Rare" + ] + }, + { + "type": "card", + "probability": 0.5, + "count": 2, + "colors": [ + "White" + ] + } + ] + } + ], + "name": "Un hombre de pocas palabras, pero paga lo bastante bien. (Completar misión)" + } + ] + }, + "failureDialog": { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": -2, + "POIReference": "$(poi_1)" + } + ], + "text": "Tras pensarlo, decides que las recompensas prometidas no compensan el esfuerzo de expulsar a los actuales ocupantes de $(poi_2). (-2 de reputación local)", + "options": [ + { + "name": "(Misión fallida)" + } + ] + }, + "declinedDialog": { + "text": "Vuelve mañana y quizás tenga algo que sí quieras hacer.", + "options": [ + { + "name": "(Captando la indirecta, que de sutil tiene poco, te marchas.)" + } + ] + }, + "reward": {}, + "rewardDescription": "Fragmentos de maná, cartas infrecuentes y raras", + "stages": [ + { + "id": 1, + "name": "Limpiar", + "description": "Viaja a $(poi_1) y derrota a todos los enemigos de dentro. El lugar objetivo está en el bioma de llanuras.", + "mapFlag": "", + "mapFlagValue": 1, + "count1": 35, + "count2": 10, + "POITags": [ + "BiomeWhite", + "Hostile", + "Sidequest" + ], + "objective": "Clear", + "prologue": {}, + "epilogue": {}, + "failureDialog": {}, + "POIToken": "" + }, + { + "id": 2, + "name": "Marcharse", + "description": "Sal del pueblo para comenzar tu misión.", + "anyPOI": true, + "mapFlag": "", + "mapFlagValue": 1, + "objective": "Leave", + "prerequisiteIDs": [ + 1 + ], + "prologue": {}, + "epilogue": {}, + "POIToken": "" + } + ], + "questSourceTags": [ + "plains_town_generic", + "plains_town_identity", + "plains_town_tribal", + "plains_capital" + ] + }, + { + "id": 13, + "isTemplate": true, + "name": "La brújula de ónice", + "description": "Limpia de enemigos $(poi_2) y vuelve a informar.", + "offerDialog": { + "text": "\"Tú. Ven aquí.\" El gnomo que te habla desentona muchísimo en este lugar. Viste una túnica blanca impoluta que o bien era una camisa larga, o bien se la hicieron a medida. Aun así, se comporta como si perteneciera a este sitio y además fuera suyo.", + "options": [ + { + "name": "Acercarte sin decir palabra.", + "text": "El gnomo suelta un gruñido de satisfacción y sigue dando órdenes. Te pone un pequeño zurrón en las manos. \"Toma. Coge esta brújula. Síguela y elimina todo aquello a lo que apunte. Cuando deje de apuntar, vuelve a mí.\"", + "options": [ + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "13", + "POIReference": "" + } + ], + "name": "No te resistes a colar una puntilla: \"Entendido. Vuelvo en un pispás.\" (Aceptar misión)", + "text": "El chiste le pasa por encima.", + "options": [ + { + "name": "(Continuar)" + } + ] + }, + { + "name": "Bajas la vista hacia el zurrón, sorprendido por su peso.", + "text": "El gnomo reclama tu atención de nuevo antes de que puedas investigar. \"¿Eres sordo y tonto, o solo tonto? ¡¡¡EN MARCHA!!!\" (-1 de reputación local)", + "options": [ + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": -1, + "POIReference": "" + } + ], + "name": "Dejas caer el zurrón. \"¿Cómo dices?\" (Rechazar misión)", + "text": "Recoge de un manotazo el saco de tela y se marcha, maldiciéndote durante todo el trayecto. (-1 de reputación local)", + "options": [ + { + "name": "(Continuar)" + } + ] + }, + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": 1, + "POIReference": "" + } + ], + "name": "Alzas la vista (un poco) para sostenerle la mirada furiosa. \"Entendido, señor.\" (Aceptar misión)", + "text": "\"Así me gusta.\" (+1 de reputación local)", + "options": [ + { + "name": "(Continuar)" + } + ] + } + ] + } + ] + }, + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": -1, + "POIReference": "" + } + ], + "name": "Extiendes la mano a cierta altura. \"Lo siento, hay que medir al menos esto para dar órdenes.\" (Rechazar misión)", + "text": "Frunce el ceño y se aleja dando pisotones, paso diminuto a paso diminuto. (-1 de reputación local)", + "options": [ + { + "name": "(Continuar)" + } + ] + }, + { + "name": "\"¿Qué necesitas?\"", + "text": "\"Nada de preguntas. Tú escucha.\" Te pone un pequeño zurrón en las manos. \"Coge esta brújula. Síguela y elimina todo aquello a lo que apunte. Cuando deje de apuntar, vuelve a mí.\"", + "options": [ + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": -1, + "POIReference": "" + } + ], + "name": "Bajas la vista hacia el zurrón, sorprendido por su peso.", + "text": "El gnomo reclama tu atención de nuevo antes de que puedas investigar. \"¿Eres sordo y tonto, o solo tonto? ¡¡¡EN MARCHA!!!\" (-1 de reputación local)", + "options": [ + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": -1, + "POIReference": "" + } + ], + "name": "Dejas caer el zurrón. \"¿Cómo dices?\" (Rechazar misión)", + "text": "Recoge de un manotazo el saco de tela y se marcha, maldiciéndote durante todo el trayecto. (-1 de reputación local)", + "options": [ + { + "name": "(Continuar)" + } + ] + }, + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": 1, + "POIReference": "" + } + ], + "name": "Alzas la vista (un poco) para sostenerle la mirada furiosa. \"Entendido, señor.\" (Aceptar misión)", + "text": "\"Así me gusta.\" (+1 de reputación local)", + "options": [ + { + "name": "(Continuar)" + } + ] + } + ] + }, + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "13", + "POIReference": "" + } + ], + "name": "Entendido. (Aceptar misión)" + } + ] + } + ] + }, + "prologue": {}, + "epilogue": { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": 3, + "POIReference": "" + } + ], + "text": "Otro gnomo, algo más alto que el primero pero no tan bien vestido, sale a tu encuentro en la puerta. \"La brújula, si eres tan amable.\"", + "options": [ + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "grantRewards": [ + { + "type": "shards", + "count": 15 + }, + { + "type": "card", + "probability": 0.5, + "count": 1, + "colors": [ + "Black" + ], + "rarity": [ + "Rare", + "Mythic Rare" + ] + }, + { + "type": "card", + "count": 2, + "colors": [ + "Black" + ], + "rarity": [ + "Uncommon" + ] + }, + { + "type": "card", + "count": 2, + "colors": [ + "Black" + ], + "rarity": [ + "Rare" + ] + }, + { + "type": "card", + "probability": 0.5, + "count": 1, + "colors": [ + "Black" + ], + "rarity": [ + "Rare", + "Mythic Rare" + ] + }, + { + "type": "card", + "probability": 0.5, + "count": 2, + "colors": [ + "Black" + ] + } + ], + "issueQuest": "", + "POIReference": "" + } + ], + "name": "Se la entregas dentro del zurrón y él te da a cambio una bolsa más grande y, en apariencia, más ligera. (Completar misión)" + } + ] + }, + "failureDialog": { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": -2, + "POIReference": "$(poi_2)" + } + ], + "text": "Pese a la insistencia de la aguja, decides que no terminarás de limpiar $(poi_2). Como si de algún modo pudiera percibirlo, la brújula de ónice desaparece. (-2 de reputación local)", + "options": [ + { + "name": "(Misión fallida)" + } + ] + }, + "declinedDialog": { + "text": "Vuelve mañana y quizás tenga algo que sí quieras hacer.", + "options": [ + { + "name": "(Captando la indirecta, que de sutil tiene poco, te marchas.)" + } + ] + }, + "reward": {}, + "rewardDescription": "Fragmentos de maná, cartas infrecuentes y raras", + "stages": [ + { + "id": 1, + "name": "Marcharse", + "description": "Sal del pueblo para comenzar tu misión.", + "anyPOI": true, + "mapFlag": "", + "mapFlagValue": 1, + "objective": "Leave", + "prologue": {}, + "epilogue": { + "text": "Sacas la brújula de su bolsa al acercarte a la puerta del pueblo. Está hecha de una piedra profundamente oscura, con una única aguja roja que señala dónde encontrar a tus objetivos.", + "options": [ + { + "name": "Tomas nota de la dirección y partes hacia allí, guardando el artilugio por ahora. (Continuar)" + }, + { + "name": "Examinas el artilugio más de cerca.", + "text": "La 'brújula' no se parece a casi ninguna que hayas visto antes. No tiene ni una sola marca por ninguna parte, ni más color que el ónice, salvo la aguja carmesí.", + "options": [ + { + "name": "Guardas la brújula y sigues adelante. (Continuar)" + }, + { + "name": "Miras la aguja más de cerca.", + "text": "La aguja señala sin errar en una única dirección, sin importar hacia dónde ni con qué rapidez gires el artilugio. Alargas la mano y la tocas, y descubres que eres incapaz de moverla tú mismo.", + "options": [ + { + "name": "(Continuar)" + } + ] + } + ] + } + ] + }, + "POIToken": "" + }, + { + "id": 2, + "name": "Limpiar", + "description": "Viaja a $(poi_2) y derrota a todos los enemigos de dentro. El lugar objetivo está en el bioma de pantano.", + "mapFlag": "", + "mapFlagValue": 1, + "count2": 25, + "POITags": [ + "BiomeBlack", + "Hostile", + "Sidequest" + ], + "objective": "Clear", + "prerequisiteIDs": [ + 1 + ], + "prologue": {}, + "epilogue": { + "text": "Consultas la brújula en busca de tu siguiente objetivo, solo para descubrir que la aguja ha desaparecido por completo. Parece que tu tarea está cumplida." + }, + "failureDialog": {}, + "POIToken": "" + }, + { + "id": 3, + "name": "Viajar", + "description": "Vuelve al pueblo e informa de que has limpiado $(poi_2).", + "mapFlag": "", + "mapFlagValue": 1, + "here": true, + "objective": "Travel", + "prerequisiteIDs": [ + 2 + ], + "prologue": {}, + "epilogue": {}, + "POIToken": "" + } + ], + "questSourceTags": [ + "swamp_town_generic", + "swamp_town_identity", + "swamp_town_tribal", + "swamp_capital" + ] + }, + { + "id": 14, + "isTemplate": true, + "name": "Una visión de destrucción", + "description": "Limpia de enemigos $(poi_1) y vuelve a informar.", + "offerDialog": { + "text": "Al entrar en la aldea, un anciano levanta la vista como si te estuviera esperando y se acerca corriendo (hasta donde le da el cuerpo). \"$(playername). Necesito que des media vuelta y te marches. AHORA.\"", + "options": [ + { + "name": "Observas bien al anciano, pero no reconoces sus facciones. \"¿Debería conocerte?\"", + "text": "\"No.\" Niega con la cabeza. \"Pero he tenido una visión. Una visión de destrucción, fuego y ruina. Y de ti.\"", + "options": [ + { + "name": "Esbozas una sonrisa socarrona. \"Tenía entendido que la destrucción, el fuego y la ruina eran pasatiempos muy populares por aquí.\"", + "text": "Te frunce el ceño y continúa. \"Esto no es cosa de risa. Un vástago de Lathliss busca un nuevo hogar, y vendrá aquí pronto si no intervenimos.\" (-1 de reputación local)", + "action": [ + { + "addMapReputation": -1 + } + ], + "options": [ + { + "name": "\"¿Una pelea con un dragón? ¡Espero el desafío con ganas!\"", + "text": "Niega con la cabeza. \"Es una pelea que ganarías. Pero, por el camino, nuestra aldea se perdería. DEBEMOS impedir que la bestia llegue.\"", + "options": [ + { + "name": "\"¿Y cómo lo hacemos?\"", + "text": "\"Antes de venir aquí, el dragón intentará instalarse en $(poi_1), aquí cerca. Se encontrará con varios ocupantes poco amistosos ya presentes. Pero si tú los eliminaras de antemano, creo que la criatura anidaría allí y perdonaría nuestra aldea.\"", + "options": [ + { + "name": "\"¿Enfrentarme a todas las criaturas de $(poi_1) y encima a un dragón? No, gracias. (Rechazar misión)" + }, + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "14", + "POIReference": "" + } + ], + "name": "\"Indícame el camino.\" (Aceptar misión)" + } + ] + }, + { + "name": "\"Creo que no me interesa. Lo siento.\" (Rechazar misión)" + } + ] + }, + { + "name": "\"¿Una pelea con un dragón? No, gracias. Me marcho ya.\" (Rechazar misión)" + } + ] + }, + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "14", + "addMapReputation": 1, + "POIReference": "" + } + ], + "name": "\"Cuéntame más sobre esa visión, anciano.\"", + "text": "Continúa con gran urgencia. \"Un vástago de Lathliss busca un nuevo hogar, y vendrá aquí pronto si no intervenimos.\" (+1 de reputación local)", + "options": [ + { + "name": "\"¿Una pelea con un dragón? No, gracias. Me marcho ya.\" (Rechazar misión)" + }, + { + "name": "\"¿Una pelea con un dragón? ¡Espero el desafío con ganas!\"", + "text": "Niega con la cabeza. \"Es una pelea que ganarías. Pero, por el camino, nuestra aldea se perdería. DEBEMOS impedir que la bestia llegue.\"", + "options": [ + { + "name": "\"¿Y cómo lo hacemos?\"", + "text": "\"Antes de venir aquí, el dragón intentará instalarse en $(poi_1), aquí cerca. Se encontrará con varios ocupantes poco amistosos ya presentes. Pero si tú los eliminaras de antemano, creo que la criatura anidaría allí y perdonaría nuestra aldea.\"", + "options": [ + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "14", + "POIReference": "" + } + ], + "name": "\"Indícame el camino.\" (Aceptar misión)" + }, + { + "name": "\"¿Enfrentarme a todas las criaturas de $(poi_1) y encima a un dragón? No, gracias. (Rechazar misión)" + } + ] + } + ] + } + ] + } + ] + }, + { + "name": "\"Correré el riesgo, gracias.\" (Rechazar misión)", + "text": "Te grita mientras pasas de largo. \"¡Márchate. AHORA!!! ¡¡¡Tienes que marcharte!!!\" (-2 de reputación local)", + "options": [ + { + "action": [ + { + "addMapReputation": -2 + } + ], + "name": "(Continuar)" + } + ] + } + ] + }, + "prologue": {}, + "epilogue": { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": 3, + "POIReference": "" + } + ], + "text": "El anciano sale a tu encuentro fuera de las puertas de la aldea cuando regresas, montado a caballo. Te entrega una bolsa con tus recompensas. (+3 de reputación local)", + "options": [ + { + "action": [ + { + "grantRewards": [ + { + "type": "shards", + "count": 15 + }, + { + "type": "card", + "probability": 0.5, + "count": 1, + "colors": [ + "Red" + ], + "rarity": [ + "Rare", + "Mythic Rare" + ] + }, + { + "type": "card", + "count": 2, + "colors": [ + "Red" + ], + "rarity": [ + "Uncommon" + ] + }, + { + "type": "card", + "count": 2, + "colors": [ + "Red" + ], + "rarity": [ + "Rare" + ] + }, + { + "type": "card", + "probability": 0.5, + "count": 1, + "colors": [ + "Red" + ], + "rarity": [ + "Rare", + "Mythic Rare" + ] + }, + { + "type": "card", + "probability": 0.5, + "count": 2, + "colors": [ + "Red" + ] + } + ] + } + ], + "name": "\"¿Te vas a alguna parte?\"", + "text": "\"Mi visión no fue precisamente específica sobre si tus actos la cambiarían o no. Así que... sí.\"", + "options": [ + { + "name": "Echas un vistazo receloso a un cielo despejado antes de seguir hacia el pueblo. (Completar misión)" + } + ] + } + ] + }, + "failureDialog": { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": -3, + "POIReference": "$(poi_2)" + } + ], + "text": "Tras pensarlo, decides abandonar la limpieza de $(poi_1). Los aldeanos estarán bien, ¿no? (-3 de reputación local)", + "options": [ + { + "name": "(continuar)" + } + ] + }, + "declinedDialog": { + "text": "Vuelve mañana y quizás tenga algo que sí quieras hacer.", + "options": [ + { + "name": "(Captando la indirecta, que de sutil tiene poco, te marchas.)" + } + ] + }, + "reward": {}, + "rewardDescription": "Fragmentos de maná, cartas infrecuentes y raras", + "stages": [ + { + "id": 1, + "name": "Limpiar", + "description": "Viaja a $(poi_1) y derrota a todos los enemigos de dentro. El lugar objetivo está en el bioma de montaña.", + "mapFlag": "", + "mapFlagValue": 1, + "count1": 35, + "count2": 10, + "POITags": [ + "BiomeRed", + "Hostile", + "Sidequest" + ], + "objective": "Clear", + "prologue": {}, + "epilogue": { + "text": "$(poi_1) queda en silencio cuando eliminas a la última criatura. Te planteas quedarte a recibir al dragón, si es que aparece, pero algo te dice que marcharte sería mucho mejor idea por ahora.", + "options": [ + { + "name": "(Continuar)" + } + ] + }, + "failureDialog": {}, + "POIToken": "" + }, + { + "id": 2, + "name": "Viajar", + "description": "Vuelve al pueblo e informa de que has limpiado $(poi_1).", + "mapFlag": "", + "mapFlagValue": 1, + "here": true, + "objective": "Travel", + "prerequisiteIDs": [ + 1 + ], + "prologue": {}, + "epilogue": {}, + "POIToken": "" + } + ], + "questSourceTags": [ + "mountain_town_generic", + "mountain_town_identity", + "mountain_town_tribal", + "mountain_capital" + ] + }, + { + "id": 15, + "isTemplate": true, + "name": "Una isla privada", + "description": "Limpia de enemigos $(poi_1) y vuelve a informar.", + "offerDialog": { + "text": "\"Disculpa, aventurero, pero necesito ayuda.\" A primera vista el hombre parece de medios modestos, pero un examen más atento revela que sus ropas de aspecto corriente bien podrían estar hechas para un rey.", + "options": [ + { + "name": "\"Por supuesto, ¿qué puedo hacer por ti?\"", + "text": "Te hace una leve reverencia. \"Me llamo Lázaro, humilde sirviente de unos nobles que desean permanecer en el anonimato.\"", + "options": [ + { + "name": "\"¿Y qué desean esos nobles anónimos?\"", + "text": "\"Permanecer en el anonimato. Y tomarse unas vacaciones en una isla. He localizado un lugar que cumple todos sus requisitos, pero ahora mismo está ocupado.\"", + "options": [ + { + "name": "\"Entiendo. ¿Y supongo que quieres que se elimine a los ocupantes actuales?\"", + "text": "\"Exacto. Hazlo y serás bien recompensado.", + "options": [ + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "15", + "POIReference": "" + } + ], + "name": "\"Bueno, siempre he querido que los ricos y poderosos me debieran un favor. Lo haré.\" (Aceptar misión)" + }, + { + "name": "\"Creo que no me interesa. Lo siento.\" (Rechazar misión)" + } + ] + }, + { + "name": "\"He de negarme. Respeto mucho más a los habitantes del lugar que a una nobleza sin rostro.\" (Rechazar misión)", + "text": "Te dedica la reverencia más pequeña imaginable, la justa para poder decir que la hizo, sin que denote respeto alguno.", + "options": [ + { + "name": "(Continuar)" + } + ] + } + ] + }, + { + "name": "\"No me gusta no saber para quién trabajo.\"", + "text": "\"Me conoces a mí, y trabajarás para mí.\"", + "options": [ + { + "name": "\"Lo siento, pero saber tu nombre no es conocerte. No me interesa.\" (Rechazar misión)" + }, + { + "name": "\"Muy bien, Lázaro, ¿qué puedo hacer por ti?\"", + "text": "\"Mis señores desean un enclave insular privado para sus vacaciones, lejos de ojos y oídos indiscretos. Quiero que te asegures de que estará despejado para ellos.\"", + "options": [ + { + "name": "\"Lo siento, eso suena a más de lo que mi tiempo da de sí ahora mismo.\" (Rechazar misión)", + "text": "Se limita a asentir y se aleja en busca de alguien más que lo ayude." + }, + { + "name": "\"Dalo por hecho.\" (Aceptar misión)" + } + ] + } + ] + } + ] + }, + { + "name": "No sabrías decir por qué, pero hay algo que no encaja en ese hombre. \"No es buen momento.\" (Rechazar misión)", + "text": "Te dedica la reverencia más pequeña imaginable, la justa para poder decir que la hizo, sin que denote respeto alguno. (-1 de reputación local)", + "action": [ + { + "addMapReputation": -1 + } + ], + "options": [ + { + "name": "(Continuar)" + } + ] + } + ] + }, + "prologue": {}, + "epilogue": { + "text": "Consumada la gentrificación de la zona en beneficio de la nobleza, consuelas tu conciencia con las recompensas que se materializan ante ti.", + "options": [ + { + "action": [ + { + "grantRewards": [ + { + "type": "shards", + "count": 15 + }, + { + "type": "card", + "probability": 0.5, + "count": 1, + "colors": [ + "Blue" + ], + "rarity": [ + "Rare", + "Mythic Rare" + ] + }, + { + "type": "card", + "count": 2, + "colors": [ + "Blue" + ], + "rarity": [ + "Uncommon" + ] + }, + { + "type": "card", + "count": 2, + "colors": [ + "Blue" + ], + "rarity": [ + "Rare" + ] + }, + { + "type": "card", + "probability": 0.5, + "count": 1, + "colors": [ + "Blue" + ], + "rarity": [ + "Rare", + "Mythic Rare" + ] + }, + { + "type": "card", + "probability": 0.5, + "count": 2, + "colors": [ + "Blue" + ] + } + ] + } + ], + "name": "(Completar misión)" + } + ] + }, + "failureDialog": { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": -2, + "POIReference": "$(poi_2)" + } + ], + "text": "Tras pensarlo, decides que las recompensas prometidas no compensan el esfuerzo de expulsar a los actuales ocupantes de $(poi_1). (-2 de reputación local)", + "options": [ + { + "name": "(Misión fallida)" + } + ] + }, + "declinedDialog": { + "text": "Vuelve mañana y quizás tenga algo que sí quieras hacer.", + "options": [ + { + "name": "(Captando la indirecta, que de sutil tiene poco, te marchas.)" + } + ] + }, + "reward": {}, + "rewardDescription": "Fragmentos de maná, cartas infrecuentes y raras", + "stages": [ + { + "id": 1, + "name": "Limpiar", + "description": "Viaja a $(poi_1) y derrota a todos los enemigos de dentro. El lugar objetivo está en el bioma de isla.", + "mapFlag": "", + "mapFlagValue": 1, + "count2": 25, + "POITags": [ + "BiomeBlue", + "Hostile", + "Sidequest" + ], + "objective": "Clear", + "prologue": {}, + "epilogue": {}, + "failureDialog": {}, + "POIToken": "" + }, + { + "id": 2, + "name": "Viajar", + "description": "Vuelve al pueblo e informa de que has limpiado $(poi_1).", + "mapFlag": "", + "mapFlagValue": 1, + "here": true, + "objective": "Travel", + "prerequisiteIDs": [ + 1 + ], + "prologue": {}, + "epilogue": {}, + "POIToken": "" + } + ], + "questSourceTags": [ + "island_town_generic", + "island_town_identity", + "island_town_tribal", + "island_capital" + ] + }, + { + "id": 16, + "isTemplate": true, + "name": "Saldar las cuentas", + "description": "Limpia de enemigos $(poi_1) y vuelve a informar.", + "offerDialog": { + "text": "Mientras te acomodas dentro de la posada del lugar para pasar la noche, otro cliente se acerca a ti.", + "options": [ + { + "name": "\"¿Puedo ayudarte?\"", + "text": "Asiente. \"Eso espero. Tienes el aire de un hechicero poderoso, y confío en que eso signifique que sí puedes.\"", + "options": [ + { + "name": "Esperas a que continúe.", + "text": "\"He recibido en herencia una pequeña propiedad que llevaba años esperando. Últimamente he pasado por apuros y he convencido a ciertas personas de que me presten dinero con la tierra como aval.\"", + "options": [ + { + "name": "\"Entiendo.\" Crees saber por dónde van los tiros.", + "text": "El hombre pone cara de apuro. \"Por desgracia, he descubierto que la tierra no es exactamente utilizable ahora mismo. Porque contiene $(poi_1), que está... \"ocupado\". ¿Estarías dispuesto a despejarlo por mí a cambio de otras partes de la herencia?\"", + "options": [ + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "16", + "POIReference": "" + } + ], + "name": "\"Siempre que también pueda quedarme con lo que encuentre por el camino.\" (Aceptar misión)." + }, + { + "name": "\"Creo que no me interesa. Lo siento.\" (Rechazar misión)" + } + ] + }, + { + "name": "\"¿Y para qué me necesitas exactamente?\"", + "text": "\"Verás, parece que la tierra no está vacía, y necesito a alguien que despeje $(poi_1), que se encuentra allí. Tienes pinta de ser de los que podrían encargarse.\"", + "options": [ + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "16", + "POIReference": "" + } + ], + "name": "\"Lo haré. Pero espero que el difunto te dejara alguna otra cosa de valor.\" (Aceptar misión)" + }, + { + "name": "\"Creo que no me interesa. Lo siento.\" (Rechazar misión)" + } + ] + } + ] + } + ] + }, + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": -1, + "POIReference": "" + } + ], + "name": "\"Te has equivocado de persona. Te lo aseguro.\" (Rechazar misión)", + "text": "Algunos otros en la posada se detienen a mirar, pero el hombre se marcha sin montar una escena. (-1 de reputación local)", + "options": [ + { + "name": "(Continuar)" + } + ] + } + ] + }, + "prologue": {}, + "epilogue": { + "text": "Fiel a su palabra, el hombre te entrega una recompensa sacada de su herencia. Vale mucho menos que la tierra (ahora que está despejada), pero sigue siendo valiosa además del botín que ya recuperaste en $(poi_1).", + "options": [ + { + "action": [ + { + "grantRewards": [ + { + "type": "shards", + "count": 15 + }, + { + "type": "card", + "probability": 0.5, + "count": 1, + "rarity": [ + "Rare", + "Mythic Rare" + ] + }, + { + "type": "card", + "count": 2, + "rarity": [ + "Uncommon" + ] + }, + { + "type": "card", + "count": 2, + "rarity": [ + "Rare" + ] + }, + { + "type": "card", + "probability": 0.5, + "count": 1, + "rarity": [ + "Rare", + "Mythic Rare" + ] + }, + { + "type": "card", + "probability": 0.5, + "count": 2 + }, + { + "type": "gold", + "count": 200, + "addMaxCount": 200 + } + ] + } + ], + "name": "\"Si no vas a instalarte allí, te sugiero que vendas la tierra rápido, antes de que se mude alguien más.\" (Completar misión)" + } + ] + }, + "failureDialog": { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": -2, + "POIReference": "$(poi_2)" + } + ], + "text": "Decides no despejar $(poi_1). Seguro que los acreedores de tu cliente lo entenderán. (-2 de reputación local)", + "options": [ + { + "name": "(Misión fallida)" + } + ] + }, + "declinedDialog": { + "text": "Vuelve mañana y quizás tenga algo que sí quieras hacer.", + "options": [ + { + "name": "(Captando la indirecta, que de sutil tiene poco, te marchas.)" + } + ] + }, + "reward": {}, + "rewardDescription": "Fragmentos de maná, cartas infrecuentes y raras", + "stages": [ + { + "id": 1, + "name": "Limpiar", + "description": "Viaja a $(poi_1) y derrota a todos los enemigos de dentro. El lugar objetivo está en el bioma de yermos.", + "mapFlag": "", + "mapFlagValue": 1, + "count1": 35, + "count2": 10, + "POITags": [ + "BiomeColorless", + "Hostile", + "Sidequest" + ], + "objective": "Clear", + "prologue": {}, + "epilogue": {}, + "failureDialog": {}, + "POIToken": "" + }, + { + "id": 2, + "name": "Viajar", + "description": "Vuelve al pueblo e informa de que has limpiado $(poi_1).", + "mapFlag": "", + "mapFlagValue": 1, + "here": true, + "objective": "Travel", + "prerequisiteIDs": [ + 1 + ], + "prologue": {}, + "epilogue": {}, + "POIToken": "" + } + ], + "questSourceTags": [ + "waste_town_generic", + "waste_town_identity", + "waste_town_tribal" + ] + }, + { + "id": 17, + "isTemplate": true, + "name": "Coleccionista de huesos", + "description": "Derrota a 3 $(enemy_1).", + "offerDialog": { + "text": "Han levantado un tablón de trabajos a la puerta de la posada, y ves que está cubierto de papeles y carteles variados.", + "options": [ + { + "name": "Te alejas, con tus propios objetivos ya en mente. (Rechazar misión)" + }, + { + "name": "Te tomas un momento para repasar el tablón.", + "text": "La mayoría de los anuncios son anodinos, están desgastados por la intemperie o escritos en una lengua que desconoces. Unos pocos, sin embargo, te llaman la atención.", + "options": [ + { + "name": "Miras lo que parece ser algún tipo de anuncio a un lado.", + "text": "Dice: \"Papel autorreplicante de Gimgee. Cuando necesites papel ilimitado o talar un bosque a distancia, tiene que ser de Gimgee.\"", + "options": [ + { + "name": "\"Voy a archivar esto en la carpeta de cosas que tienen sentido y a la vez no.\" (Rechazar misión)" + } + ] + }, + { + "name": "Hay un papel doblado clavado al tablón.", + "text": "La parte visible dice 'Coge uno' con una letra clara y comedida.", + "options": [ + { + "name": "Aquí hay algo que no cuadra, así que prefieres alejarte. (Rechazar misión)" + }, + { + "name": "\"¿Uno?\" Tiras del clavo, pero está firmemente hincado, así que arrancas el papel de él.", + "text": "Podrías jurar que antes no estaba, pero al retirar la nota queda en su lugar una copia idéntica.", + "options": [ + { + "name": "Esto es sencillamente raro. Sueltas el papel y te marchas. (Rechazar misión)" + }, + { + "name": "Sin arredrarte y con curiosidad, abres el papel y empiezas a leer.", + "text": "\"$(playername): Por favor, recolecta al menos tres $(enemy_1) y tráelos a la taberna un martes.\"", + "options": [ + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "17", + "POIReference": "" + } + ], + "name": "\"Bueno, esto no es raro en absoluto. ¿Por qué no?\" (Aceptar misión)" + }, + { + "name": "\"No. No, no, no...\" Sueltas el papel y te alejas, lanzando un pequeño hechizo para que la carta se deshaga y se la lleve el viento. (Rechazar misión)" + } + ] + } + ] + } + ] + }, + { + "name": "Hay una nota breve escrita con tinta roja.", + "text": "\"{COLOR=red}Tengo colmillos y ganas de viajar{ENDCOLOR}\".", + "options": [ + { + "name": "De pronto caes en la cuenta de que eso no es tinta, y te apartas. (Rechazar misión)" + } + ] + } + ] + } + ] + }, + "prologue": {}, + "epilogue": { + "text": "Te resulta incómodo arrastrar a tus $(enemy_1) hasta el pueblo, pero en realidad no desentona tanto aquí, entre otras escenas macabras. (En el futuro esta misión solo se ofrecerá en el bioma negro).", + "options": [ + { + "name": "Miras a tu alrededor en busca de alguien que parezca estar esperando cadáveres.", + "text": "En efecto, un nigromante aguarda a la puerta de la posada con dos carromatos detrás; es obvio que es tu contacto.", + "options": [ + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": 3, + "POIReference": "" + }, + { + "grantRewards": [ + { + "type": "card", + "count": 2, + "addMaxCount": 2, + "colors": [ + "Black" + ], + "rarity": [ + "Common" + ] + }, + { + "type": "gold", + "count": 500 + }, + { + "type": "shards", + "count": 15 + } + ] + } + ], + "name": "Descargas a los $(enemy_1) en uno de los carromatos y recoges tus recompensas. (+3 de reputación local)" + }, + { + "name": "Examinas los carros más de cerca.", + "text": "Unos $(enemy_1) y algunas criaturas sueltas llenan casi todo un carro, mientras que el otro contiene varios zurrones idénticos con mercancía.", + "options": [ + { + "name": "Diriges tu atención al encargado de los carros.", + "text": "El hombre de piel pálida habla con voz cascada, pero a estas alturas las palabras le salen ya por puro reflejo. \"Déjalos ahí. Coge un paquete.\"", + "options": [ + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": 3, + "POIReference": "" + }, + { + "grantRewards": [ + { + "type": "gold", + "count": 500 + }, + { + "type": "shards", + "count": 15 + }, + { + "type": "card", + "count": 2, + "addMaxCount": 2, + "colors": [ + "Black" + ], + "rarity": [ + "Common" + ] + } + ] + } + ], + "name": "Descargas a los $(enemy_1) y recoges tus recompensas. (+3 de reputación local)" + } + ] + } + ] + } + ] + } + ] + }, + "failureDialog": { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": -2, + "POIReference": "$(poi_2)" + } + ], + "text": "Tres $(enemy_1) están resultando demasiado engorro para lo que vale tu tiempo, sepa tu misterioso cliente tu nombre o no. (-2 de reputación local)", + "options": [ + { + "name": "(Misión fallida)" + } + ] + }, + "declinedDialog": { + "text": "Vuelve mañana y quizás tenga algo que sí quieras hacer.", + "options": [ + { + "name": "(Captando la indirecta, que de sutil tiene poco, te marchas.)" + } + ] + }, + "rewardDescription": "Oro y fragmentos de maná", + "stages": [ + { + "id": 1, + "name": "Derrota a los $(enemy_1)", + "description": "A veces especializarse tiene premio. Cobra una recompensa local entregando los restos de 3 $(enemy_1). Suelen encontrarse en el bioma de pantano.", + "mapFlag": "", + "mapFlagValue": 1, + "count3": 3, + "worldMapOK": true, + "objective": "Defeat", + "enemyTags": [ + "BiomeBlack" + ], + "prologue": {}, + "epilogue": { + "text": "Despachados los $(enemy_1) necesarios, toca ir a cobrar tus recompensas. (No olvides que puedes seguir la misión para que te indique el camino de vuelta al pueblo)", + "options": [ + { + "name": "(Continuar)" + } + ] + }, + "POIToken": "" + }, + { + "id": 2, + "name": "Viajar", + "description": "Vuelve al lugar donde empezó la misión para entregar los reactivos y cobrar tus recompensas.", + "mapFlag": "", + "mapFlagValue": 1, + "here": true, + "objective": "Travel", + "prerequisiteIDs": [ + 1 + ], + "prologue": {}, + "epilogue": {}, + "POIToken": "" + } + ], + "questSourceTags": [ + "swamp_town_generic", + "swamp_town_identity", + "swamp_town_tribal", + "swamp_capital" + ] + }, + { + "id": 18, + "isTemplate": true, + "name": "Una mente concentrada", + "description": "Derrota a 3 $(enemy_2).", + "offerDialog": { + "text": "Han levantado un tablón de trabajos a la puerta de la posada, y ves que está cubierto de papeles y carteles variados.", + "options": [ + { + "name": "Te alejas, con tus propios objetivos ya en mente. (Rechazar misión)" + }, + { + "name": "Te tomas un momento para repasar el tablón.", + "text": "La mayoría de los anuncios son anodinos, están desgastados por la intemperie o escritos en una lengua que desconoces. Unos pocos, sin embargo, te llaman la atención.", + "options": [ + { + "name": "Miras lo que parece ser algún tipo de anuncio a un lado.", + "text": "\"Una mente concentrada recibe grandes recompensas. Concéntrate en derrotar a 3 $(enemy_2) y sé recompensado.\"", + "options": [ + { + "name": "Sin más información que esa, dudas que esto valga realmente tu tiempo. (Rechazar misión)" + }, + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "18", + "POIReference": "$(poi_1)" + } + ], + "name": "\"¿Qué otra cosa iba a hacer? ¿Ir a salvar el mundo?\" (Aceptar misión)" + } + ] + }, + { + "name": "Hay una nota breve escrita con tinta azul.", + "text": "Lees la nota: '¿3 $(enemy_2)? ¿Para qué?'", + "options": [ + { + "name": "\"Buena pregunta: ¿para qué?\" (Rechazar misión)" + }, + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "18", + "POIReference": "$(poi_1)" + } + ], + "name": "Solo hay una forma de averiguarlo. (Aceptar misión)" + } + ] + } + ] + } + ] + }, + "prologue": {}, + "epilogue": { + "text": "\"Bien hecho.\" Te giras de golpe y encuentras a un djinn flotando a tu espalda. \"Has demostrado una gran concentración.\" Un conjunto de tesoros flota hacia ti desde su mano extendida.", + "options": [ + { + "action": [ + { + "grantRewards": [ + { + "type": "card", + "count": 2, + "addMaxCount": 2, + "colors": [ + "Blue" + ], + "rarity": [ + "Common" + ] + }, + { + "type": "gold", + "count": 500 + }, + { + "type": "shards", + "count": 15 + } + ] + } + ], + "name": "Coger los objetos con cautela.", + "text": "Nada más hacerlo, el djinn desaparece en una nube de humo. Cuando te vuelves, el $(enemy_2) al que acabas de derrotar también se ha esfumado.", + "options": [ + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": 3, + "POIReference": "$(poi_1)" + } + ], + "name": "¿Habrá sido todo esto una especie de prueba? (+3 de reputación local) (Completar misión)" + } + ] + } + ] + }, + "failureDialog": { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": -2, + "POIReference": "$(poi_1)" + } + ], + "text": "Decides que tienes cosas mejores que hacer que cazar $(enemy_2), y tachas esta entrada de tu cuaderno de bitácora. (-2 de reputación local)", + "options": [ + { + "name": "(Misión fallida)" + } + ] + }, + "declinedDialog": { + "text": "Vuelve mañana y quizás tenga algo que sí quieras hacer.", + "options": [ + { + "name": "(Captando la indirecta, que de sutil tiene poco, te marchas.)" + } + ] + }, + "reward": {}, + "stages": [ + { + "id": 1, + "name": "Marcharse", + "description": "Sal del pueblo para comenzar tu misión.", + "here": true, + "mapFlag": "", + "mapFlagValue": 1, + "objective": "Leave", + "prologue": {}, + "epilogue": {}, + "POIToken": "" + }, + { + "id": 2, + "name": "Derrota a los $(enemy_2)", + "description": "A veces especializarse tiene premio. Cobra una recompensa local entregando los restos de 3 $(enemy_2). Suelen encontrarse en el bioma de isla.", + "mapFlag": "", + "mapFlagValue": 1, + "count3": 3, + "worldMapOK": true, + "objective": "Defeat", + "prerequisiteIDs": [ + 1 + ], + "enemyTags": [ + "BiomeBlue" + ], + "prologue": {}, + "epilogue": {}, + "failureDialog": {}, + "POIToken": "$(poi_1)" + } + ], + "questSourceTags": [ + "island_town_generic", + "island_town_identity", + "island_town_tribal", + "island_capital" + ] + }, + { + "id": 19, + "isTemplate": true, + "name": "Control de población", + "description": "Derrota a 3 $(enemy_1).", + "offerDialog": { + "text": "Un elfo demacrado y con cara de cansancio deja su arco en la puerta de la taberna. Otro elfo lo llama. \"¿Larga jornada de caza?\"", + "options": [ + { + "name": "No formas parte de la conversación, así que desconectas. (Rechazar misión)" + }, + { + "name": "Quizá prestar atención podría resultar útil.", + "text": "El recién llegado se limita a asentir y se desploma un momento en una silla antes de responder de verdad. \"Sí, y quedan muchas más por delante.\"", + "options": [ + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": -1, + "POIReference": "" + } + ], + "name": "\"¿Y qué estáis cazando, exactamente?\"", + "text": "Ambos elfos se vuelven hacia ti antes de trasladarse a una mesa para seguir su conversación con más intimidad. Parece que tu intromisión no era bienvenida. (-1 de reputación local)", + "options": [ + { + "name": "Meterte en tus asuntos a partir de ahí. (Rechazar misión)" + } + ] + }, + { + "name": "Esperas a que alguno diga algo más.", + "text": "Continúa: \"Es que hay demasiados $(enemy_1) para lo que la zona puede sostener. Tenemos que reducir sus números, pero siempre aparecen más. No habrás aprendido a apuntar, ¿verdad?\"", + "options": [ + { + "name": "Mientras su amigo niega con la cabeza con cierta guasa, decides intervenir. \"Yo podría encargarme de unos cuantos por vosotros.\"", + "text": "El cazador te presta atención y te examina de arriba abajo. Probablemente sea puro formalismo; ya te habría medido al entrar por la puerta. \"Acepto la oferta.\"", + "options": [ + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "19", + "POIReference": "" + } + ], + "name": "\"Que no falte el botín y no volverás a ver un solo $(enemy_1) en pie.\" (Aceptar misión)" + }, + { + "name": "\"Pensándolo mejor, tengo cosas más importantes que hacer.\" (Rechazar misión)", + "text": "Visiblemente molestos por la distracción inútil, los dos retoman su conversación sin ti. (-1 de reputación local)" + }, + { + "name": "\"¿Cuál es la recompensa?\"", + "text": "Se lo piensa un momento. \"Empecemos con tres, a modo de prueba. Y pagaremos bien por ellos, porque dudo que hagas esto por la aldea.\"", + "options": [ + { + "name": "\"Eso es tremendamente ambiguo. ¿Por qué no vuelvo cuando tengas una oferta de verdad?\" (Rechazar misión)" + }, + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "19", + "POIReference": "" + } + ], + "name": "\"¿Y si traigo seis?\" (Aceptar misión)", + "text": "\"Entonces habrás abatido demasiados. Los estamos reduciendo, no eliminando.\"", + "options": [ + { + "name": "Asientes y te dispones a marcharte. (Continuar)" + } + ] + } + ] + } + ] + }, + { + "name": "Hoy no te apetece especialmente ofrecerte voluntario para enfrentarte a un $(enemy_1). (Rechazar misión)" + } + ] + }, + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "POIReference": "" + } + ], + "name": "Aburrido ya de la conversación, terminas tu comida y te marchas. (Rechazar misión)" + } + ] + } + ] + }, + "prologue": {}, + "epilogue": { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": 3, + "POIReference": "" + } + ], + "text": "Como prometió, la aldea paga bien, por mediación de su guardabosques. \"La generosidad de la naturaleza no tiene precio, pero mantener a raya las poblaciones aumenta la abundancia de todos los bienes.\" (+3 de reputación local)", + "options": [ + { + "action": [ + { + "grantRewards": [ + { + "type": "shards", + "count": 15 + }, + { + "type": "gold", + "count": 500 + }, + { + "type": "card", + "count": 2, + "addMaxCount": 2, + "colors": [ + "Green" + ], + "rarity": [ + "Common" + ] + } + ] + } + ], + "name": "(Continuar)" + } + ] + }, + "failureDialog": { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": -2, + "POIReference": "$(poi_2)" + } + ], + "text": "Decides que tienes cosas mejores que hacer que cazar $(enemy_1), y tachas esta entrada de tu cuaderno de bitácora. (-2 de reputación local)", + "options": [ + { + "name": "(Misión fallida)" + } + ] + }, + "declinedDialog": { + "text": "Vuelve mañana y quizás tenga algo que sí quieras hacer.", + "options": [ + { + "name": "(Captando la indirecta, que de sutil tiene poco, te marchas.)" + } + ] + }, + "reward": {}, + "stages": [ + { + "id": 1, + "name": "Derrota a los $(enemy_1)", + "description": "A veces especializarse tiene premio. Cobra una recompensa local entregando los restos de 3 $(enemy_1). Suelen encontrarse en el bioma de bosque.", + "mapFlag": "", + "mapFlagValue": 1, + "count3": 3, + "worldMapOK": true, + "objective": "Defeat", + "enemyTags": [ + "Animal", + "BiomeGreen" + ], + "prologue": {}, + "epilogue": {}, + "failureDialog": {}, + "POIToken": "" + }, + { + "id": 2, + "name": "Viajar", + "description": "Vuelve con el cazador e informa de tu éxito.", + "mapFlag": "", + "mapFlagValue": 1, + "here": true, + "objective": "Travel", + "prerequisiteIDs": [ + 1 + ], + "prologue": {}, + "epilogue": {}, + "failureDialog": {}, + "POIToken": "" + } + ], + "questSourceTags": [ + "forest_capital", + "forest_town_generic", + "forest_town_identity", + "forest_town_tribal" + ] + }, + { + "id": 20, + "isTemplate": true, + "name": "Demostrar que eres digno", + "description": "Derrota a 3 $(enemy_1).", + "offerDialog": { + "text": "\"¿Eres digno, ciudadano?\" Un soldado con pesada armadura se planta en el centro de la plaza del pueblo y de cuando en cuando interpela a los transeúntes. \"¿Lo eres TÚ?\", le grita a otro.", + "options": [ + { + "name": "Te acercas al hombre, con curiosidad.", + "text": "\"Pareces digno. Creo que lo eres. ¿Lo eres?\"", + "options": [ + { + "name": "\"¿Digno de qué, exactamente?\"", + "text": "\"De ser instruido como escudero de sir Kallus. ¿Te consideras digno de ello?\"", + "options": [ + { + "name": "\"¿Quién es sir Kallus?\"", + "text": "Se ríe como si la pregunta fuera ridícula. \"¡Yo, por supuesto! ¡Y necesito a alguien que demuestre ser digno de mis enseñanzas!\"", + "options": [ + { + "name": "Decides seguirle la corriente. \"Pongamos que lo soy. ¿Y entonces qué?\"", + "text": "Vuelve a mirarte, como si antes no te hubiera prestado atención de verdad. \"Entonces lo demuestras. Derrota a 3 $(enemy_1) con honor.\"", + "options": [ + { + "name": "\"Era puramente hipotético. No soy digno, y ahora me marcho.\" (Rechazar misión)" + }, + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "20", + "POIReference": "" + } + ], + "name": "\"Reto aceptado.\" (Aceptar misión)" + } + ] + }, + { + "name": "\"Ya te aviso si se me ocurre alguien.\" (Rechazar misión)" + } + ] + }, + { + "name": "\"No.\" (Rechazar misión)", + "text": "Tu respuesta tajante parece dejarlo perplejo un instante, hasta que otra persona entra en la plaza. Empieza a interpelarla y se olvida de que existes.", + "options": [ + { + "name": "(Continuar)" + } + ] + } + ] + }, + { + "name": "\"¿Quién eres tú?\"", + "text": "\"¡Sir Kallus, por supuesto!\"", + "options": [ + { + "name": "\"¿Ah, sí?\"", + "text": "Te mira con un punto de frustración. \"Sí, yo soy sir Kallus.\"", + "options": [ + { + "name": "\"Me refiero a si eres digno, sir Kallus.\"", + "text": "Se lo piensa un momento, claramente dándole vueltas. \"¡Debo ser digno de mí mismo! ¡Lo soy! Lo soy y lo demostraré.\"", + "options": [ + { + "name": "\"¿Y cómo lo demostrarás, sir Kallus?\"", + "text": "\"Haré lo mismo que te pido a ti. Derrotar a 3 $(enemy_1). En cuanto termine, volveré aquí y te esperaré.\"", + "options": [ + { + "name": "\"Ahí lo tienes. Ya resuelves tus propios problemas. Ahora lárgate.\" (Rechazar misión)", + "text": "Frunce el ceño, poco acostumbrado a que le hablen de ese modo. (-1 de reputación local)", + "options": [ + { + "name": "\"Venga. ¡Largo de aquí!\" (Continuar)" + } + ] + }, + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "20", + "POIReference": "" + } + ], + "name": "\"Reto aceptado.\" (Aceptar misión)" + } + ] + } + ] + }, + { + "name": "\"¡Bien!\" Asientes. \"Me alegra que hayamos dejado eso claro.\"", + "text": "Parpadea varias veces y luego retoma la conversación en sus propios términos. \"¿Aceptas mi reto de derrotar a 3 $(enemy_1)?\"", + "options": [ + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "20", + "POIReference": "" + } + ], + "name": "\"Reto aceptado.\" (Aceptar misión)" + }, + { + "name": "\"No me interesa.\" (Rechazar misión)" + } + ] + }, + { + "name": "\"Pues que tengas un buen día, sir Kallus.\" (Rechazar misión)" + } + ] + } + ] + } + ] + }, + { + "name": "Niegas con la cabeza y sigues caminando, sin interés alguno en lo que sea que sea esto. (Rechazar misión)" + } + ] + }, + "prologue": {}, + "epilogue": { + "action": [ + { + "grantRewards": [ + { + "type": "shards", + "count": 15 + }, + { + "type": "gold", + "count": 500 + }, + { + "type": "card", + "count": 2, + "addMaxCount": 2, + "rarity": [ + "Common" + ] + } + ] + } + ], + "text": "Vuelves al pueblo y no ves ni rastro de sir Kallus. En su lugar, los comerciantes de las tiendas cercanas a la plaza se acercan corriendo a darte un recibimiento de héroe y recompensas de su propio bolsillo.", + "options": [ + { + "name": "\"¿Tan odiados son los $(enemy_1) por aquí?\"", + "text": "Uno de los comerciantes se ríe. \"No, pero sir Kallus sí. Y desde que te fuiste, no lo hemos visto. Gracias, de todo corazón.\" (+3 de reputación local)", + "action": [ + { + "addMapReputation": 3 + } + ], + "options": [ + { + "name": "(Continuar)" + } + ] + } + ] + }, + "failureDialog": { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": -2, + "POIReference": "$(poi_2)" + } + ], + "text": "Sir Kallus no merece que seas digno de él. Tachas este asunto de tus notas. (-2 de reputación local)", + "options": [ + { + "name": "(Misión fallida)" + } + ] + }, + "declinedDialog": { + "text": "Vuelve mañana y quizás tenga algo que sí quieras hacer.", + "options": [ + { + "name": "(Captando la indirecta, que de sutil tiene poco, te marchas.)" + } + ] + }, + "reward": {}, + "stages": [ + { + "id": 1, + "name": "Derrota a los $(enemy_1)", + "description": "A veces especializarse tiene premio. Cobra una recompensa local entregando los restos de 3 $(enemy_1). Suelen encontrarse en el bioma de llanuras.", + "mapFlag": "", + "mapFlagValue": 1, + "count3": 3, + "worldMapOK": true, + "objective": "Defeat", + "enemyTags": [ + "BiomeWhite" + ], + "prologue": {}, + "epilogue": {}, + "failureDialog": {}, + "POIToken": "" + }, + { + "id": 2, + "name": "Viajar", + "description": "Vuelve al lugar donde empezó la misión para entregar los reactivos y cobrar tus recompensas.", + "mapFlag": "", + "mapFlagValue": 1, + "here": true, + "objective": "Travel", + "prerequisiteIDs": [ + 1 + ], + "prologue": {}, + "epilogue": {}, + "failureDialog": {}, + "POIToken": "" + } + ], + "questSourceTags": [ + "plains_capital", + "plains_town_generic", + "plains_town_identity", + "plains_town_tribal" + ] + }, + { + "id": 21, + "isTemplate": true, + "name": "En nombre de la ciencia", + "description": "Derrota a 3 $(enemy_1).", + "offerDialog": { + "text": "\"...¡¡¡pero es por la CIENCIA!!!\" Una joven sale de la taberna a toda prisa, mientras alguien le grita a la espalda desde el otro lado del umbral. Un enano con bata de laboratorio y gafas de protección en la cabeza sale renqueando tras ella.", + "options": [ + { + "name": "Observas la escena mientras se desarrolla ante ti.", + "text": "Con pocas esperanzas de alcanzar a la damisela, dirige su atención hacia ti. \"¿Puedo interesarte en ayudarme con unos experimentos científicos?\"", + "options": [ + { + "name": "\"Depende mucho de cuáles sean.\" Lo miras con recelo.", + "text": "\"No eres un peón de granja, así que tendrá que valer.\" Se lo piensa un momento mientras saca un cuaderno muy manoseado y pasa las páginas.", + "options": [ + { + "name": "\"Quizá en otro momento, tengo que seguir mi camino.\" (Rechazar misión)", + "text": "El enano no hace el menor esfuerzo por detenerte. Parece tan absorto en sus notas que puede que ni siquiera te haya oído.", + "options": [ + { + "name": "Te marchas mientras puedes. (Continuar)" + } + ] + }, + { + "name": "Esperas a ver con qué sale.", + "text": "\"¡Ajá! ¡Ya lo tengo! Todavía me falta investigar la estructura interna de los $(enemy_1). Creo que se pueden encontrar por esta zona. ¿Puedes traerme unos cuantos? ¿Más o menos enteros?\"", + "options": [ + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "21", + "POIReference": "" + } + ], + "name": "\"Puedo hacer eso.\" (Aceptar misión)" + }, + { + "name": "\"Lo siento, acabo de decidir que lo mío es más la magia que la ciencia.\" (Rechazar misión)" + } + ] + } + ] + } + ] + }, + { + "name": "No es asunto tuyo, sigue tu camino. (Rechazar misión)" + } + ] + }, + "prologue": {}, + "epilogue": { + "action": [ + { + "addMapReputation": 3, + "POIReference": "$(poi_1)" + } + ], + "text": "Vuelves a entrar en el pueblo con el cargamento de $(enemy_1) solicitado. No sabes si servirán de algo, pero el enano parece entusiasmadísimo por empezar su trabajo. (+3 de reputación local)", + "options": [ + { + "action": [ + { + "grantRewards": [ + { + "type": "gold", + "count": 500 + }, + { + "type": "card", + "count": 4, + "addMaxCount": 4, + "rarity": [ + "Common", + "Uncommon" + ] + } + ] + } + ], + "name": "Intentas hablar con él, pero el enano ya está completamente absorto en su trabajo. Coges el fardo que llevaba, dando por hecho que son tus recompensas. (Completar misión)" + } + ] + }, + "failureDialog": { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": -2, + "POIReference": "$(poi_2)" + } + ], + "text": "El científico ya se buscará por otro lado los $(enemy_1) con los que experimentar; tú has terminado con esto. (-2 de reputación local)", + "options": [ + { + "name": "(Misión fallida)" + } + ] + }, + "declinedDialog": { + "text": "Vuelve mañana y quizás tenga algo que sí quieras hacer.", + "options": [ + { + "name": "(Captando la indirecta, que de sutil tiene poco, te marchas.)" + } + ] + }, + "reward": {}, + "stages": [ + { + "id": 1, + "name": "Derrota a los $(enemy_1)", + "description": "A veces especializarse tiene premio. Cobra una recompensa local entregando los restos de 3 $(enemy_1). Suelen encontrarse en el bioma de yermos.", + "mapFlag": "", + "mapFlagValue": 1, + "count3": 3, + "worldMapOK": true, + "objective": "Defeat", + "enemyTags": [ + "BiomeColorless" + ], + "prologue": {}, + "epilogue": {}, + "failureDialog": {}, + "POIToken": "" + }, + { + "id": 2, + "name": "Viajar", + "description": "Vuelve al lugar donde empezó la misión para entregar los reactivos y cobrar tus recompensas.", + "mapFlag": "", + "mapFlagValue": 1, + "here": true, + "objective": "Travel", + "prerequisiteIDs": [ + 1 + ], + "prologue": {}, + "epilogue": {}, + "failureDialog": {}, + "POIToken": "" + } + ], + "questSourceTags": [ + "waste_town_generic", + "waste_town_identity", + "waste_town_tribal" + ] + }, + { + "id": 22, + "isTemplate": true, + "name": "Tótems chamánicos", + "description": "Derrota a 3 $(enemy_1).", + "offerDialog": { + "text": "Han levantado un tablón de trabajos a la puerta de la posada, y ves que está cubierto de papeles y carteles variados.", + "options": [ + { + "name": "Te alejas, con tus propios objetivos ya en mente. (Rechazar misión)" + }, + { + "name": "Te tomas un momento para repasar el tablón.", + "text": "La mayoría de los anuncios son anodinos, están desgastados por la intemperie o escritos en una lengua que desconoces. Unos pocos, sin embargo, te llaman la atención.", + "options": [ + { + "name": "Miras lo que parece ser algún tipo de anuncio a un lado.", + "text": "Dice: \"Piedras de Gimgee. Cuando necesites una buena piedra, piensa en Gimgee.\"", + "options": [ + { + "name": "\"Voy a archivar esto en la carpeta de cosas que tienen sentido y a la vez no.\" (Rechazar misión)" + } + ] + }, + { + "name": "Hay una nota breve escrita con tinta roja.", + "text": "La nota dice: \"{COLOR=red}Se buscan: 3 $(enemy_1). Muertos. Contactar con el chamán del pueblo para la recompensa.{ENDCOLOR}\"", + "options": [ + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "22", + "POIReference": "" + } + ], + "name": "\"Parece bastante sencillo.\" (Aceptar misión)" + }, + { + "name": "\"No sé yo si quiero encontrarme con 3 $(enemy_1). Ni con el chamán, ya puestos.\" (Rechazar misión)" + } + ] + } + ] + } + ] + }, + "prologue": {}, + "epilogue": { + "text": "El chamán de la aldea sonríe de oreja a oreja cuando entras en su tienda. \"Sí, esto es bueno. Esto es bueno. Los espíritus han quedado satisfechos.\" (+3 de reputación local)", + "options": [ + { + "action": [ + { + "grantRewards": [ + { + "type": "gold", + "count": 500 + }, + { + "type": "shards", + "count": 15 + }, + { + "type": "card", + "count": 2, + "addMaxCount": 2, + "colors": [ + "Red" + ], + "rarity": [ + "Common" + ] + } + ], + "addMapReputation": 3, + "POIReference": "$(poi_1)" + } + ], + "name": "(Completar misión)" + } + ] + }, + "failureDialog": { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": -2, + "POIReference": "$(poi_2)" + } + ], + "text": "Tras dedicar a buscar $(enemy_1) todo el tiempo que estabas dispuesto a dedicar, tachas este asunto de tus notas. (-2 de reputación local)", + "options": [ + { + "name": "(Misión fallida)" + } + ] + }, + "declinedDialog": { + "text": "Vuelve mañana y quizás tenga algo que sí quieras hacer.", + "options": [ + { + "name": "(Captando la indirecta, que de sutil tiene poco, te marchas.)" + } + ] + }, + "reward": {}, + "stages": [ + { + "id": 1, + "name": "Derrota a los $(enemy_1)", + "description": "A petición del chamán de una aldea, derrota a 3 $(enemy_1). Suelen encontrarse en el bioma de montaña.", + "mapFlag": "", + "mapFlagValue": 1, + "count3": 3, + "worldMapOK": true, + "objective": "Defeat", + "enemyTags": [ + "BiomeRed" + ], + "prologue": {}, + "epilogue": {}, + "failureDialog": {}, + "POIToken": "" + }, + { + "id": 2, + "name": "Viajar", + "description": "Encuentra al chamán y cobra tus recompensas.", + "mapFlag": "", + "mapFlagValue": 1, + "here": true, + "objective": "Travel", + "prerequisiteIDs": [ + 1 + ], + "prologue": {}, + "epilogue": {}, + "failureDialog": {}, + "POIToken": "" + } + ], + "questSourceTags": [ + "mountain_town_generic", + "mountain_town_identity", + "mountain_town_tribal", + "mountain_capital" + ] + }, + { + "id": 23, + "isTemplate": true, + "name": "Corazón de campeón", + "description": "Inscríbete y gana el próximo evento de la arena.", + "offerDialog": { + "text": "\"¿TIENES LO QUE HAY QUE TENER? ¿ERES EL MEJOR DE SHANDALAR???\" Una niña grita a pleno pulmón a cada transeúnte del pueblo. La mayoría de la gente aparece ya tapándose los oídos, por haberlo oído infinidad de veces.", + "options": [ + { + "name": "Te acercas a ella. \"Vale, chiquilla, calma, te he oído. ¿De qué va esto?\"", + "text": "Se sorprende y se queda callada un momento mientras intenta recordar qué toca ahora. \"Yo eeeh... mmmm...\" Saca un papel del bolsillo y se dispone a leer.", + "options": [ + { + "action": [ + { + "addMapReputation": -1 + } + ], + "name": "Quitarle el papel.", + "text": "\"¡¡¡EH, QUE ES MÍO!!!\" (-1 de reputación) Recupera todo su volumen ensordecedor antes de arrebatártelo y leer. \"¡DEMUESTRA QUE ERES EL MEJOR EN LA ARENA! EL TORNEO EMPIEZA PRONTO\"", + "options": [ + { + "action": [ + { + "issueQuest": "23" + } + ], + "name": "\"Vale, claro, irme muy lejos me parece buena idea ahora mismo, sea donde sea.\" (Aceptar misión)" + }, + { + "name": "\"No, gracias, creo que voy a buscar un sitio tranquilo un rato.\" (Rechazar misión)" + } + ] + }, + { + "name": "Esperar a que continúe.", + "text": "Repasa el papel como si viera esa parte por primera vez. \"Aquí pone... 'Ve a... $(poi_1)... y compite por premios.' ¿Sabes cómo llegar?\"", + "options": [ + { + "action": [ + { + "issueQuest": "23" + } + ], + "name": "\"Vale, claro, irme muy lejos me parece buena idea ahora mismo.\" (Aceptar misión)" + }, + { + "name": "\"Eso queda un poco más lejos de lo que pretendo viajar ahora mismo. Pero gracias de todos modos.\" (Rechazar misión)", + "text": "Te mira sin expresión un instante y luego vuelve a gritar al aire. \"¿TIENES LO QUE HAY QUE TENER? ¿ERES EL MEJOR DE SHANDALAR???\"", + "options": [ + { + "name": "Taparte los oídos y alejarte rápido." + } + ] + } + ] + } + ] + }, + { + "name": "Taparte los oídos y seguir caminando (Rechazar misión)" + } + ] + }, + "prologue": {}, + "epilogue": { + "text": "El público enloquece cuando acabas con tu último rival. No vas a pagarte una copa en $(poi_1) en una buena temporada. (+3 de reputación en $(poi_1))", + "options": [ + { + "action": [ + { + "grantRewards": [ + { + "type": "shards", + "count": 20 + }, + { + "type": "card", + "count": 2, + "addMaxCount": 2, + "rarity": [ + "Rare", + "Mythic Rare" + ] + }, + { + "type": "gold", + "count": 250 + } + ], + "addMapReputation": 3, + "POIReference": "$(poi_1)" + } + ], + "name": "(Completar misión)" + } + ] + }, + "failureDialog": { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": -2, + "POIReference": "$(poi_1)" + } + ], + "text": "La arena de $(poi_1) te queda grande por ahora, pero siempre habrá otro día. (-2 de reputación en $(poi_1))", + "options": [ + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": -2, + "POIReference": "$(poi_1)" + } + ], + "name": "(Misión fallida)" + } + ] + }, + "declinedDialog": { + "text": "Vuelve mañana y quizás tenga algo que sí quieras hacer.", + "options": [ + { + "name": "(Captando la indirecta, que de sutil tiene poco, te marchas.)" + } + ] + }, + "rewardDescription": "Gloria eterna", + "stages": [ + { + "id": 1, + "name": "Viajar", + "description": "Dirígete a $(poi_1)", + "mapFlag": "", + "mapFlagValue": 1, + "count1": 60, + "count2": 30, + "POITags": [ + "Capital" + ], + "objective": "Travel", + "prologue": {}, + "epilogue": { + "text": "Al cruzar las puertas de $(poi_1), notas cómo la emoción crece, emana, irradia desde la arena de la ciudad. Casi toda la población ya está allí o de camino.", + "options": [ + { + "name": "(continuar)", + "text": "La presencia de tantos lanzadores de conjuros poderosos llena el aire de trazas de maná.", + "options": [ + { + "name": "Sería una lástima hacer esperar al público por su nuevo campeón." + } + ] + } + ] + }, + "POIToken": "" + }, + { + "id": 2, + "name": "Arena", + "description": "Demuestra que eres el campeón de la arena de $(poi_1).", + "mapFlag": "", + "mapFlagValue": 1, + "objective": "Arena", + "prerequisiteIDs": [ + 1 + ], + "prologue": {}, + "epilogue": {}, + "POIToken": "$(poi_1)" + } + ], + "questSourceTags": [ + "waste_town_generic", + "waste_town_identity", + "waste_town_tribal" + ] + }, + { + "id": 24, + "isTemplate": true, + "name": "Control de plagas", + "description": "Derrota a Xira y a sus avispones en su colmena, y vuelve a informar.", + "offerDialog": { + "text": "¡Saludos, aventurero! Tengo una tarea que requiere tu ayuda. Verás, tenemos cierto problemilla con un insecto gigante llamado Xira. Está causando un buen revuelo en nuestro pueblo con su afición a organizar bailes extravagantes.", + "options": [ + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": -1, + "POIReference": "" + } + ], + "name": "¿Bichos gigantes dando bailes? A mí no me metas. (Rechazar misión)", + "text": "Ya me imaginaba que no estabas a la altura del desafío; vuelve cuando lo estés.", + "options": [ + { + "name": "(Continuar)" + } + ] + }, + { + "name": "Déjame adivinar: ¿quieres que me ocupe yo de esta situación?", + "text": "Pues sí. Déjame explicarte la situación: los bailes de Xira se han convertido en un problema. Los celebra todas las noches y son cada vez más extravagantes y molestos. Los vecinos están hartos del ruido y el alboroto constantes, y les está afectando en su día a día.", + "options": [ + { + "name": "Entiendo. ¿Así que quieres que hable con Xira y le pida que pare?", + "text": "\"La encontrarás en su colmena; no se deja disuadir fácilmente. Yo mismo he intentado hablar con ella, pero está empeñada en seguir con sus bailes nocturnos. Me temo que harán falta algo más que unas palabras para convencerla, si me sigues.", + "options": [ + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "24", + "POIReference": "" + } + ], + "name": "El control de plagas es mi especialidad; anota la ubicación de su colmena en mi mapa.(Aceptar misión) (AVISO: MISIÓN DIFÍCIL)" + }, + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "POIReference": "" + } + ], + "name": "\"¿De verdad crees que no tengo nada mejor que hacer que cazar insectos gigantes que dan bailes? Búscate a otro para que se ocupe.\" (Rechazar misión)", + "text": "El peón de granja mantiene el gesto impasible. \"Supongo que nunca recuperaré mis noches de sueño tranquilo.\"", + "options": [ + { + "name": "(Marcharse)" + } + ] + } + ] + } + ] + } + ] + }, + "prologue": {}, + "epilogue": { + "text": "Al entrar en la aldea, los vecinos se acercan corriendo a agradecerte tus hazañas. (+3 de reputación en $(poi_2))", + "options": [ + { + "action": [ + { + "grantRewards": [ + { + "type": "gold", + "probability": 1, + "count": 1000, + "addMaxCount": 800 + }, + { + "type": "shards", + "probability": 1, + "count": 10, + "addMaxCount": 20 + }, + { + "type": "card", + "probability": 1, + "count": 5, + "addMaxCount": 10, + "rarity": [ + "Rare", + "Mythic Rare", + "Uncommon" + ], + "cardText": "Insect" + } + ], + "addMapReputation": 3, + "POIReference": "$(poi_2)" + } + ], + "name": "Nada que no pudiera manejar. (Completar misión)" + } + ] + }, + "failureDialog": { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": -2, + "POIReference": "$(poi_2)" + } + ], + "text": "Tras pensarlo, decides que las recompensas prometidas no compensan el esfuerzo de expulsar a los actuales ocupantes de la colmena.", + "options": [ + { + "name": "(Misión fallida)" + } + ] + }, + "declinedDialog": { + "text": "Vuelve mañana y quizás tenga algo que sí quieras hacer.", + "options": [ + { + "name": "(Captando la indirecta, que de sutil tiene poco, te marchas.)" + } + ] + }, + "rewardDescription": "Fragmentos de maná, cartas raras y míticas", + "stages": [ + { + "id": 1, + "name": "Limpiar", + "description": "Viaja a $(poi_1) y derrota a todos los enemigos de dentro. El lugar objetivo está en el bioma de yermos.", + "mapFlag": "", + "mapFlagValue": 1, + "POITags": [ + "Xira" + ], + "objective": "Clear", + "prologue": {}, + "epilogue": {}, + "POIToken": "" + }, + { + "id": 2, + "name": "Viajar", + "description": "Vuelve a $(poi_2) e informa de que has limpiado $(poi_1).", + "mapFlag": "", + "mapFlagValue": 1, + "here": true, + "POITags": [ + "Xira" + ], + "objective": "Travel", + "prerequisiteIDs": [ + 1 + ], + "prologue": {}, + "epilogue": {}, + "POIToken": "" + } + ], + "questSourceTags": [ + "waste_town_generic", + "waste_town_identity", + "waste_town_tribal" + ] + }, + { + "id": 25, + "isTemplate": true, + "name": "Problemas mecánicos", + "description": "Derrota a Slobad y a sus artífices en su fábrica y vuelve a informar.", + "offerDialog": { + "text": "¡Saludos, valiente aventurero! Me hallo necesitado de un alma valerosa que emprenda una tarea peligrosa.\nEn el extenso distrito industrial, una fábrica abandonada que perteneció al célebre inventor Slobad se ha convertido en un foco de peligro y caos mecánico.", + "options": [ + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "POIReference": "" + } + ], + "name": "Lo siento, no tengo tiempo para esto. (Rechazar misión)", + "text": "Ya me imaginaba que no estabas a la altura del desafío; vuelve cuando lo estés.", + "options": [ + { + "name": "(Continuar)" + } + ] + }, + { + "name": "Déjame adivinar: ¿quieres que me ocupe yo de esta situación?", + "text": "La fábrica, ahora infestada de toda una gama de mecas peculiares y artífices diestros, supone una grave amenaza para nuestra comunidad y para el delicado equilibrio de la tecnología. Slobad, en su día aclamado como un genio, era conocido por sus creaciones poco ortodoxas y por la naturaleza volátil de estas. Sin embargo, hace años ocurrió un incidente catastrófico que llevó al abandono de la fábrica. Ahora las monstruosidades mecánicas se han reactivado y siembran el caos entre caminantes desprevenidos y asentamientos cercanos.", + "options": [ + { + "name": "Entiendo. ¿Así que quieres que vaya a su fábrica y lo derrote?", + "text": "Tu tarea, si decides aceptarla, es adentrarte en la fábrica de Slobad y limpiarla de sus amenazas mecánicas. Te enfrentarás a un sinfín de mecas extraños, cada uno con capacidades y comportamientos propios. Además, los artífices de la fábrica, ingenieros diestros corrompidos por sus propias creaciones, defenderán con fiereza sus inventos. Lo que hace tu misión aún más exigente.", + "options": [ + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "25", + "POIReference": "" + } + ], + "name": "Yo me encargo. Si fueras tan amable de anotar la ubicación de la fábrica en mi mapa... (Aceptar misión) (AVISO: MISIÓN DIFÍCIL)", + "text": "Una vez hayas vencido la amenaza mecánica y sofocado el caos dentro de la fábrica, vuelve a mí, Maven el Alquimista, y serás generosamente recompensado por tu valor y tu servicio a nuestra comunidad. Quedas advertido, no obstante: el camino que tienes por delante pondrá a prueba tu temple, tu astucia y tu destreza en combate. ¡Que la fortuna te acompañe en esta peligrosa empresa!" + }, + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "POIReference": "" + } + ], + "name": "\"¿De verdad crees que no tengo nada mejor que hacer? Búscate a otro para que se ocupe.\" (Rechazar misión)", + "text": "Maven el Alquimista mantiene el gesto impasible. \"Pronto esas cosas también estarán equilibradas.\"", + "options": [ + { + "name": "(Continuar)" + } + ] + } + ] + } + ] + } + ] + }, + "prologue": {}, + "epilogue": { + "text": "Al entrar en la aldea, los vecinos se acercan corriendo a agradecerte tus hazañas. (+3 de reputación en $(poi_2))", + "options": [ + { + "action": [ + { + "grantRewards": [ + { + "type": "gold", + "probability": 1, + "count": 1000, + "addMaxCount": 1000 + }, + { + "type": "card", + "probability": 1, + "count": 10, + "addMaxCount": 5, + "rarity": [ + "Rare", + "Mythic Rare" + ], + "cardTypes": [ + "Artifact" + ] + }, + { + "type": "shards", + "probability": 1, + "count": 10, + "addMaxCount": 10 + } + ], + "addMapReputation": 3, + "POIReference": "$(poi_2)" + } + ], + "name": "Nada que no pudiera manejar. (Completar misión)" + } + ] + }, + "failureDialog": { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": -2, + "POIReference": "$(poi_2)" + } + ], + "text": "Tras pensarlo, decides que las recompensas prometidas no compensan el esfuerzo de expulsar a los actuales ocupantes de la fábrica. (-2 de reputación local)", + "options": [ + { + "name": "(Misión fallida)" + } + ] + }, + "declinedDialog": { + "text": "Vuelve mañana y quizás tenga algo que sí quieras hacer.", + "options": [ + { + "name": "(Captando la indirecta, que de sutil tiene poco, te marchas.)" + } + ] + }, + "rewardDescription": "Fragmentos de maná, cartas raras y míticas", + "stages": [ + { + "id": 1, + "name": "Limpiar", + "description": "Viaja a la Fábrica de Slobad y derrota a todos los enemigos de dentro. El lugar objetivo está en el bioma de yermos.", + "mapFlag": "", + "mapFlagValue": 1, + "POITags": [ + "Slobad" + ], + "objective": "Clear", + "prologue": {}, + "epilogue": {}, + "POIToken": "" + }, + { + "id": 2, + "name": "Viajar", + "description": "Vuelve al pueblo e informa de que has limpiado $(poi_1).", + "mapFlag": "", + "mapFlagValue": 1, + "here": true, + "objective": "Travel", + "prerequisiteIDs": [ + 1 + ], + "prologue": {}, + "epilogue": {}, + "POIToken": "" + } + ], + "questSourceTags": [ + "waste_town_generic", + "waste_town_identity", + "waste_town_tribal" + ] + }, + { + "id": 26, + "isTemplate": true, + "name": "Esporas de muerte", + "description": "Derrota a Slimefoot y a sus hongos en su ciénaga y vuelve a informar.", + "offerDialog": { + "text": "¡Ah, saludos, valiente aventurero! Tengo un asunto grave que tratar contigo. Necesitamos a un aventurero audaz que se ocupe del hongo descontrolado Slimefoot.", + "options": [ + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": -1, + "POIReference": "" + } + ], + "name": "Lo siento, no tengo tiempo para esto. (Rechazar misión)", + "text": "Ya me imaginaba que no estabas a la altura del desafío; vuelve cuando lo estés. (-1 de reputación local)", + "options": [ + { + "name": "(Continuar)" + } + ] + }, + { + "name": "Cuéntame más sobre Slimefoot y qué puedo hacer para detenerlo.", + "text": "Gracias, noble aventurero. Slimefoot es una criatura de pura malevolencia. Un ser monstruoso que ha echado raíces en el corazón del traicionero pantano. Su tacto corrosivo y su aura tóxica han traído la devastación a nuestras tierras. Para derrotarlo deberás atravesar el peligroso pantano, plagado de terreno traicionero y de criaturas letales al acecho.", + "options": [ + { + "name": "Entiendo. ¿Así que quieres que viaje al pantano de Slimefoot y lo derrote?", + "text": "Slimefoot es un enemigo formidable, hábil tanto en el ataque como en la defensa. Su cuerpo segrega un limo corrosivo y sus tentáculos golpean con la rapidez del rayo. Prepárate para una batalla exigente, amigo mío. Echa mano de tus habilidades de combate, usa las pociones y las aptitudes mágicas con criterio y aprovecha cualquier debilidad que encuentres. Solo así podrás aspirar a vencer a esta vil criatura.", + "options": [ + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "26", + "POIReference": "" + } + ], + "name": "Gracias, anciano Taldor. Emprenderé esta misión de inmediato y regresaré triunfante. (Aceptar misión) (AVISO: MISIÓN DIFÍCIL)" + }, + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "POIReference": "" + } + ], + "name": "Tras pensarlo mejor, he decidido que no estoy a la altura del desafío (Rechazar misión)", + "text": "El anciano Taldor mantiene el gesto impasible. \"La juventud de hoy en día\", masculla.", + "options": [ + { + "name": "(Continuar)" + } + ] + } + ] + } + ] + } + ] + }, + "prologue": {}, + "epilogue": { + "text": "Al entrar en la aldea, los vecinos se acercan corriendo a agradecerte tus hazañas. (+3 de reputación en $(poi_2))", + "options": [ + { + "action": [ + { + "grantRewards": [ + { + "type": "shards", + "probability": 1, + "count": 10, + "addMaxCount": 20 + }, + { + "type": "gold", + "probability": 1, + "count": 1000, + "addMaxCount": 900 + }, + { + "type": "card", + "probability": 1, + "count": 10, + "addMaxCount": 10, + "subTypes": [ + "Fungus" + ] + } + ], + "addMapReputation": 3, + "POIReference": "$(poi_2)" + } + ], + "name": "Nada que no pudiera manejar. (Completar misión)" + } + ] + }, + "failureDialog": { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": -2, + "POIReference": "$(poi_2)" + } + ], + "text": "Tras pensarlo, decides que las recompensas prometidas no compensan el esfuerzo de expulsar a los actuales ocupantes del pantano. (-2 de reputación local)", + "options": [ + { + "name": "(Misión fallida)" + } + ] + }, + "declinedDialog": { + "text": "Vuelve mañana y quizás tenga algo que sí quieras hacer.", + "options": [ + { + "name": "(Captando la indirecta, que de sutil tiene poco, te marchas.)" + } + ] + }, + "rewardDescription": "Fragmentos de maná, cartas raras y míticas", + "stages": [ + { + "id": 1, + "name": "Limpiar", + "description": "Viaja a la Guarida de Slimefoot y derrótalo a él y a sus secuaces fúngicos. El lugar objetivo está en el bioma de pantano.", + "mapFlag": "", + "mapFlagValue": 1, + "POITags": [ + "Slimefoot" + ], + "objective": "Clear", + "prologue": {}, + "epilogue": {}, + "POIToken": "" + }, + { + "id": 2, + "name": "Viajar", + "description": "Vuelve al pueblo e informa de que has limpiado la Guarida de Slimefoot.", + "mapFlag": "", + "mapFlagValue": 1, + "here": true, + "objective": "Travel", + "prerequisiteIDs": [ + 1 + ], + "prologue": {}, + "epilogue": {}, + "POIToken": "" + } + ], + "questSourceTags": [ + "swamp_capital", + "swamp_town_generic", + "swamp_town_identity", + "swamp_town_tribal" + ] + }, + { + "id": 27, + "isTemplate": true, + "name": "Un asunto viscoso", + "description": "Derrota al limo madre y a las demás criaturas de las viejas alcantarillas y vuelve a informar.", + "offerDialog": { + "text": "¡Saludos, valiente aventurero! Este pueblo padece ahora mismo un problema angustioso en forma de plaga de limos. \nEl consejo del pueblo lleva tiempo buscando a alguien valiente que se ocupe de ello.\n", + "options": [ + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "POIReference": "" + } + ], + "name": "Lo siento, no tengo tiempo para esto. (Rechazar misión)", + "text": "Ya me imaginaba que no estabas a la altura del desafío; vuelve cuando lo estés.", + "options": [ + { + "name": "(Continuar)" + } + ] + }, + { + "name": "Déjame adivinar: ¿quieres que me ocupe yo de esta situación?", + "text": "El consejo del pueblo busca la ayuda de alguien diestro y valeroso como tú para adentrarse en las profundidades de la vieja alcantarilla cercana al pueblo y erradicar esta amenaza viscosa de una vez por todas.", + "options": [ + { + "name": "Entiendo. ¿Así que quieres que vaya a las viejas alcantarillas y me ocupe de los limos?", + "text": "Exacto. Tu objetivo principal es limpiar de limos la vieja alcantarilla, eliminando su presencia y garantizando la seguridad de los vecinos. Adéntrate en las profundidades de la alcantarilla, localiza el criadero principal de los limos y elimina a su líder para poner fin a la plaga. Quedas advertido, no obstante: la alcantarilla es famosa por ser traicionera y estar llena de otros peligros, como estructuras a punto de derrumbarse y gases tóxicos.", + "options": [ + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "27", + "POIReference": "" + } + ], + "name": "Dalo por hecho. Si fueras tan amable de anotar la ubicación de las viejas alcantarillas en mi mapa... (Aceptar misión) (AVISO: MISIÓN DIFÍCIL)" + }, + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "POIReference": "" + } + ], + "name": "No pienso mancharme la armadura de limo. Lo siento, tendrás que buscar a otro (Rechazar misión)", + "text": "El comerciante mantiene el gesto impasible. \"Al final todo perece.\"", + "options": [ + { + "name": "(Continuar)" + } + ] + } + ] + } + ] + } + ] + }, + "prologue": {}, + "epilogue": { + "text": "Al entrar en la aldea, los vecinos se acercan corriendo a agradecerte tus hazañas. (+3 de reputación en $(poi_2))", + "options": [ + { + "action": [ + { + "grantRewards": [ + { + "type": "shards", + "probability": 1, + "count": 10, + "addMaxCount": 20 + }, + { + "type": "gold", + "probability": 1, + "count": 500, + "addMaxCount": 500 + }, + { + "type": "card", + "probability": 1, + "count": 7, + "addMaxCount": 7, + "colors": [ + "Green", + "Blue", + "Black" + ], + "rarity": [ + "Rare", + "Mythic Rare" + ] + } + ], + "addMapReputation": 3, + "POIReference": "$(poi_2)" + } + ], + "name": "Nada que no pudiera manejar. (Completar misión)" + } + ] + }, + "failureDialog": { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": -2, + "POIReference": "$(poi_2)" + } + ], + "text": "Tras pensarlo, decides que las recompensas prometidas no compensan el esfuerzo de expulsar a los actuales ocupantes de las alcantarillas. (-2 de reputación local)", + "options": [ + { + "name": "(Misión fallida)" + } + ] + }, + "declinedDialog": { + "text": "Vuelve mañana y quizás tenga algo que sí quieras hacer.", + "options": [ + { + "name": "(Captando la indirecta, que de sutil tiene poco, te marchas.)" + } + ] + }, + "rewardDescription": "Fragmentos de maná, cartas raras y míticas", + "stages": [ + { + "id": 1, + "name": "Limpiar", + "description": "Viaja a las Viejas Alcantarillas y derrota a todos los enemigos de dentro. El lugar objetivo está en el bioma de yermos.", + "mapFlag": "", + "mapFlagValue": 1, + "POITags": [ + "SlimeCave" + ], + "objective": "Clear", + "prologue": {}, + "epilogue": {}, + "POIToken": "" + }, + { + "id": 2, + "name": "Viajar", + "description": "Vuelve al pueblo e informa de que has limpiado $(poi_1).", + "mapFlag": "", + "mapFlagValue": 1, + "here": true, + "objective": "Travel", + "prerequisiteIDs": [ + 1 + ], + "prologue": {}, + "epilogue": {}, + "POIToken": "" + } + ], + "questSourceTags": [ + "waste_town_generic", + "waste_town_identity", + "waste_town_tribal" + ] + }, + { + "id": 28, + "isTemplate": true, + "name": "Llegada a Shandalar", + "description": "Aprende sobre tu entorno.", + "offerDialog": {}, + "prologue": { + "text": "La oscuridad y el silencio te rodean. Una vaga sensación de caída se va frenando segundo a segundo.", + "options": [ + { + "name": "¿Dónde estoy? ¿Qué soy? ¿Qué está pasando? (Tutorial y misión principal)", + "text": "Un destello de luz más intenso que nada que recuerdes precede a una caída sobre un suelo de piedra. Resulta casi tan desconcertante como darte cuenta de que, en realidad, no recuerdas gran cosa de nada.", + "options": [ + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "activateMapObject": 78, + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "exploreShand1", + "val": 1 + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "53", + "POIReference": "" + } + ], + "name": "Hablemos con el mago de allí.", + "text": "Un leve crepitar dirige tu mirada hacia la luz temblorosa de una hoguera dentro de la cueva que ahora ocupas. Una figura encapuchada aguarda junto al fuego, de cara a ti, como si esperara tu llegada." + } + ] + }, + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "shandWalkers1", + "val": 1 + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "POIReference": "" + } + ], + "name": "Quiero encontrar a los planeswalkers (Próxima versión)", + "text": "Bueno, gritar \"Planeswalkers, ¿dónde estáis?\" a los yermos no servirá de mucho. Viaja al asentamiento más cercano y pregunta por ahí para conseguir información.", + "options": [ + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "29", + "POIReference": "" + } + ], + "name": "(Continuar)", + "text": "Nueva misión: Una charla con los lugareños - Objetivo: Viaja a cualquier pueblo de los yermos.", + "options": [ + { + "name": "(Descartar)" + } + ] + } + ], + "isDisabled": true + }, + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "shandRep1", + "val": 1 + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "POIReference": "" + } + ], + "name": "Quiero hacerme un nombre (Próxima versión)", + "text": "Pues vayamos a impresionar a alguien. Pero primero necesitas hechizos que impresionen. Amplía tu colección para comenzar tu misión.", + "options": [ + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "31", + "POIReference": "" + } + ], + "name": "(Descartar)" + } + ], + "isDisabled": true + }, + { + "condition": [ + { + "checkCharacterFlag": "newGamePlus" + } + ], + "name": "Ya he estado aquí y ya lo he hecho. Llévame con los enemigos. (Nueva partida+)", + "text": "Vale, saltándonos todo el trabajo que alguien se tomó escribiendo diálogos, el portal se abre y puedes marcharte.", + "options": [ + { + "action": [ + { + "removeItem": "", + "addItem": "Colorless rune", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setCharacterFlag": { + "key": "noQuest", + "val": "1" + }, + "issueQuest": "", + "POIReference": "" + } + ], + "name": "(Continuar)" + } + ] + } + ] + }, + "epilogue": {}, + "failureDialog": {}, + "declinedDialog": { + "text": "Vuelve mañana y quizás tenga algo que sí quieras hacer.", + "options": [ + { + "name": "(Captando la indirecta, que de sutil tiene poco, te marchas.)" + } + ] + }, + "storyQuest": true + }, + { + "id": 29, + "isTemplate": true, + "name": "Una charla con los lugareños", + "description": "Encuentra a alguien que sepa más sobre los planeswalkers desaparecidos.", + "offerDialog": {}, + "prologue": {}, + "epilogue": { + "text": "Los lugareños reciben tus preguntas con algo menos de desdén que cuando llegaste por primera vez a preguntar sin apenas monedas que acompañaran las preguntas, pero no pueden dar una información que no tienen.", + "options": [ + { + "name": "(Continuar)", + "text": "Con el tiempo, sin embargo, tu insistencia y tus contactos locales dan fruto. A un mercader que hace noche en la posada del lugar lo dirigen hacia ti para que te cuente una historia.", + "options": [ + { + "name": "(Escuchar su historia)", + "text": "\"Como decía en la taberna, mi oficio es viajar. De oeste a este y vuelta. Pero los caminos se han puesto feos en mi ruta habitual, así que últimamente he estado probando sendas nuevas. En el último viaje hice un tiempo récord, y no pienso repetirlo.\"", + "options": [ + { + "name": "\"¿Qué ocurrió?\"", + "text": "\"Fue cerca del ocaso del tercer día cuando vi una aldea algo más grande que esta. El cielo olía a lluvia, así que la idea de un techo y una cama me pareció estupenda. Pero al principio no se veía ni un alma.\"", + "options": [ + { + "name": "\"Continúa...\"", + "text": "\"Todas las puertas estaban bien cerradas. Un mal presentimiento me subió por la espalda cuando caí en la cuenta del silencio que había, justo antes de oír chapoteos. Me asomé por la esquina y me encontré a un tritón agitando los brazos y lanzando algún hechizo.\"", + "options": [ + { + "name": "\"¿Qué hechizo era?\"", + "text": "\"No soy experto en las magias de las islas, así que no lo reconocí hasta que se abrió un agujero delante de él y lo cruzó a nado... ¿A saltos...? Lo cruzó. En fin, huelga decir que me quedé de piedra.\"", + "options": [ + { + "name": "\"¿Un portal, entonces?\"", + "text": "\"Eso era, o eso creo. La gente conjura otras criaturas a todas horas, pero nunca nada de por aquí. Y nadie se conjura a sí mismo a ninguna parte. Pero, como mercader, vi montañas de oro en las posibilidades. Así que esperé a que nuestro hombre pez volviera.\"", + "options": [ + { + "name": "\"¿Y volvió?\"", + "text": "\"No, ahí es donde todo se torció. Unos minutos después se abrió otro agujero y de él salieron demonios a raudales. Salí pitando hacia mi carromato y no aflojé hasta llegar al almacén la noche siguiente. No pienso volver a tomar esa ruta.\"", + "options": [ + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "32", + "POIReference": "$(poi_2)" + } + ], + "name": "(Continuar)", + "text": "Los portales no son exactamente lo que buscas, pero los magos que viajan por el éter sí. El mercader marca tu mapa y vuelve a su bebida.", + "options": [ + { + "name": "(Continuar)", + "text": "[Nueva misión: Un portal a ninguna parte - Objetivo: Viaja al pueblo fantasma.]", + "options": [ + { + "name": "(Descartar)" + } + ] + } + ] + } + ] + } + ] + } + ] + }, + { + "name": "\"Ve al grano de una vez.\"", + "text": "\"Vale. Él y su agujero desaparecieron, luego apareció otro y salieron bichos, y eché a correr. ¿Suficientemente simple?\"", + "options": [ + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "32", + "addMapReputation": -1, + "POIReference": "$(poi_2)" + } + ], + "name": "\"¿Y dónde ocurrió esto?\"", + "text": "Marca tu mapa sin decir una palabra más y vuelve a su bebida. (-1 de reputación local)", + "options": [ + { + "name": "(Continuar)", + "text": "[Nueva misión: Un portal a ninguna parte - Objetivo: Viaja al pueblo fantasma.]", + "options": [ + { + "name": "(Descartar)" + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, + "failureDialog": {}, + "declinedDialog": { + "text": "Vuelve mañana y quizás tenga algo que sí quieras hacer.", + "options": [ + { + "name": "(Captando la indirecta, que de sutil tiene poco, te marchas.)" + } + ] + }, + "stages": [ + { + "id": 1, + "name": "Encuentra un pueblo", + "description": "Viaja a cualquier pueblo de los yermos.", + "anyPOI": true, + "mapFlag": "", + "mapFlagValue": 1, + "POITags": [ + "BiomeColorless", + "Town" + ], + "objective": "Travel", + "prologue": {}, + "epilogue": {}, + "POIToken": "" + }, + { + "id": 2, + "name": "No seas un desconocido", + "description": "Sube tu reputación a +5 como mínimo en cualquier pueblo de los yermos.", + "mapFlag": "", + "mapFlagValue": 1, + "count3": 5, + "POITags": [ + "BiomeColorless", + "Town" + ], + "objective": "HaveReputation", + "prerequisiteIDs": [ + 1 + ], + "prologue": { + "text": "Al entrar en este pequeño pueblo, sus habitantes apenas reparan en ti mientras siguen con sus quehaceres. Por lo visto los forasteros son algo habitual por aquí, y no especialmente llamativo salvo que vengas a gastar tu oro.", + "options": [ + { + "name": "(Continuar)", + "text": "Un centauro sale del pueblo al trote, añadiendo una carta más a la saca de correo que lleva al hombro. El mensajero esquiva con soltura a un ogro que iza bloques de piedra hasta la segunda planta de un edificio en construcción.", + "options": [ + { + "name": "(Continuar)", + "text": "Los carteles clavados en los edificios más pequeños de la calle polvorienta anuncian tiendas de hechizos especializadas, magos de cultivos que se alquilan, el local recién clausurado de un especialista en adivinación y una casa gremial de exploradores de nueva construcción. Los buhoneros que no pueden permitirse una tienda fija compran y venden comida y géneros corrientes desde sus carros.", + "options": [ + { + "name": "(Continuar)", + "text": "Todo el mundo alrededor tiene algo que hacer o algo que trocar, pero nadie parece estar vendiendo información, y mucho menos regalándola.", + "options": [ + { + "name": "(Continuar)", + "text": "Quizá ganarte la confianza de la comunidad te reporte algo de información. (Nota: la reputación se gana completando con éxito las misiones que se ofrecen en el ayuntamiento)", + "options": [ + { + "name": "(Continuar)", + "text": "[Nuevo objetivo: Alcanza un total de +5 de reputación en cualquier pueblo de los yermos.]", + "options": [ + { + "name": "(Marcharse)" + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, + "epilogue": {}, + "POIToken": "" + } + ], + "storyQuest": true + }, + { + "id": 30, + "isTemplate": true, + "name": "¿Dónde estoy?", + "description": "Orientate en el mundo que te rodea.", + "offerDialog": {}, + "prologue": {}, + "epilogue": { + "text": "Como en casi todos los pueblos pequeños, hay más tiendas y puestos de mercado que casas, y buena parte de sus ocupantes llega cada mañana desde las afueras.", + "options": [ + { + "name": "(Continuar)", + "text": "Muchos comerciantes pregonan sus mercancías, y los más relevantes para un mago tienen delante de sus tiendas carteles vistosos (a veces bastante toscos) que anuncian sus especialidades.", + "options": [ + { + "name": "(Continuar)", + "text": "De la posada sale un bullicio justo lo bastante alto como para saber que el negocio marcha bien. Recuerdas lo que te contaron sobre las Monedas de Desafío y te planteas darles uso allí.", + "options": [ + { + "name": "(Continuar)", + "text": "Lo más intrigante de todo, sin embargo, es quizá el ayuntamiento, con un tablón de anuncios en la puerta que ofrece trabajo para aventureros. ¿Qué mejor forma de ganar unas monedas mientras exploras?", + "options": [ + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "43", + "POIReference": "" + } + ], + "name": "(Continuar)" + } + ] + } + ] + } + ] + } + ] + }, + "failureDialog": {}, + "declinedDialog": { + "text": "Vuelve mañana y quizás tenga algo que sí quieras hacer.", + "options": [ + { + "name": "(Captando la indirecta, que de sutil tiene poco, te marchas.)" + } + ] + }, + "stages": [ + { + "id": 1, + "name": "Viaja a un pueblo", + "description": "Encuentra un asentamiento amistoso para que te presenten los servicios que ofrece.", + "anyPOI": true, + "mapFlag": "", + "mapFlagValue": 1, + "POITags": [ + "Town" + ], + "objective": "Travel", + "prologue": { + "text": "Todos los lugares importantes de Shandalar se pueden dividir en dos categorías: pueblos y mazmorras.", + "options": [ + { + "name": "(Continuar)", + "text": "Ahora debería aparecer una flecha de navegación alrededor de tu personaje. Síguela hasta un pueblo cercano. Intenta evitar a los enemigos que surjan por el camino.", + "options": [ + { + "name": "(Continuar)", + "text": "Consejo: sigue un camino. Todos los caminos llevan a un pueblo. Además, por los caminos te mueves más rápido y aparecen menos enemigos.", + "options": [ + { + "name": "(Continuar)" + } + ] + } + ] + } + ] + }, + "epilogue": {}, + "POIToken": "" + }, + { + "id": 2, + "name": "Sal del pueblo", + "description": "Vuelve a salir a los parajes salvajes cuando estés listo para continuar.", + "anyPOI": true, + "POITags": [ + "Town" + ], + "objective": "Leave", + "prerequisiteIDs": [ + 1 + ], + "prologue": { + "text": "Casi todos los pueblos de una misma región de Shandalar se parecen mucho entre sí y ofrecen los mismos servicios básicos.", + "options": [ + { + "name": "(Continuar)", + "text": "En la posada hay algunos eventos especiales. También puedes vender allí las cartas que te sobren o comprar salud adicional temporal.\n\nEl símbolo '?' indica una plaza del pueblo o un tablón de trabajos donde puedes conseguir misiones secundarias.\n\nTodos los demás edificios con cartel en la puerta son tiendas, y la mayoría vende cartas.\n\nPara salir del pueblo, camina de vuelta hacia el borde de la pantalla, justo por debajo de tu posición actual.", + "options": [ + { + "name": "(Continuar)", + "text": "Entrar en un pueblo amistoso también restaura gratis los puntos de vida que te falten.\n\nExplora el pueblo si quieres, y sal cuando estés listo para continuar.", + "options": [ + { + "name": "(Continuar)" + } + ] + } + ] + } + ] + }, + "epilogue": {}, + "POIToken": "" + }, + { + "id": 3, + "name": "Encuentra una mazmorra", + "description": "Encuentra cualquier mazmorra y entra en ella.", + "anyPOI": true, + "mapFlag": "", + "mapFlagValue": 1, + "POITags": [ + "Dungeon" + ], + "objective": "Travel", + "prerequisiteIDs": [ + 2 + ], + "prologue": { + "text": "Tu flecha de navegación debería dirigirte ahora a la mazmorra más cercana. Muchas misiones te enviarán a mazmorras, pero también eres libre de entrar en ellas sin misión alguna. Sigue la flecha y viaja hasta una mazmorra.", + "options": [ + { + "name": "(Continuar)" + } + ] + }, + "epilogue": {}, + "POIToken": "" + }, + { + "id": 4, + "name": "Gana un duelo", + "description": "Batirte en duelo y derrotar a cualquier enemigo.", + "anyPOI": true, + "mixedEnemies": true, + "worldMapOK": true, + "objective": "Defeat", + "enemyExcludeTags": [ + "Boss", + "Leader", + "Large" + ], + "prerequisiteIDs": [ + 3 + ], + "prologue": { + "text": "Muchas de las misiones que emprendas en tu aventura te enviarán a una o varias mazmorras como esta. Las mazmorras están llenas de enemigos, pero también de tesoros como oro, fragmentos de maná y cartas.", + "options": [ + { + "name": "(Continuar)", + "text": "Tu siguiente objetivo es derrotar en duelo a un enemigo cualquiera. Puedes encontrarlos en una mazmorra como esta o deambulando por el mapa del mundo. Para empezar un duelo, basta con que camines hacia el enemigo.", + "options": [ + { + "name": "(Continuar)", + "text": "Si el enemigo te derrota, no pasa nada. Si (cuando) ocurra, perderás parte de tu salud inicial y un porcentaje de tu oro, pero habrás aprendido qué esperar de ese enemigo en el futuro.", + "options": [ + { + "name": "(Continuar)", + "text": "A diferencia de lo que ocurre en el mapa del mundo, un enemigo que te derrote en una mazmorra permanecerá en el mapa; puedes intentar batirte de nuevo con él o huir y buscar otro rival. Si quieres o necesitas curarte, vuelve al pueblo.", + "options": [ + { + "name": "(Continuar)", + "text": "Algunas misiones, como esta, tienen varios objetivos que pueden cumplirse a la vez. Tu otro objetivo actual es encontrar una cueva en el mapa del mundo y entrar en ella. Un enemigo derrotado en una cueva o de camino a ella contará como el enemigo a derrotar de tu primer objetivo, así que puedes hacer estas cosas en el orden que quieras.", + "options": [ + { + "name": "(Continuar)" + } + ] + } + ] + } + ] + } + ] + } + ] + }, + "epilogue": { + "text": "Ganar un duelo te otorga recompensas, normalmente una combinación de oro y cartas. Algunos enemigos sueltan un surtido más amplio de cartas para dar variedad, pero otros dan concretamente cartas de su propio mazo. Si aún te falta visitar una cueva, hazlo ahora. Si no, es hora de volver al pueblo.", + "options": [ + { + "name": "(Continuar)" + } + ] + }, + "POIToken": "" + }, + { + "id": 5, + "name": "Encuentra una cueva", + "description": "Encuentra cualquier cueva y entra en ella.", + "anyPOI": true, + "mapFlag": "", + "mapFlagValue": 1, + "POITags": [ + "Cave" + ], + "objective": "Travel", + "prerequisiteIDs": [ + 3 + ], + "prologue": {}, + "epilogue": { + "text": "Una cueva es funcionalmente idéntica a una mazmorra, pero puede clasificarse aparte a efectos de misiones: una cueva no habría completado tu objetivo de encontrar una mazmorra, ni esa mazmorra contaría para este.", + "options": [ + { + "name": "(Continuar)", + "text": "Si aún no has derrotado a ningún enemigo en duelo, puedes buscar pelea aquí con alguno para conseguirlo. Si ya lo has hecho, puedes volver al pueblo.", + "options": [ + { + "name": "(Continuar)" + } + ] + } + ] + }, + "POIToken": "" + }, + { + "id": 5, + "name": "Ve a un pueblo", + "description": "Ve a uno de los asentamientos cercanos.", + "anyPOI": true, + "mapFlag": "", + "mapFlagValue": 1, + "POITags": [ + "Town" + ], + "objective": "Travel", + "prerequisiteIDs": [ + 4, + 5 + ], + "prologue": { + "text": "No es mala idea pasarse de vez en cuando por el pueblo para vender cartas sobrantes, mirar las tiendas o coger misiones nuevas.\n\nCada pueblo tiene su propio surtido de tiendas y, por tanto, su propia colección única de cartas a la venta.", + "options": [ + { + "name": "(Continuar)" + } + ] + }, + "epilogue": {}, + "POIToken": "" + } + ], + "storyQuest": true, + "autoTrack": true + }, + { + "id": 31, + "isTemplate": true, + "name": "Formar una colección", + "offerDialog": {}, + "prologue": {}, + "epilogue": {}, + "failureDialog": {}, + "declinedDialog": { + "text": "Vuelve mañana y quizás tenga algo que sí quieras hacer.", + "options": [ + { + "name": "(Captando la indirecta, que de sutil tiene poco, te marchas.)" + } + ] + }, + "storyQuest": true + }, + { + "id": 32, + "isTemplate": true, + "name": "Un portal a ninguna parte", + "description": "Investiga el aviso sobre portales que se abren en un pueblo aparentemente abandonado.", + "offerDialog": {}, + "prologue": {}, + "epilogue": {}, + "failureDialog": {}, + "declinedDialog": { + "text": "Vuelve mañana y quizás tenga algo que sí quieras hacer.", + "options": [ + { + "name": "(Captando la indirecta, que de sutil tiene poco, te marchas.)" + } + ] + }, + "stages": [ + { + "id": 1, + "name": "Viajar", + "description": "Viaja al pueblo abandonado.", + "mapFlag": "", + "mapFlagValue": 1, + "POITags": [ + "Quest_APortalToNowhere" + ], + "objective": "Travel", + "prologue": {}, + "epilogue": {}, + "POIToken": "", + "allowInactivePOI": true + }, + { + "id": 2, + "name": "Investigar", + "description": "Busca pistas sobre los portales de la historia del mercader.", + "mapFlag": "foundClues", + "mapFlagValue": 2, + "objective": "MapFlag", + "prerequisiteIDs": [ + 1 + ], + "prologue": {}, + "epilogue": {}, + "POIToken": "$(poi_1)" + } + ], + "storyQuest": true + }, + { + "id": 33, + "isTemplate": true, + "name": "Bienvenido a la jungla", + "description": "Busca un artefacto poderoso.", + "offerDialog": {}, + "prologue": {}, + "epilogue": {}, + "failureDialog": {}, + "declinedDialog": { + "text": "Vuelve mañana y quizás tenga algo que sí quieras hacer.", + "options": [ + { + "name": "(Captando la indirecta, que de sutil tiene poco, te marchas.)" + } + ] + }, + "stages": [ + { + "id": 1, + "name": "Viajar", + "description": "Viaja al pueblo abandonado.", + "mapFlag": "", + "mapFlagValue": 1, + "objective": "Travel", + "prologue": {}, + "epilogue": {}, + "POIToken": "" + }, + { + "id": 2, + "name": "Investigar", + "description": "Busca pistas sobre los portales de la historia del mercader.", + "mapFlag": "foundClues", + "mapFlagValue": 2, + "objective": "MapFlag", + "prerequisiteIDs": [ + 1 + ], + "prologue": {}, + "epilogue": {}, + "POIToken": "$(poi_1)" + } + ], + "storyQuest": true + }, + { + "id": 34, + "isTemplate": true, + "name": "Una sana dosis de Colmen-escepticismo", + "description": "Encuentra la mayor colmena de fragmentados de Shandalar.", + "offerDialog": {}, + "prologue": { + "text": "La misión 'Una sana dosis de Colmen-escepticismo' es un marcador de posición. Con el tiempo se sustituirá por una misión real para explorar la Colmena. Por ahora, simplemente sirve como indicaciones para llegar hasta allí si así lo deseas. Esta misión provisional no otorga recompensa alguna.", + "options": [ + { + "name": "(Descartar)" + } + ] + }, + "epilogue": {}, + "failureDialog": {}, + "declinedDialog": { + "text": "Vuelve mañana y quizás tenga algo que sí quieras hacer.", + "options": [ + { + "name": "(Captando la indirecta, que de sutil tiene poco, te marchas.)" + } + ] + }, + "stages": [ + { + "id": 1, + "name": "Viajar", + "description": "Viaja a la Colmena.", + "mapFlag": "", + "mapFlagValue": 1, + "POITags": [ + "Snow" + ], + "objective": "Travel", + "prologue": {}, + "epilogue": {}, + "POIToken": "" + } + ], + "questSourceTags": [ + "island_capital" + ] + }, + { + "id": 35, + "isTemplate": true, + "name": "La caída de Kiora", + "description": "Derrota a Kiora y a sus secuaces.", + "offerDialog": { + "text": "Anciano de la aldea: (ceño fruncido, tono preocupado) Ah, aventurero, ¿has oído hablar de la amenaza que se cierne sobre nosotros? Kiora, la maga del mar, agita las profundidades con sus inquietas criaturas marinas. Nos enfrentamos a un peligro terrible.", + "options": [ + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "POIReference": "" + } + ], + "name": "Lo siento, no tengo tiempo para esto. (Rechazar misión)", + "text": "Ya me imaginaba que no estabas a la altura del desafío; vuelve cuando lo estés.", + "options": [ + { + "name": "(Continuar)" + } + ] + }, + { + "name": "¿Kiora? ¿Qué se trae entre manos ahora, anciano?", + "text": "(Hace una mueca) Pretende invocar a antiguos titanes marinos que duermen bajo las olas, criaturas capaces de sepultar nuestras tierras en una inundación cataclísmica. Es una amenaza que pone en peligro la existencia misma de Shandalar.", + "options": [ + { + "name": "Eso suena a catástrofe anunciada. ¿Qué podemos hacer?", + "text": "(Asiente) Debemos actuar con rapidez. Busca a Kiora, razona con ella si puedes, pero prepárate para pelear. Nuestra supervivencia depende de frustrar sus peligrosas ambiciones. Recuerda: el mar es un aliado poderoso y un enemigo formidable.", + "options": [ + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "35", + "POIReference": "" + } + ], + "name": "Haré cuanto pueda por detenerla, anciano. La seguridad de Shandalar es mi prioridad.", + "text": "(Sonrisa de gratitud) Gracias, valiente. Ponemos nuestras esperanzas en tus manos. Hay que convencer a Kiora de que abandone su camino temerario, o nos aguarda una perdición acuosa." + }, + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "POIReference": "" + } + ], + "name": "No creo que esta misión sea para mí. (Rechazar misión)", + "text": "Consternado, el anciano niega con la cabeza con desaliento: \"La juventud de hoy en día...\"", + "options": [ + { + "name": "(Continuar)" + } + ] + } + ] + } + ] + } + ] + }, + "prologue": {}, + "epilogue": { + "text": "Al entrar en la aldea, los vecinos se acercan corriendo a agradecerte que hayas derrotado a Kiora. (+3 de reputación en $(poi_2))", + "options": [ + { + "action": [ + { + "grantRewards": [ + { + "type": "shards", + "probability": 1, + "count": 10, + "addMaxCount": 20 + }, + { + "type": "gold", + "probability": 1, + "count": 500, + "addMaxCount": 500 + }, + { + "type": "card", + "probability": 1, + "count": 7, + "addMaxCount": 7, + "colors": [ + "Green", + "Blue", + "Black" + ], + "rarity": [ + "Rare", + "Mythic Rare" + ] + } + ], + "addMapReputation": 3, + "POIReference": "$(poi_2)" + } + ], + "name": "Nada que no pudiera manejar. (Completar misión)" + } + ] + }, + "failureDialog": { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": -2, + "POIReference": "$(poi_2)" + } + ], + "text": "Tras pensarlo, decides que las recompensas prometidas no compensan el esfuerzo de derrotar a Kiora. (-2 de reputación local)", + "options": [ + { + "name": "(Misión fallida)" + } + ] + }, + "declinedDialog": { + "text": "Vuelve mañana y quizás tenga algo que sí quieras hacer.", + "options": [ + { + "name": "(Captando la indirecta, que de sutil tiene poco, te marchas.)" + } + ] + }, + "reward": {}, + "rewardDescription": "Fragmentos de maná, cartas raras y míticas", + "stages": [ + { + "id": 1, + "name": "Limpiar", + "description": "Encuentra el Escondite de Kiora y derrota a todos los enemigos presentes.", + "mapFlag": "", + "mapFlagValue": 1, + "POITags": [ + "Kiora" + ], + "objective": "Clear", + "prologue": {}, + "epilogue": {}, + "failureDialog": {}, + "POIToken": "" + }, + { + "id": 2, + "name": "Viajar", + "description": "Vuelve al pueblo e informa de que has limpiado el Escondite de Kiora.", + "mapFlag": "", + "mapFlagValue": 1, + "here": true, + "objective": "Travel", + "prerequisiteIDs": [ + 1 + ], + "prologue": {}, + "epilogue": {}, + "failureDialog": {}, + "POIToken": "" + } + ], + "questSourceTags": [ + "island_capital", + "island_town_generic", + "island_town_identity", + "island_town_tribal" + ] + }, + { + "id": 36, + "isTemplate": true, + "name": "La caída de Teferi", + "description": "Encuentra y derrota a Teferi.", + "offerDialog": { + "text": "Erudito de la aldea: (expresión preocupada, tono apresurado) Aventurero, tenemos entre manos un asunto grave, y tiene que ver con Teferi, el mago temporal. Sus actos amenazan el tejido mismo del tiempo en Shandalar.", + "options": [ + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "POIReference": "" + } + ], + "name": "Lo siento, no tengo tiempo para esto. (Rechazar misión)", + "text": "Ya me imaginaba que no estabas a la altura del desafío; vuelve cuando lo estés.", + "options": [ + { + "name": "(Continuar)" + } + ] + }, + { + "name": "¿Teferi? ¿Qué está haciendo para causar tanta alarma?", + "text": "(Frunciendo el ceño) Los enredos de Teferi con la magia temporal han creado anomalías por todo Shandalar. Pasado, presente y futuro se están entrelazando, lo que provoca caos e imprevisibilidad. Es una situación peligrosa.", + "options": [ + { + "name": "Eso suena a problema serio. ¿Cómo podemos resolverlo?", + "text": "(Asiente) Debemos enfrentarnos a Teferi, pero la diplomacia ha de ser nuestro primer recurso. Es un mago poderoso, y si se niega a cooperar quizá tengamos que recurrir a medidas más contundentes para restaurar la estabilidad temporal.", + "options": [ + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "36", + "POIReference": "" + } + ], + "name": "Haré lo que pueda por razonar con él, erudito. Hay que proteger la línea temporal de Shandalar. (Aceptar misión)", + "text": "(Asentimiento de agradecimiento) Tu valor es encomiable. Recuerda: la magia temporal es delicada y peligrosa. Acércate a Teferi con cautela, pero sé firme en tu misión de salvar a Shandalar de un desastre temporal." + }, + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "POIReference": "" + } + ], + "name": "No creo que esta misión sea para mí. (Rechazar misión)", + "text": "El erudito mantiene el gesto impasible. \"Pronto todo quedará en nada.\"", + "options": [ + { + "name": "(Continuar)" + } + ] + } + ] + } + ] + } + ] + }, + "prologue": {}, + "epilogue": { + "text": "Al entrar en la aldea, los vecinos se acercan corriendo a agradecerte tus hazañas. (+3 de reputación en $(poi_2))", + "options": [ + { + "action": [ + { + "grantRewards": [ + { + "type": "shards", + "probability": 1, + "count": 10, + "addMaxCount": 20 + }, + { + "type": "gold", + "probability": 1, + "count": 500, + "addMaxCount": 500 + }, + { + "type": "card", + "probability": 1, + "count": 7, + "addMaxCount": 7, + "colors": [ + "Green", + "Blue", + "Black" + ], + "rarity": [ + "Rare", + "Mythic Rare" + ] + } + ], + "addMapReputation": 3, + "POIReference": "$(poi_2)" + } + ], + "name": "Nada que no pudiera manejar. (Completar misión)" + } + ] + }, + "failureDialog": { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": -2, + "POIReference": "$(poi_2)" + } + ], + "text": "Tras pensarlo, decides que las recompensas prometidas no compensan el esfuerzo de derrotar a Teferi. (-2 de reputación local)", + "options": [ + { + "name": "(Misión fallida)" + } + ] + }, + "declinedDialog": { + "text": "Vuelve mañana y quizás tenga algo que sí quieras hacer.", + "options": [ + { + "name": "(Captando la indirecta, que de sutil tiene poco, te marchas.)" + } + ] + }, + "reward": {}, + "rewardDescription": "Fragmentos de maná, cartas raras y míticas", + "stages": [ + { + "id": 1, + "name": "Limpiar", + "description": "Encuentra el Escondite de Teferi y derrota a todos los enemigos presentes.", + "mapFlag": "", + "mapFlagValue": 1, + "POITags": [ + "Teferi" + ], + "objective": "Clear", + "prologue": {}, + "epilogue": {}, + "failureDialog": {}, + "POIToken": "" + }, + { + "id": 2, + "name": "Viajar", + "description": "Vuelve al pueblo e informa de que has limpiado $(poi_1).", + "mapFlag": "", + "mapFlagValue": 1, + "here": true, + "objective": "Travel", + "prerequisiteIDs": [ + 1 + ], + "prologue": {}, + "epilogue": {}, + "failureDialog": {}, + "POIToken": "" + } + ], + "questSourceTags": [ + "island_capital", + "island_town_generic", + "island_town_identity", + "island_town_tribal" + ] + }, + { + "id": 37, + "isTemplate": true, + "name": "La súplica del borracho", + "description": "Enfréntate a los pirexianos", + "offerDialog": { + "text": "¡Eh, colega! ¿Has visto...hip... esas monstruosidades de metal, los pirexianos? Sí, no traman nada bueno, te lo digo yo. ¡Los vi, vaya que sí!", + "options": [ + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "POIReference": "" + } + ], + "name": "Lo siento, no tengo tiempo para esto. (Rechazar misión)", + "text": "Ya me imaginaba que no estabas a la altura del desafío; vuelve cuando lo estés.", + "options": [ + { + "name": "(Continuar)" + } + ] + }, + { + "name": "¿Pirexianos? ¿De qué hablas, Tim el Piripi?", + "text": "¡Esos...hip... bichos raros de metal! No son de por aquí, te lo juro. Los vi con mis propios ojos. ¡Tienen esas... cosas mecánicas retorcidas! ¡Andan tramando algo malo, seguro!", + "options": [ + { + "name": "Llevas unas cuantas copas, Tim. ¿Seguro que no te lo estás imaginando? Hace miles de años que no se ve un pirexiano por estos lares.", + "text": "¡Tonterías! Mis ojos no mienten, amigo. Esos pirexianos son un problema de verdad, te lo digo yo. Tienes que ir. Compruébalo tú mismo. ¡Échalos de Shandalar!", + "options": [ + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "37", + "POIReference": "" + } + ], + "name": "Está bien, Tim, lo investigaré. Pero antes quizá deberías dejar la cerveza una temporada.", + "text": "Sí, sí, puede que tengas razón. ¡Pero no te olvides de esos pirexianos! ¡Shandalar te necesita, y el viejo Tim el Piripi también!" + }, + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "POIReference": "" + } + ], + "name": "Lo siento, no tengo tiempo para esto (Rechazar misión)", + "text": "Tim el Piripi te lanza una mirada taciturna y luego se pone a beber más mientras se aleja de ti dando tumbos, profundamente decepcionado.", + "options": [ + { + "name": "(Continuar)" + } + ] + } + ] + } + ] + } + ] + }, + "prologue": {}, + "epilogue": { + "text": "Al volver a $(poi_2), nadie parece impresionado salvo Tim el Piripi, que te da una palmada en la espalda. \"Esos bichos de metal...hip... ¡Te los quitaste de encima, vaya que sí!\" Y luego se aleja tambaleándose, feliz. (+3 de reputación en $(poi_2))", + "options": [ + { + "action": [ + { + "grantRewards": [ + { + "type": "shards", + "probability": 1, + "count": 10, + "addMaxCount": 20 + }, + { + "type": "gold", + "probability": 1, + "count": 500, + "addMaxCount": 500 + }, + { + "type": "card", + "probability": 1, + "count": 7, + "addMaxCount": 7, + "colors": [ + "Green", + "Blue", + "Black" + ], + "rarity": [ + "Rare", + "Mythic Rare" + ] + } + ], + "addMapReputation": 3, + "POIReference": "$(poi_2)" + } + ], + "name": "Te despides de Tim el Piripi con la mano (Completar misión)" + } + ] + }, + "failureDialog": { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": -2, + "POIReference": "$(poi_2)" + } + ], + "text": "Tras pensarlo, decides que las recompensas prometidas no compensan el esfuerzo de lidiar con los pirexianos. (-2 de reputación en $(poi_2))", + "options": [ + { + "name": "(Misión fallida)" + } + ] + }, + "declinedDialog": { + "text": "Vuelve mañana y quizás tenga algo que sí quieras hacer.", + "options": [ + { + "name": "(Captando la indirecta, que de sutil tiene poco, te marchas.)" + } + ] + }, + "reward": {}, + "rewardDescription": "Fragmentos de maná, cartas raras y míticas", + "stages": [ + { + "id": 1, + "name": "Limpiar", + "description": "Encuentra el campamento pirexiano y derrota a todos los enemigos presentes.", + "mapFlag": "", + "mapFlagValue": 1, + "POITags": [ + "Phyrexian" + ], + "objective": "Clear", + "prologue": {}, + "epilogue": {}, + "failureDialog": {}, + "POIToken": "" + }, + { + "id": 2, + "name": "Viajar", + "description": "Vuelve al pueblo e informa de que has limpiado $(poi_1).", + "mapFlag": "", + "mapFlagValue": 1, + "here": true, + "objective": "Travel", + "prologue": {}, + "epilogue": {}, + "failureDialog": {}, + "POIToken": "" + } + ], + "questSourceTags": [ + "island_capital", + "mountain_capital", + "forest_capital", + "plains_capital", + "swamp_capital" + ] + }, + { + "id": 38, + "isTemplate": true, + "name": "Invasión de trasgos", + "description": "Detén la invasión de trasgos.", + "offerDialog": { + "text": "Desde algún punto cercano a la puerta por la que entraste en $(poi_3), una campana repica frenéticamente.", + "options": [ + { + "name": "Volver a ver a qué viene tanto ruido.", + "text": "\"¡¡¡TRASGOS!!!\" exclama un montaraz de aspecto demacrado mientras da la alarma. \"¡Vienen trasgos, hordas enteras! ¡¡¡A las armas!!!\"", + "options": [ + { + "action": [ + { + "addMapReputation": -1, + "POIReference": "$(poi_3)" + } + ], + "name": "Esto no es problema tuyo, déjaselo a la guardia del pueblo. (Rechazar misión, -1 de reputación local)" + }, + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "38", + "POIReference": "" + } + ], + "name": "Comprometerte a ayudar a defender el pueblo (Aceptar misión)" + } + ] + } + ] + }, + "prologue": {}, + "epilogue": { + "text": "Detenidos los ataques de los trasgos, la gente de $(poi_3) te colma de agradecimientos y de unas cuantas monedas también. (+2 de reputación local, +500 de oro)", + "options": [ + { + "action": [ + { + "addGold": 500, + "addMapReputation": 2, + "POIReference": "$(poi_3)" + } + ], + "name": "(Misión completada)" + } + ] + }, + "failureDialog": { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": -2, + "POIReference": "$(poi_3)" + } + ], + "text": "El día, y buena parte de $(poi_3), pertenece a la horda de trasgos. (-2 de reputación local)", + "options": [ + { + "name": "(Misión fallida)" + } + ] + }, + "declinedDialog": { + "text": "Vuelve mañana y quizás tenga algo que sí quieras hacer.", + "options": [ + { + "name": "(Captando la indirecta, que de sutil tiene poco, te marchas.)" + } + ] + }, + "rewardDescription": "Oro y reputación", + "stages": [ + { + "id": 1, + "name": "Combate a la horda de trasgos", + "description": "Están apareciendo trasgos por todas partes. Gana al menos tres duelos contra ellos.", + "mapFlag": "", + "mapFlagValue": 1, + "count3": 3, + "mixedEnemies": true, + "worldMapOK": true, + "objective": "Defeat", + "enemyTags": [ + "Goblin", + "Minion" + ], + "enemyExcludeTags": [ + "Leader", + "Boss" + ], + "prologue": {}, + "epilogue": { + "text": "Los trasgos han menguado mucho en número, pero los más valientes siguen presionando el ataque sobre $(poi_3). Derrota a uno de sus líderes para poner fin a todo esto.", + "options": [ + { + "name": "(Continuar)" + } + ] + }, + "POIToken": "" + }, + { + "id": 2, + "name": "Derrota a un $(enemy_2)", + "description": "Con las filas pielverdes ya diezmadas, derrotar a uno de sus líderes debería quebrar la voluntad de lucha del resto de la horda.", + "mapFlag": "", + "mapFlagValue": 1, + "count3": 1, + "worldMapOK": true, + "objective": "Defeat", + "prerequisiteIDs": [ + 1 + ], + "enemyTags": [ + "Goblin", + "Leader" + ], + "enemyExcludeTags": [ + "Boss" + ], + "prologue": {}, + "epilogue": { + "text": "Quedan unos cuantos saqueadores más, pero ahora luchan a la defensiva. $(poi_3) debería estar a salvo, y tú deberías volver a informar de tu éxito.", + "options": [ + { + "name": "(Continuar)" + } + ] + }, + "POIToken": "" + }, + { + "id": 3, + "name": "Viajar", + "description": "Vuelve a $(poi_3) y cobra tus recompensas.", + "mapFlag": "", + "mapFlagValue": 1, + "here": true, + "objective": "Travel", + "prerequisiteIDs": [ + 2 + ], + "prologue": {}, + "epilogue": {}, + "POIToken": "" + } + ], + "questSourceTags": [ + "forest_town_generic", + "forest_town_identity", + "forest_town_tribal", + "island_town_generic", + "island_town_identity", + "island_town_tribal", + "plains_town_generic", + "plains_town_identity", + "plains_town_tribal", + "swamp_town_generic", + "swamp_town_identity", + "swamp_town_tribal", + "waste_town_generic", + "waste_town_identity", + "waste_town_tribal" + ] + }, + { + "id": 39, + "isTemplate": true, + "name": "Invasión de tritones", + "description": "Detén la invasión de tritones.", + "offerDialog": { + "text": "\"Viajero, necesitamos que todo brazo capaz esté preparado. Se han avistado tritones cerca, y en gran número.\"", + "options": [ + { + "name": "¿Tritones? ¿Aquí?", + "text": "\"Verás\", el rostro del hombre se contrae ligeramente, \"...puede que hayamos enviado hace poco a unos aventureros en busca de un artefacto. Parte del grupo volvió sin él, pero por lo visto los siguieron.\"", + "options": [ + { + "action": [ + { + "addMapReputation": -1, + "POIReference": "$(poi_3)" + } + ], + "name": "\"Os lo habéis buscado vosotros, arregladlo vosotros.\" (Rechazar misión, -1 de reputación local)" + }, + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "39", + "POIReference": "" + } + ], + "name": "Unirte a la lucha. (Aceptar misión)" + } + ] + } + ] + }, + "prologue": {}, + "epilogue": { + "text": "Ya sea porque los tritones se cobraron venganza suficiente o porque tus esfuerzos los ahuyentaron, $(poi_3) ha dejado de estar bajo ataque. (+2 de reputación local, +500 de oro)", + "options": [ + { + "action": [ + { + "addGold": 500, + "addMapReputation": 2, + "POIReference": "$(poi_3)" + } + ], + "name": "(Misión completada)" + } + ] + }, + "failureDialog": { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": -2, + "POIReference": "$(poi_3)" + } + ], + "text": "No has logrado defender $(poi_3), y ahora está a merced de los tritones. (-2 de reputación local)", + "options": [ + { + "name": "(Misión fallida)" + } + ] + }, + "declinedDialog": { + "text": "Vuelve mañana y quizás tenga algo que sí quieras hacer.", + "options": [ + { + "name": "(Captando la indirecta, que de sutil tiene poco, te marchas.)" + } + ] + }, + "rewardDescription": "Oro y reputación", + "stages": [ + { + "id": 1, + "name": "Combate a los saqueadores tritones", + "description": "Derrota al menos a tres tritones en defensa de $(poi_3).", + "mapFlag": "", + "mapFlagValue": 1, + "count3": 3, + "mixedEnemies": true, + "worldMapOK": true, + "objective": "Defeat", + "enemyTags": [ + "Merfolk", + "Minion" + ], + "enemyExcludeTags": [ + "Leader", + "Boss" + ], + "prologue": {}, + "epilogue": { + "text": "Con varios tritones derrotados, sus campeones empiezan a darte caza.", + "options": [ + { + "name": "(Continuar)" + } + ] + }, + "POIToken": "" + }, + { + "id": 2, + "name": "Derrota a uno de los campeones tritones", + "description": "Derrotar a un campeón tritón bastará, con suerte, para cambiar el rumbo de la marea, por así decirlo.", + "mapFlag": "", + "mapFlagValue": 1, + "count3": 1, + "worldMapOK": true, + "objective": "Defeat", + "prerequisiteIDs": [ + 1 + ], + "enemyTags": [ + "Merfolk", + "Leader" + ], + "enemyExcludeTags": [ + "Boss" + ], + "prologue": {}, + "epilogue": { + "text": "$(poi_3) ha sido defendido con éxito, y deberías volver a informar de tu logro.", + "options": [ + { + "name": "(Continuar)" + } + ] + }, + "POIToken": "" + }, + { + "id": 3, + "name": "Viajar", + "description": "Vuelve a $(poi_3) y cobra tus recompensas.", + "mapFlag": "", + "mapFlagValue": 1, + "here": true, + "objective": "Travel", + "prerequisiteIDs": [ + 2 + ], + "prologue": {}, + "epilogue": {}, + "POIToken": "" + } + ], + "questSourceTags": [ + "forest_town_generic", + "forest_town_identity", + "forest_town_tribal", + "mountain_town_generic", + "mountain_town_identity", + "mountain_town_tribal", + "plains_town_generic", + "plains_town_identity", + "plains_town_tribal", + "swamp_town_generic", + "swamp_town_identity", + "swamp_town_tribal", + "waste_town_generic", + "waste_town_identity", + "waste_town_tribal" + ] + }, + { + "id": 40, + "isTemplate": true, + "name": "Invasión de muertos vivientes", + "description": "Detén la invasión de muertos vivientes.", + "offerDialog": { + "text": "Fuera de las murallas de $(poi_3), el suelo está sembrado de cadáveres. \"El problema es que no se quedan quietos.\" El alcalde del pueblo te implora que ayudes de algún modo.", + "options": [ + { + "name": "\"Es probable que aquí haya un nigromante actuando.\"", + "text": "\"¿Puedes detenerlos?\" El alcalde te lanza una mirada esperanzada, sabiendo que los defensores del pueblo están agotados de combatir a los mismos muertos vivientes alzados una y otra vez.", + "options": [ + { + "action": [ + { + "addMapReputation": -1, + "POIReference": "$(poi_3)" + } + ], + "name": "\"Tengo otras cosas que hacer.\" (Rechazar misión, -1 de reputación local)" + }, + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "40", + "POIReference": "" + } + ], + "name": "Atacar rápido mientras algunos cadáveres siguen caídos. (Aceptar misión)" + } + ] + } + ] + }, + "prologue": {}, + "epilogue": { + "text": "Esta noche $(poi_3) podrá descansar más tranquilo, pues los muertos no se alzan antes de poder ser quemados. (+2 de reputación local, +500 de oro)", + "options": [ + { + "action": [ + { + "addGold": 500, + "addMapReputation": 2, + "POIReference": "$(poi_3)" + } + ], + "name": "(Misión completada)" + } + ] + }, + "failureDialog": { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": -2, + "POIReference": "$(poi_3)" + } + ], + "text": "La población de $(poi_3) ha menguado notablemente. La población viva, se entiende... (-2 de reputación local)", + "options": [ + { + "name": "(Misión fallida)" + } + ] + }, + "declinedDialog": { + "text": "Vuelve mañana y quizás tenga algo que sí quieras hacer.", + "options": [ + { + "name": "(Captando la indirecta, que de sutil tiene poco, te marchas.)" + } + ] + }, + "rewardDescription": "Oro y reputación", + "stages": [ + { + "id": 1, + "name": "Combate a los muertos vivientes", + "description": "Derrota al menos a tres muertos vivientes en defensa de $(poi_3).", + "mapFlag": "", + "mapFlagValue": 1, + "count3": 3, + "mixedEnemies": true, + "worldMapOK": true, + "objective": "Defeat", + "enemyTags": [ + "Undead", + "Minion" + ], + "enemyExcludeTags": [ + "Leader", + "Boss" + ], + "prologue": {}, + "epilogue": { + "text": "Con cada escaramuza ganada encontrabas más rastros de magia que te acercaban a los magos oscuros que hay detrás de este ataque. Ahora puedes enfrentarte a ellos directamente.", + "options": [ + { + "name": "(Continuar)" + } + ] + }, + "POIToken": "" + }, + { + "id": 2, + "name": "Derrota a un nigromante que amenaza $(poi_3)", + "description": "Sin nigromantes animando a los muertos, los defensores de $(poi_3) pueden reagruparse y recuperarse.", + "mapFlag": "", + "mapFlagValue": 1, + "count3": 1, + "worldMapOK": true, + "objective": "Defeat", + "prerequisiteIDs": [ + 1 + ], + "enemyTags": [ + "Necromancer" + ], + "enemyExcludeTags": [ + "Boss" + ], + "prologue": {}, + "epilogue": { + "text": "$(poi_3) ha sido defendido con éxito, y deberías volver a informar de tu logro.", + "options": [ + { + "name": "(Continuar)" + } + ] + }, + "POIToken": "" + }, + { + "id": 3, + "name": "Viajar", + "description": "Vuelve a $(poi_3) y cobra tus recompensas.", + "mapFlag": "", + "mapFlagValue": 1, + "here": true, + "objective": "Travel", + "prerequisiteIDs": [ + 2 + ], + "prologue": {}, + "epilogue": {}, + "POIToken": "" + } + ], + "questSourceTags": [ + "forest_town_generic", + "forest_town_identity", + "forest_town_tribal", + "island_town_generic", + "island_town_identity", + "island_town_tribal", + "mountain_town_generic", + "mountain_town_identity", + "mountain_town_tribal", + "plains_town_generic", + "plains_town_identity", + "plains_town_tribal", + "waste_town_generic", + "waste_town_identity", + "waste_town_tribal" + ] + }, + { + "id": 41, + "isTemplate": true, + "name": "Invasión de elfos", + "description": "Detén la invasión de elfos.", + "offerDialog": { + "text": "\"Salud, forastero. Necesito una parte neutral que zanje una discrepancia.\" Un hombre de aspecto preocupado se acerca a ti sosteniendo una planta pequeña en una maceta de barro.", + "options": [ + { + "name": "\"¿En qué puedo ayudar?\"", + "text": "\"Verás, tomé este esqueje de un árbol gigante. Y digo GIGANTE. El árbol más grande que he visto jamás.\" Fuera del pueblo se oyen gritos. \"Y, bueno, resulta que a los elfos no les parece bien que lo cogiera...\"", + "options": [ + { + "action": [ + { + "addMapReputation": -1, + "POIReference": "$(poi_3)" + } + ], + "name": "\"Pues te sugiero que lo devuelvas. Rápido.\" (Rechazar misión, -1 de reputación local)" + }, + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "41", + "POIReference": "" + } + ], + "name": "\"No es más que un árbol, puedo con unos cuantos elfos, y apoyo tu afición al bonsái.\" (Aceptar misión)" + } + ] + } + ] + }, + "prologue": {}, + "epilogue": { + "text": "Los elfos siguen enfadados por la profanación de su árbol sagrado, pero tus esfuerzos defendiendo $(poi_3) los han convencido de renunciar a la venganza por ahora. (+2 de reputación local, +500 de oro)", + "options": [ + { + "action": [ + { + "addGold": 500, + "addMapReputation": 2, + "POIReference": "$(poi_3)" + } + ], + "name": "(Misión completada)" + } + ] + }, + "failureDialog": { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": -2, + "POIReference": "$(poi_3)" + } + ], + "text": "Ninguna planta de interior merece tanto esfuerzo, pero has fallado a la gente de $(poi_3). (-2 de reputación local)", + "options": [ + { + "name": "(Misión fallida)" + } + ] + }, + "declinedDialog": { + "text": "Vuelve mañana y quizás tenga algo que sí quieras hacer.", + "options": [ + { + "name": "(Captando la indirecta, que de sutil tiene poco, te marchas.)" + } + ] + }, + "rewardDescription": "Oro y reputación", + "stages": [ + { + "id": 1, + "name": "Combate a los elfos", + "description": "Derrota al menos a tres elfos en defensa de $(poi_3).", + "mapFlag": "", + "mapFlagValue": 1, + "count3": 3, + "mixedEnemies": true, + "worldMapOK": true, + "objective": "Defeat", + "enemyTags": [ + "Elf", + "Minion" + ], + "enemyExcludeTags": [ + "Leader", + "Boss" + ], + "prologue": {}, + "epilogue": { + "text": "Tu defensa desafiante ha atraído la atención de los cazadores de élite de los elfos y de sus druidas más poderosos. Espera ahora un desafío mayor.", + "options": [ + { + "name": "(Continuar)" + } + ] + }, + "POIToken": "" + }, + { + "id": 2, + "name": "Derrota a un elfo de élite que amenaza $(poi_3)", + "description": "Enfréntate a lo mejor que los elfos puedan lanzaros a ti y a $(poi_3) para detener sus ataques.", + "mapFlag": "", + "mapFlagValue": 1, + "count3": 1, + "worldMapOK": true, + "objective": "Defeat", + "prerequisiteIDs": [ + 1 + ], + "enemyTags": [ + "Elf", + "Leader" + ], + "enemyExcludeTags": [ + "Boss" + ], + "prologue": {}, + "epilogue": { + "text": "$(poi_3) ha sido defendido con éxito, y deberías volver a informar de tu logro.", + "options": [ + { + "name": "(Continuar)" + } + ] + }, + "POIToken": "" + }, + { + "id": 3, + "name": "Viajar", + "description": "Vuelve a $(poi_3) y cobra tus recompensas.", + "mapFlag": "", + "mapFlagValue": 1, + "here": true, + "objective": "Travel", + "prerequisiteIDs": [ + 2 + ], + "prologue": {}, + "epilogue": {}, + "POIToken": "" + } + ], + "questSourceTags": [ + "island_town_generic", + "island_town_identity", + "island_town_tribal", + "mountain_town_generic", + "mountain_town_identity", + "mountain_town_tribal", + "plains_town_generic", + "plains_town_identity", + "plains_town_tribal", + "swamp_town_generic", + "swamp_town_identity", + "swamp_town_tribal", + "waste_town_generic", + "waste_town_identity", + "waste_town_tribal" + ] + }, + { + "id": 42, + "isTemplate": true, + "name": "Invasión de soldados", + "description": "Detén la invasión de soldados.", + "offerDialog": { + "text": "$(poi_3) es un hervidero de actividad frenética. ¿El motivo? Se ha avistado en el horizonte un pequeño ejército que ondea un estandarte de batalla extranjero.", + "options": [ + { + "name": "Sopesar tus opciones", + "text": "Defender el pueblo no será sencillo, pero ¿de verdad puedes limitarte a dejar que lo conquisten?", + "options": [ + { + "action": [ + { + "addMapReputation": -1, + "POIReference": "$(poi_3)" + } + ], + "name": "\"Esta no es mi guerra.\" (Rechazar misión, -1 de reputación local)" + }, + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "42", + "POIReference": "" + } + ], + "name": "\"¡Los invasores no tienen derecho alguno sobre estas tierras!\" (Aceptar misión)" + } + ] + } + ] + }, + "prologue": {}, + "epilogue": { + "text": "Los dirigentes de $(poi_3) te deben a ti su libertad, y probablemente sus cabezas. (+2 de reputación local, +500 de oro)", + "options": [ + { + "action": [ + { + "addGold": 500, + "addMapReputation": 2, + "POIReference": "$(poi_3)" + } + ], + "name": "(Misión completada)" + } + ] + }, + "failureDialog": { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "addMapReputation": -2, + "POIReference": "$(poi_3)" + } + ], + "text": "Un nuevo estandarte ondea sobre las murallas de $(poi_3), y tras él llegará una nueva remesa de recaudadores de impuestos. Los lugareños no olvidarán pronto quién no supo protegerlos. (-2 de reputación local)", + "options": [ + { + "name": "(Misión fallida)" + } + ] + }, + "declinedDialog": { + "text": "Vuelve mañana y quizás tenga algo que sí quieras hacer.", + "options": [ + { + "name": "(Captando la indirecta, que de sutil tiene poco, te marchas.)" + } + ] + }, + "rewardDescription": "Oro y reputación", + "stages": [ + { + "id": 1, + "name": "Combate a los soldados", + "description": "Derrota al menos a tres soldados en defensa de $(poi_3).", + "mapFlag": "", + "mapFlagValue": 1, + "count3": 3, + "mixedEnemies": true, + "worldMapOK": true, + "objective": "Defeat", + "enemyTags": [ + "Soldier", + "IdentityWhite", + "Minion" + ], + "enemyExcludeTags": [ + "Boss", + "Leader" + ], + "prologue": {}, + "epilogue": { + "text": "La tropa rasa no está a tu altura, pero quebrar su determinación exigirá derrotar a uno de los líderes del ejército.", + "options": [ + { + "name": "(Continuar)" + } + ] + }, + "POIToken": "" + }, + { + "id": 2, + "name": "Derrota a uno de los comandantes de las fuerzas que atacan $(poi_3)", + "description": "La tropa rasa no está a tu altura, pero quebrar su determinación exigirá derrotar a uno de los líderes del ejército.", + "mapFlag": "", + "mapFlagValue": 1, + "count3": 1, + "worldMapOK": true, + "objective": "Defeat", + "prerequisiteIDs": [ + 1 + ], + "enemyTags": [ + "Soldier", + "IdentityWhite", + "Leader" + ], + "enemyExcludeTags": [ + "Boss" + ], + "prologue": {}, + "epilogue": { + "text": "$(poi_3) ha sido defendido con éxito, y deberías volver a informar de tu logro.", + "options": [ + { + "name": "(Continuar)" + } + ] + }, + "POIToken": "" + }, + { + "id": 3, + "name": "Viajar", + "description": "Vuelve a $(poi_3) y cobra tus recompensas.", + "mapFlag": "", + "mapFlagValue": 1, + "here": true, + "objective": "Travel", + "prerequisiteIDs": [ + 2 + ], + "prologue": {}, + "epilogue": {}, + "POIToken": "" + } + ], + "questSourceTags": [ + "forest_town_generic", + "forest_town_identity", + "forest_town_tribal", + "island_town_generic", + "island_town_identity", + "island_town_tribal", + "mountain_town_generic", + "mountain_town_identity", + "mountain_town_tribal", + "swamp_town_generic", + "swamp_town_identity", + "swamp_town_tribal", + "waste_town_generic", + "waste_town_identity", + "waste_town_tribal" + ] + }, + { + "id": 43, + "isTemplate": true, + "name": "Tu primer encargo", + "offerDialog": {}, + "prologue": {}, + "epilogue": {}, + "failureDialog": {}, + "declinedDialog": { + "text": "Vuelve mañana y quizás tenga algo que sí quieras hacer.", + "options": [ + { + "name": "(Captando la indirecta, que de sutil tiene poco, te marchas.)" + } + ] + }, + "stages": [ + { + "id": 1, + "name": "Completa una misión secundaria", + "description": "Hay misiones secundarias en todos los pueblos (busca el signo de interrogación) y pueden ser una forma estupenda de conseguir botín extra mientras exploras Shandalar.", + "anyPOI": true, + "count3": 1, + "POITags": [ + "QuestSource" + ], + "objective": "CompleteQuest", + "prologue": { + "text": "Nota: como el objetivo de esta misión es completar otras misiones, mientras la sigas tu flecha de navegación te llevará a lugares donde conseguirlas. En cuanto aceptes una misión secundaria, entra en tu registro de misiones y sigue esa misión para actualizar las indicaciones de navegación.", + "options": [ + { + "name": "(Continuar)" + } + ] + }, + "epilogue": {}, + "POIToken": "" + }, + { + "id": 2, + "name": "Completa más misiones secundarias", + "description": "Hay misiones secundarias en todos los pueblos (busca el signo de interrogación) y pueden ser una forma estupenda de conseguir botín extra mientras exploras Shandalar.", + "anyPOI": true, + "count3": 3, + "POITags": [ + "QuestSource" + ], + "objective": "CompleteQuest", + "prerequisiteIDs": [ + 1 + ], + "prologue": { + "text": "Completado tu primer encargo, te sientes mínimamente más experimentado. Y, con suerte, un poco más rico.", + "options": [ + { + "name": "(Continuar)", + "text": "Los vecinos te ofrecen un pequeño descuento en sus tiendas por haberlos ayudado y te insinúan que puede haber más trabajo disponible. Sigue explorando por medio de misiones y ve labrándote algo más de reputación por el camino. Recuerda seguir esta misión para encontrar más fuentes de encargos, o seguir las misiones que aceptes para localizar sus objetivos.", + "options": [ + { + "name": "(Continuar" + } + ] + } + ] + }, + "epilogue": { + "text": "Un hombre humano se acerca a ti, vestido con un abrigo negro de buen corte adornado con filigranas y detalles de plata. \"¡Tú, el de ahí! Sí, tú, el $(playerrace). Eres quien acaba de terminar un encargo para los lugareños, ¿verdad?\"", + "options": [ + { + "name": "\"Sí, así es.\"", + "text": "\"Tengo otro encargo para ti, y no aceptaré un no por respuesta...\"", + "options": [ + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "44", + "POIReference": "" + } + ], + "name": "(Continuar)" + } + ] + } + ] + }, + "POIToken": "" + } + ], + "storyQuest": true + }, + { + "id": 44, + "isTemplate": true, + "name": "Encuentra la caravana", + "description": "Un cargamento de fragmentos de maná lleva retraso en su llegada a $(poi_1). Encuentra la caravana que lo transporta y asegúrate de que el cargamento llegue.", + "offerDialog": {}, + "prologue": { + "text": "\"Me llamo Donovan. Sir Donovan para la mayoría. Y tengo una necesidad urgente de fragmentos de maná, muchos más de los que puedo conseguir en un solo pueblo.\" Al calibrar lo que eso implica en dinero, te da de pronto la sensación de que ese elegante abrigo es la ropa de 'ir a lo bruto' de Donovan, pese a que probablemente cueste el salario de un año para la mayoría de la gente de $(poi_1)", + "options": [ + { + "name": "\"No puedo decir que lleve tantos encima, pero supongo que podría venderte algo de lo que tengo.\"", + "text": "\"No, el problema es que ya los he comprado, y la caravana en la que debían llegar lleva muchísimo retraso. Necesito que vayas a buscarla, y rápido.\"", + "options": [ + { + "name": "\"Entiendo...\"", + "text": "\"Ahora bien, ya sabes que no aceptaré un no por respuesta.\" Donovan te entrega una hoja de un fajo que parece contener más copias de la misma información. \"Aquí están los detalles de la ruta prevista de la caravana y mi contraseña personal, para identificarte ante el conductor. Ve a buscar mi cargamento. Lo necesito para continuar mi investigación.\"", + "options": [ + { + "name": "Da la impresión de que, en efecto, no te está dando ocasión de decir que no." + } + ] + } + ] + } + ] + }, + "epilogue": {}, + "failureDialog": {}, + "declinedDialog": { + "text": "Vuelve mañana y quizás tenga algo que sí quieras hacer.", + "options": [ + { + "name": "(Captando la indirecta, que de sutil tiene poco, te marchas.)" + } + ] + }, + "stages": [ + { + "id": 1, + "name": "Comienza la búsqueda", + "description": "Sal de $(poi_1) para buscar la caravana.", + "mapFlag": "", + "mapFlagValue": 1, + "here": true, + "objective": "Leave", + "prologue": {}, + "epilogue": {}, + "POIToken": "" + }, + { + "id": 2, + "name": "Encuentra la caravana", + "description": "Viaja a $(poi_2) en busca del cargamento perdido de fragmentos de maná.", + "mapFlag": "", + "mapFlagValue": 1, + "count1": 50, + "count2": 10, + "POITags": [ + "QuestSource", + "Sidequest", + "Town", + "BiomeColorless" + ], + "objective": "Travel", + "prerequisiteIDs": [ + 1 + ], + "prologue": { + "text": "Esperabas que esta fuera una tarea fácil y que la caravana apareciera acercándose en el horizonte nada más cruzar las puertas. Por desgracia, no fue así. En su lugar consultas el mapa y partes hacia el punto de origen del cargamento, $(poi_2).", + "options": [ + { + "name": "(Continuar)" + } + ] + }, + "epilogue": {} + }, + { + "id": 3, + "name": "Encuentra la cueva de los bandidos", + "mapFlag": "", + "mapFlagValue": 1, + "POITags": [ + "Quest_BanditCave" + ], + "objective": "Travel", + "prerequisiteIDs": [ + 2 + ], + "prologue": { + "text": "La gente de $(poi_2) asegura no haber visto a ningún viajero que encaje con la descripción que te dieron de los mercaderes que se retrasan en $(poi_1).", + "options": [ + { + "name": "(Continuar)", + "text": "Sin embargo, muchos sí mencionan avisos de ataques de bandidos en los caminos, y un granjero con el que hablas cree saber dónde está su escondite: una cueva cerca de su granja. Te la marca en el mapa y decides investigar.", + "options": [ + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "exploreShand1", + "val": 2 + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "POIReference": "" + } + ], + "name": "(Continuar)" + } + ] + } + ] + }, + "epilogue": {}, + "POIToken": "", + "allowInactivePOI": true + }, + { + "id": 4, + "name": "Registra la cueva de los bandidos", + "description": "Registra la cueva de los bandidos en busca del cargamento perdido y derrota a todos los enemigos de dentro.", + "POITags": [ + "Quest_BanditCave" + ], + "objective": "Clear", + "prerequisiteIDs": [ + 3 + ], + "prologue": { + "text": "La cueva que buscas está muy bien escondida, y podrías habértela pasado por alto de no haber sabido dónde mirar. Eso sí, el par de rufianes que descargan las dos últimas cajas pequeñas de un carromato y las meten dentro ayuda a identificar la entrada.", + "options": [ + { + "name": "(Continuar)", + "text": "Al acercarte ves mejor el carromato. No hay nada en él que indique qué transportó en su día, pero las manchas de sangre recientes en el pescante insinúan que esta mercancía no se pagó.", + "options": [ + { + "name": "(Continuar)" + } + ] + } + ] + }, + "epilogue": {}, + "POIToken": "$(poi_3)" + }, + { + "id": 5, + "name": "Vuelve a $(poi_1)", + "description": "Vuelve a $(poi_1) para hablar de los siguientes pasos.", + "objective": "Travel", + "prerequisiteIDs": [ + 4 + ], + "prologue": { + "text": "Plata. Trozos corrientes y molientes de mineral de plata sin trabajar. Eso es todo lo que encuentras en la mayoría de las cajas escondidas en la cueva. Como no tienes las herramientas ni los conocimientos para acuñar ese pesado metal en moneda, y sabiendo que puede haber alguien vivo con derecho legítimo sobre ella, la dejas atrás.", + "options": [ + { + "name": "(Continuar)", + "text": "Y como no tienes más pistas sobre el cargamento mucho más valioso que buscas, deberías volver a $(poi_1) e informar.", + "options": [ + { + "name": "(Continuar)" + } + ] + } + ] + }, + "epilogue": { + "action": [ + { + "addGold": 500, + "addMapReputation": 2, + "POIReference": "$(poi_1)" + } + ], + "text": "Después de que le expliques qué encontraste y qué no, sir Donovan te entrega una bolsa de monedas que desde luego sí son gastables. \"No has encontrado nada, pero eso no significa que no te hayas esforzado por mí.\" (+500 de oro)", + "options": [ + { + "name": "(Continuar)", + "text": "Luego saca un mapa de una zona completamente distinta, en una región montañosa al suroeste. \"Deberíamos retroceder un paso y asegurarnos de que el cargamento llegó siquiera a salir de las minas.\"", + "options": [ + { + "action": [ + { + "removeItem": "", + "addItem": "Sir Donovan's Amulet", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "45", + "POIReference": "" + } + ], + "name": "(Continuar)", + "text": "Sir Donovan continúa: \"No hace falta que vuelvas aquí con tus hallazgos, salvo que sea escoltando la caravana. Aunque mi empresa depende en última instancia de conseguir esos fragmentos, tengo preparativos que hacer en otra parte. Usa este amuleto cuando tengas más información y me pondré en contacto.\" Te entrega una pequeña joya de hierro, tras lo cual asientes y partes.", + "options": [ + { + "name": "(Continuar)" + } + ] + } + ] + } + ] + }, + "POIToken": "$(poi_1)" + } + ], + "storyQuest": true + }, + { + "id": 45, + "isTemplate": true, + "name": "Lo tuyo es mío", + "description": "Aún tras la pista del cargamento perdido de fragmentos de maná, sir Donovan te envía a las minas de las que proceden.", + "offerDialog": {}, + "prologue": {}, + "epilogue": {}, + "failureDialog": {}, + "declinedDialog": { + "text": "Vuelve mañana y quizás tenga algo que sí quieras hacer.", + "options": [ + { + "name": "(Captando la indirecta, que de sutil tiene poco, te marchas.)" + } + ] + }, + "stages": [ + { + "id": 1, + "name": "Ve a $(poi_1)", + "description": "Viaja al bioma de montaña para encontrar $(poi_2) en busca del cargamento perdido.", + "POITags": [ + "Quest_ShardMines" + ], + "objective": "Travel", + "prologue": { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "exploreShand1", + "val": 3 + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "", + "POIReference": "" + } + ], + "text": "Consultando tu mapa, las indicaciones de sir Donovan te llevan a las montañas del suroeste.", + "options": [ + { + "name": "(Continuar)" + } + ] + }, + "epilogue": {}, + "allowInactivePOI": true + }, + { + "id": 2, + "name": "Derrota al $(enemy_2)", + "description": "Encuentra y derrota al líder de los piratas en $(poi_1).", + "mapFlag": "", + "mapFlagValue": 1, + "count3": 1, + "mixedEnemies": true, + "POITags": [ + "Quest_ShardMines" + ], + "objective": "Defeat", + "prerequisiteIDs": [ + 1 + ], + "enemyTags": [ + "Captain" + ], + "prologue": { + "text": "Las indicaciones de sir Donovan son muy precisas y encuentras la explotación minera sin mayor problema. Hay, eso sí, una señal evidente de problemas cuando llegas.", + "options": [ + { + "name": "(Continuar)", + "text": "En concreto, el cartel que en su día designaba este lugar como $(poi_1): lo han pintado encima con una copia tosca de la calavera y las tibias cruzadas que se ven en la bandera pirata amarrada en lo alto del propio cartel. Piratas.", + "options": [ + { + "name": "(Continuar)", + "text": "El pirata medio probablemente solo cumple órdenes lo justo para encontrar grog o botín. Pero siempre hay en alguna parte un capitán llevando el timón, por así decirlo...", + "options": [ + { + "name": "(Continuar)" + } + ] + } + ] + } + ] + }, + "epilogue": {}, + "POIToken": "", + "allowInactivePOI": true + }, + { + "id": 3, + "name": "Sal de las minas", + "description": "Sal de las minas cuando estés listo para continuar.", + "anyPOI": true, + "objective": "Leave", + "prerequisiteIDs": [ + 2 + ], + "prologue": { + "text": "Las últimas entradas del cuaderno de bitácora del capitán confirman lo que ya habías visto mientras te abrías paso hacia el interior de la mina: lejos de ser tesoros de valor incalculable, los cristales de esta mina no valen prácticamente nada.", + "options": [ + { + "action": [ + { + "setQuestFlag": { + "key": "Quest_ShardMines_Epilogue", + "val": 1 + } + } + ], + "name": "\"Adiós a hacerse rico con un tesoro pirata.\"", + "text": "Puede que quede algún tesoro de escala menos industrial entre los piratas que sigan por aquí, pero cuando estés listo deberías contactar con sir Donovan usando su talismán.", + "options": [ + { + "name": "(Continuar)" + } + ] + } + ] + } + }, + { + "id": 4, + "name": "Contacta con sir Donovan", + "description": "Usa el amuleto de Donovan para contactar con él.", + "mapFlag": "Quest_ShardMines_EpilogueComplete", + "mapFlagValue": 1, + "worldMapOK": true, + "objective": "QuestFlag", + "prerequisiteIDs": [ + 3 + ], + "prologue": { + "text": "Cuando estés listo, deberías usar el amuleto que te dio para contarle a sir Donovan lo de los piratas y que ya te has ocupado de ellos.", + "options": [ + { + "name": "(Continuar)", + "options": [ + { + "action": [ + { + "addItem": "Sir Donovan's Amulet" + } + ], + "condition": [ + { + "item": "Sir Donovan's Amulet", + "not": true + } + ] + } + ] + } + ] + }, + "epilogue": {} + }, + { + "id": 5, + "name": "Ve a un pueblo", + "description": "El impulso que emana del amuleto de sir Donovan persiste. No te controla, no te habla, ni nada por el estilo. Sencillamente sabes de algún modo que es lo que él quiere que hagas: ir a un pueblo.", + "anyPOI": true, + "POITags": [ + "Town" + ], + "objective": "Travel", + "prerequisiteIDs": [ + 4 + ], + "prologue": {}, + "epilogue": { + "text": "A los pocos instantes de entrar en el pueblo, un elfo joven y enjuto se acerca a ti. O al menos parece joven; con los elfos es tan difícil saberlo. Te muestra brevemente un amuleto idéntico al que te dio Donovan y te hace señas para que lo sigas hasta la posada.", + "options": [ + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "46", + "POIReference": "" + } + ], + "name": "(Continuar)", + "text": "Ya en una mesa del rincón de la posada, el elfo se inclina hacia delante apoyado en los codos y te estudia un momento. \"Sí, eres tú. Me llamo Acirxes. Trabajo con Donovan.\"", + "options": [ + { + "name": "(Continuar)", + "text": "\"Viendo que has venido a pie, deduzco que no encontraste nuestro cargamento.\"", + "options": [ + { + "name": "Explicarle a Acirxes el estado de la mina, la tripulación pirata que encontraste atrincherada dentro y los fragmentos de maná agotados.", + "text": "\"Odio cuando una buena veta se seca. Cidryl estaba cargada de cristales y, comparada con otras explotaciones, eran fáciles de alcanzar. Pero cuando no queda maná, no queda maná.\" Acirxes hace una pausa.", + "options": [ + { + "action": [ + { + "addGold": 500 + } + ], + "name": "\"¿Y ahora qué?\"", + "text": "\"La tarifa estándar de 'sigue trabajando para nosotros'.\" Te desliza una bolsa de monedas de un tamaño ya familiar. \"Dame un par de días para localizar al jefe y ponerlo al corriente. Nos vemos aquí de nuevo pronto.\" (+500 de oro)", + "options": [ + { + "name": "(Continuar)" + } + ] + } + ] + } + ] + } + ] + } + ] + }, + "POIToken": "" + } + ], + "storyQuest": true + }, + { + "id": 46, + "isTemplate": true, + "name": "Trabajo de relleno", + "description": "Tras informar a su contacto del estado de las cosas en las minas de fragmentos, esperas nuevas noticias de sir Donovan. Hasta entonces, eres libre de aceptar otros encargos.", + "offerDialog": {}, + "prologue": {}, + "epilogue": { + "text": "Un leve silbido te avisa de la presencia de Acirxes. No tienes del todo claro si tiene un sentido de la oportunidad impecable o si te ha estado observando mientras completabas tu último encargo, pero por lo visto sir Donovan tiene más trabajo para ti.", + "options": [ + { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "47", + "POIReference": "" + } + ], + "name": "(Continuar)" + } + ] + }, + "failureDialog": {}, + "declinedDialog": { + "text": "Vuelve mañana y quizás tenga algo que sí quieras hacer.", + "options": [ + { + "name": "(Captando la indirecta, que de sutil tiene poco, te marchas.)" + } + ] + }, + "stages": [ + { + "id": 1, + "name": "Haz misiones secundarias", + "description": "Completa 3 misiones secundarias mientras esperas a que Acirxes vuelva a encontrarte.", + "anyPOI": true, + "count3": 3, + "POITags": [ + "QuestSource" + ], + "objective": "CompleteQuest", + "prologue": {}, + "epilogue": {}, + "allowInactivePOI": true + } + ], + "storyQuest": true + }, + { + "id": 47, + "isTemplate": true, + "name": "Pásate por la biblioteca", + "description": "Sir Donovan quiere que busques en $(poi_1) información sobre la mecánica de la invocación.", + "offerDialog": {}, + "prologue": {}, + "epilogue": {}, + "failureDialog": {}, + "declinedDialog": { + "text": "Vuelve mañana y quizás tenga algo que sí quieras hacer.", + "options": [ + { + "name": "(Captando la indirecta, que de sutil tiene poco, te marchas.)" + } + ] + }, + "stages": [ + { + "id": 1, + "name": "Encuentra $(poi_1)", + "description": "Sigue las indicaciones de Acirxes hasta $(poi_1), en el bioma de isla al noreste.", + "POITags": [ + "Quest_LibraryOfVarsil" + ], + "objective": "Travel", + "prologue": { + "text": "Acirxes frunce el ceño, lo que por un instante hace que su aspecto juvenil se torne maduro. \"El jefe dice que no eres un simple mago de tres al cuarto, así que supongo que entiendes algo de lo que hacen realmente los hechizos.\"", + "options": [ + { + "name": "Te preguntas adónde quiere llegar, pero de momento te limitas a asentir.", + "text": "Continúa: \"Pues el jefe quiere saber más de lo que ya sabe sobre ciertos aspectos de los hechizos, y probablemente más de lo que sabemos tú o yo. Quiere que vayas a $(poi_1) y consigas cualquier libro o investigación sobre la mecánica real que hay detrás de los hechizos de invocación.\"", + "options": [ + { + "action": [ + { + "setQuestFlag": { + "key": "exploreShand1", + "val": 4 + } + } + ], + "name": "\"Dalo por hecho.\"", + "text": "\"Si puedes con eso, de allí a $(poi_4) hay un salto corto. Tengo unos... 'asuntos' que atender allí. Nos vemos en la posada del extremo norte de la península central.\"" + }, + { + "name": "\"Está bien, pero ¿por qué enviarme a mí?\"", + "text": "\"Eres de los listos.\" Acirxes hace una pausa antes de seguir respondiendo en un tono cuidadosamente medido. \"Porque uno de mis compañeros encontró la biblioteca. Y otro encontró la biblioteca y el cadáver de ella. Y un tercero los encontró a todos y escapó con vida. No es una biblioteca cualquiera.\"", + "options": [ + { + "name": "\"No, por lo visto no.\"", + "text": "\"Por eso te enviamos a ti. Reúnete conmigo en $(poi_4) después. Tengo unos... 'asuntos' que atender allí, y añadiré una recompensa personal si me traes la cabeza de quienquiera que dirija el cotarro en la biblioteca.\" Aparta la mirada antes de marcharse. \"Se lo debo a Gwen...\"", + "options": [ + { + "action": [ + { + "setQuestFlag": { + "key": "exploreShand1", + "val": 4 + } + }, + { + "setQuestFlag": { + "key": "libraryOfVarsilBonusAvailable", + "val": 1 + } + } + ], + "name": "(Continuar)" + } + ] + } + ] + } + ] + } + ] + }, + "epilogue": {}, + "allowInactivePOI": true + }, + { + "id": 2, + "name": "Localiza la investigación", + "description": "Busca en $(poi_1) investigaciones sobre la mecánica de los hechizos de invocación.", + "anyPOI": true, + "mapFlag": "foundLibraryOfVarsilResearch", + "mapFlagValue": 1, + "objective": "QuestFlag", + "prerequisiteIDs": [ + 1 + ], + "prologue": { + "text": "La estructura que tienes delante es enorme y parece más una fortaleza antigua que una biblioteca.", + "options": [ + { + "name": "(Continuar)", + "text": "Un pequeño grupo de eruditos que acarrean libros junto a la entrada parece confirmar la finalidad del edificio, pero hay algo extraño en sus gestos que te pone en guardia al acercarte.", + "options": [ + { + "name": "(Continuar)" + } + ] + } + ] + }, + "epilogue": {}, + "POIToken": "" + }, + { + "id": 3, + "name": "Marcharse", + "description": "Vuelve a la entrada cuando estés listo.", + "anyPOI": true, + "objective": "Leave", + "prerequisiteIDs": [ + 2 + ], + "prologue": {}, + "epilogue": {} + }, + { + "id": 4, + "name": "Viaja a $(poi_4)", + "description": "Entrega la investigación en $(poi_4), el mayor asentamiento de las islas.", + "POITags": [ + "Capital", + "BiomeBlue" + ], + "objective": "Travel", + "prerequisiteIDs": [ + 3 + ], + "prologue": {}, + "epilogue": { + "text": "\"Bienvenido a $(poi_4), reluciente faro de la civilización.\" Acabas de entrar en la taberna y tardas un instante en darte cuenta de que la voz que suena por encima de tu hombro te habla a ti.", + "options": [ + { + "name": "[/]Pero ese no es Acirxes...[]", + "text": "\"Deduzco que esperabas a mi socio.\" Sir Donovan te conduce a una mesa antes de continuar. \"Acirxes está de permiso, indefinidamente. Es bienvenido a volver a mi servicio, pero solo cuando haya superado del todo el duelo por la muerte de Guinneverre; otra de mis empleadas con la que mantenía cierta relación.\"", + "options": [ + { + "condition": [ + { + "checkQuestFlag": "defeatedLibraryOfVarsilBoss" + }, + { + "checkQuestFlag": "libraryOfVarsilBonusAvailable" + } + ], + "name": "\"Sobre eso...\" Le entregas la investigación antes de contarle a Donovan lo del autómata gigante en lo alto de la biblioteca.", + "text": "\"Sí, Acirxes insistió mucho en que te guardara esto.\" Te entrega un pequeño libro de hechizos muy ornamentado.", + "options": [ + { + "action": [ + { + "grantRewards": [ + { + "type": "card", + "count": 1, + "colors": [ + "Black" + ], + "rarity": [ + "Rare", + "Mythic Rare" + ] + }, + { + "type": "card", + "count": 1, + "colors": [ + "Blue" + ], + "rarity": [ + "Rare", + "Mythic Rare" + ] + }, + { + "type": "card", + "count": 1, + "colors": [ + "Green" + ], + "rarity": [ + "Rare", + "Mythic Rare" + ] + }, + { + "type": "card", + "count": 1, + "colors": [ + "Red" + ], + "rarity": [ + "Rare", + "Mythic Rare" + ] + }, + { + "type": "card", + "count": 1, + "colors": [ + "White" + ], + "rarity": [ + "Rare", + "Mythic Rare" + ] + }, + { + "type": "card", + "count": 1, + "rarity": [ + "Rare", + "Mythic Rare" + ], + "colorType": "Colorless" + } + ] + } + ], + "name": "(Continuar)", + "text": "\"Ahora, sobre los golems. Me intriga saber si guardan relación con otro incidente.\" Donovan rebusca un momento en su zurrón antes de darte un mapa y tu última paga (+1000 de oro). \"Un historiador se llevó hace poco una buena sorpresa en una excavación, y me gustaría saber si ambos grupos tienen un origen común.\"", + "options": [ + { + "action": [ + { + "addGold": 1000, + "issueQuest": "48" + } + ], + "name": "(Continuar)" + } + ] + } + ] + }, + { + "condition": [ + { + "checkQuestFlag": "defeatedLibraryOfVarsilBoss" + }, + { + "checkQuestFlag": "libraryOfVarsilBonusAvailable", + "not": true + } + ], + "name": "\"Sobre eso...\" Le entregas la investigación antes de contarle a Donovan lo del autómata gigante en lo alto de la biblioteca.", + "text": "\"Me intriga saber si esto guarda relación con otro incidente.\" Donovan rebusca un momento en su zurrón antes de darte un mapa y tu última paga (+1000 de oro). \"Un historiador se llevó hace poco una buena sorpresa en una excavación, y me gustaría saber si ambos grupos tienen un origen común.\"", + "options": [ + { + "action": [ + { + "addGold": 1000, + "issueQuest": "48" + } + ], + "name": "(Continuar)" + } + ] + }, + { + "condition": [ + { + "checkQuestFlag": "defeatedLibraryOfVarsilBoss", + "not": true + } + ], + "name": "Entregarle la investigación y hablarle de los ocupantes de la biblioteca.", + "text": "\"Me intriga saber si esto guarda relación con otro incidente.\" Donovan rebusca un momento en su zurrón antes de darte un mapa y tu última paga (+500 de oro). \"Un historiador se llevó hace poco una buena sorpresa en una excavación, y me gustaría saber si ambos grupos tienen un origen común.\"", + "options": [ + { + "action": [ + { + "addGold": 500, + "issueQuest": "48" + } + ], + "name": "(Continuar)" + } + ] + } + ] + } + ] + } + } + ], + "storyQuest": true + }, + { + "id": 48, + "isTemplate": true, + "name": "La excavación", + "description": "Determina si los golems que encontraste antes guardan relación con los de $(poi_1)", + "offerDialog": {}, + "prologue": {}, + "epilogue": {}, + "failureDialog": {}, + "declinedDialog": { + "text": "Vuelve mañana y quizás tenga algo que sí quieras hacer.", + "options": [ + { + "name": "(Captando la indirecta, que de sutil tiene poco, te marchas.)" + } + ] + }, + "stages": [ + { + "id": 1, + "name": "Encuentra $(poi_1)", + "description": "Sigue el mapa de Donovan hasta $(poi_1), en los yermos.", + "POITags": [ + "Quest_DigSite" + ], + "objective": "Travel", + "prologue": { + "text": "Sir Donovan te provoca una sensación de déjà vu al entregarte un mapa y otro de sus amuletos. \"Explora el yacimiento. Busca indicios de que ambos grupos estén relacionados o sean distintos. Usa el amuleto cuando termines y buscaremos dónde vernos.\"", + "options": [ + { + "action": [ + { + "setQuestFlag": { + "key": "exploreShand1", + "val": 5 + } + } + ], + "name": "\"Entendido.\"" + } + ] + }, + "epilogue": {}, + "allowInactivePOI": true + }, + { + "id": 2, + "name": "Explora el yacimiento", + "description": "Registra $(poi_1) y compara sus ocupantes mecanizados con los de tu encuentro anterior.", + "objective": "Fetch", + "prerequisiteIDs": [ + 1 + ], + "itemNames": [ + "Landscape Sketchbook" + ], + "prologue": { + "text": "Al acercarte al yacimiento desde el sur, tu camino actual desciende hacia la entrada recién descubierta, ahora bloqueada por un centinela humanoide metálico.", + "options": [ + { + "name": "(Continuar)", + "text": "A tu derecha se alza una estructura mucho más reciente que supones sirve de alojamiento para la cuadrilla de excavación y los eruditos que los emplean.", + "options": [ + { + "name": "(Continuar)" + } + ] + } + ] + }, + "epilogue": {}, + "POIToken": "$(poi_1)" + }, + { + "id": 3, + "name": "Marcharse", + "description": "Vuelve a la entrada cuando estés listo.", + "anyPOI": true, + "objective": "Leave", + "prerequisiteIDs": [ + 2 + ], + "prologue": {}, + "epilogue": {} + }, + { + "id": 4, + "name": "Contacta con sir Donovan", + "description": "Usa el talismán de Donovan para contactar con él.", + "mapFlag": "exploreShand1", + "mapFlagValue": 7, + "worldMapOK": true, + "objective": "QuestFlag", + "prerequisiteIDs": [ + 3 + ], + "prologue": { + "text": "Cuando estés listo, deberías usar el amuleto que te dio para volver a contactar con sir Donovan.", + "options": [ + { + "action": [ + { + "setQuestFlag": { + "key": "exploreShand1", + "val": 6 + } + } + ], + "name": "(Continuar)" + } + ] + }, + "epilogue": { + "text": "De nuevo te asalta la sensación de que deberías ir a un pueblo. Pero esta vez es algo más nítida, y tienes un nombre concreto en la punta de la lengua: $(poi_5). Deberías ir allí.", + "options": [ + { + "name": "(Continuar)" + } + ] + } + }, + { + "id": 5, + "name": "Viaja a $(poi_5)", + "description": "Entrega la investigación en $(poi_5), un pueblo de los yermos relativamente lejos de $(poi_1)", + "count1": 70, + "count2": 10, + "POITags": [ + "Town", + "BiomeColorless" + ], + "objective": "Travel", + "prerequisiteIDs": [ + 4 + ], + "prologue": {}, + "epilogue": { + "text": "\"¿$(playername)?\" Una mujer de mediana edad se te acerca en lo que aquí pasa por plaza del pueblo, guardándose en la capa un retrato tuyo pequeño pero muy reconocible. \"Compartimos el jefazo.\" Igual que hizo Acirxes al conoceros, saca de nuevo la mano de la capa para enseñarte un amuleto igual que el tuyo.", + "options": [ + { + "name": "Te preguntas de dónde habrá sacado el retrato. [/]¿Quién me dibujó, y cuándo?[]", + "text": "\"Me llaman Viv. Los que me conocen, digo.\"", + "options": [ + { + "action": [ + { + "addGold": 500 + } + ], + "name": "\"Vaya acento más peculiar tienes.\"", + "text": "Viv se encoge de hombros. \"Eso digo yo cadavez que uno de vosotros suelta lo mesmo. Y mi tintín funciona lo mesmo.\" Para demostrarlo, agita la habitual bolsa de monedas antes de lanzártela. (+500 de oro)\n\"Pos suéltalo. ¿Los mesmos hombres de metal?\"", + "options": [ + { + "name": "\"No lo creo.\"", + "text": "\"Cree, dice. ¿Sabe?\" Pese a lo breve de la respuesta de Viv, tardas un momento en darte cuenta de que te está preguntando si estás seguro.", + "options": [ + { + "name": "\"Algunos eran parecidos. Más parecidos que la mayoría de golems que he visto por ahí sueltos. Pero esta vez no había ninguno grande. Y había varios que no se parecían a nada de lo que vi en la biblioteca.\"", + "text": "\"Esta vez no había ninguno grande.\" Viv devuelve un eco fugaz de tus palabras, acercándose incluso a imitar tu voz natural. \"Al jefazo eso le va a encantar, seguro. Igual me manda de vuelta a por esa bolsa de tintín.\"", + "options": [ + { + "name": "\"Mira... no soy experto en la procedencia de golems antiguos.\"", + "text": "\"Dile eso al jefazo, mejor risa da.\" Antes de que puedas responder, hace ademán de marcharse. \"Cógete el tintín de aquí. Viv traerá las palabras del jefazo.\"", + "options": [ + { + "action": [ + { + "issueQuest": "49" + } + ], + "name": "(Continuar)" + } + ] + } + ] + }, + { + "name": "\"Sí, algunos lo eran. Como otro constructor distinto con las mismas piezas y oyendo la misma descripción, pero con un diseño diferente al del otro.\"", + "text": "Viv asiente con complicidad, como si esa descripción le pareciera acertada. \"Cógete el tintín de aquí. Viv traerá las palabras del jefazo.\" Y acto seguido se da la vuelta para marcharse.", + "options": [ + { + "action": [ + { + "issueQuest": "49" + } + ], + "name": "(Continuar)" + } + ] + } + ] + }, + { + "name": "\"Eso creo.\"", + "text": "\"Cree, dice. ¿Sabe?\" Pese a lo breve de la respuesta de Viv, y gracias a su peculiar forma de hablar, tardas un momento en darte cuenta de que te está preguntando si estás seguro.", + "options": [ + { + "name": "\"Algunos eran parecidos. Más parecidos que la mayoría de golems que he visto por ahí sueltos. Pero esta vez no había ninguno grande. Y había varios que no se parecían a nada de lo que vi en la biblioteca.\"", + "text": "\"Esta vez no había ninguno grande.\" Viv devuelve un eco fugaz de tus palabras, acercándose incluso a imitar tu voz natural. \"Al jefazo eso le va a encantar, seguro. Igual me manda de vuelta tras esa bolsa de tintín.\"", + "options": [ + { + "name": "\"Mira... no soy experto en la procedencia de golems antiguos.\"", + "text": "\"Dile eso al jefazo, mejor risa da.\" Antes de que puedas responder, hace ademán de marcharse. \"Cógete el tintín de aquí. Viv traerá las palabras del jefazo.\"", + "options": [ + { + "action": [ + { + "issueQuest": "49" + } + ], + "name": "(Continuar)" + } + ] + } + ] + }, + { + "name": "\"Como otro constructor distinto copiando el mismo modelo, pero haciéndolo ambos muy bien.\"", + "text": "Viv asiente con complicidad, como si esa descripción le pareciera acertada. \"Cógete el tintín de aquí. Viv traerá las palabras del jefazo.\" Y acto seguido se da la vuelta para marcharse.", + "options": [ + { + "action": [ + { + "issueQuest": "49" + } + ], + "name": "(Continuar)" + } + ] + } + ] + } + ] + }, + { + "name": "\"Donovan quería saber si estos dos grupos de autómatas coincidían. Creo que no. Parecidos, pero distintos.\"", + "text": "\"Parecidos, pero distintos.\" Viv devuelve un eco fugaz de tus palabras, acercándose incluso a imitar tu voz natural. \"Lo mesmo sentido tiene en boca de Viv que en la tuya: ninguno. Igual el jefazo pilla las palabras, o igual me manda de vuelta tras esa bolsa de tintín.\"", + "options": [ + { + "name": "\"Mira... no soy experto en la procedencia de golems antiguos.\"", + "text": "\"Dile eso al jefazo, mejor risa da.\" Antes de que puedas responder, hace ademán de marcharse. \"Cógete el tintín de aquí. Viv traerá las palabras del jefazo.\"", + "options": [ + { + "action": [ + { + "issueQuest": "49" + } + ], + "name": "(Continuar)" + } + ] + }, + { + "name": "\"Como otro constructor distinto con las mismas piezas y oyendo la misma descripción, pero con un diseño diferente al del otro.\"", + "text": "Viv asiente de pronto con complicidad, como si esa descripción le pareciera más acertada que la primera. \"Cógete el tintín de aquí. Viv traerá las palabras del jefazo.\" Y acto seguido se da la vuelta para marcharse.", + "options": [ + { + "action": [ + { + "issueQuest": "49" + } + ], + "name": "(Continuar)" + } + ] + } + ] + }, + { + "name": "\"Donovan quería saber si estos dos grupos de autómatas coincidían. Creo que sí. Al menos en su mayoría.\"", + "text": "\"Cree, dice. ¿Sabe?\" Pese a lo breve de la respuesta de Viv, tardas un momento en darte cuenta de que te está preguntando si estás seguro.", + "options": [ + { + "name": "\"Algunos eran muy parecidos. Más parecidos que la mayoría de golems que he visto por ahí sueltos. Aunque esta vez no había ninguno grande, y sí varios como no había visto nunca.\"", + "text": "\"Esta vez no había ninguno grande.\" Viv devuelve un eco fugaz de tus palabras, acercándose incluso a imitar tu voz natural. \"Al jefazo eso le va a encantar, seguro. Igual me manda de vuelta tras esa bolsa de tintín.\"", + "options": [ + { + "name": "\"Mira... no soy experto en la procedencia de golems antiguos.\"", + "text": "\"Dile eso al jefazo, mejor risa da.\" Antes de que puedas responder, hace ademán de marcharse. \"Cógete el tintín de aquí. Viv traerá las palabras del jefazo.\"", + "options": [ + { + "action": [ + { + "issueQuest": "49" + } + ], + "name": "(Continuar)" + } + ] + } + ] + }, + { + "name": "\"Como otro constructor distinto copiando el mismo modelo, y haciéndolo ambos muy bien.\"", + "text": "Viv asiente con complicidad, como si esa descripción le pareciera acertada. \"Cógete el tintín de aquí. Viv traerá las palabras del jefazo.\" Y acto seguido se da la vuelta para marcharse.", + "options": [ + { + "action": [ + { + "issueQuest": "49" + } + ], + "name": "(Continuar)" + } + ] + } + ] + } + ] + } + ] + } + } + ], + "storyQuest": true + }, + { + "id": 49, + "isTemplate": true, + "name": "Trabajo de relleno 2", + "description": "Esperas nuevas noticias de sir Donovan a través de tu nuevo contacto, Viv. Hasta entonces, eres libre de aceptar otros encargos.", + "offerDialog": {}, + "prologue": {}, + "epilogue": {}, + "failureDialog": {}, + "declinedDialog": { + "text": "Vuelve mañana y quizás tenga algo que sí quieras hacer.", + "options": [ + { + "name": "(Captando la indirecta, que de sutil tiene poco, te marchas.)" + } + ] + }, + "stages": [ + { + "id": 1, + "name": "Haz misiones secundarias", + "description": "Completa 3 misiones secundarias mientras esperas a que Viv vuelva a encontrarte.", + "anyPOI": true, + "count3": 3, + "POITags": [ + "QuestSource" + ], + "objective": "CompleteQuest", + "prologue": {}, + "epilogue": {} + }, + { + "id": 2, + "name": "Espera a Viv", + "description": "Dale a Viv más tiempo para que contacte contigo.", + "anyPOI": true, + "count3": 3, + "POITags": [ + "QuestSource" + ], + "objective": "Travel", + "prerequisiteIDs": [ + 1 + ], + "prologue": { + "text": "Aún no hay noticias ni rastro de Viv, pero deberías esperar saber de ella pronto.", + "options": [ + { + "name": "(Continuar)" + } + ] + }, + "epilogue": { + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "" + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "50", + "POIReference": "" + } + ], + "text": "Al entrar en el pueblo, una figura encapuchada ya conocida aguarda vigilante, esperándote.", + "options": [ + { + "name": "(Continuar)" + } + ] + } + } + ], + "storyQuest": true + }, + { + "id": 50, + "isTemplate": true, + "name": "Bienvenido a la jungla", + "description": "Busca en la Jungla Primigenia un artefacto mencionado en la investigación de la Biblioteca de Varsil.", + "offerDialog": {}, + "prologue": { + "action": [ + { + "setQuestFlag": { + "key": "exploreShand1", + "val": 6 + } + } + ], + "text": "Tienes ocasión de hablar con Viv antes de que ella parezca reparar en ti, y la aprovechas.", + "options": [ + { + "name": "\"Ahí estás, Viv.\"", + "text": "La voz de sir Donovan te responde desde debajo de su capa. \"$(playername) tendrá que esperar un poco más, necesito que traigas ya esos materiales para la siguiente tanda.\" Viv se baja la capucha y abandona la imitación de tu patrón. \"Trastea, él. Cosas necesita.\" Luego se encoge de hombros. \"Viv se centra por el tintín que él da, lo mesmo que coges tú.\"", + "options": [ + { + "name": "\"¿Y ahora qué?\"", + "text": "\"Cosas que el jefazo necesita [i]otra vez[].\" Recalca la palabra de un modo que deja claro que te toca a ti ir a buscar algo. \"Cosas contadas en los mesmos libros que diste.\" Recibes otro mapa, otro amuleto y una nota breve. Viv te despacha sin más marchándose antes de que puedas preguntar nada o leer la nota.", + "options": [ + { + "name": "Continuar" + } + ] + }, + { + "name": "Permanecer callado", + "text": "\"El jefazo necesita cosas [i]otra vez[].\" Con ella cuesta saberlo, pero puede que hubiera un punto de guasa en ese énfasis. \"Cosas contadas en los mesmos libros que diste.\" Recibes otro mapa, otro amuleto y una nota breve. Viv te despacha sin más marchándose antes de que puedas preguntar nada o leer la nota.", + "options": [ + { + "name": "Continuar" + } + ] + } + ] + }, + { + "name": "\"Empezaba a temer que me había quedado sin trabajo.\"", + "text": "La voz de sir Donovan te responde desde debajo de su capa. \"$(playername) tendrá que esperar un poco más, necesito que traigas ya esos materiales para la siguiente tanda.\" Viv se baja la capucha y abandona la imitación de tu patrón. \"Trastea, él. Cosas necesita.\" Luego se encoge de hombros. \"Viv se centra por el tintín que él da, lo mesmo que coges tú.\"", + "options": [ + { + "name": "\"¿Y ahora qué?\"", + "text": "\"Cosas que el jefazo necesita [i]otra vez[].\" Recalca la palabra de un modo que deja claro que te toca a ti ir a buscar algo. \"Cosas contadas en los mesmos libros que diste.\" Recibes otro mapa, otro amuleto y una nota breve. Viv te despacha sin más marchándose antes de que puedas preguntar nada o leer la nota.", + "options": [ + { + "name": "Continuar" + } + ] + }, + { + "name": "Permanecer callado", + "text": "\"El jefazo necesita cosas [i]otra vez[].\" Con ella cuesta saberlo, pero puede que hubiera un punto de guasa en ese énfasis. \"Cosas contadas en los mesmos libros que diste.\" Recibes otro mapa, otro amuleto y una nota breve. Viv te despacha sin más marchándose antes de que puedas preguntar nada o leer la nota.", + "options": [ + { + "name": "Continuar" + } + ] + } + ] + } + ] + }, + "epilogue": {}, + "failureDialog": {}, + "declinedDialog": { + "text": "Vuelve mañana y quizás tenga algo que sí quieras hacer.", + "options": [ + { + "name": "(Captando la indirecta, que de sutil tiene poco, te marchas.)" + } + ] + }, + "stages": [ + { + "id": 1, + "name": "Encuentra la Jungla Primigenia", + "description": "Sigue el mapa que te han dado hasta la zona que sir Donovan te sugirió registrar.", + "POITags": [ + "Quest_PrimalJungle" + ], + "objective": "Travel", + "prologue": {}, + "epilogue": {}, + "allowInactivePOI": true + }, + { + "id": 2, + "name": "Busca el artefacto", + "description": "Sir Donovan sospecha que en esta zona puede encontrarse algún tipo de bastón mágico, y quiere que lo recuperes.", + "mapFlag": "SearchedForArtifact", + "mapFlagValue": 1, + "POITags": [ + "Quest_PrimalJungle" + ], + "objective": "MapFlag", + "prerequisiteIDs": [ + 1 + ], + "prologue": {}, + "epilogue": { + "text": "Junto con los demás objetos del cofre del tesoro encuentras un bastón que encaja con la descripción aproximada de la nota de Donovan. O al menos encajaría si no estuviera roto en pedazos.", + "options": [ + { + "name": "Recoger los pedazos", + "text": "Técnicamente nadie te pidió que lo trajeras de una pieza. Con suerte, sir Donovan seguirá queriéndolo.", + "options": [ + { + "name": "(Continuar)" + } + ] + } + ] + }, + "allowInactivePOI": true + }, + { + "id": 3, + "name": "Vuelve a $(poi_3)", + "description": "Vuelve a encontrar a Viv en $(poi_3) para informar de lo que encontraste y de lo que no.", + "here": true, + "objective": "Travel", + "prerequisiteIDs": [ + 2 + ], + "prologue": {}, + "epilogue": { + "text": "Viv te frunce el ceño tras escuchar tu explicación. \"La bolsa de tintín que espere, el bastón ya hace tintín. Muy malo.\"", + "options": [ + { + "name": "\"¿No crees que sir Donovan lo querrá igualmente?\"", + "text": "Niega enfáticamente con la cabeza. \"Hay que hacerlo nuevo. Tengo un arreglo.\" Saca pluma y papel para garabatear a toda prisa un mapa mucho más tosco de lo habitual. \"Flor crece en cueva aquí, escarlata. La traes aquí.\"", + "options": [ + { + "name": "\"Flor escarlata, crece en la cueva. Entendido.\"", + "text": "\"...y mago listo se llevaría abrigo.\"", + "options": [ + { + "action": [ + { + "setQuestFlag": { + "key": "exploreShand1", + "val": 7 + }, + "issueQuest": "51" + } + ], + "name": "continuar" + } + ] + } + ] + } + ] + } + } + ], + "storyQuest": true + }, + { + "id": 51, + "isTemplate": true, + "name": "En busca de la flor", + "description": "Tráele a Viv una flor de la Caverna Helada.", + "offerDialog": {}, + "prologue": {}, + "epilogue": {}, + "failureDialog": {}, + "declinedDialog": { + "text": "Vuelve mañana y quizás tenga algo que sí quieras hacer.", + "options": [ + { + "name": "(Captando la indirecta, que de sutil tiene poco, te marchas.)" + } + ] + }, + "stages": [ + { + "id": 1, + "name": "Encuentra $(poi_1)", + "description": "El tosco mapa de Viv indica el camino a $(poi_1), en el bioma de $(biome_1).", + "POITags": [ + "Quest_FrostbittenCavern" + ], + "objective": "Travel", + "prologue": {}, + "epilogue": {}, + "allowInactivePOI": true + }, + { + "id": 2, + "name": "Recupera la flor", + "description": "Viv dijo que la flor estaría dentro de una cueva.", + "mapFlag": "hasAFlower", + "mapFlagValue": 1, + "POITags": [ + "Quest_FrostbittenCavern" + ], + "objective": "MapFlag", + "prerequisiteIDs": [ + 1 + ], + "prologue": {}, + "epilogue": {}, + "allowInactivePOI": true + }, + { + "id": 3, + "name": "Vuelve a $(poi_3)", + "description": "Llévale la flor a Viv de vuelta a $(poi_3).", + "here": true, + "objective": "Travel", + "prerequisiteIDs": [ + 2 + ], + "prologue": {}, + "epilogue": { + "text": "Encuentras a Viv justo donde habíais quedado, y sir Donovan también está allí. Contempla fijamente el bastón recién reparado mientras Viv dirige la mirada hacia ti.", + "options": [ + { + "name": "Interrumpes la inspección de Donovan. \"¿Y qué hace el bastón?\"", + "text": "\"Nada, al menos aún no. Quizá con el tiempo lo haga.\" Recorre con la mano izquierda un grabado del bastón como si intentara extraerle sus secretos. \"Pero creo que tenemos otra cosa de la que hablar, algo potencialmente aún más importante que mi investigación.\"", + "options": [ + { + "name": "\"Te escucho.\"", + "text": "\"Has demostrado ser lo bastante de fiar para mi organización como para que me sienta capaz de revelarte su naturaleza, si es que no la has deducido ya. Dicho sin rodeos: mis socios y yo nos ganamos la vida con la obtención de información, su venta discreta y, en ocasiones, el papel en el que tú más has participado, su aplicación directa.\"", + "options": [ + { + "name": "(Continuar)", + "text": "\"Es propio de nuestro oficio que llegue a mis manos más información de la que se puede aprovechar, sobre todo a tiempo. Mi investigación es un intento de hallar formas de comunicarnos más rápido y de tener más ocasiones de actuar. A menudo hoy debemos tomar decisiones con un conocimiento incompleto, y conocimiento incompleto es todo lo que puedo ofrecerte ahora.\"", + "options": [ + { + "name": "(Continuar)", + "text": "\"Llevábamos un tiempo vigilando las actividades de varios magos hasta entonces desconocidos; parecían haber empezado a colaborar hacia algún objetivo mayor que ignoramos, con un grado impresionante de eficacia en sus acciones individuales.\"", + "options": [ + { + "name": "(Continuar)", + "text": "\"Hace varias semanas, sin embargo, un segundo grupo silenció al primero con rapidez y método; se los dio por muertos. Pero ahora se ha confirmado que los cinco fueron capturados con vida, y mi red ha determinado dónde creemos que los retienen.\"", + "options": [ + { + "name": "\"Así que esta es la parte en la que yo hago eso de la 'aplicación directa', ¿verdad?\"", + "text": "Donovan suelta una risa franca, aunque solemne. \"Por lo que he visto de tu trabajo, te creo capaz de ello. Pero esto no es algo que te esté pidiendo. Más bien es algo que te estoy ofreciendo.\"", + "options": [ + { + "name": "\"No estoy seguro de seguirte.\"", + "text": "\"La eficacia que has mostrado trabajando para mí rivaliza con la que habíamos visto en los magos capturados. Creo que, si los liberaras, podrías ganar aliados nuevos y poderosos. Y enfrentarte ahora a sus captores puede significar que te veas en un conflicto que iba a llegar de todos modos, pero en tus términos y en tu momento, no en los suyos.\"", + "options": [ + { + "name": "\"No creo estar preparado para esta clase de enfrentamiento.\" (Rechazar misión)", + "text": "\"Entonces quédate con uno de mis amuletos. Úsalo para contactarnos si cambias de idea.\"", + "options": [ + { + "name": "Entendido. Y gracias." + } + ] + }, + { + "action": [ + { + "setQuestFlag": { + "key": "exploreShand1", + "val": 8 + }, + "issueQuest": "52" + } + ], + "name": "\"La aventura llama. ¿Quién soy yo para decir que no?\" (Aceptar misión)" + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, + { + "condition": [ + { + "checkQuestFlag": "violetFlowerForViv" + }, + { + "checkQuestFlag": "scarletFlowerForViv" + } + ], + "name": "Darle las dos flores", + "text": "Viv pone cara de agradecimiento, pero adviertes debajo lo que podría ser una punzada de decepción. \"El arreglo fue suave. Inesperadamente. Ya no hacen falta.\" Donovan carraspea entonces, reclamando de nuevo tu atención.", + "options": [ + { + "name": "\"¿Y qué hace el bastón?\"", + "text": "\"Nada, al menos aún no. Quizá con el tiempo lo haga.\" Recorre con la mano izquierda un grabado del bastón como si intentara extraerle sus secretos. \"Pero creo que tenemos otra cosa de la que hablar, algo potencialmente aún más importante que mi investigación.\"", + "options": [ + { + "name": "\"Te escucho.\"", + "text": "\"Has demostrado ser lo bastante de fiar para mi organización como para que me sienta capaz de revelarte su naturaleza, si es que no la has deducido ya. Dicho sin rodeos: mis socios y yo nos ganamos la vida con la obtención de información, su venta discreta y, en ocasiones, el papel en el que tú más has participado, su aplicación directa.\"", + "options": [ + { + "name": "(Continuar)", + "text": "\"Es propio de nuestro oficio que llegue a mis manos más información de la que se puede aprovechar, sobre todo a tiempo. Mi investigación es un intento de hallar formas de comunicarnos más rápido y de tener más ocasiones de actuar. A menudo hoy debemos tomar decisiones con un conocimiento incompleto, y conocimiento incompleto es todo lo que puedo ofrecerte ahora.\"", + "options": [ + { + "name": "(Continuar)", + "text": "\"Llevábamos un tiempo vigilando las actividades de varios magos hasta entonces desconocidos; parecían haber empezado a colaborar hacia algún objetivo mayor que ignoramos, con un grado impresionante de eficacia en sus acciones individuales.\"", + "options": [ + { + "name": "(Continuar)", + "text": "\"Hace varias semanas, sin embargo, un segundo grupo silenció al primero con rapidez y método; se los dio por muertos. Pero ahora se ha confirmado que los cinco fueron capturados con vida, y mi red ha determinado dónde creemos que los retienen.\"", + "options": [ + { + "name": "\"Así que esta es la parte en la que yo hago eso de la 'aplicación directa', ¿verdad?\"", + "text": "Donovan suelta una risa franca, aunque solemne. \"Por lo que he visto de tu trabajo, te creo capaz de ello. Pero esto no es algo que te esté pidiendo. Más bien es algo que te estoy ofreciendo.\"", + "options": [ + { + "name": "\"No estoy seguro de seguirte.\"", + "text": "\"La eficacia que has mostrado trabajando para mí rivaliza con la que habíamos visto en los magos capturados. Creo que, si los liberaras, podrías ganar aliados nuevos y poderosos. Y enfrentarte ahora a sus captores puede significar que te veas en un conflicto que iba a llegar de todos modos, pero en tus términos y en tu momento, no en los suyos.\"", + "options": [ + { + "name": "\"No creo estar preparado para esta clase de enfrentamiento.\" (Rechazar misión)", + "text": "\"Entonces quédate con uno de mis amuletos. Úsalo para contactarnos si cambias de idea.\"", + "options": [ + { + "name": "Entendido. Y gracias." + } + ] + }, + { + "action": [ + { + "setQuestFlag": { + "key": "exploreShand1", + "val": 8 + }, + "issueQuest": "52" + } + ], + "name": "\"La aventura llama. ¿Quién soy yo para decir que no?\" (Aceptar misión)" + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, + { + "action": [ + { + "setQuestFlag": { + "key": "violetFlowerForViv", + "val": 2 + } + } + ], + "condition": [ + { + "checkQuestFlag": "violetFlowerForViv" + } + ], + "name": "Darle la flor violeta", + "text": "Viv niega con la cabeza. \"Aventureros cabezotas... No es la buena. Pero resulta que la flor no hacía falta.\" Donovan carraspea entonces, reclamando de nuevo tu atención.", + "options": [ + { + "name": "\"¿Y qué hace el bastón?\"", + "text": "\"Nada, al menos aún no. Quizá con el tiempo lo haga.\" Recorre con la mano izquierda un grabado del bastón como si intentara extraerle sus secretos. \"Pero creo que tenemos otra cosa de la que hablar, algo potencialmente aún más importante que mi investigación.\"", + "options": [ + { + "name": "\"Te escucho.\"", + "text": "\"Has demostrado ser lo bastante de fiar para mi organización como para que me sienta capaz de revelarte su naturaleza, si es que no la has deducido ya. Dicho sin rodeos: mis socios y yo nos ganamos la vida con la obtención de información, su venta discreta y, en ocasiones, el papel en el que tú más has participado, su aplicación directa.\"", + "options": [ + { + "name": "(Continuar)", + "text": "\"Es propio de nuestro oficio que llegue a mis manos más información de la que se puede aprovechar, sobre todo a tiempo. Mi investigación es un intento de hallar formas de comunicarnos más rápido y de tener más ocasiones de actuar. A menudo hoy debemos tomar decisiones con un conocimiento incompleto, y conocimiento incompleto es todo lo que puedo ofrecerte ahora.\"", + "options": [ + { + "name": "(Continuar)", + "text": "\"Llevábamos un tiempo vigilando las actividades de varios magos hasta entonces desconocidos; parecían haber empezado a colaborar hacia algún objetivo mayor que ignoramos, con un grado impresionante de eficacia en sus acciones individuales.\"", + "options": [ + { + "name": "(Continuar)", + "text": "\"Hace varias semanas, sin embargo, un segundo grupo silenció al primero con rapidez y método; se los dio por muertos. Pero ahora se ha confirmado que los cinco fueron capturados con vida, y mi red ha determinado dónde creemos que los retienen.\"", + "options": [ + { + "name": "\"Así que esta es la parte en la que yo hago eso de la 'aplicación directa', ¿verdad?\"", + "text": "Donovan suelta una risa franca, aunque solemne. \"Por lo que he visto de tu trabajo, te creo capaz de ello. Pero esto no es algo que te esté pidiendo. Más bien es algo que te estoy ofreciendo.\"", + "options": [ + { + "name": "\"No estoy seguro de seguirte.\"", + "text": "\"La eficacia que has mostrado trabajando para mí rivaliza con la que habíamos visto en los magos capturados. Creo que, si los liberaras, podrías ganar aliados nuevos y poderosos. Y enfrentarte ahora a sus captores puede significar que te veas en un conflicto que iba a llegar de todos modos, pero en tus términos y en tu momento, no en los suyos.\"", + "options": [ + { + "name": "\"No creo estar preparado para esta clase de enfrentamiento.\" (Rechazar misión)", + "text": "\"Entonces quédate con uno de mis amuletos. Úsalo para contactarnos si cambias de idea.\"", + "options": [ + { + "name": "Entendido. Y gracias." + } + ] + }, + { + "action": [ + { + "setQuestFlag": { + "key": "exploreShand1", + "val": 8 + }, + "issueQuest": "52" + } + ], + "name": "\"La aventura llama. ¿Quién soy yo para decir que no?\" (Aceptar misión)" + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, + { + "action": [ + { + "setQuestFlag": { + "key": "scarletFlowerForViv", + "val": 2 + } + } + ], + "condition": [ + { + "checkQuestFlag": "scarletFlowerForViv" + } + ], + "name": "Darle la flor carmesí", + "text": "Viv sonríe y coge la flor, colocándosela detrás de la oreja. \"[i]Tintín[] aceptado. La flor no era para el arreglo.\" Donovan carraspea entonces, reclamando de nuevo tu atención.", + "options": [ + { + "name": "\"¿Y qué hace el bastón?\"", + "text": "\"Nada, al menos aún no. Quizá con el tiempo lo haga.\" Recorre con la mano izquierda un grabado del bastón como si intentara extraerle sus secretos. \"Pero creo que tenemos otra cosa de la que hablar, algo potencialmente aún más importante que mi investigación.\"", + "options": [ + { + "name": "\"Te escucho.\"", + "text": "\"Has demostrado ser lo bastante de fiar para mi organización como para que me sienta capaz de revelarte su naturaleza, si es que no la has deducido ya. Dicho sin rodeos: mis socios y yo nos ganamos la vida con la obtención de información, su venta discreta y, en ocasiones, el papel en el que tú más has participado, su aplicación directa.\"", + "options": [ + { + "name": "(Continuar)", + "text": "\"Es propio de nuestro oficio que llegue a mis manos más información de la que se puede aprovechar, sobre todo a tiempo. Mi investigación es un intento de hallar formas de comunicarnos más rápido y de tener más ocasiones de actuar. A menudo hoy debemos tomar decisiones con un conocimiento incompleto, y conocimiento incompleto es todo lo que puedo ofrecerte ahora.\"", + "options": [ + { + "name": "(Continuar)", + "text": "\"Llevábamos un tiempo vigilando las actividades de varios magos hasta entonces desconocidos; parecían haber empezado a colaborar hacia algún objetivo mayor que ignoramos, con un grado impresionante de eficacia en sus acciones individuales.\"", + "options": [ + { + "name": "(Continuar)", + "text": "\"Hace varias semanas, sin embargo, un segundo grupo silenció al primero con rapidez y método; se los dio por muertos. Pero ahora se ha confirmado que los cinco fueron capturados con vida, y mi red ha determinado dónde creemos que los retienen.\"", + "options": [ + { + "name": "\"Así que esta es la parte en la que yo hago eso de la 'aplicación directa', ¿verdad?\"", + "text": "Donovan suelta una risa franca, aunque solemne. \"Por lo que he visto de tu trabajo, te creo capaz de ello. Pero esto no es algo que te esté pidiendo. Más bien es algo que te estoy ofreciendo.\"", + "options": [ + { + "name": "\"No estoy seguro de seguirte.\"", + "text": "\"La eficacia que has mostrado trabajando para mí rivaliza con la que habíamos visto en los magos capturados. Creo que, si los liberaras, podrías ganar aliados nuevos y poderosos. Y enfrentarte ahora a sus captores puede significar que te veas en un conflicto que iba a llegar de todos modos, pero en tus términos y en tu momento, no en los suyos.\"", + "options": [ + { + "name": "\"No creo estar preparado para esta clase de enfrentamiento.\" (Rechazar misión)", + "text": "\"Entonces quédate con uno de mis amuletos. Úsalo para contactarnos si cambias de idea.\"", + "options": [ + { + "name": "Entendido. Y gracias." + } + ] + }, + { + "action": [ + { + "setQuestFlag": { + "key": "exploreShand1", + "val": 8 + }, + "issueQuest": "52" + }, + { + "setQuestFlag": { + "key": "mainQuest", + "val": 2 + } + } + ], + "name": "\"La aventura llama. ¿Quién soy yo para decir que no?\" (Aceptar misión)" + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + } + ], + "storyQuest": true + }, + { + "id": 52, + "isTemplate": true, + "name": "El enemigo de mi enemigo...", + "description": "Sir Donovan te ha dado cinco ubicaciones donde cree que retienen a unos magos poderosos.", + "offerDialog": {}, + "prologue": { + "action": [ + { + "setQuestFlag": { + "key": "mainQuest", + "val": 2 + } + } + ], + "text": "Buena suerte", + "options": [ + { + "name": "(Continuar)" + } + ] + }, + "epilogue": {}, + "failureDialog": {}, + "declinedDialog": { + "text": "Vuelve mañana y quizás tenga algo que sí quieras hacer.", + "options": [ + { + "name": "(Captando la indirecta, que de sutil tiene poco, te marchas.)" + } + ] + }, + "stages": [ + { + "id": 1, + "name": "Encuentra el Castillo Negro", + "description": "Encuentra el Castillo Negro en el bioma de pantano.", + "count3": 1, + "POITags": [ + "BiomeBlack", + "Chapter1Boss" + ], + "objective": "Travel", + "prologue": {}, + "epilogue": {}, + "allowInactivePOI": true + }, + { + "id": 2, + "name": "Encuentra el Castillo Azul", + "description": "Encuentra el Castillo Azul en el bioma de isla.", + "count3": 1, + "POITags": [ + "BiomeBlue", + "Chapter1Boss" + ], + "objective": "Travel", + "prologue": {}, + "epilogue": {}, + "allowInactivePOI": true + }, + { + "id": 3, + "name": "Encuentra el Castillo Verde", + "description": "Encuentra el Castillo Verde en el bioma de bosque.", + "count3": 1, + "POITags": [ + "BiomeGreen", + "Chapter1Boss" + ], + "objective": "Travel", + "prologue": {}, + "epilogue": {}, + "allowInactivePOI": true + }, + { + "id": 4, + "name": "Encuentra el Castillo Rojo", + "description": "Encuentra el Castillo Rojo en el bioma de montaña.", + "count3": 1, + "POITags": [ + "BiomeRed", + "Chapter1Boss" + ], + "objective": "Travel", + "prologue": {}, + "epilogue": {}, + "allowInactivePOI": true + }, + { + "id": 5, + "name": "Encuentra el Castillo Blanco", + "description": "Encuentra el Castillo Blanco en el bioma de llanuras.", + "count3": 1, + "POITags": [ + "BiomeWhite", + "Chapter1Boss" + ], + "objective": "Travel", + "prologue": {}, + "epilogue": {}, + "allowInactivePOI": true + }, + { + "id": 6, + "name": "Rescata al cautivo negro", + "description": "Libera al mago que retienen cautivo dentro del Castillo Negro.", + "mapFlag": "Ch1BlackCastleComplete", + "POITags": [ + "BiomeBlack", + "Chapter1Boss" + ], + "objective": "QuestFlag", + "prerequisiteIDs": [ + 1 + ], + "prologue": {}, + "epilogue": {}, + "allowInactivePOI": true + }, + { + "id": 7, + "name": "Rescata al cautivo azul", + "description": "Libera al mago que retienen cautivo dentro del Castillo Azul.", + "mapFlag": "Ch1BlueCastleComplete", + "POITags": [ + "BiomeBlue", + "Chapter1Boss" + ], + "objective": "QuestFlag", + "prerequisiteIDs": [ + 2 + ], + "prologue": {}, + "epilogue": {}, + "allowInactivePOI": true + }, + { + "id": 8, + "name": "Rescata al cautivo verde", + "description": "Libera al mago que retienen cautivo dentro del Castillo Verde.", + "mapFlag": "Ch1GreenCastleComplete", + "POITags": [ + "BiomeGreen", + "Chapter1Boss" + ], + "objective": "QuestFlag", + "prerequisiteIDs": [ + 3 + ], + "prologue": {}, + "epilogue": {}, + "allowInactivePOI": true + }, + { + "id": 9, + "name": "Rescata al cautivo rojo", + "description": "Libera al mago que retienen cautivo dentro del Castillo Rojo.", + "mapFlag": "Ch1RedCastleComplete", + "POITags": [ + "BiomeRed", + "Chapter1Boss" + ], + "objective": "QuestFlag", + "prerequisiteIDs": [ + 4 + ], + "prologue": {}, + "epilogue": {}, + "allowInactivePOI": true + }, + { + "id": 10, + "name": "Rescata al cautivo blanco", + "description": "Libera al mago que retienen cautivo dentro del Castillo Blanco.", + "mapFlag": "Ch1WhiteCastleComplete", + "POITags": [ + "BiomeWhite", + "Chapter1Boss" + ], + "objective": "QuestFlag", + "prerequisiteIDs": [ + 5 + ], + "prologue": {}, + "epilogue": {}, + "allowInactivePOI": true + }, + { + "id": 11, + "name": "Consigue respuestas", + "description": "Vuelve al punto de aparición en el centro de los yermos y habla con el mago que hay allí.", + "mapFlag": "mainQuest", + "mapFlagValue": 3, + "POITags": [ + "Spawn" + ], + "objective": "QuestFlag", + "prerequisiteIDs": [ + 6, + 7, + 8, + 9, + 10 + ], + "prologue": {}, + "epilogue": {} + } + ], + "storyQuest": true + }, + { + "id": 53, + "isTemplate": true, + "name": "Bienvenido a Shandalar", + "description": "Aprende sobre tu entorno.", + "offerDialog": {}, + "prologue": {}, + "epilogue": {}, + "failureDialog": {}, + "declinedDialog": {}, + "stages": [ + { + "id": 1, + "name": "Habla con el mago cercano", + "description": "Aquí dentro no hay mucho más que hacer que hablar con él, y cualquier información es más de la que tienes ahora mismo.", + "mapFlag": "mainQuest", + "mapFlagValue": 1, + "objective": "QuestFlag", + "prologue": {}, + "epilogue": {}, + "POIToken": "" + }, + { + "id": 2, + "name": "Sal de la cueva", + "description": "El portal está abierto y ya puedes marcharte.", + "anyPOI": true, + "mapFlag": "", + "mapFlagValue": 1, + "objective": "Leave", + "prerequisiteIDs": [ + 1 + ], + "prologue": {}, + "epilogue": { + "text": "Te encuentras varado en un plano desconocido. Es hora de orientarse.", + "options": [ + { + "name": "(Continuar)", + "action": [ + { + "removeItem": "", + "setColorIdentity": "", + "advanceQuestFlag": "", + "advanceMapFlag": "", + "setQuestFlag": { + "key": "shandRep1", + "val": 1 + }, + "setMapFlag": { + "key": "" + }, + "issueQuest": "30", + "POIReference": "" + } + ] + } + ] + }, + "POIToken": "" + } + ], + "storyQuest": true + } +] diff --git a/forge-gui/res/adventure/Shandalar/world/shops-es-ES.json b/forge-gui/res/adventure/Shandalar/world/shops-es-ES.json new file mode 100644 index 000000000000..dbc81d770a21 --- /dev/null +++ b/forge-gui/res/adventure/Shandalar/world/shops-es-ES.json @@ -0,0 +1,7760 @@ +[ + { + "name": "Black1", + "description": "Muerte segura", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "RotatingShop", + "overlaySprite": "Overlay6Black", + "rewards": [ + { + "count": 6, + "cardText": "(destroy|exile) target|sacrifice", + "colors": [ + "black" + ] + }, + { + "count": 2, + "cardText": "(destroy|exile) target|sacrifice" + } + ] + }, + { + "name": "Black2", + "description": "Marcha de los Resurgidos", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "RotatingShop", + "overlaySprite": "Overlay6Black", + "rewards": [ + { + "count": 6, + "cardText": "destroyed|dies|return.*(hand|battlefield|library|to play)|put.*battlefield from", + "colors": [ + "black" + ] + }, + { + "count": 2, + "cardText": "destroyed|dies|return.*(hand|battlefield|library|to play)|put.*battlefield from" + } + ] + }, + { + "name": "PowerNine", + "description": "Club de Grandes Apostadores", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "RotatingShop", + "overlaySprite": "Overlay6Black", + "rewards": [ + { + "type": "card", + "probability": 1, + "count": 1, + "cardName": "Black Lotus", + "editions": [ + "LEA" + ] + }, + { + "type": "card", + "probability": 1, + "count": 1, + "cardName": "Mox Pearl", + "editions": [ + "LEA" + ] + }, + { + "type": "card", + "probability": 1, + "count": 1, + "cardName": "Mox Sapphire", + "editions": [ + "LEA" + ] + }, + { + "type": "card", + "probability": 1, + "count": 1, + "cardName": "Mox Emerald", + "editions": [ + "LEA" + ] + }, + { + "type": "card", + "probability": 1, + "count": 1, + "cardName": "Mox Ruby", + "editions": [ + "LEA" + ] + }, + { + "type": "card", + "probability": 1, + "count": 1, + "cardName": "Mox Jet", + "editions": [ + "LEA" + ] + }, + { + "type": "card", + "probability": 1, + "count": 1, + "cardName": "Time Walk", + "editions": [ + "LEA" + ] + }, + { + "type": "card", + "probability": 1, + "count": 1, + "cardName": "Ancestral Recall", + "editions": [ + "LEA" + ] + }, + { + "type": "card", + "probability": 1, + "count": 1, + "cardName": "Timetwister", + "editions": [ + "LEA" + ] + } + ] + }, + { + "name": "Black3", + "description": "Extracción de esencia", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "RotatingShop", + "overlaySprite": "Overlay6Black", + "rewards": [ + { + "count": 6, + "cardText": "pay.*life.*:|(lose|gain).*life|deal.*damage", + "colors": [ + "black" + ] + }, + { + "count": 2, + "cardText": "pay.*life.*:|(lose|gain).*life|deal.*damage" + } + ] + }, + { + "name": "Black4", + "description": "Tutor demoníaco", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "RotatingShop", + "overlaySprite": "Overlay6Black", + "rewards": [ + { + "count": 6, + "cardText": "search|seek|reveal.*library|choose|choice|unless", + "colors": [ + "black" + ] + }, + { + "count": 2, + "cardText": "search|seek|reveal.*library|choose|choice|unless" + } + ] + }, + { + "name": "Black5", + "description": "Mutaciones Grotescas", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "RotatingShop", + "overlaySprite": "Overlay6Black", + "rewards": [ + { + "count": 6, + "cardText": "deathtouch|fear|intimidate|menace|ninjutsu|regenerate\b", + "colors": [ + "black" + ] + }, + { + "count": 2, + "cardText": "deathtouch|fear|intimidate|menace|ninjutsu|regenerate\b" + } + ] + }, + { + "name": "Black6", + "description": "Bendiciones Pirexianas", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "RotatingShop", + "overlaySprite": "Overlay6Black", + "rewards": [ + { + "count": 6, + "cardText": "([+-])\\d?/([+-])\\d?", + "colors": [ + "black" + ] + }, + { + "count": 2, + "cardText": "([+-])\\d?/([+-])\\d?" + } + ] + }, + { + "name": "Blue1", + "description": "Magia de control", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "RotatingShop", + "overlaySprite": "Overlay6Blue", + "rewards": [ + { + "count": 6, + "cardText": "return.*to.*(hand|top of.*library)|gain(s)? control of|mill|tap |untap|counter target", + "colors": [ + "blue" + ] + }, + { + "count": 2, + "cardText": "return.*to.*(hand|top of.*library)|gain(s)? control of|mill|tap |untap|counter target" + } + ] + }, + { + "name": "Blue2", + "description": "Excavación Tolariana", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "RotatingShop", + "overlaySprite": "Overlay6Blue", + "rewards": [ + { + "count": 6, + "cardText": "artifact|historic|explores|connive|clue token|investigate", + "colors": [ + "blue" + ] + }, + { + "count": 2, + "cardText": "artifact|historic|explores|connive|clue token|investigate" + } + ] + }, + { + "name": "Blue3", + "description": "Capas de Invisibilidad", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "RotatingShop", + "overlaySprite": "Overlay6Blue", + "rewards": [ + { + "count": 6, + "cardText": "flying|prowess|unblockable|hexproof|shroud|morph|ninjutsu|phas(ing|(es (in|out)))", + "colors": [ + "blue" + ] + }, + { + "count": 2, + "cardText": "flying|prowess|unblockable|hexproof|shroud|morph|ninjutsu|phas(ing|(es (in|out)))" + } + ] + }, + { + "name": "Blue4", + "description": "Juegos de la Mente", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "RotatingShop", + "overlaySprite": "Overlay6Blue", + "rewards": [ + { + "count": 6, + "cardText": "(change|copy).*(that|target)|color(s|ed)?\\b|land type|mana|name|flashback|overload|splice|rebound|buyback|morph|madness|delve|instead", + "colors": [ + "blue" + ] + }, + { + "count": 2, + "cardText": "(change|copy).*(that|target)|color(s|ed)?\\b|land type|mana|name|flashback|overload|splice|rebound|buyback|morph|madness|delve|instead" + } + ] + }, + { + "name": "Blue5", + "description": "Biblioteca de Lat-Nam", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "RotatingShop", + "overlaySprite": "Overlay6Blue", + "rewards": [ + { + "count": 6, + "cardText": "draw(s)?|(exile|reveal|look|search).*library|scry|seek|conjure", + "colors": [ + "blue" + ] + }, + { + "count": 2, + "cardText": "draw(s)?|(exile|reveal|look|search).*library|scry|seek|conjure" + } + ] + }, + { + "name": "Blue6", + "description": "Normas y Reglamentos", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "RotatingShop", + "overlaySprite": "Overlay6Blue", + "rewards": [ + { + "count": 6, + "cardText": "can't|must|whenever|unless|becomes|until|upkeep|(leave|enter)(s)|doesn't? .*(play|battlefield)|each", + "colors": [ + "blue" + ] + }, + { + "count": 2, + "cardText": "can't|must|whenever|unless|becomes|until|upkeep|(leave|enter)(s)|doesn't? .*(play|battlefield)|each" + } + ] + }, + { + "name": "Green1", + "description": "Crecimiento Explosivo", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "RotatingShop", + "overlaySprite": "Overlay6Green", + "rewards": [ + { + "count": 6, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "cardText": "counter.*on |counter.*distribute|distribute.*counter|proliferate|creature(s)? from", + "colors": [ + "green" + ] + }, + { + "count": 1, + "cardText": "([+-])\\d?/([+-])\\d?", + "colors": [ + "green" + ] + } + ] + }, + { + "count": 2, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "cardText": "counter.*on |counter.*distribute|distribute.*counter|proliferate|creature(s)? from" + }, + { + "count": 1, + "cardText": "([+-])\\d?/([+-])\\d?" + } + ] + } + ] + }, + { + "name": "Green2", + "description": "Expediciones a la Jungla", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "RotatingShop", + "overlaySprite": "Overlay6Green", + "rewards": [ + { + "count": 6, + "cardText": "still a land|(exile|reveal|look|search).*library|scry|explores|additional land|land from.*(graveyard|hand)|put.*land(s)?from|landfall", + "colors": [ + "green" + ] + }, + { + "count": 2, + "cardText": "still a land|(exile|reveal|look|search).*library|scry|explores|additional land|land from.*(graveyard|hand)|put.*land(s)?from|landfall" + } + ] + }, + { + "name": "Green3", + "description": "Depredadores Dominantes", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "RotatingShop", + "overlaySprite": "Overlay6Green", + "rewards": [ + { + "count": 6, + "cardText": " fight(s)?|deal(s)? damage equal|(power|toughness) equal to the number", + "colors": [ + "green" + ] + }, + { + "count": 2, + "cardText": " fight(s)?|deal(s)? damage equal|(power|toughness) equal to the number" + } + ] + }, + { + "name": "Green4", + "description": "Selección Natural", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "RotatingShop", + "overlaySprite": "Overlay6Green", + "rewards": [ + { + "count": 6, + "cardText": "trample|reach|hexproof|regenerate|shroud|deathtouch", + "colors": [ + "green" + ] + }, + { + "count": 2, + "cardText": "trample|reach|hexproof|regenerate|shroud|deathtouch" + } + ] + }, + { + "name": "Green5", + "description": "Ciclo de la vida", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "RotatingShop", + "overlaySprite": "Overlay6Green", + "rewards": [ + { + "count": 6, + "cardText": "gain.*life|token|draw|food", + "colors": [ + "green" + ] + }, + { + "count": 2, + "cardText": "gain.*life|token|draw|food" + } + ] + }, + { + "name": "Green6", + "description": "Refugio verde", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "RotatingShop", + "overlaySprite": "Overlay6Green", + "rewards": [ + { + "count": 6, + "cardText": "tap.*mana|:.*add.*(\\{[gburw]\\}|to your mana)|untap", + "colors": [ + "green" + ] + }, + { + "count": 2, + "cardText": "tap.*mana|:.*add.*(\\{[gburw]\\}|to your mana)|untap" + } + ] + }, + { + "name": "Red1", + "description": "Arde, Nena, Arde", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "RotatingShop", + "overlaySprite": "Overlay6Red", + "rewards": [ + { + "count": 6, + "cardText": "deal.*damage|destroy", + "colors": [ + "red" + ] + }, + { + "count": 2, + "cardText": "deal.*damage|destroy" + } + ] + }, + { + "name": "Red2", + "description": "Monstruos como armas", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "RotatingShop", + "overlaySprite": "Overlay6Red", + "rewards": [ + { + "count": 6, + "cardText": "haste|(first |double )strike | prowess|return .* to hand at end of turn|At the beginning of (your|the) end step, (sacrifice|return .* to (your|its owner).*hand)", + "colors": [ + "red" + ] + }, + { + "count": 2, + "cardText": "haste|(first |double )strike | prowess|return .* to hand at end of turn|At the beginning of (your|the) end step, (sacrifice|return .* to (your|its owner).*hand)" + } + ] + }, + { + "name": "Red3", + "description": "Reserva secreta de mana", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "RotatingShop", + "overlaySprite": "Overlay6Red", + "rewards": [ + { + "count": 6, + "cardText": "each creature|each player|any player may|unless|choose|choice", + "colors": [ + "red" + ] + }, + { + "count": 2, + "cardText": "each creature|each player|any player may|unless|choose|choice" + } + ] + }, + { + "name": "Red4", + "description": "Golpe sísmico", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "RotatingShop", + "overlaySprite": "Overlay6Red", + "rewards": [ + { + "count": 6, + "cardText": "each mountain|number of mountains|sacrifice.*:", + "colors": [ + "red" + ] + }, + { + "count": 2, + "cardText": "each mountain|number of mountains|sacrifice.*:" + } + ] + }, + { + "name": "Red5", + "description": "Instinto destructivo", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "RotatingShop", + "overlaySprite": "Overlay6Red", + "rewards": [ + { + "count": 6, + "cardText": "gain control of|when.*(cast|copy).*spell|if able", + "colors": [ + "red" + ] + }, + { + "count": 2, + "cardText": "gain control of|when.*(cast|copy).*spell|if able" + } + ] + }, + { + "name": "Red6", + "description": "Rueda del destino", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "RotatingShop", + "overlaySprite": "Overlay6Red", + "rewards": [ + { + "count": 6, + "cardText": "top of your library|random|roll.*di(c)?e|flip .*coin|coin .*flip|draw .*discard|discard .*draw", + "colors": [ + "red" + ] + }, + { + "count": 2, + "cardText": "top of your library|random|roll.*di(c)?e|flip .*coin|coin .*flip|draw .*discard|discard .*draw" + } + ] + }, + { + "name": "White1", + "description": "Más Vale Prevenir", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "RotatingShop", + "overlaySprite": "Overlay6White", + "rewards": [ + { + "count": 6, + "cardText": "Prevent.*Damage", + "colors": [ + "white" + ] + }, + { + "count": 2, + "cardText": "Prevent.*Damage" + } + ] + }, + { + "name": "White2", + "description": "Que Curar", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "RotatingShop", + "overlaySprite": "Overlay6White", + "rewards": [ + { + "count": 6, + "cardText": "gain.*life|life total", + "colors": [ + "white" + ] + }, + { + "count": 2, + "cardText": "gain.*life|life total" + } + ] + }, + { + "name": "White3", + "description": "Espadas, Rejas de Arado y Más Allá", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "RotatingShop", + "overlaySprite": "Overlay6White", + "rewards": [ + { + "count": 6, + "cardText": "(Destroy|exile).*(attacking|defending|tapped|with)", + "colors": [ + "white" + ] + }, + { + "count": 2, + "cardText": "(Destroy|exile).*(attacking|defending|tapped|with)" + } + ] + }, + { + "name": "White4", + "description": "Solo Medio Muerto", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "RotatingShop", + "overlaySprite": "Overlay6White", + "rewards": [ + { + "count": 6, + "cardText": "Return.*to.*(your hand|battlefield|play)", + "colors": [ + "white" + ] + }, + { + "count": 2, + "cardText": "Return.*to.*(your hand|battlefield|play)" + } + ] + }, + { + "name": "White5", + "description": "Pesos y Medidas", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "RotatingShop", + "overlaySprite": "Overlay6White", + "rewards": [ + { + "count": 6, + "cardText": "pays|more|less|tap target creature", + "colors": [ + "white" + ] + }, + { + "count": 2, + "cardText": "pays|more|less|tap target creature" + } + ] + }, + { + "name": "White6", + "description": "Dogma Estricto", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "RotatingShop", + "overlaySprite": "Overlay6White", + "rewards": [ + { + "count": 6, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "cardText": "(Vigilance|Lifelink|Protection|First Strike|Double Strike|Flying)", + "colors": [ + "white" + ] + }, + { + "count": 1, + "cardText": "([+-])\\d?/([+-])\\d?", + "colors": [ + "white" + ] + } + ] + }, + { + "count": 2, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "cardText": "(Vigilance|Lifelink|Protection|First Strike|Double Strike|Flying)" + }, + { + "count": 1, + "cardText": "([+-])\\d?/([+-])\\d?" + } + ] + } + ] + }, + { + "name": "Graveyard", + "description": "Mejor Llama a Sol", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "BlackShop", + "overlaySprite": "Overlay8Red", + "rewards": [ + { + "count": 8, + "deckNeeds": [ + "Ability$Graveyard" + ] + } + ] + }, + { + "name": "WhiteEquipment", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "EquipmentShop", + "rewards": [ + { + "type": "item", + "count": 1, + "itemName": "Life Amulet" + }, + { + "type": "item", + "count": 1, + "itemName": "Gold Armor" + }, + { + "type": "item", + "count": 1, + "itemName": "Mirror Shield" + }, + { + "type": "item", + "count": 1, + "itemName": "Entrancing Lyre" + }, + { + "type": "item", + "count": 1, + "itemName": "Nine-Ringed Bo" + }, + { + "type": "item", + "count": 1, + "itemName": "Kite Shield" + } + ] + }, + { + "name": "WhiteItems", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "ItemShop", + "rewards": [ + { + "type": "item", + "count": 1, + "itemName": "White rune" + }, + { + "type": "item", + "count": 1, + "itemName": "White Staff" + }, + { + "type": "item", + "count": 1, + "itemName": "Cursed Treasure" + }, + { + "type": "item", + "count": 1, + "itemName": "Farmer's Tools" + }, + { + "type": "item", + "count": 1, + "itemName": "Piper's Charm" + }, + { + "type": "item", + "count": 1, + "itemName": "Sleep Wand" + }, + { + "type": "item", + "count": 1, + "itemName": "Hill Giant Club" + }, + { + "type": "life", + "count": 1 + } + ] + }, + { + "name": "RedEquipment", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "EquipmentShop", + "rewards": [ + { + "type": "item", + "count": 1, + "itemName": "Axt" + }, + { + "type": "item", + "count": 1, + "itemName": "Aladdin's Ring" + }, + { + "type": "item", + "count": 1, + "itemName": "Flame Sword" + }, + { + "type": "item", + "count": 1, + "itemName": "Heavy Arbalest" + }, + { + "type": "item", + "count": 1, + "itemName": "Jeweled Amulet" + }, + { + "type": "item", + "count": 1, + "itemName": "Ring of Immortals" + } + ] + }, + { + "name": "RedItems", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "ItemShop", + "rewards": [ + { + "type": "item", + "count": 1, + "itemName": "Red rune" + }, + { + "type": "item", + "count": 1, + "itemName": "Red Staff" + }, + { + "type": "item", + "count": 1, + "itemName": "Cursed Treasure" + }, + { + "type": "item", + "count": 1, + "itemName": "Farmer's Tools" + }, + { + "type": "item", + "count": 1, + "itemName": "Piper's Charm" + }, + { + "type": "item", + "count": 1, + "itemName": "Sleep Wand" + }, + { + "type": "item", + "count": 1, + "itemName": "Hill Giant Club" + }, + { + "type": "life", + "count": 1 + } + ] + }, + { + "name": "BlueEquipment", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "EquipmentShop", + "rewards": [ + { + "type": "item", + "count": 1, + "itemName": "Traveler's Amulet" + }, + { + "type": "item", + "count": 1, + "itemName": "Magic Shard" + }, + { + "type": "item", + "count": 1, + "itemName": "Spell Book" + }, + { + "type": "item", + "count": 1, + "itemName": "Mithril Armor" + }, + { + "type": "item", + "count": 1, + "itemName": "Mithril Boots" + }, + { + "type": "item", + "count": 1, + "itemName": "Mithril Shield" + } + ] + }, + { + "name": "BlueItems", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "ItemShop", + "rewards": [ + { + "type": "item", + "count": 1, + "itemName": "Blue rune" + }, + { + "type": "item", + "count": 1, + "itemName": "Blue Staff" + }, + { + "type": "item", + "count": 1, + "itemName": "Cursed Treasure" + }, + { + "type": "item", + "count": 1, + "itemName": "Farmer's Tools" + }, + { + "type": "item", + "count": 1, + "itemName": "Piper's Charm" + }, + { + "type": "item", + "count": 1, + "itemName": "Sleep Wand" + }, + { + "type": "item", + "count": 1, + "itemName": "Hill Giant Club" + }, + { + "type": "life", + "count": 1 + } + ] + }, + { + "name": "BlackEquipment", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "EquipmentShop", + "rewards": [ + { + "type": "item", + "count": 1, + "itemName": "Death Ring" + }, + { + "type": "item", + "count": 1, + "itemName": "Dark Amulet" + }, + { + "type": "item", + "count": 1, + "itemName": "Mad Staff" + }, + { + "type": "item", + "count": 1, + "itemName": "Dark Armor" + }, + { + "type": "item", + "count": 1, + "itemName": "Dark Boots" + }, + { + "type": "item", + "count": 1, + "itemName": "Dark Shield" + } + ] + }, + { + "name": "BlackItems", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "ItemShop", + "rewards": [ + { + "type": "item", + "count": 1, + "itemName": "Black rune" + }, + { + "type": "item", + "count": 1, + "itemName": "Black Staff" + }, + { + "type": "item", + "count": 1, + "itemName": "Cursed Treasure" + }, + { + "type": "item", + "count": 1, + "itemName": "Farmer's Tools" + }, + { + "type": "item", + "count": 1, + "itemName": "Piper's Charm" + }, + { + "type": "item", + "count": 1, + "itemName": "Sleep Wand" + }, + { + "type": "item", + "count": 1, + "itemName": "Hill Giant Club" + }, + { + "type": "life", + "count": 1 + } + ] + }, + { + "name": "GreenEquipment", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "EquipmentShop", + "rewards": [ + { + "type": "item", + "count": 1, + "itemName": "Jungle Shield" + }, + { + "type": "item", + "count": 1, + "itemName": "Ring of Three Wishes" + }, + { + "type": "item", + "count": 1, + "itemName": "Heart-Piercer" + }, + { + "type": "item", + "count": 1, + "itemName": "Wood Bow" + }, + { + "type": "item", + "count": 1, + "itemName": "Steel Sword" + }, + { + "type": "item", + "count": 1, + "itemName": "Unerring Sling" + } + ] + }, + { + "name": "GreenItems", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "ItemShop", + "rewards": [ + { + "type": "item", + "count": 1, + "itemName": "Green rune" + }, + { + "type": "item", + "count": 1, + "itemName": "Green Staff" + }, + { + "type": "item", + "count": 1, + "itemName": "Cursed Treasure" + }, + { + "type": "item", + "count": 1, + "itemName": "Farmer's Tools" + }, + { + "type": "item", + "count": 1, + "itemName": "Piper's Charm" + }, + { + "type": "item", + "count": 1, + "itemName": "Sleep Wand" + }, + { + "type": "item", + "count": 1, + "itemName": "Hill Giant Club" + }, + { + "type": "life", + "count": 1 + } + ] + }, + { + "name": "Equipment", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "EquipmentShop", + "rewards": [ + { + "type": "item", + "count": 1, + "itemName": "Steel Boots" + }, + { + "type": "item", + "count": 1, + "itemName": "Steel Shield" + }, + { + "type": "item", + "count": 1, + "itemName": "Steel Armor" + }, + { + "type": "item", + "count": 1, + "itemName": "Iron Boots" + }, + { + "type": "item", + "count": 1, + "itemName": "Iron Shield" + }, + { + "type": "item", + "count": 1, + "itemName": "Iron Armor" + } + ] + }, + { + "name": "Swamp", + "description": "El Gremio del Cartógrafo", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "LandShop", + "unlimited": true, + "rewards": [ + { + "count": 4, + "type": "landSketchbookShop" + }, + { + "count": 4, + "cardName": "Snow-Covered Swamp" + } + ] + }, + { + "name": "Forest", + "description": "El Gremio del Cartógrafo", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "LandShop", + "unlimited": true, + "rewards": [ + { + "count": 4, + "type": "landSketchbookShop" + }, + { + "count": 4, + "cardName": "Snow-Covered Forest" + } + ] + }, + { + "name": "Mountain", + "description": "El Gremio del Cartógrafo", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "LandShop", + "unlimited": true, + "rewards": [ + { + "count": 4, + "type": "landSketchbookShop" + }, + { + "count": 4, + "cardName": "Snow-Covered Mountain" + } + ] + }, + { + "name": "Island", + "description": "El Gremio del Cartógrafo", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "LandShop", + "unlimited": true, + "rewards": [ + { + "count": 4, + "type": "landSketchbookShop" + }, + { + "count": 4, + "cardName": "Snow-Covered Island" + } + ] + }, + { + "name": "Plains", + "description": "El Gremio del Cartógrafo", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "LandShop", + "unlimited": true, + "rewards": [ + { + "count": 4, + "type": "landSketchbookShop" + }, + { + "count": 4, + "cardName": "Snow-Covered Plains" + } + ] + }, + { + "name": "Instant", + "description": "¡¡¡Cómpralo Ya!!!", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "InstantShop", + "rewards": [ + { + "count": 8, + "cardTypes": [ + "Instant", + "Sorcery" + ] + } + ] + }, + { + "name": "Instant4Black", + "description": "Muerte súbita", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "InstantShop", + "overlaySprite": "Overlay4Black", + "rewards": [ + { + "count": 4, + "cardTypes": [ + "Instant", + "Sorcery" + ] + }, + { + "count": 4, + "cardTypes": [ + "Instant", + "Sorcery" + ], + "colors": [ + "black" + ] + } + ] + }, + { + "name": "Instant4Blue", + "description": "Juegos mentales", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "InstantShop", + "overlaySprite": "Overlay4Blue", + "rewards": [ + { + "count": 4, + "cardTypes": [ + "Instant", + "Sorcery" + ] + }, + { + "count": 4, + "cardTypes": [ + "Instant", + "Sorcery" + ], + "colors": [ + "blue" + ] + } + ] + }, + { + "name": "Instant4Green", + "description": "Órdenes Primigenias", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "InstantShop", + "overlaySprite": "Overlay4Green", + "rewards": [ + { + "count": 4, + "cardTypes": [ + "Instant", + "Sorcery" + ] + }, + { + "count": 4, + "cardTypes": [ + "Instant", + "Sorcery" + ], + "colors": [ + "green" + ] + } + ] + }, + { + "name": "Instant4Red", + "description": "Horno de Rath", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "InstantShop", + "overlaySprite": "Overlay4Red", + "rewards": [ + { + "count": 4, + "cardTypes": [ + "Instant", + "Sorcery" + ] + }, + { + "count": 4, + "cardTypes": [ + "Instant", + "Sorcery" + ], + "colors": [ + "red" + ] + } + ] + }, + { + "name": "Instant4White", + "description": "Enseñanza de Gerrard", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "InstantShop", + "overlaySprite": "Overlay4White", + "rewards": [ + { + "count": 4, + "cardTypes": [ + "Instant", + "Sorcery" + ] + }, + { + "count": 4, + "cardTypes": [ + "Instant", + "Sorcery" + ], + "colors": [ + "white" + ] + } + ] + }, + { + "name": "Instant8Black", + "description": "Muerte súbita", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "InstantShop", + "overlaySprite": "Overlay8Black", + "rewards": [ + { + "count": 8, + "cardTypes": [ + "Instant", + "Sorcery" + ], + "colors": [ + "black" + ] + } + ] + }, + { + "name": "Instant8Blue", + "description": "Juegos mentales", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "InstantShop", + "overlaySprite": "Overlay8Blue", + "rewards": [ + { + "count": 8, + "cardTypes": [ + "Instant", + "Sorcery" + ], + "colors": [ + "blue" + ] + } + ] + }, + { + "name": "Instant8Green", + "description": "Órdenes Primigenias", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "InstantShop", + "overlaySprite": "Overlay8Green", + "rewards": [ + { + "count": 8, + "cardTypes": [ + "Instant", + "Sorcery" + ], + "colors": [ + "green" + ] + } + ] + }, + { + "name": "Instant8Red", + "description": "Horno de Rath", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "InstantShop", + "overlaySprite": "Overlay8Red", + "rewards": [ + { + "count": 8, + "cardTypes": [ + "Instant", + "Sorcery" + ], + "colors": [ + "red" + ] + } + ] + }, + { + "name": "Instant8White", + "description": "Enseñanza de Gerrard", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "InstantShop", + "overlaySprite": "Overlay8White", + "rewards": [ + { + "count": 8, + "cardTypes": [ + "Instant", + "Sorcery" + ], + "colors": [ + "white" + ] + } + ] + }, + { + "name": "Creature", + "description": "La Casa de Fieras", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "CreatureShop", + "rewards": [ + { + "count": 8, + "cardTypes": [ + "Creature" + ] + } + ] + }, + { + "name": "Creature2Colorless", + "description": "Mercado de Chatarra", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "CreatureShop", + "overlaySprite": "Overlay2Colorless", + "rewards": [ + { + "count": 6, + "cardTypes": [ + "Creature" + ] + }, + { + "count": 2, + "cardTypes": [ + "Creature" + ], + "colorType": "Colorless" + } + ] + }, + { + "name": "Creature2Eldrazi", + "description": "Emisarios Sobrenaturales", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "CreatureShop", + "overlaySprite": "Overlay2Colorless", + "rewards": [ + { + "count": 6, + "cardTypes": [ + "Creature" + ] + }, + { + "count": 2, + "subTypes": [ + "Eldrazi" + ] + } + ] + }, + { + "name": "Creature2Black", + "description": "El Osario", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "CreatureShop", + "overlaySprite": "Overlay2Black", + "rewards": [ + { + "count": 6, + "cardTypes": [ + "Creature" + ] + }, + { + "count": 2, + "cardTypes": [ + "Creature" + ], + "colors": [ + "black" + ] + } + ] + }, + { + "name": "Creature6Black", + "description": "La Tumba de Yawgmoth", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "CreatureShop", + "overlaySprite": "Overlay6Black", + "rewards": [ + { + "count": 2, + "cardTypes": [ + "Creature" + ] + }, + { + "count": 6, + "cardTypes": [ + "Creature" + ], + "colors": [ + "black" + ] + } + ] + }, + { + "name": "Creature8Black", + "description": "La Tumba de Yawgmoth", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "CreatureShop", + "overlaySprite": "Overlay8Black", + "rewards": [ + { + "count": 8, + "cardTypes": [ + "Creature" + ], + "colors": [ + "black" + ] + } + ] + }, + { + "name": "Creature2Blue", + "description": "Mercado de la Ribera", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "CreatureShop", + "overlaySprite": "Overlay2Blue", + "rewards": [ + { + "count": 6, + "cardTypes": [ + "Creature" + ] + }, + { + "count": 2, + "cardTypes": [ + "Creature" + ], + "colors": [ + "blue" + ] + } + ] + }, + { + "name": "Creature6Blue", + "description": "Las Profundidades Abismales", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "CreatureShop", + "overlaySprite": "Overlay6Blue", + "rewards": [ + { + "count": 2, + "cardTypes": [ + "Creature" + ] + }, + { + "count": 6, + "cardTypes": [ + "Creature" + ], + "colors": [ + "blue" + ] + } + ] + }, + { + "name": "Creature8Blue", + "description": "Las Profundidades Abismales", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "CreatureShop", + "overlaySprite": "Overlay8Blue", + "rewards": [ + { + "count": 8, + "cardTypes": [ + "Creature" + ], + "colors": [ + "blue" + ] + } + ] + }, + { + "name": "Creature2Green", + "description": "El Claro del Cazador", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "CreatureShop", + "overlaySprite": "Overlay2Green", + "rewards": [ + { + "count": 6, + "cardTypes": [ + "Creature" + ] + }, + { + "count": 2, + "cardTypes": [ + "Creature" + ], + "colors": [ + "green" + ] + } + ] + }, + { + "name": "Creature6Green", + "description": "Orden natural", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "CreatureShop", + "overlaySprite": "Overlay6Green", + "rewards": [ + { + "count": 2, + "cardTypes": [ + "Creature" + ] + }, + { + "count": 6, + "cardTypes": [ + "Creature" + ], + "colors": [ + "green" + ] + } + ] + }, + { + "name": "Creature8Green", + "description": "Orden natural", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "CreatureShop", + "overlaySprite": "Overlay8Green", + "rewards": [ + { + "count": 8, + "cardTypes": [ + "Creature" + ], + "colors": [ + "green" + ] + } + ] + }, + { + "name": "Creature2Red", + "description": "Mercaderes de la Ladera", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "CreatureShop", + "overlaySprite": "Overlay2Red", + "rewards": [ + { + "count": 6, + "cardTypes": [ + "Creature" + ] + }, + { + "count": 2, + "cardTypes": [ + "Creature" + ], + "colors": [ + "red" + ] + } + ] + }, + { + "name": "Creature6Red", + "description": "Ataque furioso", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "CreatureShop", + "overlaySprite": "Overlay6Red", + "rewards": [ + { + "count": 2, + "cardTypes": [ + "Creature" + ] + }, + { + "count": 6, + "cardTypes": [ + "Creature" + ], + "colors": [ + "red" + ] + } + ] + }, + { + "name": "Creature8Red", + "description": "Ataque furioso", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "CreatureShop", + "overlaySprite": "Overlay8Red", + "rewards": [ + { + "count": 2, + "cardTypes": [ + "Creature" + ] + }, + { + "count": 8, + "cardTypes": [ + "Creature" + ], + "colors": [ + "red" + ] + } + ] + }, + { + "name": "Creature2White", + "description": "Granjas del Campo", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "CreatureShop", + "overlaySprite": "Overlay2White", + "rewards": [ + { + "count": 6, + "cardTypes": [ + "Creature" + ] + }, + { + "count": 2, + "cardTypes": [ + "Creature" + ], + "colors": [ + "white" + ] + } + ] + }, + { + "name": "Creature6White", + "description": "Hueste Celestial", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "CreatureShop", + "overlaySprite": "Overlay6White", + "rewards": [ + { + "count": 2, + "cardTypes": [ + "Creature" + ] + }, + { + "count": 6, + "cardTypes": [ + "Creature" + ], + "colors": [ + "white" + ] + } + ] + }, + { + "name": "Creature8White", + "description": "Hueste Celestial", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "CreatureShop", + "overlaySprite": "Overlay8White", + "rewards": [ + { + "count": 8, + "cardTypes": [ + "Creature" + ], + "colors": [ + "white" + ] + } + ] + }, + { + "name": "Land4Blue", + "description": "Propiedad Junto al Mar", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "NonbasicLandShop", + "overlaySprite": "Overlay4Blue", + "rewards": [ + { + "count": 4, + "cardTypes": [ + "Land" + ], + "cardText": "\\Q{\\EU\\Q}\\E" + }, + { + "count": 4, + "cardTypes": [ + "Land" + ] + } + ] + }, + { + "name": "Land8Blue", + "description": "20.000 Leguas", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "NonbasicLandShop", + "overlaySprite": "Overlay8Blue", + "rewards": [ + { + "count": 8, + "cardTypes": [ + "Land" + ], + "cardText": "\\Q{\\EU\\Q}\\E" + } + ] + }, + { + "name": "Land4Black", + "description": "Profundidades Pantanosas", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "NonbasicLandShop", + "overlaySprite": "Overlay4Black", + "rewards": [ + { + "count": 4, + "cardTypes": [ + "Land" + ], + "cardText": "\\Q{\\EB\\Q}\\E" + }, + { + "count": 4, + "cardTypes": [ + "Land" + ] + } + ] + }, + { + "name": "Land8Black", + "description": "El Corazón de las Tinieblas", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "NonbasicLandShop", + "overlaySprite": "Overlay8Black", + "rewards": [ + { + "count": 8, + "cardTypes": [ + "Land" + ], + "cardText": "\\Q{\\EB\\Q}\\E" + } + ] + }, + { + "name": "Land4Red", + "description": "Las Madrigueras de Mon", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "NonbasicLandShop", + "overlaySprite": "Overlay4Red", + "rewards": [ + { + "count": 4, + "cardTypes": [ + "Land" + ], + "cardText": "\\Q{\\ER\\Q}\\E" + }, + { + "count": 4, + "cardTypes": [ + "Land" + ] + } + ] + }, + { + "name": "Land8Red", + "description": "Vistas Volcánicas", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "NonbasicLandShop", + "overlaySprite": "Overlay8Red", + "rewards": [ + { + "count": 8, + "cardTypes": [ + "Land" + ], + "cardText": "\\Q{\\ER\\Q}\\E" + } + ] + }, + { + "name": "Land4Green", + "description": "Acres Verdes", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "NonbasicLandShop", + "overlaySprite": "Overlay4Green", + "rewards": [ + { + "count": 4, + "cardTypes": [ + "Land" + ], + "cardText": "\\Q{\\EG\\Q}\\E" + }, + { + "count": 4, + "cardTypes": [ + "Land" + ] + } + ] + }, + { + "name": "Land8Green", + "description": "Los Dones de Gaea", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "NonbasicLandShop", + "overlaySprite": "Overlay8Green", + "rewards": [ + { + "count": 8, + "cardTypes": [ + "Land" + ], + "cardText": "\\Q{\\EG\\Q}\\E" + } + ] + }, + { + "name": "Land4White", + "description": "Planos y Rejas de Arado", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "NonbasicLandShop", + "overlaySprite": "Overlay4White", + "rewards": [ + { + "count": 4, + "cardTypes": [ + "Land" + ], + "cardText": "\\Q{\\EW\\Q}\\E" + }, + { + "count": 4, + "cardTypes": [ + "Land" + ] + } + ] + }, + { + "name": "Land8White", + "description": "Santuario Espiritual", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "NonbasicLandShop", + "overlaySprite": "Overlay8White", + "rewards": [ + { + "count": 8, + "cardTypes": [ + "Land" + ], + "cardText": "\\Q{\\EW\\Q}\\E" + } + ] + }, + { + "name": "Land4Colorless", + "description": "Los Yermos Florecientes", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "NonbasicLandShop", + "overlaySprite": "Overlay4Colorless", + "rewards": [ + { + "count": 4, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "cardTypes": [ + "Land" + ], + "cardText": "\\Q{\\EC\\Q}\\E" + }, + { + "count": 1, + "cardTypes": [ + "Land" + ], + "cardText": "\\Q{\\E1\\Q}\\E" + } + ] + }, + { + "count": 4, + "cardTypes": [ + "Land" + ] + } + ] + }, + { + "name": "Green", + "description": "Crecimiento abundante", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "GreenShop", + "rewards": [ + { + "count": 8, + "colors": [ + "green" + ] + } + ] + }, + { + "name": "Red", + "description": "Círculo de llamas", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "RedShop", + "rewards": [ + { + "count": 8, + "colors": [ + "red" + ] + } + ] + }, + { + "name": "Black", + "description": "Fuente de agonías", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "BlackShop", + "rewards": [ + { + "count": 8, + "colors": [ + "black" + ] + } + ] + }, + { + "name": "White", + "description": "Círculo de Protección", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "WhiteShop", + "rewards": [ + { + "count": 8, + "colors": [ + "white" + ] + } + ] + }, + { + "name": "Blue", + "description": "Estudio hermético", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "BlueShop", + "rewards": [ + { + "count": 8, + "colors": [ + "blue" + ] + } + ] + }, + { + "name": "Azorius", + "description": "Tienda Azorius, S.L.", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "AzoriusShop", + "rewards": [ + { + "count": 4, + "colors": [ + "white", + "blue" + ] + }, + { + "count": 4, + "colors": [ + "white", + "blue" + ], + "colorType": "MultiColor" + } + ] + }, + { + "name": "Dimir", + "description": "Prospectos Dimir", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "DimirShop", + "rewards": [ + { + "count": 4, + "colors": [ + "black", + "blue" + ] + }, + { + "count": 4, + "colors": [ + "black", + "blue" + ], + "colorType": "MultiColor" + } + ] + }, + { + "name": "Rakdos", + "description": "El Carnaval Rakdos", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "RakdosShop", + "rewards": [ + { + "count": 4, + "colors": [ + "black", + "red" + ] + }, + { + "count": 4, + "colors": [ + "black", + "red" + ], + "colorType": "MultiColor" + } + ] + }, + { + "name": "Gruul", + "description": "Liquidación Ardiente Gruul", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "GruulShop", + "rewards": [ + { + "count": 4, + "colors": [ + "red", + "green" + ] + }, + { + "count": 4, + "colors": [ + "red", + "green" + ], + "colorType": "MultiColor" + } + ] + }, + { + "name": "Selesnya", + "description": "Una Tienda Selesnya de Fichas", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "SelesnyaShop", + "rewards": [ + { + "count": 4, + "colors": [ + "green", + "white" + ] + }, + { + "count": 4, + "colors": [ + "green", + "white" + ], + "colorType": "MultiColor" + } + ] + }, + { + "name": "Orzhov", + "description": "Extorsión Orzhov", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "OrzhovShop", + "rewards": [ + { + "count": 4, + "colors": [ + "black", + "white" + ] + }, + { + "count": 4, + "colors": [ + "black", + "white" + ], + "colorType": "MultiColor" + } + ] + }, + { + "name": "Izzet", + "description": "¿Izzet en Venta?", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "IzzetShop", + "rewards": [ + { + "count": 4, + "colors": [ + "red", + "blue" + ] + }, + { + "count": 4, + "colors": [ + "red", + "blue" + ], + "colorType": "MultiColor" + } + ] + }, + { + "name": "Golgari", + "description": "El Cementerio Golgari", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "GolgariShop", + "rewards": [ + { + "count": 4, + "colors": [ + "black", + "green" + ] + }, + { + "count": 4, + "colors": [ + "black", + "green" + ], + "colorType": "MultiColor" + } + ] + }, + { + "name": "Boros", + "description": "Legión Extranjera Ravnicana", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "BorosShop", + "rewards": [ + { + "count": 4, + "colors": [ + "red", + "white" + ] + }, + { + "count": 4, + "colors": [ + "red", + "white" + ], + "colorType": "MultiColor" + } + ] + }, + { + "name": "Simic", + "description": "Laboratorio de Investigación Simic", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "SimicShop", + "rewards": [ + { + "count": 4, + "colors": [ + "blue", + "green" + ] + }, + { + "count": 4, + "colors": [ + "blue", + "green" + ], + "colorType": "MultiColor" + } + ] + }, + { + "name": "RWB", + "description": "Mercantil Mardu", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "RWBShop", + "rewards": [ + { + "count": 4, + "colors": [ + "red", + "white", + "black" + ], + "colorType": "MultiColor", + "matchAllColors": "true" + }, + { + "count": 4, + "colors": [ + "red", + "white", + "black" + ], + "colorType": "MultiColor" + } + ] + }, + { + "name": "RWU", + "description": "Guías Jeskai", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "RWUShop", + "rewards": [ + { + "count": 4, + "colors": [ + "blue", + "red", + "white" + ], + "colorType": "MultiColor", + "matchAllColors": "true" + }, + { + "count": 4, + "colors": [ + "blue", + "red", + "white" + ], + "colorType": "MultiColor" + } + ] + }, + { + "name": "RWG", + "description": "Curiosidades Cabaretti", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "RWGShop", + "rewards": [ + { + "count": 4, + "colors": [ + "green", + "red", + "white" + ], + "colorType": "MultiColor", + "matchAllColors": "true" + }, + { + "count": 4, + "colors": [ + "green", + "red", + "white" + ], + "colorType": "MultiColor" + } + ] + }, + { + "name": "RUB", + "description": "Almacén General de Grixis", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "RUBShop", + "rewards": [ + { + "count": 4, + "colors": [ + "red", + "blue", + "black" + ], + "colorType": "MultiColor", + "matchAllColors": "true" + }, + { + "count": 4, + "colors": [ + "red", + "blue", + "black" + ], + "colorType": "MultiColor" + } + ] + }, + { + "name": "RGB", + "description": "Las Remachadoras de Rosie", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "RGBShop", + "rewards": [ + { + "count": 4, + "colors": [ + "red", + "green", + "black" + ], + "colorType": "MultiColor", + "matchAllColors": "true" + }, + { + "count": 4, + "colors": [ + "red", + "green", + "black" + ], + "colorType": "MultiColor" + } + ] + }, + { + "name": "RGU", + "description": "Provisiones de Frontera", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "RGUShop", + "rewards": [ + { + "count": 4, + "colors": [ + "red", + "blue", + "green" + ], + "colorType": "MultiColor", + "matchAllColors": "true" + }, + { + "count": 4, + "colors": [ + "red", + "blue", + "green" + ], + "colorType": "MultiColor" + } + ] + }, + { + "name": "UGB", + "description": "Suministros Sultai", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "UGBShop", + "rewards": [ + { + "count": 4, + "colors": [ + "blue", + "green", + "black" + ], + "colorType": "MultiColor", + "matchAllColors": "true" + }, + { + "count": 4, + "colors": [ + "blue", + "green", + "black" + ], + "colorType": "MultiColor" + } + ] + }, + { + "name": "UWG", + "description": "Bazar de Bant", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "UWGShop", + "rewards": [ + { + "count": 4, + "colors": [ + "blue", + "white", + "green" + ], + "colorType": "MultiColor", + "matchAllColors": "true" + }, + { + "count": 4, + "colors": [ + "blue", + "white", + "green" + ], + "colorType": "MultiColor" + } + ] + }, + { + "name": "UWB", + "description": "Esper Etcétera", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "UWBShop", + "rewards": [ + { + "count": 4, + "colors": [ + "blue", + "white", + "black" + ], + "colorType": "MultiColor", + "matchAllColors": "true" + }, + { + "count": 4, + "colors": [ + "blue", + "white", + "black" + ], + "colorType": "MultiColor" + } + ] + }, + { + "name": "GWB", + "description": "Armería Abzan", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "GWBShop", + "rewards": [ + { + "count": 4, + "colors": [ + "green", + "white", + "black" + ], + "colorType": "MultiColor", + "matchAllColors": "true" + }, + { + "count": 4, + "colors": [ + "green", + "white", + "black" + ], + "colorType": "MultiColor" + } + ] + }, + { + "name": "WUBRG", + "description": "Dominio de Dominaria", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "WUBRGShop", + "rewards": [ + { + "count": 8, + "colors": [ + "blue", + "green", + "red", + "white", + "black" + ], + "colorType": "MultiColor", + "matchAllColors": "true" + } + ] + }, + { + "name": "Goblin", + "description": "Los Cachivaches de Squee", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "GoblinShop", + "rewards": [ + { + "count": 8, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Goblin" + ] + }, + { + "count": 1, + "cardText": "Goblin" + } + ] + } + ] + }, + { + "name": "Elf", + "description": "Elfo en el Estante", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "ElfShop", + "rewards": [ + { + "count": 8, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Elf" + ] + }, + { + "count": 1, + "cardText": "\\bElf\\b" + }, + { + "count": 1, + "cardText": "\\bElves\\b" + } + ] + } + ] + }, + { + "name": "Merfolk", + "description": "La Captura del Día", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "MerfolkShop", + "rewards": [ + { + "count": 8, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Merfolk" + ] + }, + { + "count": 1, + "cardText": "Merfolk" + } + ] + } + ] + }, + { + "name": "Zombie", + "description": "¿¿¿Cereeeeebros???", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "ZombieShop", + "rewards": [ + { + "count": 8, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Zombie" + ] + }, + { + "count": 1, + "cardText": "Zombie" + } + ] + } + ] + }, + { + "name": "Human", + "description": "Casa de Adán y Eva", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "HumanShop", + "rewards": [ + { + "count": 8, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Human" + ] + }, + { + "count": 1, + "cardText": "Human" + } + ] + } + ] + }, + { + "name": "Human4White", + "description": "Voluntarios novatos", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "HumanShop", + "rewards": [ + { + "count": 4, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Human" + ] + }, + { + "count": 1, + "cardText": "Human" + } + ] + }, + { + "count": 4, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Human" + ], + "colors": [ + "white" + ] + }, + { + "count": 1, + "cardText": "Human", + "colors": [ + "white" + ] + } + ] + } + ] + }, + { + "name": "Angel", + "description": "Todo Halos", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "AngelShop", + "rewards": [ + { + "count": 8, + "subTypes": [ + "Angel" + ] + } + ] + }, + { + "name": "Golem", + "description": "El Taller de Karn", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "GolemShop", + "rewards": [ + { + "count": 8, + "subTypes": [ + "Golem" + ] + } + ] + }, + { + "name": "Assembly", + "description": "Requiere Montaje", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "AssemblyShop", + "rewards": [ + { + "count": 8, + "subTypes": [ + "Myr", + "Construct", + "Assembly-Worker" + ] + } + ] + }, + { + "name": "Wall", + "description": "Muro-Mart", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "WallShop", + "rewards": [ + { + "count": 8, + "subTypes": [ + "Wall" + ] + } + ] + }, + { + "name": "Sliver", + "description": "Colmena de fragmentados", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "SliverShop", + "rewards": [ + { + "count": 8, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Sliver" + ] + }, + { + "count": 1, + "cardText": "Sliver" + } + ] + } + ] + }, + { + "name": "Sliver2Black", + "description": "Colmena Apestada", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "SliverShop", + "overlaySprite": "Overlay2Black", + "rewards": [ + { + "count": 6, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Sliver" + ] + }, + { + "count": 1, + "cardText": "Sliver" + } + ] + }, + { + "count": 2, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Sliver" + ], + "colors": [ + "black" + ] + }, + { + "count": 1, + "cardText": "Sliver", + "colors": [ + "black" + ] + } + ] + } + ] + }, + { + "name": "Sliver2Blue", + "description": "Colmena Cambiante", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "SliverShop", + "overlaySprite": "Overlay2Blue", + "rewards": [ + { + "count": 6, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Sliver" + ] + }, + { + "count": 1, + "cardText": "Sliver" + } + ] + }, + { + "count": 2, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Sliver" + ], + "colors": [ + "blue" + ] + }, + { + "count": 1, + "cardText": "Sliver", + "colors": [ + "blue" + ] + } + ] + } + ] + }, + { + "name": "Sliver2Green", + "description": "Colmena Poderosa", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "SliverShop", + "overlaySprite": "Overlay2Green", + "rewards": [ + { + "count": 6, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Sliver" + ] + }, + { + "count": 1, + "cardText": "Sliver" + } + ] + }, + { + "count": 2, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Sliver" + ], + "colors": [ + "green" + ] + }, + { + "count": 1, + "cardText": "Sliver", + "colors": [ + "green" + ] + } + ] + } + ] + }, + { + "name": "Sliver2Red", + "description": "Colmena Rencorosa", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "SliverShop", + "overlaySprite": "Overlay2Red", + "rewards": [ + { + "count": 6, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Sliver" + ] + }, + { + "count": 1, + "cardText": "Sliver" + } + ] + }, + { + "count": 2, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Sliver" + ], + "colors": [ + "red" + ] + }, + { + "count": 1, + "cardText": "Sliver", + "colors": [ + "red" + ] + } + ] + } + ] + }, + { + "name": "Sliver2White", + "description": "Colmena Acorazada", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "SliverShop", + "overlaySprite": "Overlay2White", + "rewards": [ + { + "count": 6, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Sliver" + ] + }, + { + "count": 1, + "cardText": "Sliver" + } + ] + }, + { + "count": 2, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Sliver" + ], + "colors": [ + "white" + ] + }, + { + "count": 1, + "cardText": "Sliver", + "colors": [ + "white" + ] + } + ] + } + ] + }, + { + "name": "Sliver4Black", + "description": "Colmena Espectral", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "SliverShop", + "overlaySprite": "Overlay4Black", + "rewards": [ + { + "count": 4, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Sliver" + ] + }, + { + "count": 1, + "cardText": "Sliver" + } + ] + }, + { + "count": 4, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Sliver" + ], + "colors": [ + "black" + ] + }, + { + "count": 1, + "cardText": "Sliver", + "colors": [ + "black" + ] + } + ] + } + ] + }, + { + "name": "Sliver4Blue", + "description": "Colmena Mutaforma", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "SliverShop", + "overlaySprite": "Overlay2Blue", + "rewards": [ + { + "count": 4, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Sliver" + ] + }, + { + "count": 1, + "cardText": "Sliver" + } + ] + }, + { + "count": 4, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Sliver" + ], + "colors": [ + "blue" + ] + }, + { + "count": 1, + "cardText": "Sliver", + "colors": [ + "blue" + ] + } + ] + } + ] + }, + { + "name": "Sliver4Green", + "description": "Colmena Venenosa", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "SliverShop", + "overlaySprite": "Overlay4Green", + "rewards": [ + { + "count": 4, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Sliver" + ] + }, + { + "count": 1, + "cardText": "Sliver" + } + ] + }, + { + "count": 4, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Sliver" + ], + "colors": [ + "green" + ] + }, + { + "count": 1, + "cardText": "Sliver", + "colors": [ + "green" + ] + } + ] + } + ] + }, + { + "name": "Sliver4Red", + "description": "Colmena Furiosa", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "SliverShop", + "overlaySprite": "Overlay2Red", + "rewards": [ + { + "count": 4, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Sliver" + ] + }, + { + "count": 1, + "cardText": "Sliver" + } + ] + }, + { + "count": 4, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Sliver" + ], + "colors": [ + "red" + ] + }, + { + "count": 1, + "cardText": "Sliver", + "colors": [ + "red" + ] + } + ] + } + ] + }, + { + "name": "Sliver4White", + "description": "Colmena Protegida", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "SliverShop", + "overlaySprite": "Overlay2White", + "rewards": [ + { + "count": 4, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Sliver" + ] + }, + { + "count": 1, + "cardText": "Sliver" + } + ] + }, + { + "count": 4, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Sliver" + ], + "colors": [ + "white" + ] + }, + { + "count": 1, + "cardText": "Sliver", + "colors": [ + "white" + ] + } + ] + } + ] + }, + { + "name": "Assassin", + "description": "Gremio de la Belladona", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "AssassinShop", + "rewards": [ + { + "count": 4, + "subTypes": [ + "Assassin" + ] + }, + { + "count": 4, + "subTypes": [ + "Ninja" + ] + } + ] + }, + { + "name": "Enchantment", + "description": "Amuletos y Curiosidades", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "EnchantmentShop", + "rewards": [ + { + "count": 8, + "cardTypes": [ + "Enchantment" + ] + } + ] + }, + { + "name": "Enchantment4Black", + "description": "Abrir las tumbas", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "EnchantmentShop", + "overlaySprite": "Overlay4Black", + "rewards": [ + { + "count": 4, + "cardTypes": [ + "Enchantment" + ] + }, + { + "count": 4, + "cardTypes": [ + "Enchantment" + ], + "colors": [ + "black" + ] + } + ] + }, + { + "name": "Enchantment4Blue", + "description": "Galerías de los sueños", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "EnchantmentShop", + "overlaySprite": "Overlay4Blue", + "rewards": [ + { + "count": 4, + "cardTypes": [ + "Enchantment" + ] + }, + { + "count": 4, + "cardTypes": [ + "Enchantment" + ], + "colors": [ + "blue" + ] + } + ] + }, + { + "name": "Enchantment4Green", + "description": "Terreno conocido", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "EnchantmentShop", + "overlaySprite": "Overlay4Green", + "rewards": [ + { + "count": 4, + "cardTypes": [ + "Enchantment" + ] + }, + { + "count": 4, + "cardTypes": [ + "Enchantment" + ], + "colors": [ + "green" + ] + } + ] + }, + { + "name": "Enchantment4Red", + "description": "Crisol de fuego", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "EnchantmentShop", + "overlaySprite": "Overlay4Red", + "rewards": [ + { + "count": 4, + "cardTypes": [ + "Enchantment" + ] + }, + { + "count": 4, + "cardTypes": [ + "Enchantment" + ], + "colors": [ + "red" + ] + } + ] + }, + { + "name": "Enchantment4White", + "description": "Fuerza sagrada", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "EnchantmentShop", + "overlaySprite": "Overlay4White", + "rewards": [ + { + "count": 4, + "cardTypes": [ + "Enchantment" + ] + }, + { + "count": 4, + "cardTypes": [ + "Enchantment" + ], + "colors": [ + "white" + ] + } + ] + }, + { + "name": "Enchantment6Black", + "description": "Abrir las tumbas", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "EnchantmentShop", + "overlaySprite": "Overlay6Black", + "rewards": [ + { + "count": 2, + "cardTypes": [ + "Enchantment" + ] + }, + { + "count": 6, + "cardTypes": [ + "Enchantment" + ], + "colors": [ + "black" + ] + } + ] + }, + { + "name": "Enchantment6Blue", + "description": "Galerías de los sueños", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "EnchantmentShop", + "overlaySprite": "Overlay6Blue", + "rewards": [ + { + "count": 2, + "cardTypes": [ + "Enchantment" + ] + }, + { + "count": 6, + "cardTypes": [ + "Enchantment" + ], + "colors": [ + "blue" + ] + } + ] + }, + { + "name": "Enchantment6Green", + "description": "Terreno conocido", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "EnchantmentShop", + "overlaySprite": "Overlay6Green", + "rewards": [ + { + "count": 2, + "cardTypes": [ + "Enchantment" + ] + }, + { + "count": 6, + "cardTypes": [ + "Enchantment" + ], + "colors": [ + "green" + ] + } + ] + }, + { + "name": "Enchantment6Red", + "description": "Crisol de fuego", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "EnchantmentShop", + "overlaySprite": "Overlay6Red", + "rewards": [ + { + "count": 2, + "cardTypes": [ + "Enchantment" + ] + }, + { + "count": 6, + "cardTypes": [ + "Enchantment" + ], + "colors": [ + "red" + ] + } + ] + }, + { + "name": "Enchantment6White", + "description": "Fuerza sagrada", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "EnchantmentShop", + "overlaySprite": "Overlay6White", + "rewards": [ + { + "count": 2, + "cardTypes": [ + "Enchantment" + ] + }, + { + "count": 6, + "cardTypes": [ + "Enchantment" + ], + "colors": [ + "white" + ] + } + ] + }, + { + "name": "Squirrel", + "description": "Vaya, Nueces", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "SquirrelShop", + "rewards": [ + { + "count": 8, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Squirrel" + ] + }, + { + "count": 1, + "cardText": "Squirrel" + } + ] + } + ] + }, + { + "name": "Land", + "description": "Tierras Exóticas", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "NonbasicLandShop", + "rewards": [ + { + "count": 8, + "cardTypes": [ + "Land" + ] + } + ] + }, + { + "name": "Colorless", + "description": "Talla Única", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "ColorlessShop", + "rewards": [ + { + "count": 8, + "colorType": "Colorless" + } + ] + }, + { + "name": "Artifact", + "description": "Antigüedades", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "ArtifactShop", + "rewards": [ + { + "count": 8, + "cardTypes": [ + "Artifact" + ] + } + ] + }, + { + "name": "Artifact4Black", + "description": "Antigüedades", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "ArtifactShop", + "overlaySprite": "Overlay4Black", + "rewards": [ + { + "count": 4, + "cardTypes": [ + "Artifact" + ] + }, + { + "count": 4, + "cardTypes": [ + "Artifact" + ], + "colors": [ + "black" + ] + } + ] + }, + { + "name": "Artifact4Blue", + "description": "Antigüedades", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "ArtifactShop", + "overlaySprite": "Overlay4Blue", + "rewards": [ + { + "count": 4, + "cardTypes": [ + "Artifact" + ] + }, + { + "count": 4, + "cardTypes": [ + "Artifact" + ], + "colors": [ + "blue" + ] + } + ] + }, + { + "name": "Artifact4Green", + "description": "Antigüedades", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "ArtifactShop", + "overlaySprite": "Overlay4Green", + "rewards": [ + { + "count": 4, + "cardTypes": [ + "Artifact" + ] + }, + { + "count": 4, + "cardTypes": [ + "Artifact" + ], + "colors": [ + "green" + ] + } + ] + }, + { + "name": "Artifact4Red", + "description": "Antigüedades", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "ArtifactShop", + "overlaySprite": "Overlay4Red", + "rewards": [ + { + "count": 4, + "cardTypes": [ + "Artifact" + ] + }, + { + "count": 4, + "cardTypes": [ + "Artifact" + ], + "colors": [ + "red" + ] + } + ] + }, + { + "name": "Artifact4White", + "description": "Antigüedades", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "ArtifactShop", + "overlaySprite": "Overlay4White", + "rewards": [ + { + "count": 4, + "cardTypes": [ + "Artifact" + ] + }, + { + "count": 4, + "cardTypes": [ + "Artifact" + ], + "colors": [ + "white" + ] + } + ] + }, + { + "name": "Multicolor", + "description": "El Orfebre", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "MultiColorShop", + "rewards": [ + { + "count": 8, + "colorType": "MultiColor" + } + ] + }, + { + "name": "Multicolor8Black", + "description": "El Orfebre", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "MultiColorShop", + "overlaySprite": "Overlay8Black", + "rewards": [ + { + "count": 8, + "type": "Union", + "cardUnion": [ + { + "colorType": "MultiColor", + "colors": [ + "Black", + "Blue" + ] + }, + { + "colorType": "MultiColor", + "colors": [ + "Black", + "Green" + ] + }, + { + "colorType": "MultiColor", + "colors": [ + "Black", + "Red" + ] + }, + { + "colorType": "MultiColor", + "colors": [ + "Black", + "White" + ] + } + ] + } + ] + }, + { + "name": "Multicolor8Blue", + "description": "El Orfebre", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "MultiColorShop", + "overlaySprite": "Overlay8Blue", + "rewards": [ + { + "count": 8, + "type": "Union", + "cardUnion": [ + { + "colorType": "MultiColor", + "colors": [ + "Blue", + "Black" + ] + }, + { + "colorType": "MultiColor", + "colors": [ + "Blue", + "Green" + ] + }, + { + "colorType": "MultiColor", + "colors": [ + "Blue", + "Red" + ] + }, + { + "colorType": "MultiColor", + "colors": [ + "Blue", + "White" + ] + } + ] + } + ] + }, + { + "name": "Multicolor8Green", + "description": "El Orfebre", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "MultiColorShop", + "overlaySprite": "Overlay8Green", + "rewards": [ + { + "count": 8, + "type": "Union", + "cardUnion": [ + { + "colorType": "MultiColor", + "colors": [ + "Green", + "Black" + ] + }, + { + "colorType": "MultiColor", + "colors": [ + "Green", + "Blue" + ] + }, + { + "colorType": "MultiColor", + "colors": [ + "Green", + "Red" + ] + }, + { + "colorType": "MultiColor", + "colors": [ + "Green", + "White" + ] + } + ] + } + ] + }, + { + "name": "Multicolor8Red", + "description": "El Orfebre", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "MultiColorShop", + "overlaySprite": "Overlay8Red", + "rewards": [ + { + "count": 8, + "type": "Union", + "cardUnion": [ + { + "colorType": "MultiColor", + "colors": [ + "Red", + "Black" + ] + }, + { + "colorType": "MultiColor", + "colors": [ + "Red", + "Blue" + ] + }, + { + "colorType": "MultiColor", + "colors": [ + "Red", + "Green" + ] + }, + { + "colorType": "MultiColor", + "colors": [ + "Red", + "White" + ] + } + ] + } + ] + }, + { + "name": "Multicolor8White", + "description": "El Orfebre", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "MultiColorShop", + "overlaySprite": "Overlay8White", + "rewards": [ + { + "count": 8, + "type": "Union", + "cardUnion": [ + { + "colorType": "MultiColor", + "colors": [ + "White", + "Black" + ] + }, + { + "colorType": "MultiColor", + "colors": [ + "White", + "Blue" + ] + }, + { + "colorType": "MultiColor", + "colors": [ + "White", + "Green" + ] + }, + { + "colorType": "MultiColor", + "colors": [ + "White", + "Red" + ] + } + ] + } + ] + }, + { + "name": "SpaceMarine", + "description": "El Códice", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "SpaceMarineShop", + "rewards": [ + { + "count": 8, + "editions": [ + "40K" + ] + } + ] + }, + { + "name": "Necron", + "description": "Necrones Seminuevos", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "NecronShop", + "rewards": [ + { + "count": 8, + "editions": [ + "40K" + ] + } + ] + }, + { + "name": "Chaos", + "description": "El Archivo del Arconte", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "ChaosShop", + "rewards": [ + { + "count": 8, + "editions": [ + "40K" + ] + } + ] + }, + { + "name": "Tyranid", + "description": "Los Chollos de Gene", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "TyranidShop", + "rewards": [ + { + "count": 8, + "editions": [ + "40K" + ] + } + ] + }, + { + "name": "Dragon", + "description": "Aquí Hay Dragones", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "DragonShop", + "rewards": [ + { + "count": 8, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Dragon" + ] + }, + { + "count": 1, + "cardText": "Dragon" + } + ] + } + ] + }, + { + "name": "Vampire", + "description": "Establecimiento Nocturno", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "VampireShop", + "rewards": [ + { + "count": 8, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Vampire" + ] + }, + { + "count": 1, + "cardText": "Vampire" + } + ] + } + ] + }, + { + "name": "Vehicle", + "description": "Artefactos Usados de Al", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "VehicleShop", + "rewards": [ + { + "count": 8, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Vehicle" + ] + }, + { + "count": 1, + "cardText": "Vehicle" + }, + { + "count": 1, + "cardText": "Pilot" + } + ] + } + ] + }, + { + "name": "Vehicle2Black", + "description": "Carrozas Fúnebres para Dos", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "VehicleShop", + "overlaySprite": "Overlay2Black", + "rewards": [ + { + "count": 6, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Vehicle" + ] + }, + { + "count": 1, + "cardText": "Vehicle" + }, + { + "count": 1, + "cardText": "Pilot" + } + ] + }, + { + "count": 2, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Vehicle" + ], + "colors": [ + "black" + ] + }, + { + "count": 1, + "cardText": "Vehicle", + "colors": [ + "black" + ] + }, + { + "count": 1, + "cardText": "Pilot", + "colors": [ + "black" + ] + } + ] + } + ] + }, + { + "name": "Vehicle2Blue", + "description": "Alas y Otras Cosas", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "VehicleShop", + "overlaySprite": "Overlay2Blue", + "rewards": [ + { + "count": 6, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Vehicle" + ] + }, + { + "count": 1, + "cardText": "Vehicle" + }, + { + "count": 1, + "cardText": "Pilot" + } + ] + }, + { + "count": 2, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Vehicle" + ], + "colors": [ + "blue" + ] + }, + { + "count": 1, + "cardText": "Vehicle", + "colors": [ + "blue" + ] + }, + { + "count": 1, + "cardText": "Pilot", + "colors": [ + "blue" + ] + } + ] + } + ] + }, + { + "name": "Vehicle2Green", + "description": "Máquinas Verdes y Malas", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "VehicleShop", + "overlaySprite": "Overlay2Green", + "rewards": [ + { + "count": 6, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Vehicle" + ] + }, + { + "count": 1, + "cardText": "Vehicle" + }, + { + "count": 1, + "cardText": "Pilot" + } + ] + }, + { + "count": 2, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Vehicle" + ], + "colors": [ + "green" + ] + }, + { + "count": 1, + "cardText": "Vehicle", + "colors": [ + "green" + ] + }, + { + "count": 1, + "cardText": "Pilot", + "colors": [ + "green" + ] + } + ] + } + ] + }, + { + "name": "Vehicle2Red", + "description": "Trineos de Roca Trasgo", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "VehicleShop", + "overlaySprite": "Overlay2Red", + "rewards": [ + { + "count": 6, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Vehicle" + ] + }, + { + "count": 1, + "cardText": "Vehicle" + }, + { + "count": 1, + "cardText": "Pilot" + } + ] + }, + { + "count": 2, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Vehicle" + ], + "colors": [ + "red" + ] + }, + { + "count": 1, + "cardText": "Vehicle", + "colors": [ + "red" + ] + }, + { + "count": 1, + "cardText": "Pilot", + "colors": [ + "red" + ] + } + ] + } + ] + }, + { + "name": "Vehicle2White", + "description": "Sedanes y Rejas de Arado", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "VehicleShop", + "overlaySprite": "Overlay2White", + "rewards": [ + { + "count": 6, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Vehicle" + ] + }, + { + "count": 1, + "cardText": "Vehicle" + }, + { + "count": 1, + "cardText": "Pilot" + } + ] + }, + { + "count": 2, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Vehicle" + ], + "colors": [ + "white" + ] + }, + { + "count": 1, + "cardText": "Vehicle", + "colors": [ + "white" + ] + }, + { + "count": 1, + "cardText": "Pilot", + "colors": [ + "white" + ] + } + ] + } + ] + }, + { + "name": "Minotaur", + "description": "La Antigua Tienda de Porcelana", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "MinotaurShop", + "rewards": [ + { + "count": 8, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Minotaur" + ] + }, + { + "count": 1, + "cardText": "Minotaur" + } + ] + } + ] + }, + { + "name": "Ogre", + "description": "Zoquetes por Contrato", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "OgreShop", + "rewards": [ + { + "count": 8, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Ogre" + ] + }, + { + "count": 1, + "cardText": "Ogre" + } + ] + } + ] + }, + { + "name": "Ogre4Red", + "description": "Guerreros Ogros", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "OgreShop", + "rewards": [ + { + "count": 4, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Ogre" + ] + }, + { + "count": 1, + "cardText": "Ogre" + } + ] + }, + { + "count": 4, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Ogre" + ], + "colors": [ + "red" + ] + }, + { + "count": 1, + "cardText": "Ogre", + "colors": [ + "red" + ] + } + ] + } + ] + }, + { + "name": "Dinosaur", + "description": "Estímulo de Huatli", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "DinosaurShop", + "rewards": [ + { + "count": 8, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Dinosaur" + ] + }, + { + "count": 1, + "cardText": "Dinosaur" + } + ] + } + ] + }, + { + "name": "Dinosaur4Green", + "description": "Depredadores Supremos", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "DinosaurShop", + "overlaySprite": "Overlay4Green", + "rewards": [ + { + "count": 4, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Dinosaur" + ] + }, + { + "count": 1, + "cardText": "Dinosaur" + } + ] + }, + { + "count": 4, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Dinosaur" + ], + "colors": [ + "green" + ] + }, + { + "count": 1, + "cardText": "Dinosaur", + "colors": [ + "green" + ] + } + ] + } + ] + }, + { + "name": "Dinosaur4Red", + "description": "Estampida de dinosaurios", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "DinosaurShop", + "rewards": [ + { + "count": 4, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Dinosaur" + ] + }, + { + "count": 1, + "cardText": "Dinosaur" + } + ] + }, + { + "count": 4, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Dinosaur" + ], + "colors": [ + "red" + ] + }, + { + "count": 1, + "cardText": "Dinosaur", + "colors": [ + "red" + ] + } + ] + } + ] + }, + { + "name": "Dwarf", + "description": "Elige lo que Quieras", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "DwarfShop", + "rewards": [ + { + "count": 8, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Dwarf" + ] + }, + { + "count": 1, + "cardText": "Dwarf" + }, + { + "count": 1, + "cardText": "Dwarves" + } + ] + } + ] + }, + { + "name": "Devil", + "description": "Pacto con el Diablo", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "DevilShop", + "rewards": [ + { + "count": 8, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Devil" + ] + }, + { + "count": 1, + "cardText": "Devil" + } + ] + } + ] + }, + { + "name": "ToDo", + "description": "To Do", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "ToDoShop", + "rewards": [ + { + "count": 8 + } + ] + }, + { + "name": "Equip", + "description": "Armas y Armaduras", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "EquipShop", + "rewards": [ + { + "count": 8, + "subTypes": [ + "Equipment" + ] + } + ] + }, + { + "name": "Soldier", + "description": "La Guarnición", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "SoldierShop", + "rewards": [ + { + "count": 8, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Soldier" + ] + }, + { + "count": 1, + "cardText": "Soldier" + } + ] + } + ] + }, + { + "name": "Soldier4Red", + "description": "Tropas de choque", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "SoldierShop", + "overlaySprite": "Overlay4Red", + "rewards": [ + { + "count": 4, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Soldier" + ] + }, + { + "count": 1, + "cardText": "Soldier" + } + ] + }, + { + "count": 4, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Soldier" + ], + "colors": [ + "red" + ] + }, + { + "count": 1, + "cardText": "Soldier", + "colors": [ + "red" + ] + } + ] + } + ] + }, + { + "name": "Soldier4White", + "description": "Cuartel Benalí", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "SoldierShop", + "overlaySprite": "Overlay4White", + "rewards": [ + { + "count": 4, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Soldier" + ] + }, + { + "count": 1, + "cardText": "Soldier" + } + ] + }, + { + "count": 4, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Soldier" + ], + "colors": [ + "white" + ] + }, + { + "count": 1, + "cardText": "Soldier", + "colors": [ + "white" + ] + } + ] + } + ] + }, + { + "name": "Card", + "description": "Juego de manos", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "CardShop", + "rewards": [ + { + "count": 8, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "cardText": "Draw" + }, + { + "count": 1, + "cardText": "Discard" + }, + { + "count": 1, + "cardText": "\\bHands?\\b" + } + ] + } + ] + }, + { + "name": "DnD", + "description": "Las Gangas de Boo", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "DnDShop", + "rewards": [ + { + "count": 8, + "editions": [ + "AFR", + "HBG", + "CLB", + "AFC" + ] + } + ] + }, + { + "name": "Demon", + "description": "El Altar Demoníaco", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "DemonShop", + "rewards": [ + { + "count": 8, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Demon" + ] + }, + { + "count": 1, + "cardText": "Demon" + } + ] + } + ] + }, + { + "name": "Druid", + "description": "Druidas de Rebajas", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "DruidShop", + "rewards": [ + { + "count": 8, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Druid" + ] + }, + { + "count": 1, + "cardText": "Druid" + } + ] + } + ] + }, + { + "name": "Wand", + "description": "Artefactos de Ashnod", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "WandShop", + "rewards": [ + { + "count": 8, + "cardTypes": [ + "Artifact" + ], + "cardText": "\\Q{\\ET\\Q}\\E" + } + ] + }, + { + "name": "Wand2Black", + "description": "Bóveda de los Susurros", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "WandShop", + "overlaySprite": "Overlay2Black", + "rewards": [ + { + "count": 6, + "cardTypes": [ + "Artifact" + ], + "cardText": "\\Q{\\ET\\Q}\\E" + }, + { + "count": 2, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "cardTypes": [ + "Artifact" + ], + "cardText": "\\Q{\\EB\\Q}\\E" + }, + { + "count": 1, + "cardTypes": [ + "Artifact" + ], + "cardText": "Black" + } + ] + } + ] + }, + { + "name": "Wand4Black", + "description": "Bóveda de los Susurros", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "WandShop", + "overlaySprite": "Overlay4Black", + "rewards": [ + { + "count": 4, + "cardTypes": [ + "Artifact" + ], + "cardText": "\\Q{\\ET\\Q}\\E" + }, + { + "count": 4, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "cardTypes": [ + "Artifact" + ], + "cardText": "\\Q{\\EB\\Q}\\E" + }, + { + "count": 1, + "cardTypes": [ + "Artifact" + ], + "cardText": "Black" + } + ] + } + ] + }, + { + "name": "Wand2Blue", + "description": "Sede del sínodo", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "WandShop", + "overlaySprite": "Overlay2Blue", + "rewards": [ + { + "count": 6, + "cardTypes": [ + "Artifact" + ], + "cardText": "\\Q{\\ET\\Q}\\E" + }, + { + "count": 2, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "cardTypes": [ + "Artifact" + ], + "cardText": "\\Q{\\EU\\Q}\\E" + }, + { + "count": 1, + "cardTypes": [ + "Artifact" + ], + "cardText": "Blue" + } + ] + } + ] + }, + { + "name": "Wand4Blue", + "description": "Sede del sínodo", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "WandShop", + "overlaySprite": "Overlay4Blue", + "rewards": [ + { + "count": 4, + "cardTypes": [ + "Artifact" + ], + "cardText": "\\Q{\\ET\\Q}\\E" + }, + { + "count": 4, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "cardTypes": [ + "Artifact" + ], + "cardText": "\\Q{\\EU\\Q}\\E" + }, + { + "count": 1, + "cardTypes": [ + "Artifact" + ], + "cardText": "Blue" + } + ] + } + ] + }, + { + "name": "Wand2Green", + "description": "Árbol de los cuentos", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "WandShop", + "overlaySprite": "Overlay2Green", + "rewards": [ + { + "count": 6, + "cardTypes": [ + "Artifact" + ], + "cardText": "\\Q{\\ET\\Q}\\E" + }, + { + "count": 2, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "cardTypes": [ + "Artifact" + ], + "cardText": "\\Q{\\EG\\Q}\\E" + }, + { + "count": 1, + "cardTypes": [ + "Artifact" + ], + "cardText": "Green" + } + ] + } + ] + }, + { + "name": "Wand4Green", + "description": "Árbol de los cuentos", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "WandShop", + "overlaySprite": "Overlay4Green", + "rewards": [ + { + "count": 4, + "cardTypes": [ + "Artifact" + ], + "cardText": "\\Q{\\ET\\Q}\\E" + }, + { + "count": 4, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "cardTypes": [ + "Artifact" + ], + "cardText": "\\Q{\\EG\\Q}\\E" + }, + { + "count": 1, + "cardTypes": [ + "Artifact" + ], + "cardText": "Green" + } + ] + } + ] + }, + { + "name": "Wand2Red", + "description": "El Gran Horno", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "WandShop", + "overlaySprite": "Overlay2Red", + "rewards": [ + { + "count": 6, + "cardTypes": [ + "Artifact" + ], + "cardText": "\\Q{\\ET\\Q}\\E" + }, + { + "count": 2, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "cardTypes": [ + "Artifact" + ], + "cardText": "\\Q{\\ER\\Q}\\E" + }, + { + "count": 1, + "cardTypes": [ + "Artifact" + ], + "cardText": "Red" + } + ] + } + ] + }, + { + "name": "Wand4Red", + "description": "El Gran Horno", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "WandShop", + "overlaySprite": "Overlay2Red", + "rewards": [ + { + "count": 4, + "cardTypes": [ + "Artifact" + ], + "cardText": "\\Q{\\ET\\Q}\\E" + }, + { + "count": 4, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "cardTypes": [ + "Artifact" + ], + "cardText": "\\Q{\\ER\\Q}\\E" + }, + { + "count": 1, + "cardTypes": [ + "Artifact" + ], + "cardText": "Red" + } + ] + } + ] + }, + { + "name": "Wand2White", + "description": "Guarida antigua", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "WandShop", + "overlaySprite": "Overlay2White", + "rewards": [ + { + "count": 6, + "cardTypes": [ + "Artifact" + ], + "cardText": "\\Q{\\ET\\Q}\\E" + }, + { + "count": 2, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "cardTypes": [ + "Artifact" + ], + "cardText": "\\Q{\\EW\\Q}\\E" + }, + { + "count": 1, + "cardTypes": [ + "Artifact" + ], + "cardText": "White" + } + ] + } + ] + }, + { + "name": "Wand4White", + "description": "Guarida antigua", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "WandShop", + "overlaySprite": "Overlay4White", + "rewards": [ + { + "count": 4, + "cardTypes": [ + "Artifact" + ], + "cardText": "\\Q{\\ET\\Q}\\E" + }, + { + "count": 4, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "cardTypes": [ + "Artifact" + ], + "cardText": "\\Q{\\EW\\Q}\\E" + }, + { + "count": 1, + "cardTypes": [ + "Artifact" + ], + "cardText": "White" + } + ] + } + ] + }, + { + "name": "Bird", + "description": "Aves del Mismo Plumaje", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "BirdShop", + "rewards": [ + { + "count": 8, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Bird" + ] + }, + { + "count": 1, + "cardText": "Bird" + } + ] + } + ] + }, + { + "name": "Nobles", + "description": "Alta Corte", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "NobleShop", + "rewards": [ + { + "count": 4, + "subTypes": [ + "Noble" + ] + }, + { + "count": 4, + "type": "Union", + "cardUnion": [ + { + "count": 4, + "cardText": "Monarch" + } + ] + } + ] + }, + { + "name": "Saga", + "description": "Revive la Historia", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "SagaShop", + "rewards": [ + { + "count": 8, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Saga" + ] + }, + { + "count": 1, + "cardText": "Saga" + } + ] + } + ] + }, + { + "name": "Giant", + "description": "Descuentos Gigantescos", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "GiantShop", + "rewards": [ + { + "count": 8, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Giant" + ] + }, + { + "count": 1, + "cardText": "Giant" + } + ] + } + ] + }, + { + "name": "SnowShop", + "description": "Cartas Heladas", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "SnowShop", + "rewards": [ + { + "count": 8, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "superTypes": [ + "Snow" + ] + }, + { + "count": 2, + "cardText": "Snow" + } + ] + } + ] + }, + { + "name": "LargeSeaCreatures", + "description": "Cartas de las Profundidades", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "LargeSeaCreaturesShop", + "rewards": [ + { + "count": 2, + "subTypes": [ + "Serpent" + ] + }, + { + "count": 2, + "subTypes": [ + "Kraken" + ] + }, + { + "count": 2, + "subTypes": [ + "Leviathan" + ] + }, + { + "count": 2, + "subTypes": [ + "Octopus" + ] + } + ] + }, + { + "name": "FlipShop", + "description": "Dos por el Precio de Uno", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "FlipShop", + "rewards": [ + { + "count": 1, + "cardText": "Flip it" + }, + { + "count": 7, + "cardText": "Transform" + } + ] + }, + { + "name": "Battle", + "description": "Batallas de las Eras", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "BattleShop", + "rewards": [ + { + "count": 8, + "cardTypes": [ + "Battle" + ] + } + ] + }, + { + "name": "Bird4Blue", + "description": "Aven Lectores del Viento", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "BirdShop", + "overlaySprite": "Overlay4Blue", + "rewards": [ + { + "count": 4, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Bird" + ] + }, + { + "count": 1, + "cardText": "Bird" + } + ] + }, + { + "count": 4, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Bird" + ], + "colors": [ + "blue" + ] + }, + { + "count": 1, + "cardText": "Bird", + "colors": [ + "blue" + ] + } + ] + } + ] + }, + { + "name": "Bird4White", + "description": "Parada de Alas", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "BirdShop", + "overlaySprite": "Overlay4White", + "rewards": [ + { + "count": 4, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Bird" + ] + }, + { + "count": 1, + "cardText": "Bird" + } + ] + }, + { + "count": 4, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Bird" + ], + "colors": [ + "white" + ] + }, + { + "count": 1, + "cardText": "Bird", + "colors": [ + "white" + ] + } + ] + } + ] + }, + { + "name": "Bird4Azorius", + "description": "Criados en el Pozo Siniestro", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "BirdShop", + "overlaySprite": "Overlay4White", + "rewards": [ + { + "count": 4, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Bird" + ] + }, + { + "count": 1, + "cardText": "Bird" + } + ] + }, + { + "count": 4, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Bird" + ], + "colors": [ + "white" + ] + }, + { + "count": 1, + "cardText": "Bird", + "colors": [ + "white" + ] + } + ] + } + ] + }, + { + "name": "Spirit", + "description": "Espíritu de Halloween", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "SpiritShop", + "rewards": [ + { + "count": 8, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Spirit" + ] + }, + { + "count": 1, + "cardText": "\\bSpirits?\\b" + } + ] + } + ] + }, + { + "name": "Spirit4Blue", + "description": "Atrapasueños", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "SpiritShop", + "overlaySprite": "Overlay4Blue", + "rewards": [ + { + "count": 4, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Spirit" + ] + }, + { + "count": 1, + "cardText": "\\bSpirits?\\b" + } + ] + }, + { + "count": 4, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Spirit" + ], + "colors": [ + "blue" + ] + }, + { + "count": 1, + "cardText": "\\bSpirits?\\b", + "colors": [ + "blue" + ] + } + ] + } + ] + }, + { + "name": "Spirit4White", + "description": "Espíritus bienaventurados", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "SpiritShop", + "overlaySprite": "Overlay4White", + "rewards": [ + { + "count": 4, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Spirit" + ] + }, + { + "count": 1, + "cardText": "\\bSpirits?\\b" + } + ] + }, + { + "count": 4, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Spirit" + ], + "colors": [ + "white" + ] + }, + { + "count": 1, + "cardText": "\\bSpirits?\\b", + "colors": [ + "white" + ] + } + ] + } + ] + }, + { + "name": "Wolf", + "description": "Espíritu de la caza", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "WolfShop", + "rewards": [ + { + "count": 8, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Wolf", + "Werewolf" + ] + }, + { + "count": 1, + "cardText": "Wolf" + }, + { + "count": 1, + "cardText": "Werewolf" + } + ] + } + ] + }, + { + "name": "Wolf4Green", + "description": "Aullido del depredador", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "WolfShop", + "overlaySprite": "Overlay4Green", + "rewards": [ + { + "count": 4, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Wolf", + "Werewolf" + ] + }, + { + "count": 1, + "cardText": "Wolf" + }, + { + "count": 1, + "cardText": "Werewolf" + } + ] + }, + { + "count": 4, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Wolf", + "Werewolf" + ], + "colors": [ + "green" + ] + }, + { + "count": 1, + "cardText": "Wolf", + "colors": [ + "red" + ] + }, + { + "count": 1, + "cardText": "Werewolf", + "colors": [ + "green" + ] + } + ] + } + ] + }, + { + "name": "Wolf4Red", + "description": "Alfas reunidos", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "WolfShop", + "overlaySprite": "Overlay4Red", + "rewards": [ + { + "count": 4, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Wolf", + "Werewolf" + ] + }, + { + "count": 1, + "cardText": "Wolf" + }, + { + "count": 1, + "cardText": "Werewolf" + } + ] + }, + { + "count": 4, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Wolf", + "Werewolf" + ], + "colors": [ + "red" + ] + }, + { + "count": 1, + "cardText": "Wolf", + "colors": [ + "red" + ] + }, + { + "count": 1, + "cardText": "Werewolf", + "colors": [ + "red" + ] + } + ] + } + ] + }, + { + "name": "Knight", + "description": "Caballeros Jinetes", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "KnightShop", + "rewards": [ + { + "count": 8, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Knight" + ] + }, + { + "count": 1, + "cardText": "Knight" + } + ] + } + ] + }, + { + "name": "Knight4Black", + "description": "Jinetes del Pavor", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "KnightShop", + "overlaySprite": "Overlay4Black", + "rewards": [ + { + "count": 4, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Knight" + ] + }, + { + "count": 1, + "cardText": "Knight" + } + ] + }, + { + "count": 4, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Knight" + ], + "colors": [ + "black" + ] + }, + { + "count": 1, + "cardText": "Knight", + "colors": [ + "black" + ] + } + ] + } + ] + }, + { + "name": "Knight4Red", + "description": "Defensores del Caos", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "KnightShop", + "overlaySprite": "Overlay4Red", + "rewards": [ + { + "count": 4, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Knight" + ] + }, + { + "count": 1, + "cardText": "Knight" + } + ] + }, + { + "count": 4, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Knight" + ], + "colors": [ + "red" + ] + }, + { + "count": 1, + "cardText": "Knight", + "colors": [ + "red" + ] + } + ] + } + ] + }, + { + "name": "Knight4White", + "description": "Defensores de la Ley", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "KnightShop", + "overlaySprite": "Overlay4White", + "rewards": [ + { + "count": 4, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Knight" + ] + }, + { + "count": 1, + "cardText": "Knight" + } + ] + }, + { + "count": 4, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Knight" + ], + "colors": [ + "white" + ] + }, + { + "count": 1, + "cardText": "Knight", + "colors": [ + "white" + ] + } + ] + } + ] + }, + { + "name": "Random", + "description": "Pack Shop (?)", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "RandomShop", + "rewards": [ + { + "count": 8 + } + ] + }, + { + "name": "Planeswalker", + "description": "Planeswalkers de Toda la Vida", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "PlaneswalkerShop", + "rewards": [ + { + "count": 8, + "cardTypes": [ + "Planeswalker" + ] + } + ] + }, + { + "name": "Planeswalker4Black", + "description": "La Guía de Sorin", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "PlaneswalkerShop", + "overlaySprite": "Overlay4Black", + "rewards": [ + { + "count": 4, + "cardTypes": [ + "Planeswalker" + ] + }, + { + "count": 4, + "cardTypes": [ + "Planeswalker" + ], + "colors": [ + "black" + ] + } + ] + }, + { + "name": "Planeswalker4Blue", + "description": "Isla de Teferi", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "PlaneswalkerShop", + "overlaySprite": "Overlay4Blue", + "rewards": [ + { + "count": 4, + "cardTypes": [ + "Planeswalker" + ] + }, + { + "count": 4, + "cardTypes": [ + "Planeswalker" + ], + "colors": [ + "blue" + ] + } + ] + }, + { + "name": "Planeswalker4Green", + "description": "Los Compañeros de Garruk", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "PlaneswalkerShop", + "overlaySprite": "Overlay4Green", + "rewards": [ + { + "count": 4, + "cardTypes": [ + "Planeswalker" + ] + }, + { + "count": 4, + "cardTypes": [ + "Planeswalker" + ], + "colors": [ + "green" + ] + } + ] + }, + { + "name": "Planeswalker4Red", + "description": "Juramento de Chandra", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "PlaneswalkerShop", + "overlaySprite": "Overlay4Red", + "rewards": [ + { + "count": 4, + "cardTypes": [ + "Planeswalker" + ] + }, + { + "count": 4, + "cardTypes": [ + "Planeswalker" + ], + "colors": [ + "red" + ] + } + ] + }, + { + "name": "Planeswalker4White", + "description": "Compañía de Gideon", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "PlaneswalkerShop", + "overlaySprite": "Overlay4White", + "rewards": [ + { + "count": 4, + "cardTypes": [ + "Planeswalker" + ] + }, + { + "count": 4, + "cardTypes": [ + "Planeswalker" + ], + "colors": [ + "white" + ] + } + ] + }, + { + "name": "Skeleton", + "description": "Los Huesos de Bob", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "SkeletonShop", + "rewards": [ + { + "count": 8, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Skeleton" + ] + }, + { + "count": 1, + "cardText": "Skeleton" + } + ] + } + ] + }, + { + "name": "Sphinx", + "description": "Esfinges Crípticas", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "SphinxShop", + "rewards": [ + { + "count": 8, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Sphinx" + ] + }, + { + "count": 1, + "cardText": "Sphinx" + } + ] + } + ] + }, + { + "name": "Hydra", + "description": "La Tienda de Hidras de Huryle", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "HydraShop", + "rewards": [ + { + "count": 8, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Hydra" + ] + }, + { + "count": 1, + "cardText": "Hydra" + } + ] + } + ] + }, + { + "name": "Spiders", + "description": "Bichos y Reptantes Exóticos", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "InsectSpiderShop", + "rewards": [ + { + "count": 8, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Spider" + ] + }, + { + "count": 1, + "cardText": "Spider" + } + ] + } + ] + }, + { + "name": "SmallCats", + "description": "El Reino Felino", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "CatShop", + "rewards": [ + { + "count": 8, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Cat" + ] + }, + { + "count": 1, + "cardText": "\\bCats?\\b" + } + ] + } + ] + }, + { + "name": "Shapeshifter", + "description": "Las Formas Infinitas de Proteo", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "ShapeshifterShop", + "rewards": [ + { + "count": 8, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Shapeshifter" + ] + }, + { + "count": 1, + "cardText": "Shapeshifter" + } + ] + } + ] + }, + { + "name": "Gods", + "description": "La Dosis de Apoteosis de Al", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "GodMinigodShop", + "rewards": [ + { + "count": 4, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "God" + ] + }, + { + "count": 1, + "cardText": "\\bGods?\\b" + } + ] + }, + { + "count": 4, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Demigod" + ] + }, + { + "count": 1, + "cardText": "Demigod" + } + ] + } + ] + }, + { + "name": "Insects", + "description": "El Invernadero de Bichos de Grist", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "InsectShop", + "rewards": [ + { + "count": 8, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Insect" + ] + }, + { + "count": 1, + "cardText": "Insect" + } + ] + } + ] + }, + { + "name": "Horrors", + "description": "Horrores Horripilantes", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "HorrorShop", + "rewards": [ + { + "count": 8, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Horror" + ] + }, + { + "count": 1, + "cardText": "Horror" + } + ] + } + ] + }, + { + "name": "Mutants", + "description": "Mutantes en Marcha", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "MutantShop", + "rewards": [ + { + "count": 4, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Mutant" + ] + }, + { + "count": 1, + "cardText": "Mutant" + } + ] + }, + { + "count": 4, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "cardText": "Mutate" + } + ] + } + ] + }, + { + "name": "Eldrazi", + "description": "Emisarios Sobrenaturales", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "EldraziShop", + "rewards": [ + { + "count": 8, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Eldrazi" + ] + }, + { + "count": 1, + "cardText": "Eldrazi" + } + ] + } + ] + }, + { + "name": "Pirate", + "description": "Saqueadores Merodeadores", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "PirateShop", + "rewards": [ + { + "count": 8, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Pirate" + ] + }, + { + "count": 1, + "cardText": "Pirate" + } + ] + } + ] + }, + { + "name": "Pirate4Blue", + "description": "Ladrones de comerciantes", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "PirateShop", + "overlaySprite": "Overlay4Blue", + "rewards": [ + { + "count": 4, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Pirate" + ] + }, + { + "count": 1, + "cardText": "Pirate" + } + ] + }, + { + "count": 4, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Pirate" + ], + "colors": [ + "blue" + ] + }, + { + "count": 1, + "cardText": "Pirate", + "colors": [ + "blue" + ] + } + ] + } + ] + }, + { + "name": "Rogue", + "description": "Corredores del Callejón Perdición", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "RogueShop", + "rewards": [ + { + "count": 8, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Rogue" + ] + }, + { + "count": 1, + "cardText": "Rogue" + } + ] + } + ] + }, + { + "name": "Rogue4Black", + "description": "Expertos en Adquisiciones", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "RogueShop", + "overlaySprite": "Overlay4Black", + "rewards": [ + { + "count": 4, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Rogue" + ] + }, + { + "count": 1, + "cardText": "Rogue" + } + ] + }, + { + "count": 4, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Rogue" + ], + "colors": [ + "black" + ] + }, + { + "count": 1, + "cardText": "Rogue", + "colors": [ + "black" + ] + } + ] + } + ] + }, + { + "name": "Rogue4Blue", + "description": "Guardianes de Llaves", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "RogueShop", + "overlaySprite": "Overlay4Blue", + "rewards": [ + { + "count": 4, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Rogue" + ] + }, + { + "count": 1, + "cardText": "Rogue" + } + ] + }, + { + "count": 4, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Rogue" + ], + "colors": [ + "blue" + ] + }, + { + "count": 1, + "cardText": "Rogue", + "colors": [ + "blue" + ] + } + ] + } + ] + }, + { + "name": "Shaman", + "description": "Un Chamán pa'l Colega", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "ShamanShop", + "rewards": [ + { + "count": 8, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Shaman" + ] + }, + { + "count": 1, + "cardText": "Shaman" + } + ] + } + ] + }, + { + "name": "Wizard", + "description": "La Prestidigitación de Tim", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "WizardShop", + "rewards": [ + { + "count": 8, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Wizard" + ] + }, + { + "count": 1, + "cardText": "Wizard" + } + ] + } + ] + }, + { + "name": "Legend", + "description": "Tomo de Leyendas", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "LegendShop", + "rewards": [ + { + "count": 8, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "superTypes": [ + "Legend", + "Legendary" + ] + }, + { + "count": 1, + "cardText": "Legendary" + }, + { + "count": 1, + "cardText": "Historic" + } + ] + } + ] + }, + { + "name": "Legend4Black", + "description": "Torre pirexiana", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "LegendShop", + "overlaySprite": "Overlay4Black", + "rewards": [ + { + "count": 4, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "superTypes": [ + "Legend", + "Legendary" + ] + }, + { + "count": 1, + "cardText": "Legendary" + }, + { + "count": 1, + "cardText": "Historic" + } + ] + }, + { + "count": 4, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "superTypes": [ + "Legend", + "Legendary" + ], + "colors": [ + "black" + ] + }, + { + "count": 1, + "cardText": "Legendary", + "colors": [ + "black" + ] + }, + { + "count": 1, + "cardText": "Historic", + "colors": [ + "black" + ] + } + ] + } + ] + }, + { + "name": "Legend4Blue", + "description": "La Visión de Teferi", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "LegendShop", + "overlaySprite": "Overlay4Blue", + "rewards": [ + { + "count": 4, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "superTypes": [ + "Legend", + "Legendary" + ] + }, + { + "count": 1, + "cardText": "Legendary" + }, + { + "count": 1, + "cardText": "Historic" + } + ] + }, + { + "count": 4, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "superTypes": [ + "Legend", + "Legendary" + ], + "colors": [ + "blue" + ] + }, + { + "count": 1, + "cardText": "Legendary", + "colors": [ + "blue" + ] + }, + { + "count": 1, + "cardText": "Historic", + "colors": [ + "blue" + ] + } + ] + } + ] + }, + { + "name": "Legend4Green", + "description": "Historia de Kamigawa", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "LegendShop", + "overlaySprite": "Overlay4Green", + "rewards": [ + { + "count": 4, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "superTypes": [ + "Legend", + "Legendary" + ] + }, + { + "count": 1, + "cardText": "Legendary" + }, + { + "count": 1, + "cardText": "Historic" + } + ] + }, + { + "count": 4, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "superTypes": [ + "Legend", + "Legendary" + ], + "colors": [ + "green" + ] + }, + { + "count": 1, + "cardText": "Legendary", + "colors": [ + "green" + ] + }, + { + "count": 1, + "cardText": "Historic", + "colors": [ + "green" + ] + } + ] + } + ] + }, + { + "name": "Legend4Red", + "description": "Crisol del Desafío", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "LegendShop", + "overlaySprite": "Overlay4Red", + "rewards": [ + { + "count": 4, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "superTypes": [ + "Legend", + "Legendary" + ] + }, + { + "count": 1, + "cardText": "Legendary" + }, + { + "count": 1, + "cardText": "Historic" + } + ] + }, + { + "count": 4, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "superTypes": [ + "Legend", + "Legendary" + ], + "colors": [ + "red" + ] + }, + { + "count": 1, + "cardText": "Legendary", + "colors": [ + "red" + ] + }, + { + "count": 1, + "cardText": "Historic", + "colors": [ + "red" + ] + } + ] + } + ] + }, + { + "name": "Legend4White", + "description": "Monumento a Avacyn", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "LegendShop", + "overlaySprite": "Overlay4White", + "rewards": [ + { + "count": 4, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "superTypes": [ + "Legend", + "Legendary" + ] + }, + { + "count": 1, + "cardText": "Legendary" + }, + { + "count": 1, + "cardText": "Historic" + } + ] + }, + { + "count": 4, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "superTypes": [ + "Legend", + "Legendary" + ], + "colors": [ + "white" + ] + }, + { + "count": 1, + "cardText": "Legendary", + "colors": [ + "white" + ] + }, + { + "count": 1, + "cardText": "Historic", + "colors": [ + "white" + ] + } + ] + } + ] + }, + { + "name": "PhyrexianColorless", + "description": "Una Ganga Compleata", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "PhyrexianShop", + "rewards": [ + { + "count": 8, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Phyrexian" + ] + }, + { + "count": 1, + "cardText": "infect|oil|proliferate|incubate|toxic|corrupted|phyrexian|poison|living weapon|for mirrodin|compleated" + } + ] + } + ] + }, + { + "name": "PhyrexianWhite", + "description": "Ofrendas de la Ortodoxia", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "PhyrexianShop", + "rewards": [ + { + "count": 5, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "colors": [ + "white" + ], + "subTypes": [ + "Phyrexian" + ] + }, + { + "count": 1, + "colors": [ + "white" + ], + "cardText": "infect|oil|proliferate|incubate|toxic|corrupted|phyrexian|poison|living weapon|compleated" + } + ] + }, + { + "count": 3, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Phyrexian" + ] + }, + { + "count": 1, + "cardText": "infect|oil|proliferate|incubate|toxic|corrupted|phyrexian|poison|living weapon|compleated" + } + ] + } + ] + }, + { + "name": "PhyrexianBlue", + "description": "Ojo para la Calidad", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "PhyrexianShop", + "rewards": [ + { + "count": 5, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "colors": [ + "blue" + ], + "subTypes": [ + "Phyrexian" + ] + }, + { + "count": 1, + "colors": [ + "blue" + ], + "cardText": "infect|oil|proliferate|incubate|toxic|corrupted|phyrexian|poison|living weapon|compleated" + } + ] + }, + { + "count": 3, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Phyrexian" + ] + }, + { + "count": 1, + "cardText": "infect|oil|proliferate|incubate|toxic|corrupted|phyrexian|poison|living weapon|compleated" + } + ] + } + ] + }, + { + "name": "PhyrexianGreen", + "description": "Precios Laberínticos", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "PhyrexianShop", + "rewards": [ + { + "count": 5, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "colors": [ + "green" + ], + "subTypes": [ + "Phyrexian" + ] + }, + { + "count": 1, + "colors": [ + "green" + ], + "cardText": "infect|oil|proliferate|incubate|toxic|corrupted|phyrexian|poison|living weapon|compleated" + } + ] + }, + { + "count": 3, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Phyrexian" + ] + }, + { + "count": 1, + "cardText": "infect|oil|proliferate|incubate|toxic|corrupted|phyrexian|poison|living weapon|compleated" + } + ] + } + ] + }, + { + "name": "PhyrexianRed", + "description": "Los Rebeldes de Rompereinos", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "PhyrexianShop", + "rewards": [ + { + "count": 5, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "colors": [ + "red" + ], + "subTypes": [ + "Phyrexian" + ] + }, + { + "count": 1, + "colors": [ + "red" + ], + "cardText": "infect|oil|proliferate|incubate|toxic|corrupted|phyrexian|poison|living weapon|for mirrodin|compleated" + } + ] + }, + { + "count": 3, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Phyrexian" + ] + }, + { + "count": 1, + "cardText": "infect|oil|proliferate|incubate|toxic|corrupted|phyrexian|poison|living weapon|for mirrodin|compleated" + } + ] + } + ] + }, + { + "name": "PhyrexianBlack", + "description": "Restos de Escoria", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "PhyrexianShop", + "rewards": [ + { + "count": 5, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "colors": [ + "black" + ], + "subTypes": [ + "Phyrexian" + ] + }, + { + "count": 1, + "colors": [ + "black" + ], + "cardText": "infect|oil|proliferate|incubate|toxic|corrupted|phyrexian|poison|living weapon|compleated" + } + ] + }, + { + "count": 3, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "subTypes": [ + "Phyrexian" + ] + }, + { + "count": 1, + "cardText": "infect|oil|proliferate|incubate|toxic|corrupted|phyrexian|poison|living weapon|compleated" + } + ] + } + ] + }, + { + "name": "UnionTest", + "description": "Soldier text OR Soldier type OR black goblin", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "LegendShop", + "overlaySprite": "Overlay8White", + "rewards": [ + { + "count": 8, + "type": "Union", + "cardUnion": [ + { + "count": 1, + "cardText": "Soldier" + }, + { + "count": 1, + "subTypes": [ + "Soldier" + ] + }, + { + "count": 1, + "subTypes": [ + "Goblin" + ], + "colors": [ + "black" + ] + } + ] + } + ] + }, + { + "name": "goblinKingShop2", + "description": "Goblin King Shop Test 2", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "RotatingShop", + "rewards": [ + { + "count": 8, + "type": "Union", + "cardUnion": [ + { + "sourceDeck": "decks/standard/goblinking.dck" + }, + { + "count": 1, + "subTypes": [ + "Goblin" + ], + "minDate": "2021-09-09" + } + ] + } + ] + }, + { + "name": "ubwarhammer40K", + "description": "Warhammer 40K", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "UBShop", + "rewards": [ + { + "count": 8, + "type": "Union", + "cardUnion": [ + { + "sourceDeck": "decks/shop/ubwarhammer40K.dck" + }, + { + "count": 1 + } + ] + } + ] + }, + { + "name": "AttractionShop", + "description": "Cart-naval de Curiosidades", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "FunnyShop", + "rewards": [ + { + "count": 4, + "sourceDeck": "decks/shop/funny/funny_cards.dck", + "subTypes": [ + "Attraction" + ] + }, + { + "count": 4, + "sourceDeck": "decks/shop/funny/funny_cards.dck", + "cardText": "Attraction" + }, + { + "count": 1, + "probability": 0.5, + "sourceDeck": "decks/shop/funny/funny_cards_promo.dck", + "cardText": "Attraction" + } + ] + }, + { + "name": "ContraptionShop", + "description": "Compañía Clanc y Manivela", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "FunnyShop", + "rewards": [ + { + "count": 4, + "sourceDeck": "decks/shop/funny/funny_cards.dck", + "subTypes": [ + "Contraption" + ] + }, + { + "count": 4, + "sourceDeck": "decks/shop/funny/funny_cards.dck", + "cardText": "Contraption" + } + ] + }, + { + "name": "BoosterPackShop", + "description": "Vuelta a los Básicos", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "BoosterShop", + "rewards": [ + { + "type": "cardPackShop", + "count": 8 + } + ] + }, + { + "name": "WhiteBoosterPackShop", + "description": "Sobres Benditos", + "spriteAtlas": "maps/tileset/buildings.atlas", + "overlaySprite": "Overlay4White", + "sprite": "BoosterShop", + "rewards": [ + { + "type": "cardPackShop", + "count": 4, + "colors": [ + "White" + ] + }, + { + "type": "cardPackShop", + "count": 4 + } + ] + }, + { + "name": "BlueBoosterPackShop", + "description": "Sobres de Contadores", + "spriteAtlas": "maps/tileset/buildings.atlas", + "overlaySprite": "Overlay4Blue", + "sprite": "BoosterShop", + "rewards": [ + { + "type": "cardPackShop", + "count": 4, + "colors": [ + "Blue" + ] + }, + { + "type": "cardPackShop", + "count": 4 + } + ] + }, + { + "name": "BlackBoosterPackShop", + "description": "Género de Cementerio", + "spriteAtlas": "maps/tileset/buildings.atlas", + "overlaySprite": "Overlay4Black", + "sprite": "BoosterShop", + "rewards": [ + { + "type": "cardPackShop", + "count": 4, + "colors": [ + "Black" + ] + }, + { + "type": "cardPackShop", + "count": 4 + } + ] + }, + { + "name": "RedBoosterPackShop", + "description": "Maravillas de Fuego Salvaje", + "spriteAtlas": "maps/tileset/buildings.atlas", + "overlaySprite": "Overlay4Red", + "sprite": "BoosterShop", + "rewards": [ + { + "type": "cardPackShop", + "count": 4, + "colors": [ + "Red" + ] + }, + { + "type": "cardPackShop", + "count": 4 + } + ] + }, + { + "name": "GreenBoosterPackShop", + "description": "Sobres del Cuidado de la Naturaleza", + "spriteAtlas": "maps/tileset/buildings.atlas", + "overlaySprite": "Overlay4Green", + "sprite": "BoosterShop", + "rewards": [ + { + "type": "cardPackShop", + "count": 4, + "colors": [ + "Green" + ] + }, + { + "type": "cardPackShop", + "count": 4 + } + ] + }, + { + "name": "ColorlessBoosterPackShop", + "description": "Sobres al Futuro", + "spriteAtlas": "maps/tileset/buildings.atlas", + "overlaySprite": "Overlay4Colorless", + "sprite": "BoosterShop", + "rewards": [ + { + "type": "cardPackShop", + "count": 4, + "colors": [ + "Colorless" + ] + }, + { + "type": "cardPackShop", + "count": 4 + } + ] + }, + { + "name": "AlphaBoosterPackShop", + "description": "Archivos Antiguos", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "BoosterShop", + "rewards": [ + { + "type": "cardPackShop", + "count": 8, + "startDate": 1994, + "endDate": 2004 + } + ] + }, + { + "name": "BetaBoosterPackShop", + "description": "El Alijo Planar", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "BoosterShop", + "rewards": [ + { + "type": "cardPackShop", + "count": 8, + "startDate": 2005, + "endDate": 2013 + } + ] + }, + { + "name": "GammaBoosterPackShop", + "description": "Ravnica Reabastecida", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "BoosterShop", + "rewards": [ + { + "type": "cardPackShop", + "count": 8, + "startDate": 2014, + "endDate": 2020 + } + ] + }, + { + "name": "DeltaBoosterPackShop", + "description": "La Cámara Moderna", + "spriteAtlas": "maps/tileset/buildings.atlas", + "sprite": "BoosterShop", + "rewards": [ + { + "type": "cardPackShop", + "count": 8, + "startDate": 2021 + } + ] + } +] diff --git a/forge-gui/res/adventure/common/maps/map/main_story/spawn.tmx b/forge-gui/res/adventure/common/maps/map/main_story/spawn.tmx index 226c0e0b1003..32f5dc8a8310 100644 --- a/forge-gui/res/adventure/common/maps/map/main_story/spawn.tmx +++ b/forge-gui/res/adventure/common/maps/map/main_story/spawn.tmx @@ -31,10 +31,10 @@ [ { - "text": "Hello, planeswalker {var=player_name}.", + "text": "Hello, planeswalker {var=player_name}.","loctext":"advDlgCommonMainStorySpawn1", "options": [ { - "name": "Why am I here?", + "name": "Why am I here?","locname":"advDlgCommonMainStorySpawn2", "condition": [ { "checkQuestFlag": "mainQuest", @@ -45,22 +45,22 @@ "not": true } ], - "text": "This... is Shandalar. A plane where mana is so prevalent and used by all that is sentient. Even the common people use spells daily.", + "text": "This... is Shandalar. A plane where mana is so prevalent and used by all that is sentient. Even the common people use spells daily.","loctext":"advDlgCommonMainStorySpawn3", "voiceFile": "audio/WizPAR1.mp3", "options": [ { - "name": "(Continue)", - "text": "Like you, some planeswalkers have been imprisoned here by the guardians in the castles. You must defeat them in battle to release us from this plane. Use your powers of magic to challenge them.", + "name": "(Continue)","locname":"advDlgBtnContinue", + "text": "Like you, some planeswalkers have been imprisoned here by the guardians in the castles. You must defeat them in battle to release us from this plane. Use your powers of magic to challenge them.","loctext":"advDlgCommonMainStorySpawn4", "voiceFile": "audio/WizPAR2.mp3", "options": [ { - "name": "(Continue)", - "text": "Find the planeswalkers trapped here. Guide them to me, they will help you on your journey.", + "name": "(Continue)","locname":"advDlgBtnContinue", + "text": "Find the planeswalkers trapped here. Guide them to me, they will help you on your journey.","loctext":"advDlgCommonMainStorySpawn5", "voiceFile": "audio/WizPAR3.mp3", "options": [ { - "name": "(Continue)", - "text": "Take this rune. You can use it anytime to return here. Be careful, planeswalker.", + "name": "(Continue)","locname":"advDlgBtnContinue", + "text": "Take this rune. You can use it anytime to return here. Be careful, planeswalker.","loctext":"advDlgCommonMainStorySpawn6", "action": [ { "addItem": "Colorless rune" @@ -69,8 +69,8 @@ "voiceFile": "audio/WizPAR4.mp3", "options": [ { - "name": "(Continue)", - "text": "I have something else for you, {var=player_name}. Take these coins, but do not spend them with merchants.", + "name": "(Continue)","locname":"advDlgBtnContinue", + "text": "I have something else for you, {var=player_name}. Take these coins, but do not spend them with merchants.","loctext":"advDlgCommonMainStorySpawn7", "condition": [ { "checkCharacterFlag": "freeChallengeCoins", @@ -106,19 +106,19 @@ } } ], - "name": "What are they, then? What are they for?", - "text": "These are Challenge Coins. Spellcasters of Shandalar will often gather to hold tests of skill. These coins will grant you entry to contests, and the prizes available can help you on your journey.", + "name": "What are they, then? What are they for?","locname":"advDlgCommonMainStorySpawn8", + "text": "These are Challenge Coins. Spellcasters of Shandalar will often gather to hold tests of skill. These coins will grant you entry to contests, and the prizes available can help you on your journey.","loctext":"advDlgCommonMainStorySpawn9", "options": [ { - "name": "Where are these contests?", - "text": "Show the coin to innkeepers. If there is a group in the town, the innkeeper will direct you to them.", + "name": "Where are these contests?","locname":"advDlgCommonMainStorySpawn10", + "text": "Show the coin to innkeepers. If there is a group in the town, the innkeeper will direct you to them.","loctext":"advDlgCommonMainStorySpawn11", "options": [ { - "name": "Thank you", - "text": "I will reopen the portal you arrived through now, but it cannot send you back from wherever you have come. On the other side, you will find the barrens of Shandalar which I, and now you, call home.", + "name": "Thank you","locname":"advDlgCommonMainStorySpawn12", + "text": "I will reopen the portal you arrived through now, but it cannot send you back from wherever you have come. On the other side, you will find the barrens of Shandalar which I, and now you, call home.","loctext":"advDlgCommonMainStorySpawn13", "options": [ { - "name": "(Leave)", + "name": "(Leave)","locname":"advDlgBtnLeaveParen", "action": [ { "setQuestFlag": { @@ -138,8 +138,8 @@ ] }, { - "name": "Thank you.", - "text": "I will reopen the portal you arrived through now, but it cannot send you back from wherever you have come. On the other side, you will find the barrens of Shandalar which I, and now you, call home.", + "name": "Thank you.","locname":"advDlgCommonMainStorySpawn14", + "text": "I will reopen the portal you arrived through now, but it cannot send you back from wherever you have come. On the other side, you will find the barrens of Shandalar which I, and now you, call home.","loctext":"advDlgCommonMainStorySpawn13", "condition": [ { "checkCharacterFlag": "freeChallengeCoins" @@ -147,7 +147,7 @@ ], "options": [ { - "name": "(Leave)", + "name": "(Leave)","locname":"advDlgBtnLeaveParen", "action": [ { "setQuestFlag": { @@ -169,7 +169,7 @@ ] }, { - "name": "Goodbye." + "name": "Goodbye.","locname":"advDlgCommonMainStorySpawn15" } ] }, @@ -184,10 +184,10 @@ } } ], - "text": "\"{var=player_name}! I feel the Guardians' spell growing weaker! Defeat them all and you may save us yet.\"", + "text": "\"{var=player_name}! I feel the Guardians' spell growing weaker! Defeat them all and you may save us yet.\"","loctext":"advDlgCommonMainStorySpawn16", "options": [ { - "name": "\"Goodbye.\"" + "name": "\"Goodbye.\"","locname":"advDlgCommonMainStorySpawn17" } ] }, @@ -201,7 +201,7 @@ } } ], - "text": "\"Good to see you again {var=player_name}. I take it that you have had some success in your quest?\"", + "text": "\"Good to see you again {var=player_name}. I take it that you have had some success in your quest?\"","loctext":"advDlgCommonMainStorySpawn18", "options": [ { "action": [ @@ -221,27 +221,27 @@ "POIReference": "" } ], - "name": "\"I have defeated the occupants of the five castles, but I did not find any captives.\"", - "text": "\"I suppose I should have explained further. The guardians you have defeated were not captors, not directly. But their mere presence had world altering effects.\"", + "name": "\"I have defeated the occupants of the five castles, but I did not find any captives.\"","locname":"advDlgCommonMainStorySpawn19", + "text": "\"I suppose I should have explained further. The guardians you have defeated were not captors, not directly. But their mere presence had world altering effects.\"","loctext":"advDlgCommonMainStorySpawn20", "options": [ { - "name": "\"Effects such as what?\"", - "text": "\"You likely saw a very focused version of the effects of their presence within their castles. But they also shrouded certain areas of our world, causing them to be... 'hidden', for the lack of a better term.\"", + "name": "\"Effects such as what?\"","locname":"advDlgCommonMainStorySpawn21", + "text": "\"You likely saw a very focused version of the effects of their presence within their castles. But they also shrouded certain areas of our world, causing them to be... 'hidden', for the lack of a better term.\"","loctext":"advDlgCommonMainStorySpawn22", "options": [ { - "name": "(Continue)", - "text": "\"The spell their combined presences created caused subtle tricks of the mind which made us look right past parts of our world. Including the prisons which DO hold the Planeswalkers. I believe you will now be able to find them...\"", + "name": "(Continue)","locname":"advDlgBtnContinue", + "text": "\"The spell their combined presences created caused subtle tricks of the mind which made us look right past parts of our world. Including the prisons which DO hold the Planeswalkers. I believe you will now be able to find them...\"","loctext":"advDlgCommonMainStorySpawn23", "options": [ { - "name": "(Continue)", - "text": "[RED]Developer's note:[] You have now reached the end of the currently available story content, but there is more to be found in Shandalar. Several difficult dungeons have now been added to your world map, and your card collection can continue to grow.", + "name": "(Continue)","locname":"advDlgBtnContinue", + "text": "[RED]Developer's note:[] You have now reached the end of the currently available story content, but there is more to be found in Shandalar. Several difficult dungeons have now been added to your world map, and your card collection can continue to grow.","loctext":"advDlgCommonMainStorySpawn24", "options": [ { - "name": "(Continue)", - "text": "[RED}Developer's note:[] Check in with this NPC after updating Forge (or watch for announcements in our Discord) to continue the story when it is ready. And thanks for coming on this Adventure with us!", + "name": "(Continue)","locname":"advDlgBtnContinue", + "text": "[RED}Developer's note:[] Check in with this NPC after updating Forge (or watch for announcements in our Discord) to continue the story when it is ready. And thanks for coming on this Adventure with us!","loctext":"advDlgCommonMainStorySpawn25", "options": [ { - "name": "(Chapter 1 complete)" + "name": "(Chapter 1 complete)","locname":"advDlgCommonMainStorySpawn26" } ] } @@ -273,10 +273,10 @@ "item": "Red Key" } ], - "text": "Hello again", + "text": "Hello again","loctext":"advDlgCommonMainStorySpawn27", "options": [ { - "name": "I want to trade in the five colored keys for a mox of my choice and the key to Emrakul's room", + "name": "I want to trade in the five colored keys for a mox of my choice and the key to Emrakul's room","locname":"advDlgCommonMainStorySpawn28", "action": [ { "grantRewardsChoice": [ diff --git a/forge-gui/res/languages/es-ES.properties b/forge-gui/res/languages/es-ES.properties index b3522b6294ed..f644d0a7aa59 100644 --- a/forge-gui/res/languages/es-ES.properties +++ b/forge-gui/res/languages/es-ES.properties @@ -3929,3 +3929,38 @@ lblCommanderBracketReasonExtraTurnsFew=Menos de 2 cartas de turnos adicionales n lblCommanderBracketReasonLateGameCombo=Los combos con 2 cartas al final del juego hacen que el mazo sea al menos del grupo 3. lblCommanderBracketReasonEarlyGameCombo=Los combos con 2 cartas al principio del juego hacen que el mazo sea al menos del grupo 4. lblAutoSellVariantsCommander=Vender automáticamente las variantes de cartas que posees en Commander +#Adventure Mode - common/maps/map/main_story/spawn.tmx +advDlgBtnContinue=(Continuar) +advDlgBtnLeaveParen=(Salir) +advDlgCommonMainStorySpawn1=Hola, planeswalker '{var=player_name}'. +advDlgCommonMainStorySpawn2=¿Por qué estoy aquí? +advDlgCommonMainStorySpawn3=Esto... es Shandalar. Un plano donde el maná es tan abundante y lo usa todo ser sensible que hasta la gente corriente lanza hechizos a diario. +advDlgCommonMainStorySpawn4=Como tú, otros planeswalkers han sido encerrados aquí por los guardianes de los castillos. Debes derrotarlos en combate para liberarnos de este plano. Usa tus poderes mágicos para desafiarlos. +advDlgCommonMainStorySpawn5=Encuentra a los planeswalkers atrapados aquí. Guíalos hasta mí, te ayudarán en tu viaje. +advDlgCommonMainStorySpawn6=Toma esta runa. Puedes usarla en cualquier momento para volver aquí. Ten cuidado, planeswalker. +advDlgCommonMainStorySpawn7=Tengo algo más para ti, '{var=player_name}'. Toma estas monedas, pero no las gastes con los mercaderes. +advDlgCommonMainStorySpawn8=Entonces, ¿qué son? ¿Para qué sirven? +advDlgCommonMainStorySpawn9=Son Monedas de Desafío. Los lanzadores de hechizos de Shandalar suelen reunirse para celebrar pruebas de habilidad. Estas monedas te darán acceso a esas competiciones, y los premios que ofrecen pueden ayudarte en tu viaje. +advDlgCommonMainStorySpawn10=¿Dónde se celebran esas competiciones? +advDlgCommonMainStorySpawn11=Muestra la moneda a los posaderos. Si hay un grupo en el pueblo, el posadero te indicará dónde encontrarlos. +advDlgCommonMainStorySpawn12=Gracias +advDlgCommonMainStorySpawn13=Voy a reabrir el portal por el que llegaste, pero no puede devolverte al lugar del que vienes. Al otro lado encontrarás los páramos de Shandalar, que yo, y ahora tú también, llamamos hogar. +advDlgCommonMainStorySpawn14=Gracias. +advDlgCommonMainStorySpawn15=Adiós. +advDlgCommonMainStorySpawn16="¡'{var=player_name}'! ¡Siento que el hechizo de los Guardianes se debilita! Derrótalos a todos y aún podrás salvarnos." +advDlgCommonMainStorySpawn17="Adiós." +advDlgCommonMainStorySpawn18="Me alegra volver a verte, '{var=player_name}'. Supongo que has tenido algo de éxito en tu misión, ¿no?" +advDlgCommonMainStorySpawn19="He derrotado a los ocupantes de los cinco castillos, pero no encontré a ningún cautivo." +advDlgCommonMainStorySpawn20="Supongo que debería haberlo explicado mejor. Los guardianes que has derrotado no eran carceleros, no directamente. Pero su mera presencia alteraba el mundo a su alrededor." +advDlgCommonMainStorySpawn21="¿Qué clase de efectos?" +advDlgCommonMainStorySpawn22="Probablemente viste una versión muy concentrada de los efectos de su presencia dentro de sus castillos. Pero además ocultaban ciertas zonas de nuestro mundo, haciendo que quedaran... ''escondidas'', a falta de un término mejor." +advDlgCommonMainStorySpawn23="El hechizo que creaba su presencia combinada provocaba sutiles trucos mentales que nos hacían pasar por alto ciertas partes de nuestro mundo. Incluidas las prisiones que sí retienen a los planeswalkers. Creo que ahora podrás encontrarlas..." +advDlgCommonMainStorySpawn24=[RED]Nota del desarrollador:[] Has llegado al final del contenido de historia disponible por ahora, pero aún queda mucho por descubrir en Shandalar. Se han añadido varias mazmorras difíciles a tu mapa del mundo, y tu colección de cartas puede seguir creciendo. +advDlgCommonMainStorySpawn25=[RED}Nota del desarrollador:[] Vuelve a hablar con este PNJ después de actualizar Forge (o atento a los anuncios en nuestro Discord) para continuar la historia cuando esté lista. ¡Y gracias por acompañarnos en esta Aventura! +advDlgCommonMainStorySpawn26=(Capítulo 1 completado) +advDlgCommonMainStorySpawn27=Hola de nuevo +advDlgCommonMainStorySpawn28=Quiero cambiar las cinco llaves de colores por un mox a mi elección y la llave de la sala de Emrakul +#GameHUD.java +lblReputation=Reputación +#GameStage.java +lblQuicksaveOnlyOnWorldMap=Partida no guardada. El guardado rápido solo está disponible en el mapa del mundo. \ No newline at end of file diff --git a/forge-gui/tools/updateAdventureTranslations.py b/forge-gui/tools/updateAdventureTranslations.py new file mode 100644 index 000000000000..635cf107f235 --- /dev/null +++ b/forge-gui/tools/updateAdventureTranslations.py @@ -0,0 +1,293 @@ +#!/usr/bin/env python3 + +import argparse +import copy +import json +import os +import sys + +TOOLS_DIR = os.path.abspath(os.path.dirname(__file__)) +DEFAULT_ADVENTURE_DIR = os.path.join(TOOLS_DIR, "..", "res", "adventure") + +TRANSLATABLE_FIELDS = { + "name", "text", "description", "displayName", "rewardDescription", + "synopsis", "bossIntro", "bossInsult", "comment", +} + +IDENTITY_FIELDS = ("id", "name") + + +def is_prose(value): + return isinstance(value, str) and value.strip() != "" + + +def entry_identity(entry, index): + if isinstance(entry, dict): + for field in IDENTITY_FIELDS: + if field in entry and entry[field] not in (None, ""): + return f"{field}={entry[field]}" + return f"index={index}" + + +def collect_prose(node, path, out): + if isinstance(node, dict): + for key, value in node.items(): + child = f"{path}.{key}" if path else key + if key in TRANSLATABLE_FIELDS and is_prose(value): + out[child] = value + else: + collect_prose(value, child, out) + elif isinstance(node, list): + for i, value in enumerate(node): + collect_prose(value, f"{path}[{i}]", out) + + +def load_json(path): + with open(path, encoding="utf-8") as f: + return json.load(f) + + +def save_json(path, data): + with open(path, "w", encoding="utf-8") as f: + json.dump(data, f, ensure_ascii=False, indent=2) + f.write("\n") + + +def merge_missing(base_node, translated_node): + """Fill gaps in translated_node using base_node's English content. + + Never touches a value that is already present in translated_node, even + if it looks untranslated (still English, empty, etc.) - only adds what + is genuinely absent, so existing translator work is never overwritten. + Returns (merged_node, added_count). + """ + if isinstance(base_node, dict): + if not isinstance(translated_node, dict): + return copy.deepcopy(base_node), count_leaves(base_node) + result = dict(translated_node) + added = 0 + for key, base_value in base_node.items(): + if key in result: + merged, sub_added = merge_missing(base_value, result[key]) + result[key] = merged + added += sub_added + else: + result[key] = copy.deepcopy(base_value) + added += count_leaves(base_value) + return result, added + if isinstance(base_node, list): + translated_list = translated_node if isinstance(translated_node, list) else [] + result = [] + added = 0 + for i, base_item in enumerate(base_node): + if i < len(translated_list): + merged, sub_added = merge_missing(base_item, translated_list[i]) + result.append(merged) + added += sub_added + else: + result.append(copy.deepcopy(base_item)) + added += count_leaves(base_item) + return result, added + return translated_node, 0 + + +def count_leaves(node): + if isinstance(node, dict): + return sum(count_leaves(v) for v in node.values()) + if isinstance(node, list): + return sum(count_leaves(v) for v in node) + return 1 + + +def fix_translation(base_path, translated_path): + base = load_json(base_path) + translated = load_json(translated_path) + if not isinstance(base, list) or not isinstance(translated, list): + return None, None + + translated_by_id = {} + for i, entry in enumerate(translated): + translated_by_id[entry_identity(entry, i)] = entry + + new_list = [] + created_entries = 0 + patched_fields = 0 + for i, base_entry in enumerate(base): + key = entry_identity(base_entry, i) + translated_entry = translated_by_id.get(key) + if translated_entry is None: + new_list.append(copy.deepcopy(base_entry)) + created_entries += 1 + else: + merged, added = merge_missing(base_entry, translated_entry) + new_list.append(merged) + patched_fields += added + + # Preserve any translated entries that no longer match a base entry + # (e.g. renamed/removed upstream) instead of silently dropping them. + base_ids = {entry_identity(entry, i) for i, entry in enumerate(base)} + for i, entry in enumerate(translated): + if entry_identity(entry, i) not in base_ids: + new_list.append(entry) + + if created_entries or patched_fields: + save_json(translated_path, new_list) + return created_entries, patched_fields + + +def compare(base_path, translated_path): + base = load_json(base_path) + translated = load_json(translated_path) + + if not isinstance(base, list) or not isinstance(translated, list): + return None, None, None + + base_by_id = {} + for i, entry in enumerate(base): + base_by_id[entry_identity(entry, i)] = entry + translated_by_id = {} + for i, entry in enumerate(translated): + translated_by_id[entry_identity(entry, i)] = entry + + missing = [k for k in base_by_id if k not in translated_by_id] + orphaned = [k for k in translated_by_id if k not in base_by_id] + + changed = [] + for key, base_entry in base_by_id.items(): + translated_entry = translated_by_id.get(key) + if translated_entry is None: + continue + base_prose = {} + translated_prose = {} + collect_prose(base_entry, "", base_prose) + collect_prose(translated_entry, "", translated_prose) + for prose_path in base_prose: + if prose_path not in translated_prose: + changed.append((key, prose_path, "missing in translation")) + for prose_path in translated_prose: + if prose_path not in base_prose: + changed.append((key, prose_path, "no longer in source")) + + return missing, orphaned, changed + + +def is_translation_of_existing(data_dir, filename): + stem, ext = os.path.splitext(filename) + if "-" not in stem: + return False + base_filename = stem.split("-", 1)[0] + ext + return base_filename != filename and os.path.isfile(os.path.join(data_dir, base_filename)) + + +def find_translations(data_dir, filename, lang): + stem, ext = os.path.splitext(filename) + if lang != "all": + path = os.path.join(data_dir, f"{stem}-{lang}{ext}") + return [(lang, path)] if os.path.isfile(path) else [] + prefix = stem + "-" + found = [] + for other in sorted(os.listdir(data_dir)): + if other.startswith(prefix) and other.endswith(ext) and other != filename: + found.append((other[len(prefix):-len(ext)], os.path.join(data_dir, other))) + return found + + +def report(world_dir, lang, fix): + world_name = os.path.basename(world_dir.rstrip(os.sep)) + data_dir = os.path.join(world_dir, "world") + if not os.path.isdir(data_dir): + return 0 + + problems = 0 + for filename in sorted(os.listdir(data_dir)): + if not filename.endswith(".json") or is_translation_of_existing(data_dir, filename): + continue + base_path = os.path.join(data_dir, filename) + for translation_lang, translated_path in find_translations(data_dir, filename, lang): + if fix: + created, patched = fix_translation(base_path, translated_path) + if created is None: + print(f"[{world_name}/{filename}] skipped (not a list of entries)") + continue + if created or patched: + print(f"[{world_name}/{filename} -> {translation_lang}] " + f"created {created} missing entries, filled {patched} missing fields " + f"(English placeholder text, ready for a translator)") + continue + + missing, orphaned, changed = compare(base_path, translated_path) + if missing is None: + print(f"[{world_name}/{filename}] skipped (not a list of entries)") + continue + + print(f"\n[{world_name}/{filename} -> {translation_lang}]") + if missing: + problems += len(missing) + print(f" {len(missing)} entries in English but MISSING from the translation " + f"(players using {translation_lang} will not see these at all):") + for key in missing[:20]: + print(f" - {key}") + if len(missing) > 20: + print(f" ... and {len(missing) - 20} more") + if orphaned: + problems += len(orphaned) + print(f" {len(orphaned)} entries in the translation that no longer exist in English:") + for key in orphaned[:20]: + print(f" - {key}") + if len(orphaned) > 20: + print(f" ... and {len(orphaned) - 20} more") + if changed: + problems += len(changed) + print(f" {len(changed)} structural differences (text added or removed since translating):") + for key, prose_path, why in changed[:20]: + print(f" - {key}: {prose_path} ({why})") + if len(changed) > 20: + print(f" ... and {len(changed) - 20} more") + if not missing and not orphaned and not changed: + print(" up to date") + + return problems + + +def main(): + parser = argparse.ArgumentParser( + description="Report drift between an Adventure world's English data files " + "and their per-language translations (-.json).") + parser.add_argument("--adventure-dir", default=DEFAULT_ADVENTURE_DIR) + parser.add_argument("--lang", default="all", + help="Language code to check, e.g. es-ES, or 'all' to check " + "every -.json variant found (default: all)") + parser.add_argument("--world", default=None, + help="Only check this world (default: all worlds)") + parser.add_argument("--fix", action="store_true", + help="Instead of just reporting, create missing entries/fields in " + "existing translation files using the English text as a " + "placeholder, ready for a translator to fill in. Never touches " + "or removes content that is already there.") + args = parser.parse_args() + + adventure_dir = os.path.abspath(args.adventure_dir) + if not os.path.isdir(adventure_dir): + print(f"not found: {adventure_dir}") + sys.exit(1) + + worlds = sorted(d for d in os.listdir(adventure_dir) + if os.path.isdir(os.path.join(adventure_dir, d))) + if args.world: + worlds = [w for w in worlds if w == args.world] + if not worlds: + print(f"world not found: {args.world}") + sys.exit(1) + + total = 0 + for world in worlds: + total += report(os.path.join(adventure_dir, world), args.lang, args.fix) + + if args.fix: + sys.exit(0) + print(f"\ntotal problems: {total}") + sys.exit(1 if total else 0) + + +if __name__ == "__main__": + main() From 7af76be91e0b60ec240c0b5bbb261a6faf245f96 Mon Sep 17 00:00:00 2001 From: Churrufli Date: Sun, 23 Aug 2026 17:29:40 +0200 Subject: [PATCH 2/8] Changes --- .../src/forge/adventure/scene/DuelScene.java | 8 +- .../forge/adventure/scene/SettingsScene.java | 115 +++++++++--------- 2 files changed, 63 insertions(+), 60 deletions(-) diff --git a/forge-gui-mobile/src/forge/adventure/scene/DuelScene.java b/forge-gui-mobile/src/forge/adventure/scene/DuelScene.java index bf626731e13b..8f4a8118c62d 100644 --- a/forge-gui-mobile/src/forge/adventure/scene/DuelScene.java +++ b/forge-gui-mobile/src/forge/adventure/scene/DuelScene.java @@ -50,6 +50,7 @@ import forge.toolbox.FOptionPane; import forge.trackable.TrackableCollection; import forge.util.Aggregates; +import forge.util.Localizer; import forge.util.StreamUtil; import org.apache.commons.lang3.tuple.Pair; @@ -243,6 +244,7 @@ private void showAnteCardsSequentially(List cards, int index, boolean } private void showAnteCardPopup(String title, PaperCard card, boolean won, Runnable onDone) { + Localizer localizer = Forge.getLocalizer(); CardView cardView = CardView.getCardForUi(card); FDisplayObject cardDisplay = new FDisplayObject() { @@ -275,10 +277,10 @@ public void draw(Graphics g) { if (won && eventData == null) { int sellPrice = Current.player().cardSellPrice(card); buttons = sellPrice > 0 - ? ImmutableList.of(Forge.getLocalizer().getMessage("lblOK"), "Auto-Sell (" + sellPrice + " gold)") - : ImmutableList.of(Forge.getLocalizer().getMessage("lblOK")); + ? ImmutableList.of(localizer.getMessage("lblOK"), "Auto-Sell (" + sellPrice + " gold)") + : ImmutableList.of(localizer.getMessage("lblOK")); } else { - buttons = ImmutableList.of(Forge.getLocalizer().getMessage("lblOK")); + buttons = ImmutableList.of(localizer.getMessage("lblOK")); } FOptionPane popup = new FOptionPane(message, null, title, null, cardDisplay, buttons, 0, result -> { diff --git a/forge-gui-mobile/src/forge/adventure/scene/SettingsScene.java b/forge-gui-mobile/src/forge/adventure/scene/SettingsScene.java index 2a4a121e194f..9f5e1a3227b3 100644 --- a/forge-gui-mobile/src/forge/adventure/scene/SettingsScene.java +++ b/forge-gui-mobile/src/forge/adventure/scene/SettingsScene.java @@ -17,6 +17,7 @@ import forge.localinstance.properties.ForgePreferences; import forge.model.FModel; import forge.sound.SoundSystem; +import forge.util.Localizer; import java.io.IOException; import java.nio.file.Files; @@ -41,6 +42,7 @@ public class SettingsScene extends UIScene { Dialog createNewPlane, copyPlane, errorDialog, restartDialog; private void copyNewPlane() { + Localizer localizer = Forge.getLocalizer(); String plane = selectSourcePlane.getSelected(); Path source = Paths.get(Config.instance().getPlanePath(plane)); Path destination = Paths.get(Config.instance().getPlanePath("" + newPlaneName.getText())); @@ -60,7 +62,7 @@ private void copyNewPlane() { if (somethingWentWrong.get()) { if (errorDialog == null) { errorDialog = createGenericDialog("Something went wrong", "Copy was not successful check your access right\n and if the folder is in use", - Forge.getLocalizer().getMessage("lblOK"), Forge.getLocalizer().getMessage("lblAbort"), this::removeDialog, this::removeDialog); + localizer.getMessage("lblOK"), localizer.getMessage("lblAbort"), this::removeDialog, this::removeDialog); } showDialog(errorDialog); } else { @@ -68,7 +70,7 @@ private void copyNewPlane() { copyPlane = createGenericDialog("Copied plane", "New plane " + newPlaneName.getText() + " was created\nYou can now start the editor to change the plane\n" + "or edit it manually from the folder\n" + Config.instance().getPlanePath("" + newPlaneName.getText()), - Forge.getLocalizer().getMessage("lblOK"), Forge.getLocalizer().getMessage("lblAbort"), this::removeDialog, this::removeDialog); + localizer.getMessage("lblOK"), localizer.getMessage("lblAbort"), this::removeDialog, this::removeDialog); } Config.instance().getSettingData().plane = "" + newPlaneName.getText(); Config.instance().saveSettings(); @@ -97,6 +99,7 @@ private void createNewPlane() { private SettingsScene() { super(Forge.isLandscapeMode() ? "ui/settings.json" : "ui/settings_portrait.json"); + Localizer localizer = Forge.getLocalizer(); settingGroup = new Table(); selectSourcePlane = Controls.newComboBox(); @@ -120,9 +123,9 @@ public void clicked(InputEvent event, float x, float y) { createNewPlane(); } });*/ - addLabel(Forge.getLocalizer().getMessage("lblWorld") + " (" + Forge.getLocalizer().getMessage("lblRestartRequired") + ")"); + addLabel(localizer.getMessage("lblWorld") + " (" + localizer.getMessage("lblRestartRequired") + ")"); settingGroup.add(plane).align(Align.right).pad(2); - //addLabel(Forge.getLocalizer().getMessage("lblCreate") + Forge.getLocalizer().getMessage("lblWorld")); + //addLabel(localizer.getMessage("lblCreate") + localizer.getMessage("lblWorld")); settingGroup.add(newPlane).align(Align.right).pad(2); if (!GuiBase.isAndroid()) { @@ -139,7 +142,7 @@ public void clicked(InputEvent event, float x, float y) { } return null; }); - addLabel(Forge.getLocalizer().getMessage("lblVideoMode")); + addLabel(localizer.getMessage("lblVideoMode")); settingGroup.add(videomode).align(Align.right).pad(2); } if (Forge.isLandscapeMode()) { @@ -188,7 +191,7 @@ public void clicked(InputEvent event, float x, float y) { settingGroup.add(tooltipAdj).align(Align.right).pad(2); } if (!GuiBase.isAndroid()) { - addSettingField(Forge.getLocalizer().getMessage("lblFullScreen"), Config.instance().getSettingData().fullScreen, new ChangeListener() { + addSettingField(localizer.getMessage("lblFullScreen"), Config.instance().getSettingData().fullScreen, new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) { boolean value = ((CheckBox) actor).isChecked(); @@ -200,7 +203,7 @@ public void changed(ChangeEvent event, Actor actor) { } }); } - addSettingField(Forge.getLocalizer().getMessage("lblDay") + " | " + Forge.getLocalizer().getMessage("lblNight") + " " + Forge.getLocalizer().getMessage("lblBackgroundImage"), Config.instance().getSettingData().dayNightBG, new ChangeListener() { + addSettingField(localizer.getMessage("lblDay") + " | " + localizer.getMessage("lblNight") + " " + localizer.getMessage("lblBackgroundImage"), Config.instance().getSettingData().dayNightBG, new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) { boolean value = ((CheckBox) actor).isChecked(); @@ -211,14 +214,14 @@ public void changed(ChangeEvent event, Actor actor) { } } }); - addSettingField(Forge.getLocalizer().getMessage("lblDisableWinLose"), Config.instance().getSettingData().disableWinLose, new ChangeListener() { + addSettingField(localizer.getMessage("lblDisableWinLose"), Config.instance().getSettingData().disableWinLose, new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) { Config.instance().getSettingData().disableWinLose = ((CheckBox) actor).isChecked(); Config.instance().saveSettings(); } }); - addSettingField(Forge.getLocalizer().getMessage("lblDisableNotForSaleOverlay"), + addSettingField(localizer.getMessage("lblDisableNotForSaleOverlay"), Config.instance().getSettingData().disableNotForSale, new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) { @@ -226,14 +229,14 @@ public void changed(ChangeEvent event, Actor actor) { Config.instance().saveSettings(); } }); - addSettingField(Forge.getLocalizer().getMessage("lblShowShopOverlay"), Config.instance().getSettingData().showShopOverlay, new ChangeListener() { + addSettingField(localizer.getMessage("lblShowShopOverlay"), Config.instance().getSettingData().showShopOverlay, new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) { Config.instance().getSettingData().showShopOverlay = ((CheckBox) actor).isChecked(); Config.instance().saveSettings(); } }); - addSettingField(Forge.getLocalizer().getMessage("lblUseAllCardVariants"), Config.instance().getSettingData().useAllCardVariants, new ChangeListener() { + addSettingField(localizer.getMessage("lblUseAllCardVariants"), Config.instance().getSettingData().useAllCardVariants, new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) { Config.instance().getSettingData().useAllCardVariants = ((CheckBox) actor).isChecked(); @@ -241,7 +244,7 @@ public void changed(ChangeEvent event, Actor actor) { RewardData.invalidateCardPool(); } }); - addSettingField(Forge.getLocalizer().getMessage("lblPreferEraMatchedTokenArt"), Config.instance().getSettingData().preferEraMatchedTokenArt, new ChangeListener() { + addSettingField(localizer.getMessage("lblPreferEraMatchedTokenArt"), Config.instance().getSettingData().preferEraMatchedTokenArt, new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) { boolean enabled = ((CheckBox) actor).isChecked(); @@ -250,7 +253,7 @@ public void changed(ChangeEvent event, Actor actor) { Config.instance().saveSettings(); } }); - addSettingField(Forge.getLocalizer().getMessage("lblExcludeAlchemyVariants"), Config.instance().getSettingData().excludeAlchemyVariants, new ChangeListener() { + addSettingField(localizer.getMessage("lblExcludeAlchemyVariants"), Config.instance().getSettingData().excludeAlchemyVariants, new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) { Config.instance().getSettingData().excludeAlchemyVariants = ((CheckBox) actor).isChecked(); @@ -258,41 +261,41 @@ public void changed(ChangeEvent event, Actor actor) { RewardData.invalidateCardPool(); } }); - addCheckBox(Forge.getLocalizer().getMessage("lblEnableUnknownCards") + " (" + - Forge.getLocalizer().getMessage("lblRestartRequired") + ")", ForgePreferences.FPref.UI_LOAD_UNKNOWN_CARDS, this::restartForge); - addCheckBox(Forge.getLocalizer().getMessage("lblEnableNonLegalCards") + " (" + - Forge.getLocalizer().getMessage("lblRestartRequired") + ")", ForgePreferences.FPref.UI_LOAD_NONLEGAL_CARDS, this::restartForge); - addSettingField(Forge.getLocalizer().getMessage("lblGenerateLDADecks"), Config.instance().getSettingData().generateLDADecks, new ChangeListener() { + addCheckBox(localizer.getMessage("lblEnableUnknownCards") + " (" + + localizer.getMessage("lblRestartRequired") + ")", ForgePreferences.FPref.UI_LOAD_UNKNOWN_CARDS, this::restartForge); + addCheckBox(localizer.getMessage("lblEnableNonLegalCards") + " (" + + localizer.getMessage("lblRestartRequired") + ")", ForgePreferences.FPref.UI_LOAD_NONLEGAL_CARDS, this::restartForge); + addSettingField(localizer.getMessage("lblGenerateLDADecks"), Config.instance().getSettingData().generateLDADecks, new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) { Config.instance().getSettingData().generateLDADecks = ((CheckBox) actor).isChecked(); Config.instance().saveSettings(); } }); - addSettingField(Forge.getLocalizer().getMessage("lbldisableCrackedItems"), Config.instance().getSettingData().disableCrackedItems, new ChangeListener() { + addSettingField(localizer.getMessage("lbldisableCrackedItems"), Config.instance().getSettingData().disableCrackedItems, new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) { Config.instance().getSettingData().disableCrackedItems = ((CheckBox) actor).isChecked(); Config.instance().saveSettings(); } }); - addSettingField(Forge.getLocalizer().getMessage("lblBindEquipmentLoadoutsToDecks"), Config.instance().getSettingData().bindEquipmentLoadoutsToDecks, new ChangeListener() { + addSettingField(localizer.getMessage("lblBindEquipmentLoadoutsToDecks"), Config.instance().getSettingData().bindEquipmentLoadoutsToDecks, new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) { Config.instance().getSettingData().bindEquipmentLoadoutsToDecks = ((CheckBox) actor).isChecked(); Config.instance().saveSettings(); } }); - addSettingField(Forge.getLocalizer().getMessage("lblDrawChevronsToHiddenEnemiesInClearQuest"), Config.instance().getSettingData().drawChevronsToHiddenEnemiesInClearQuest, new ChangeListener() { + addSettingField(localizer.getMessage("lblDrawChevronsToHiddenEnemiesInClearQuest"), Config.instance().getSettingData().drawChevronsToHiddenEnemiesInClearQuest, new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) { Config.instance().getSettingData().drawChevronsToHiddenEnemiesInClearQuest = ((CheckBox) actor).isChecked(); Config.instance().saveSettings(); } }); - CheckBox cbAnte = addCheckBox(Forge.getLocalizer().getMessage("cbAnte"), ForgePreferences.FPref.UI_ANTE); - CheckBox cbAnteMatchRarity = addCheckBox(Forge.getLocalizer().getMessage("cbAnteMatchRarity"), ForgePreferences.FPref.UI_ANTE_MATCH_RARITY); - CheckBox cbAnteIncludeBasicLands = addCheckBox(Forge.getLocalizer().getMessage("cbAnteIncludeBasicLands"), ForgePreferences.FPref.UI_ANTE_INCLUDE_BASIC_LANDS); + CheckBox cbAnte = addCheckBox(localizer.getMessage("cbAnte"), ForgePreferences.FPref.UI_ANTE); + CheckBox cbAnteMatchRarity = addCheckBox(localizer.getMessage("cbAnteMatchRarity"), ForgePreferences.FPref.UI_ANTE_MATCH_RARITY); + CheckBox cbAnteIncludeBasicLands = addCheckBox(localizer.getMessage("cbAnteIncludeBasicLands"), ForgePreferences.FPref.UI_ANTE_INCLUDE_BASIC_LANDS); boolean anteEnabled = FModel.getPreferences().getPrefBoolean(ForgePreferences.FPref.UI_ANTE); cbAnteMatchRarity.setDisabled(!anteEnabled); cbAnteIncludeBasicLands.setDisabled(!anteEnabled); @@ -305,29 +308,26 @@ public void changed(ChangeEvent event, Actor actor) { RewardData.invalidateCardPool(); } }); - addCheckBox(Forge.getLocalizer().getMessage("lblPromptAutoSell"), ForgePreferences.FPref.PROMPT_FOR_AUTOSELL); - addCheckBox(Forge.getLocalizer().getMessage("lblAutoSellVariantsCommander"), ForgePreferences.FPref.ADV_COMMANDER_AUTOSELL_VARIANT); - addCheckBox(Forge.getLocalizer().getMessage("lblShowCardPriceRewardScreen"), ForgePreferences.FPref.ADV_DISPLAY_PRICE_IN_REWARD_SCREEN); - addCheckBox(Forge.getLocalizer().getMessage("lblCardName"), ForgePreferences.FPref.UI_OVERLAY_CARD_NAME); - addSettingSlider(Forge.getLocalizer().getMessage("cbAdjustMusicVolume"), ForgePreferences.FPref.UI_VOL_MUSIC, 0, 100); - addSettingSlider(Forge.getLocalizer().getMessage("cbAdjustSoundsVolume"), ForgePreferences.FPref.UI_VOL_SOUNDS, 0, 100); - if (!GuiBase.isAndroid() && !GuiBase.isIOS()) { - addCheckBox(Forge.getLocalizer().getMessage("cbPauseMusicOnFocusLoss"), ForgePreferences.FPref.UI_PAUSE_MUSIC_ON_FOCUS_LOSS); - } - addCheckBox(Forge.getLocalizer().getMessage("cbShowAutoTapPreview"), ForgePreferences.FPref.UI_SHOW_AUTOTAP_PREVIEW); - addCheckBox(Forge.getLocalizer().getMessage("lblManaCost"), ForgePreferences.FPref.UI_OVERLAY_CARD_MANA_COST); - addCheckBox(Forge.getLocalizer().getMessage("lblPerpetualManaCost"), ForgePreferences.FPref.UI_OVERLAY_CARD_PERPETUAL_MANA_COST); - addCheckBox(Forge.getLocalizer().getMessage("lblPowerOrToughness"), ForgePreferences.FPref.UI_OVERLAY_CARD_POWER); - addCheckBox(Forge.getLocalizer().getMessage("lblCardID"), ForgePreferences.FPref.UI_OVERLAY_CARD_ID); - addCheckBox(Forge.getLocalizer().getMessage("lblAbilityIcon"), ForgePreferences.FPref.UI_OVERLAY_ABILITY_ICONS); - addCheckBox(Forge.getLocalizer().getMessage("cbImageFetcher"), ForgePreferences.FPref.UI_ENABLE_ONLINE_IMAGE_FETCHER); + addCheckBox(localizer.getMessage("lblPromptAutoSell"), ForgePreferences.FPref.PROMPT_FOR_AUTOSELL); + addCheckBox(localizer.getMessage("lblAutoSellVariantsCommander"), ForgePreferences.FPref.ADV_COMMANDER_AUTOSELL_VARIANT); + addCheckBox(localizer.getMessage("lblShowCardPriceRewardScreen"), ForgePreferences.FPref.ADV_DISPLAY_PRICE_IN_REWARD_SCREEN); + addCheckBox(localizer.getMessage("lblCardName"), ForgePreferences.FPref.UI_OVERLAY_CARD_NAME); + addSettingSlider(localizer.getMessage("cbAdjustMusicVolume"), ForgePreferences.FPref.UI_VOL_MUSIC, 0, 100); + addSettingSlider(localizer.getMessage("cbAdjustSoundsVolume"), ForgePreferences.FPref.UI_VOL_SOUNDS, 0, 100); + addCheckBox(localizer.getMessage("cbShowAutoTapPreview"), ForgePreferences.FPref.UI_SHOW_AUTOTAP_PREVIEW); + addCheckBox(localizer.getMessage("lblManaCost"), ForgePreferences.FPref.UI_OVERLAY_CARD_MANA_COST); + addCheckBox(localizer.getMessage("lblPerpetualManaCost"), ForgePreferences.FPref.UI_OVERLAY_CARD_PERPETUAL_MANA_COST); + addCheckBox(localizer.getMessage("lblPowerOrToughness"), ForgePreferences.FPref.UI_OVERLAY_CARD_POWER); + addCheckBox(localizer.getMessage("lblCardID"), ForgePreferences.FPref.UI_OVERLAY_CARD_ID); + addCheckBox(localizer.getMessage("lblAbilityIcon"), ForgePreferences.FPref.UI_OVERLAY_ABILITY_ICONS); + addCheckBox(localizer.getMessage("cbImageFetcher"), ForgePreferences.FPref.UI_ENABLE_ONLINE_IMAGE_FETCHER); if (!GuiBase.isAndroid()) { - addCheckBox(Forge.getLocalizer().getMessage("lblBattlefieldTextureFiltering"), ForgePreferences.FPref.UI_LIBGDX_TEXTURE_FILTERING); - //addCheckBox(Forge.getLocalizer().getMessage("lblAltZoneTabs"), ForgePreferences.FPref.UI_ALT_PLAYERZONETABS); + addCheckBox(localizer.getMessage("lblBattlefieldTextureFiltering"), ForgePreferences.FPref.UI_LIBGDX_TEXTURE_FILTERING); + //addCheckBox(localizer.getMessage("lblAltZoneTabs"), ForgePreferences.FPref.UI_ALT_PLAYERZONETABS); } else { - addCheckBox(Forge.getLocalizer().getMessage("lblLandscapeMode") + " (" + - Forge.getLocalizer().getMessage("lblRestartRequired") + ")", + addCheckBox(localizer.getMessage("lblLandscapeMode") + " (" + + localizer.getMessage("lblRestartRequired") + ")", ForgePreferences.FPref.UI_LANDSCAPE_MODE, () -> { boolean landscapeMode = FModel.getPreferences().getPrefBoolean(ForgePreferences.FPref.UI_LANDSCAPE_MODE); //ensure device able to save off ini file so landscape change takes effect @@ -338,7 +338,7 @@ public void changed(ChangeEvent event, Actor actor) { }); } - addCheckBox(Forge.getLocalizer().getMessage("lblAnimatedCardTapUntap"), ForgePreferences.FPref.UI_ANIMATED_CARD_TAPUNTAP); + addCheckBox(localizer.getMessage("lblAnimatedCardTapUntap"), ForgePreferences.FPref.UI_ANIMATED_CARD_TAPUNTAP); if (!GuiBase.isAndroid()) { final String[] item = {FModel.getPreferences().getPref(ForgePreferences.FPref.UI_ENABLE_BORDER_MASKING)}; SelectBox borderMask = Controls.newComboBox(new String[]{"Off", "Crop", "Full", "Art"}, item[0], o -> { @@ -355,20 +355,20 @@ public void changed(ChangeEvent event, Actor actor) { ImageCache.getInstance().disposeTextures(); return null; }); - addLabel(Forge.getLocalizer().getMessage("lblBorderMaskOption")); + addLabel(localizer.getMessage("lblBorderMaskOption")); settingGroup.add(borderMask).align(Align.right).pad(2); - addCheckBox(Forge.getLocalizer().getMessage("lblAutoCacheSize"), ForgePreferences.FPref.UI_AUTO_CACHE_SIZE); - addCheckBox(Forge.getLocalizer().getMessage("lblDisposeTextures"), ForgePreferences.FPref.UI_ENABLE_DISPOSE_TEXTURES); + addCheckBox(localizer.getMessage("lblAutoCacheSize"), ForgePreferences.FPref.UI_AUTO_CACHE_SIZE); + addCheckBox(localizer.getMessage("lblDisposeTextures"), ForgePreferences.FPref.UI_ENABLE_DISPOSE_TEXTURES); } - addSettingSlider(Forge.getLocalizer().getMessage("lblVibrationIntensity"), ForgePreferences.FPref.UI_VIBRATE_INTENSITY, 0, 100); - addCheckBox(Forge.getLocalizer().getMessage("lblVibrateAfterLongPress"), ForgePreferences.FPref.UI_VIBRATE_ON_LONG_PRESS); - addCheckBox(Forge.getLocalizer().getMessage("lblVibrateWhenLosingLife"), ForgePreferences.FPref.UI_VIBRATE_ON_LIFE_LOSS); - addCheckBox(Forge.getLocalizer().getMessage("lblVibrateOnEnemyEncounter"), ForgePreferences.FPref.UI_VIBRATE_ON_ENEMY_ENCOUNTER); - addCheckBox(Forge.getLocalizer().getMessage("lblVibrateOnAdventureReward"), ForgePreferences.FPref.UI_VIBRATE_ON_ADVENTURE_REWARD); - addCheckBox(Forge.getLocalizer().getMessage("lblVibrateOnShopAction"), ForgePreferences.FPref.UI_VIBRATE_ON_SHOP_ACTION); + addSettingSlider(localizer.getMessage("lblVibrationIntensity"), ForgePreferences.FPref.UI_VIBRATE_INTENSITY, 0, 100); + addCheckBox(localizer.getMessage("lblVibrateAfterLongPress"), ForgePreferences.FPref.UI_VIBRATE_ON_LONG_PRESS); + addCheckBox(localizer.getMessage("lblVibrateWhenLosingLife"), ForgePreferences.FPref.UI_VIBRATE_ON_LIFE_LOSS); + addCheckBox(localizer.getMessage("lblVibrateOnEnemyEncounter"), ForgePreferences.FPref.UI_VIBRATE_ON_ENEMY_ENCOUNTER); + addCheckBox(localizer.getMessage("lblVibrateOnAdventureReward"), ForgePreferences.FPref.UI_VIBRATE_ON_ADVENTURE_REWARD); + addCheckBox(localizer.getMessage("lblVibrateOnShopAction"), ForgePreferences.FPref.UI_VIBRATE_ON_SHOP_ACTION); settingGroup.row(); backButton = ui.findActor("return"); @@ -463,11 +463,12 @@ void addLabel(String name) { } private void restartForge() { + Localizer localizer = Forge.getLocalizer(); if (restartDialog == null) { restartDialog = createGenericDialog("", - Forge.getLocalizer().getMessage("lblAreYouSureYouWishRestartForge"), - Forge.getLocalizer().getMessage("lblOK"), - Forge.getLocalizer().getMessage("lblAbort"), () -> { + localizer.getMessage("lblAreYouSureYouWishRestartForge"), + localizer.getMessage("lblOK"), + localizer.getMessage("lblAbort"), () -> { Forge.restart(true); removeDialog(); }, this::removeDialog); From 321917082295bdf849268bd383e2a3113ce88a73 Mon Sep 17 00:00:00 2001 From: Churrufli Date: Sun, 23 Aug 2026 18:33:01 +0200 Subject: [PATCH 3/8] Changes --- .../adventure/character/DialogActor.java | 10 +- .../src/forge/adventure/stage/MapStage.java | 8 +- .../src/forge/adventure/util/Config.java | 4 + .../adventure/util/DialogTranslations.java | 140 +++ .../src/forge/adventure/util/MapDialog.java | 12 + .../adventure/common/maps/dialog-es-ES.json | 978 ++++++++++++++++++ 6 files changed, 1146 insertions(+), 6 deletions(-) create mode 100644 forge-gui-mobile/src/forge/adventure/util/DialogTranslations.java create mode 100644 forge-gui/res/adventure/common/maps/dialog-es-ES.json diff --git a/forge-gui-mobile/src/forge/adventure/character/DialogActor.java b/forge-gui-mobile/src/forge/adventure/character/DialogActor.java index a23bed11e6bc..51ab8658c083 100644 --- a/forge-gui-mobile/src/forge/adventure/character/DialogActor.java +++ b/forge-gui-mobile/src/forge/adventure/character/DialogActor.java @@ -16,15 +16,21 @@ public class DialogActor extends CharacterSprite { public AdventureQuestData questData; public DialogActor(MapStage stage, int id, String S, TextureRegion textureRegion) { + this(stage, id, S, textureRegion, null); + } + public DialogActor(MapStage stage, int id, String S, TextureRegion textureRegion, String sourceMapFile) { super(id,""); this.stage = stage; - dialog = new MapDialog(S, stage, id); + dialog = new MapDialog(S, stage, id, sourceMapFile); this.textureRegion = textureRegion; } public DialogActor(MapStage stage, int id, String S, String sprite) { + this(stage, id, S, sprite, null); + } + public DialogActor(MapStage stage, int id, String S, String sprite, String sourceMapFile) { super(id,sprite); this.stage = stage; - dialog = new MapDialog(S, stage, id); + dialog = new MapDialog(S, stage, id, sourceMapFile); this.textureRegion = null; } diff --git a/forge-gui-mobile/src/forge/adventure/stage/MapStage.java b/forge-gui-mobile/src/forge/adventure/stage/MapStage.java index cd2fcd7c7f37..d8b2f08c052b 100644 --- a/forge-gui-mobile/src/forge/adventure/stage/MapStage.java +++ b/forge-gui-mobile/src/forge/adventure/stage/MapStage.java @@ -489,11 +489,11 @@ else if (prop.containsKey("portalState")) { EnemySprite mob = new EnemySprite(id, EN); Object dialogObject = prop.get("dialog"); //Check if the enemy has a dialogue attached to it. if (dialogObject != null && !dialogObject.toString().isEmpty()) { - mob.dialog = new MapDialog(dialogObject.toString(), this, mob.getId()); + mob.dialog = new MapDialog(dialogObject.toString(), this, mob.getId(), currentMap); } dialogObject = prop.get("defeatDialog"); //Check if the enemy has a defeat dialogue attached to it. if (dialogObject != null && !dialogObject.toString().isEmpty()) { - mob.defeatDialog = new MapDialog(dialogObject.toString(), this, mob.getId()); + mob.defeatDialog = new MapDialog(dialogObject.toString(), this, mob.getId(), currentMap); } dialogObject = prop.get("displayNameOverride"); //Check for name override. if (dialogObject != null && !dialogObject.toString().isEmpty()) { @@ -612,9 +612,9 @@ else if (prop.containsKey("portalState")) { TiledMapTileMapObject tiledObj = (TiledMapTileMapObject) obj; DialogActor dialog; if (prop.containsKey("sprite")) - dialog = new DialogActor(this, id, prop.get("dialog").toString(), prop.get("sprite").toString()); + dialog = new DialogActor(this, id, prop.get("dialog").toString(), prop.get("sprite").toString(), currentMap); else { - dialog = new DialogActor(this, id, prop.get("dialog").toString(), tiledObj.getTextureRegion()); + dialog = new DialogActor(this, id, prop.get("dialog").toString(), tiledObj.getTextureRegion(), currentMap); } if (prop.containsKey("hidden") && Boolean.parseBoolean(prop.get("hidden").toString())) { diff --git a/forge-gui-mobile/src/forge/adventure/util/Config.java b/forge-gui-mobile/src/forge/adventure/util/Config.java index e8ef129e7cee..184f9cf4e969 100644 --- a/forge-gui-mobile/src/forge/adventure/util/Config.java +++ b/forge-gui-mobile/src/forge/adventure/util/Config.java @@ -195,6 +195,10 @@ public String getPrefix() { return prefix; } + public String getLang() { + return Lang; + } + public String getFilePath(String path) { return prefix + path; } diff --git a/forge-gui-mobile/src/forge/adventure/util/DialogTranslations.java b/forge-gui-mobile/src/forge/adventure/util/DialogTranslations.java new file mode 100644 index 000000000000..1b9b634c1b79 --- /dev/null +++ b/forge-gui-mobile/src/forge/adventure/util/DialogTranslations.java @@ -0,0 +1,140 @@ +package forge.adventure.util; + +import com.badlogic.gdx.files.FileHandle; +import com.badlogic.gdx.utils.Array; +import com.badlogic.gdx.utils.JsonReader; +import com.badlogic.gdx.utils.JsonValue; +import forge.adventure.data.DialogData; + +import java.util.HashMap; +import java.util.Map; + +/** + * DialogTranslations + * + * Applies optional per-locale translations to dialogue trees parsed from the + * "dialog"/"defeatDialog" JSON blocks embedded directly in .tmx map files. + * + * Design goals: + * - The English .tmx files are the single source of truth and are NEVER + * duplicated or modified by this mechanism. Map/gameplay data (tiles, + * object positions, enemy stats, etc.) only ever exists once, in English, + * so it can never drift between languages. + * - Translators work in a small, separate, per-locale JSON catalog + * ("dialog-<locale>.json") that sits next to the maps. English + * maintainers never need to know it exists, and never touch it. + * - Any string with no entry in the catalog - including the case where the + * catalog file itself doesn't exist for the current locale - silently + * falls back to the English text already embedded in the .tmx. Missing or + * partial translations can never break the game or show blank text. + * + * Catalog file format (flat JSON object, key -> translated string): + * { + * "aerie_0.tmx#92#0:text": "Bienvenido {var=player_name}, veo que...", + * "aerie_0.tmx#92#0.0:name": "¿Quién eres?", + * "aerie_0.tmx#92#0.0:text": "Soy un trabajador del gremio del aviario..." + * } + * + * Key format: "<tmxFileName>#<objectId>#<dialogPath>:<field>" + * - tmxFileName: the .tmx file's own name (no directory), e.g. "aerie_0.tmx". + * - objectId: the numeric "id" of the map object the dialog is attached to + * (the same id libGDX's Tiled loader exposes as the "id" property). + * - dialogPath: position within the dialog tree, root index then each + * nested "options" index separated by '.', e.g. "0.1.2". + * - field: either "text" or "name", matching DialogData's text/name fields. + * + * This exact key scheme is also implemented by + * forge-gui/tools/checkAdventureTmxTranslations.py, which can generate a + * catalog skeleton from the current English .tmx files and report any + * catalog entries that are missing or orphaned (e.g. because the English + * source text changed) so translations never silently go stale. + */ +public class DialogTranslations { + + private static final String CATALOG_SUBDIR = "maps/"; + private static final Map> catalogCache = new HashMap<>(); + + private DialogTranslations() {} + + /** + * Applies any available translations, in place, to a freshly parsed + * dialog tree. Safe to call with a null/empty sourceMapFile (e.g. for + * dialogs built directly in Java code, or already localized through + * quests.json/shops.json's own per-language file mechanism) - in that + * case this is a no-op. + */ + public static void apply(String sourceMapFile, int parentID, Array roots) { + if (sourceMapFile == null || sourceMapFile.isEmpty() || roots == null || roots.size == 0) return; + + Map catalog = getCatalog(); + if (catalog.isEmpty()) return; // English, or no catalog for the current locale: nothing to translate. + + String baseKey = fileBaseName(sourceMapFile) + "#" + parentID; + for (int i = 0; i < roots.size; i++) { + applyRecursive(catalog, roots.get(i), baseKey + "#" + i); + } + } + + private static void applyRecursive(Map catalog, DialogData node, String path) { + if (node == null) return; + + if (node.text != null && !node.text.isEmpty()) { + String translated = catalog.get(path + ":text"); + if (translated != null) node.text = translated; + } + if (node.name != null && !node.name.isEmpty()) { + String translated = catalog.get(path + ":name"); + if (translated != null) node.name = translated; + } + if (node.options != null) { + for (int i = 0; i < node.options.length; i++) { + applyRecursive(catalog, node.options[i], path + "." + i); + } + } + } + + private static String fileBaseName(String path) { + String name = path.replace('\\', '/'); + int slash = name.lastIndexOf('/'); + return slash >= 0 ? name.substring(slash + 1) : name; + } + + /** + * Loads (and caches) the translation catalog for the current UI + * language, merging the shared "common" maps catalog with the current + * plane's own catalog if both exist. Returns an empty map - never null - + * when nothing is found, e.g. when running in English. + */ + private static Map getCatalog() { + String lang = Config.instance().getLang(); + Map cached = catalogCache.get(lang); + if (cached != null) return cached; + + Map merged = new HashMap<>(); + String catalogFileName = CATALOG_SUBDIR + "dialog-" + lang + ".json"; + loadCatalogFile(Config.instance().getCommonFilePath(catalogFileName), merged); + loadCatalogFile(Config.instance().getFilePath(catalogFileName), merged); + catalogCache.put(lang, merged); + return merged; + } + + private static void loadCatalogFile(String path, Map target) { + FileHandle file = new FileHandle(path); + if (!file.exists()) return; // No catalog for this locale here yet: silently skip, fall back to English. + try { + JsonValue root = new JsonReader().parse(file); + for (JsonValue entry = root.child; entry != null; entry = entry.next) { + if (entry.name != null && !entry.name.startsWith("_") && entry.isString()) { + target.put(entry.name, entry.asString()); + } + } + } catch (Exception e) { + System.err.println("Error loading dialog translation catalog " + path + ": " + e.getMessage()); + } + } + + /** Clears the cache. Call this if the UI language changes at runtime. */ + public static void reset() { + catalogCache.clear(); + } +} diff --git a/forge-gui-mobile/src/forge/adventure/util/MapDialog.java b/forge-gui-mobile/src/forge/adventure/util/MapDialog.java index 1729da728331..1f098a87900b 100644 --- a/forge-gui-mobile/src/forge/adventure/util/MapDialog.java +++ b/forge-gui-mobile/src/forge/adventure/util/MapDialog.java @@ -61,6 +61,17 @@ public class MapDialog { public MapDialog(String S, MapStage stage, int parentID) { + this(S, stage, parentID, null); + } + + /** + * @param sourceMapFile The .tmx file this dialog JSON was embedded in (e.g. + * "aerie_0.tmx"), used to look up optional translations + * via DialogTranslations. Pass null when the dialog + * isn't sourced from a .tmx (no translation lookup is + * attempted in that case). + */ + public MapDialog(String S, MapStage stage, int parentID, String sourceMapFile) { this.stage = stage; this.parentID = parentID; try { @@ -70,6 +81,7 @@ public MapDialog(String S, MapStage stage, int parentID) { return; } this.data = JSONStringLoader.parse(Array.class, DialogData.class, S, defaultJSON); + DialogTranslations.apply(sourceMapFile, parentID, this.data); } catch (Exception exception) { exception.printStackTrace(); diff --git a/forge-gui/res/adventure/common/maps/dialog-es-ES.json b/forge-gui/res/adventure/common/maps/dialog-es-ES.json new file mode 100644 index 000000000000..64e09700c327 --- /dev/null +++ b/forge-gui/res/adventure/common/maps/dialog-es-ES.json @@ -0,0 +1,978 @@ +{ + "_comment": "Catalogo de traducciones (es-ES) para dialogos de PNJ/enemigos embebidos en los .tmx bajo esta carpeta. No es un fichero .properties: solo cadenas de dialogo, generadas y verificadas con forge-gui/tools/checkAdventureTmxTranslations.py. Cualquier clave ausente cae automaticamente al ingles embebido en el .tmx.", + "aerie_0.tmx#92#0.0.0.0:name": "Gracias por la información. Adiós.", + "aerie_0.tmx#92#0.0.0.0:text": "Marcharse", + "aerie_0.tmx#92#0.0.0:name": "¿Puedo entrar en el aviario?", + "aerie_0.tmx#92#0.0.0:text": "Me temo que no. Nuestro gremio protege mucho sus técnicas de cría, desarrolladas a lo largo de más de mil años. Por eso no queremos que nuestros competidores husmeen en nuestro negocio. Si alguien sin permiso entra en el aviario, será reprendido por los guardias e incluso por las propias aves, entrenadas para atacar a intrusos no deseados.", + "aerie_0.tmx#92#0.0:name": "¿Quién eres?", + "aerie_0.tmx#92#0.0:text": "Soy un trabajador del gremio del aviario, uno de los mayores conglomerados de criadores de las diversas especies de aves de Shandalar. Tenemos varios centros de cría como este repartidos por los distintos biomas de Shandalar. Mi tarea es vender esas aves a aventureros ansiosos como tú. Así que echa un vistazo.", + "aerie_0.tmx#92#0:text": "Bienvenido {var=player_name}, veo que has venido a ver algunas de nuestras mejores aves. Debes de ser bastante listo al acudir a nosotros, ¡ya que nuestros precios son inigualables comparados con los de otros vendedores de Shandalar!", + "aerie_1.tmx#100#0.0:name": "Marcharse", + "aerie_1.tmx#100#0:text": "La inscripción dice: Se advierte a los visitantes no autorizados, aves peligrosas más adelante.", + "black_castle.tmx#55#0.0.0:name": "(Continuar)", + "black_castle.tmx#55#0.0:name": "¡Griselbrand, he hecho lo que me pediste! ¡Es hora de acabar con esto!", + "black_castle.tmx#55#0.0:text": "Con una ráfaga de viento negro, la puerta se hace pedazos. Ya puedes pasar libremente.", + "black_castle.tmx#55#0.1.0:name": "(Continuar)", + "black_castle.tmx#55#0.1:name": "¡Griselbrand, he hecho lo que me pediste! ¡Es hora de acabar con esto!", + "black_castle.tmx#55#0.1:text": "Con una ráfaga de viento negro, la puerta se hace pedazos. Ya puedes pasar libremente.", + "black_castle.tmx#55#0.2.0:name": "(Continuar)", + "black_castle.tmx#55#0.2:name": "Llamas a la puerta.", + "black_castle.tmx#55#0.2:text": "NO ERES DIGNO, ¡LÁRGATE!", + "black_castle.tmx#55#0:text": "Llegas ante la verja.", + "black_castle.tmx#85#0.0.0.0:name": "Demostraré mi valía, solo asegúrate de abrir la verja cuando derrote a tus retadores.", + "black_castle.tmx#85#0.0.0.0:text": "Marcharse", + "black_castle.tmx#85#0.0.0:name": "¿Qué necesito hacer para pasar por esta verja?", + "black_castle.tmx#85#0.0.0:text": "Debes demostrar tu fuerza derrotando al menos a cuatro de los cinco enemigos que acechan en esta mazmorra para ser digno de una audiencia con mi ilustre amo.\n Afila tu espada, prepara tus hechizos y reúne valor, pues los desafíos que te esperan pondrán a prueba el temple incluso del guerrero más curtido.", + "black_castle.tmx#85#0.0:name": "¿Ah, sí? Supongo que no te importará abrir esa verja delante de mí, ¿verdad?", + "black_castle.tmx#85#0.0:text": "Me temo que no tengo permitido hacer eso, soy un mero sirviente del poderoso Griselbrand, amo de los Demonios.", + "black_castle.tmx#85#0:text": "Bienvenido, {var=player_name}. Griselbrand ha estado esperando ansiosamente este momento.", + "black_castle.tmx#85#1.0:name": "(Continuar)", + "black_castle.tmx#85#1:text": "Los retadores siguen con vida, no podrás pasar de esta verja", + "black_castle.tmx#85#2.0:name": "(Continuar)", + "black_castle.tmx#85#2:text": "Estoy impresionado, eres bienvenido para reunirte con mi amo en el piso de arriba, aunque no puedo garantizar que sobrevivas a ese encuentro.", + "black_castle_f1.tmx#50#0.0:name": "(Continuar)", + "black_castle_f1.tmx#50#0:text": "Al asestar tu golpe final contra Griselbrand, sientes un pulso de maná considerable.", + "black_castle_f1.tmx#50#1.0:name": "(Continuar)", + "black_castle_f1.tmx#50#1:text": "Al asestar tu golpe final contra Griselbrand, sientes otro pulso de maná.", + "blue_castle.tmx#55#0.0.0:name": "(Continuar)", + "blue_castle.tmx#55#0.0:name": "¡Lorthos, he hecho lo que me pediste! ¡Es hora de acabar con esto!", + "blue_castle.tmx#55#0.0:text": "De repente, la verja desaparece justo ante tus ojos. Ya puedes pasar libremente.", + "blue_castle.tmx#55#0.1.0:name": "(Continuar)", + "blue_castle.tmx#55#0.1:name": "¡Lorthos, he hecho lo que me pediste! ¡Es hora de acabar con esto!", + "blue_castle.tmx#55#0.1:text": "De repente, la verja desaparece justo ante tus ojos. Ya puedes pasar libremente.", + "blue_castle.tmx#55#0.2.0:name": "(Continuar)", + "blue_castle.tmx#55#0.2:name": "Llamas a la puerta.", + "blue_castle.tmx#55#0.2:text": "NO ERES DIGNO, ¡LÁRGATE!", + "blue_castle.tmx#55#0:text": "Llegas ante una verja.", + "blue_castle.tmx#85#0.0.0.0:name": "Demostraré mi valía, solo asegúrate de abrir la verja cuando derrote a tus retadores.", + "blue_castle.tmx#85#0.0.0.0:text": "Marcharse", + "blue_castle.tmx#85#0.0.0:name": "¿Qué necesito hacer para pasar por esta verja?", + "blue_castle.tmx#85#0.0.0:text": "Debes demostrar tu fuerza derrotando al menos a cuatro de los cinco enemigos que acechan en esta mazmorra para ser digno de una audiencia con mi ilustre amo.\n Afila tu espada, prepara tus hechizos y reúne valor, pues los desafíos que te esperan pondrán a prueba el temple incluso del guerrero más curtido.", + "blue_castle.tmx#85#0.0:name": "¿Ah, sí? Supongo que no te importará abrir esa verja delante de mí, ¿verdad?", + "blue_castle.tmx#85#0.0:text": "Me temo que no tengo permitido hacer eso, soy un mero sirviente del poderoso Lorthos, amo de las profundidades del mar.", + "blue_castle.tmx#85#0:text": "Bienvenido, {var=player_name}. Lorthos ha estado esperando ansiosamente este momento.", + "blue_castle.tmx#85#1.0:name": "(Continuar)", + "blue_castle.tmx#85#1:text": "Los retadores siguen con vida, no podrás pasar de esta verja.", + "blue_castle.tmx#85#2.0:name": "(Continuar)", + "blue_castle.tmx#85#2:text": "Estoy impresionado, eres bienvenido para reunirte con mi amo en el piso de arriba, aunque no puedo garantizar que sobrevivas a ese encuentro.", + "blue_castle_f1.tmx#50#0.0:name": "(Continuar)", + "blue_castle_f1.tmx#50#0:text": "Al asestar tu golpe final contra Lorthos, sientes un pulso de maná considerable. Pero, eliminada la amenaza inmediata, ahora puedes ver claramente que la sala cerrada al norte de la cámara no contiene ningún prisionero.", + "blue_castle_f1.tmx#50#1.0:name": "(Continuar)", + "blue_castle_f1.tmx#50#1:text": "Al asestar tu golpe final contra Lorthos, sientes otro pulso de maná. Pero, como antes, la sala cerrada tras tu enemigo caído no contiene ningún prisionero.", + "bog.tmx#240#0.0:name": "Alejarse", + "bog.tmx#240#0.1:name": "Atacar a la bruja", + "bog.tmx#240#0.2.0:name": "Alejarse", + "bog.tmx#240#0.2.1:name": "Atacar a la bruja", + "bog.tmx#240#0.2:name": "Acercarse despacio", + "bog.tmx#240#0.2:text": "\"¡Aléjate de aquí! ¡No los tendrás!\" Retrocede un paso, dejando caer parte de las hierbas y hongos que parecía estar recogiendo.", + "bog.tmx#240#0:text": "Una vieja bruja te observa con recelo, pero no levanta su bastón para atacar.", + "cave_16BR3U.tmx#83#0.0:name": "Marcharse", + "cave_16BR3U.tmx#83#0.1.0:name": "Continuar", + "cave_16BR3U.tmx#83#0.1:name": "Abrir con los cinco fragmentos", + "cave_16BR3U.tmx#83#0.1:text": "La verja se ha abierto.", + "cave_16BR3U.tmx#83#0:text": "Una gran verja bloquea el paso. A través de los barrotes puedes ver una figura imponente en la sala más allá. (Necesitas los cinco fragmentos de esta mazmorra para abrir esta verja.)", + "cave_dwarf.tmx#84#0.0:name": "Marcharse", + "cave_dwarf.tmx#84#0:text": "La inscripción dice: No entrar, muerte en el interior", + "crypt.tmx#84#0.0.0:name": "Continuar", + "crypt.tmx#84#0.0:name": "Accionar la palanca", + "crypt.tmx#84#0.0:text": "Oyes fuertes sonidos procedentes del norte.", + "crypt.tmx#84#0.1:name": "Marcharse", + "crypt.tmx#84#0:text": "Una gran palanca está empotrada en la pared.", + "crypt.tmx#85#0.0:name": "¡Es hora de encontrarlo!", + "crypt.tmx#85#0:text": "Esta verja parece estar bloqueada por algún mecanismo, pero no ves ningún control por aquí.", + "crypt_5.tmx#59#0.0:name": "Marcharse", + "crypt_5.tmx#59#0:text": "Una gran palanca está empotrada en la pared. O lo estaba. Parece haberse fundido, lo que habría requerido un calor enorme.", + "crypt_5.tmx#60#0.0:name": "Marcharse", + "crypt_5.tmx#60#0:text": "Una gran palanca está empotrada en la pared. O lo estaba. Parece haberse fundido, lo que habría requerido un calor enorme.", + "crypt_5.tmx#62#0.0.0:name": "Continuar", + "crypt_5.tmx#62#0.0:name": "Accionar la palanca", + "crypt_5.tmx#62#0.0:text": "Oyes fuertes sonidos procedentes del norte.", + "crypt_5.tmx#62#0.1:name": "Marcharse", + "crypt_5.tmx#62#0:text": "Una gran palanca está empotrada en la pared.", + "crypt_5.tmx#63#0.0:name": "Marcharse", + "crypt_5.tmx#63#0:text": "Una gran palanca está empotrada en la pared. O lo estaba. Parece haberse fundido, lo que habría requerido un calor enorme.", + "crypt_5.tmx#64#0.0:name": "Marcharse", + "crypt_5.tmx#64#0:text": "Una gran palanca está empotrada en la pared. O lo estaba. Parece haberse fundido, lo que habría requerido un calor enorme.", + "crypt_5.tmx#65#0.0:name": "¡Es hora de encontrarlas!", + "crypt_5.tmx#65#0:text": "Esta verja parece estar bloqueada por algún mecanismo, pero no ves ningún control por aquí.", + "crypt_5.tmx#66#0.0:name": "Marcharse", + "crypt_5.tmx#66#0:text": "Una gran palanca está empotrada en la pared. O lo estaba. Parece haberse fundido, lo que habría requerido un calor enorme.", + "crypt_5.tmx#67#0.0:name": "Marcharse", + "crypt_5.tmx#67#0:text": "Una gran palanca está empotrada en la pared. O lo estaba. Parece haberse fundido, lo que habría requerido un calor enorme.", + "crypt_5.tmx#81#0.0:name": "Marcharse", + "crypt_5.tmx#81#0:text": "Una gran palanca está empotrada en la pared. O lo estaba. Parece haberse fundido, lo que habría requerido un calor enorme.", + "debug_map.tmx#52#0.0:name": "De acuerdo...", + "debug_map.tmx#52#0:text": "Soy una gran verja. Saludos.", + "debug_map.tmx#79#0.0:name": "Claro.", + "debug_map.tmx#79#0:text": "No me hagas caso, solo estoy relajándome.", + "debug_map.tmx#80#0.0:name": "Vale", + "debug_map.tmx#80#0.1.0:name": "Oye, ¿no eres un poco musculoso para ser un elfo...?", + "debug_map.tmx#80#0.10.0:name": "Claro", + "debug_map.tmx#80#0.10:name": "Sobre esa misión...", + "debug_map.tmx#80#0.10:text": "Por favor, dime qué responde el Demonio de Depuración.", + "debug_map.tmx#80#0.11.0:name": "Gracias", + "debug_map.tmx#80#0.11:name": "Entendido, tío.", + "debug_map.tmx#80#0.11:text": "Ah. Ya veo. Gracias, amigo, toma este oro por las molestias.", + "debug_map.tmx#80#0.1:name": "¡Pelea conmigo, elfo!", + "debug_map.tmx#80#0.1:text": "Con gusto.", + "debug_map.tmx#80#0.2.0:name": "Genial.", + "debug_map.tmx#80#0.2:name": "Yo también quiero ser ecológico.", + "debug_map.tmx#80#0.2:text": "Escucha al bosque, amigo.\n¡Tu identidad de color ahora es verde!", + "debug_map.tmx#80#0.3.0:name": "¡ESPERA, ERA UNA BROMA!", + "debug_map.tmx#80#0.3:name": "¡Quiero luchar contra Emrakul, esa de ahí!", + "debug_map.tmx#80#0.3:text": "¿En serio? Bueno... allá tú.\n¡EY, EMMY! ¡ESTE PRINGADO QUIERE BAILAR!", + "debug_map.tmx#80#0.4.0:name": "Lo siento...", + "debug_map.tmx#80#0.4:name": "¿Adónde se ha ido Emrakul?", + "debug_map.tmx#80#0.4:text": "Se ha ido. Llorando. Eres un monstruo.", + "debug_map.tmx#80#0.5.0:name": "Gracias, tío.", + "debug_map.tmx#80#0.5:name": "Eso mola, verde amigo.", + "debug_map.tmx#80#0.5:text": "¡Lo has entendido! Toma este objeto.", + "debug_map.tmx#80#0.6.0:name": "Emoji de pulgar arriba", + "debug_map.tmx#80#0.6:name": "Gracias por la bendición.", + "debug_map.tmx#80#0.6:text": "De nada.", + "debug_map.tmx#80#0.7.0:name": "¡Pero amo mi Tesoro! Rehúso humildemente.", + "debug_map.tmx#80#0.7.1:name": "Lo acepto", + "debug_map.tmx#80#0.7:name": "¿Tienes alguna bendición élfica elegante?", + "debug_map.tmx#80#0.7:text": "Si me das un Tesoro, te daré la bendición del Elfo de Depuración.\nQue consiste en un Elfo de Llanowar y 2 puntos de vida extra en tu próxima batalla. ¿Suena bien?", + "debug_map.tmx#80#0.8.0:name": "Gracias, tío.", + "debug_map.tmx#80#0.8:name": "¿Puedes abrir esa pared oculta?", + "debug_map.tmx#80#0.8:text": "Ya que lo pides amablemente, lo haré.", + "debug_map.tmx#80#0.9.0:name": "Es raro, pero vale.", + "debug_map.tmx#80#0.9.1:name": "Ese tipo me asusta, prefiero no hacerlo.", + "debug_map.tmx#80#0.9:name": "¿Tienes alguna misión?", + "debug_map.tmx#80#0.9:text": "Ah, quizá puedas ayudarme. ¿Puedes preguntarle al Demonio de Depuración cuál es su color favorito?", + "debug_map.tmx#80#0:text": "Soy un elfo. Hago cosas de elfo, como abrazar árboles y ser guapo.", + "debug_map.tmx#81#0.0:name": "Uy, oh.", + "debug_map.tmx#81#0:text": "Tú... ¡tú has herido a Grog!\n¡Tú... sucio cerdo! ¡No pararé hasta verte derrotado!\n¡Dioses... quien sea! ¡Concededme fuerza! ¡Concededme VENGANZA!", + "debug_map.tmx#82#0.0:name": "¿¿¿?", + "debug_map.tmx#82#0:text": "...", + "debug_map.tmx#84#0.0:name": "Eres sospechoso y tienes dos sombras, yo paso.", + "debug_map.tmx#84#0.1.0:name": "¡Ahí va eso!", + "debug_map.tmx#84#0.1:name": "¡Te venceré, demonio!", + "debug_map.tmx#84#0.1:text": "Vaya, ¡mira quién se hace el duro por aquí!", + "debug_map.tmx#84#0.2.0:name": "¡Mi fuerza vital no, moriré sin ella!", + "debug_map.tmx#84#0.2.1:name": "No estoy haciendo nada mejor con ella.", + "debug_map.tmx#84#0.2:name": "Me gusta tu estilo oscuro.", + "debug_map.tmx#84#0.2:text": "Puedes ser oscuro y siniestro como yo. Quizás a cambio de un poco de tu fuerza vital...", + "debug_map.tmx#84#0.3.0:name": "Vaya, hombre...", + "debug_map.tmx#84#0.3:name": "Me gusta tu estilo oscuro.", + "debug_map.tmx#84#0.3:text": "No tienes suficiente fuerza vital... vuelve con más que ofrecer.\nCome sano, lee un libro, deja que el alma esté jugosa.", + "debug_map.tmx#84#0.4.0:name": "Esta gema tiene mucho estilo oscuro, igual que yo. ¡Trato hecho!", + "debug_map.tmx#84#0.4.1:name": "Lo pensaré.", + "debug_map.tmx#84#0.4:name": "¿Algún trato demoníaco molón?", + "debug_map.tmx#84#0.4:text": "Puedo ofrecerte este Tesoro por el precio justo de 200 de oro.", + "debug_map.tmx#84#0.5.0:name": "Eso es sospechoso.", + "debug_map.tmx#84#0.5.1:name": "¿Qué podría salir mal?", + "debug_map.tmx#84#0.5:name": "¿Tienes alguna bendición demoníaca elegante?", + "debug_map.tmx#84#0.5:text": "Dame ese Tesoro tuyo...\n(+1 de salud, Visión de Maná, velocidad de movimiento 120%, Señor del Foso empieza en juego)", + "debug_map.tmx#84#0.6.0:name": "Gracias, Satán.", + "debug_map.tmx#84#0.6:name": "Oye, ¿cuál es tu color favorito?", + "debug_map.tmx#84#0.6:text": "Rosa. Es el color de mis batidos de sangre favoritos.\nMuy oscuro y malvado.", + "debug_map.tmx#84#0:text": "Tengo algunas cosas que ofrecer a cambio de esa vida que tienes...", + "debug_map.tmx#94#0.0:name": "Glub.", + "debug_map.tmx#94#0.1.0:name": "Está funcionando. Tío, ahora mismo podría ir a comer krill.", + "debug_map.tmx#94#0.1:name": "Me gusta tu aire a pescado. A mí también me gustaría ser azul y oler raro.", + "debug_map.tmx#94#0.1:text": "*glub*\n(Tu identidad de color ahora es azul)", + "debug_map.tmx#94#0.2.0:name": "Lo sé, ¿verdad?", + "debug_map.tmx#94#0.2:name": "He hablado con la verja. De algún modo creo que te resultará relevante.", + "debug_map.tmx#94#0.2:text": "*glub, glub*\n (Fascinante.)", + "debug_map.tmx#94#0:text": "*glub*\n(Según tu diccionario de pez a español, te está saludando)", + "dig_site_0.tmx#61#0.0:name": "(Continuar)", + "dig_site_0.tmx#61#0:text": "Solo vine a recoger unas piezas de maquinaria antigua. No esperaba que intentaran recogerME a MÍ. Al menos esta vez no eran serpientes...", + "dig_site_1.tmx#116#0.0:name": "(Continuar)", + "dig_site_1.tmx#116#0:text": "La palanca parece firmemente sujeta al mecanismo, pero se balancea libremente de un lado a otro como si no estuviera conectada a nada.", + "emrakul.tmx#71#0.0:name": "Marcharse", + "emrakul.tmx#71#0.1.0:name": "Continuar", + "emrakul.tmx#71#0.1:name": "Abrir con la llave extraña", + "emrakul.tmx#71#0.1:text": "La verja se ha abierto.", + "emrakul.tmx#71#0:text": "Una enorme barrera mágica roja bloquea el paso.", + "evilgrove_5_swamp.tmx#128#0.0:name": "Marcharse", + "evilgrove_5_swamp.tmx#128#0:text": "La inscripción dice: El Parque Nacional de los Cenagales Eternos ha sido cerrado al público por la llegada de huéspedes no deseados al perímetro del parque", + "forest.tmx#270#0.0.0:name": "Alejarse en busca de una llave", + "forest.tmx#270#0.0:name": "Abrir la verja", + "forest.tmx#270#0.0:text": "La verja está cerrada con un candado grande y elaborado.", + "forest.tmx#270#0.1:name": "Marcharse", + "forest.tmx#270#0:text": "Una gran verja se alza entre tú y la zona al norte. Sobre la verja hay una inscripción que dice \"NO ABRIR MUERTOS DENTRO\".", + "forest.tmx#270#1.0.0:name": "(Continuar)", + "forest.tmx#270#1.0:name": "Abrir la verja", + "forest.tmx#270#1.0:text": "Con un chirrido capaz de despertar a los muertos, la verja se abre. Ya puedes pasar libremente.", + "forest.tmx#270#1.1:name": "Marcharse", + "forest.tmx#270#1:text": "Una gran verja se alza entre tú y la zona al norte. Sobre la verja hay una inscripción que dice \"NO ABRIR MUERTOS DENTRO\".", + "fort_colorless_2_wizards.tmx#73#0.0:name": "Marcharse", + "fort_colorless_2_wizards.tmx#73#0.1:name": "Colocar la mano sobre la barrera", + "fort_colorless_2_wizards.tmx#73#0.1:text": "La barrera se desvanece en el infinito ante ti.", + "fort_colorless_2_wizards.tmx#73#0:text": "Un campo rojo translúcido y reluciente bloquea tu camino. Gritos de dolor resuenan en la sala a tus espaldas.", + "frostbitten_cavern_0.tmx#30#0.0:name": "(Continuar)", + "frostbitten_cavern_0.tmx#30#0:text": "Por suerte para ti, y quizás también para los habitantes de esta cueva, la verja está congelada en posición abierta en lugar de cerrada.", + "frostbitten_cavern_1.tmx#23#0.0:name": "(Continuar)", + "frostbitten_cavern_1.tmx#23#0:text": "Flores crecen, o lo intentan, en todos los rincones de la cueva. Estalactitas de hielo salpican un techo blanco y brillante como una lámpara de araña, y hace mucho más calor aquí dentro de lo que esperabas.", + "frostbitten_cavern_1.tmx#25#0.0:name": "Coger la flor", + "frostbitten_cavern_1.tmx#25#0:text": "Esta flor tiene un tono violeta muy intenso.", + "frostbitten_cavern_1.tmx#26#0.0:name": "Coger la flor", + "frostbitten_cavern_1.tmx#26#0:text": "Esta flor tiene un tono escarlata muy romántico.", + "frostbitten_cavern_1.tmx#8#0.0.0:name": "(Luchar)", + "frostbitten_cavern_1.tmx#8#0.0.1:name": "(Huir)", + "frostbitten_cavern_1.tmx#8#0.0:name": "\"Solo necesito una de esas flores...\"", + "frostbitten_cavern_1.tmx#8#0.0:text": "\"No. Ahora largo de aquí.", + "frostbitten_cavern_1.tmx#8#0.1:name": "(Luchar)", + "frostbitten_cavern_1.tmx#8#0.2:name": "(Huir)", + "frostbitten_cavern_1.tmx#8#0:text": "El mago en el corazón de la caverna te gruñe: \"Si mis compañeros no te han dado una bienvenida suficientemente fría, permíteme...\"", + "graveyard.tmx#256#0.0:name": "Alejarse", + "graveyard.tmx#256#0.1.0:name": "Alejarse", + "graveyard.tmx#256#0.1.1.0.0:name": "¡Prepárate!", + "graveyard.tmx#256#0.1.1.0:name": "(Continuar)", + "graveyard.tmx#256#0.1.1.0:text": "La estatua empieza a agrietarse y moverse, pero no se desmorona. En su lugar, habla: \"¡¡TE ENTROMETES CON PODERES QUE DESCONOCES, MORTAL!!\". Apenas tienes tiempo de procesarlo antes de que ataque.", + "graveyard.tmx#256#0.1.1:name": "Drenar el poder de la estatua", + "graveyard.tmx#256#0.1.1:text": "Hagas lo que hagas, parece estar funcionando. El resplandor alrededor de las armas de la estatua empieza a desvanecerse, al igual que la barrera alrededor del cementerio. También descubres que eres capaz de canalizar esta energía, y te sientes algo revitalizado por ella. (+15 de salud recuperada)", + "graveyard.tmx#256#0.1:name": "Examinar de cerca la estatua", + "graveyard.tmx#256#0.1:text": "Sientes una cantidad inmensa de poder irradiando del monumento. También empiezas a notar que muchos de los símbolos sagrados familiares grabados en la base están retorcidos, incompletos, alterados o de algún modo parecen 'incorrectos'.", + "graveyard.tmx#256#0:text": "Al borde de un estanque reflectante se alza la representación tallada en piedra de un ángel. Posada como si luchara en pleno vuelo, el aire alrededor de la espada y el escudo de la estatua reluce con una neblina prismática. En otro contexto, sería majestuosa. Pero aquí, resulta amenazante.", + "graveyard.tmx#256#1.0:name": "Buscar una salida", + "graveyard.tmx#256#1:text": "Con la estatua destruida, ya no sientes la pesada presencia que antes te alejaba de los límites del cementerio.", + "graveyard.tmx#258#0.0:name": "(Continuar)", + "graveyard.tmx#258#0:text": "No puedes seguir avanzando, una fuerza mística te empuja hacia atrás por mucho que intentes avanzar, y tienes la visión de un ángel en tu mente bloqueándote el paso.", + "graveyard.tmx#270#0.0:name": "(Continuar)", + "graveyard.tmx#270#0:text": "El sonido queda casi enmascarado por el zumbido de las paredes, pero notas un portal de vuelta a la entrada abriéndose a tu izquierda.", + "green_castle.tmx#55#0.0.0:name": "(Continuar)", + "green_castle.tmx#55#0.0:name": "¡Ghalta, he hecho lo que me pediste! ¡Es hora de acabar con esto!", + "green_castle.tmx#55#0.0:text": "Con un rugido ensordecedor, la verja estalla dejando solo cenizas a tu paso. Ya puedes pasar libremente.", + "green_castle.tmx#55#0.1.0:name": "(Continuar)", + "green_castle.tmx#55#0.1:name": "¡Ghalta, he hecho lo que me pediste! ¡Es hora de acabar con esto!", + "green_castle.tmx#55#0.1:text": "Con un rugido ensordecedor, la verja estalla dejando solo cenizas a tu paso. Ya puedes pasar libremente.", + "green_castle.tmx#55#0.2.0:name": "(Continuar)", + "green_castle.tmx#55#0.2:name": "Llamas a la puerta.", + "green_castle.tmx#55#0.2:text": "NO ERES DIGNO, ¡LÁRGATE!", + "green_castle.tmx#55#0:text": "Llegas ante una verja.", + "green_castle.tmx#72#0.0.0.0:name": "Demostraré mi valía, solo asegúrate de abrir la verja cuando derrote a tus retadores.", + "green_castle.tmx#72#0.0.0.0:text": "Marcharse", + "green_castle.tmx#72#0.0.0:name": "¿Qué necesito hacer para pasar por esta verja?", + "green_castle.tmx#72#0.0.0:text": "Debes demostrar tu fuerza derrotando al menos a cuatro de los cinco enemigos que acechan en esta mazmorra para ser digno de una audiencia con mi ilustre ama, que domina este reino de dinosaurios.\n Afila tu espada, prepara tus hechizos y reúne valor, pues los desafíos que te esperan pondrán a prueba el temple incluso del guerrero más curtido.", + "green_castle.tmx#72#0.0:name": "¿Ah, sí? Supongo que no te importará abrir esa verja delante de mí, ¿verdad?", + "green_castle.tmx#72#0.0:text": "Me temo que no tengo permitido hacer eso, soy un mero sirviente de la poderosa Ghalta, reina de los Dinosaurios.", + "green_castle.tmx#72#0:text": "Bienvenido, {var=player_name}. La reina Ghalta ha estado esperando ansiosamente este momento.", + "green_castle.tmx#72#1.0:name": "(Continuar)", + "green_castle.tmx#72#1:text": "Los retadores siguen con vida, no podrás pasar de esta verja.", + "green_castle.tmx#72#2.0:name": "(Continuar)", + "green_castle.tmx#72#2:text": "Estoy impresionada, eres bienvenido para reunirte con mi ama en el piso de arriba, aunque no puedo garantizar que sobrevivas a ese encuentro. Adiós, aventurero", + "green_castle_f1.tmx#52#0.0:name": "(Continuar)", + "green_castle_f1.tmx#52#0:text": "Al asestar tu golpe final contra Ghalta, sientes un pulso de maná considerable.", + "green_castle_f1.tmx#52#1.0:name": "(Continuar)", + "green_castle_f1.tmx#52#1:text": "Al asestar tu golpe final contra Ghalta, sientes otro pulso de maná.", + "grolnok_f1.tmx#168#0.0:name": "Marcharse", + "grolnok_f1.tmx#168#0.1.0:name": "Continuar", + "grolnok_f1.tmx#168#0.1:name": "Abrir con la Llave de Grolnok", + "grolnok_f1.tmx#168#0.1:text": "La verja se ha abierto.", + "grolnok_f1.tmx#168#0:text": "Esta puerta está cerrada con llave.", + "grolnok_f1.tmx#183#0.0:name": "Marcharse", + "grolnok_f1.tmx#183#0.1.0:name": "Continuar", + "grolnok_f1.tmx#183#0.1:name": "Abrir con la Llave Oxidada", + "grolnok_f1.tmx#183#0.1:text": "La verja se ha abierto.", + "grolnok_f1.tmx#183#0:text": "Esta puerta está cerrada con llave.", + "grove_1_bears.tmx#99#0.0:name": "Tienes un mal presentimiento sobre esto.", + "grove_1_bears.tmx#99#0:text": "De repente oyes extraños sonidos a tu espalda. Una voz áspera truena tras de ti: ¡MINA DE MIEL, MORIRÁS!", + "grove_8_hydra.tmx#115#0.0:name": "Marcharse", + "grove_8_hydra.tmx#115#0:text": "¡Bestia peligrosa por delante! ¡Da media vuelta ahora mismo!", + "library_of_varsil_1.tmx#25#0.0:name": "(Continuar)", + "library_of_varsil_1.tmx#25#0:text": "En esta estantería hay estudios anatómicos de varios animales corrientes. Abierto encima hay un texto sobre serpientes. ¿Por qué tenían que ser serpientes?", + "library_of_varsil_1.tmx#26#0.0:name": "(Continuar)", + "library_of_varsil_1.tmx#26#0:text": "Esta estantería contiene libros de recetas, pero muchos de los ingredientes te resultan desconocidos.", + "library_of_varsil_1.tmx#27#0.0:name": "(Continuar)", + "library_of_varsil_1.tmx#27#0:text": "Aquí encuentras, más que libros, montones de papeleo. Parece consistir en una serie de manifiestos de caravanas y libros de envíos adjuntos a mapas. Comentarios y preguntas garabateados en unos calendarios indican que quien recopiló estos registros sospechaba que los mercaderes asociados realizaban con frecuencia negocios adicionales no documentados a lo largo de sus rutas.", + "library_of_varsil_1.tmx#28#0.0:name": "(Continuar)", + "library_of_varsil_1.tmx#28#0:text": "'El Impacto de la Teletransportación Personal en el Comercio Intercity' - No suena precisamente a lectura apasionante.", + "library_of_varsil_1.tmx#30#0.0:name": "(Continuar)", + "library_of_varsil_1.tmx#30#0:text": "El conocimiento que estos textos contenían en su día se ha perdido; sus páginas quedaron empapadas hace mucho en el mismo líquido oscuro que parece haber manchado las estanterías bajo ellos.", + "library_of_varsil_1.tmx#31#0.0:name": "(Continuar)", + "library_of_varsil_1.tmx#31#0:text": "Tomos cubiertos de polvo sobre temas anodinos llenan esta estantería. Tienes la sensación de que nadie los ha tocado en bastante tiempo.", + "library_of_varsil_1.tmx#32#0.0:name": "(Continuar)", + "library_of_varsil_1.tmx#32#0:text": "En esta estantería hay un diario con una cubierta resistente que destaca entre los pergaminos descoloridos a su alrededor. Sus anotaciones son un misterio para ti, sin embargo, pues están escritas en algún tipo de código.", + "library_of_varsil_1.tmx#33#0.0:name": "(Continuar)", + "library_of_varsil_1.tmx#33#0:text": "'Poemas Azgothianos de una Mañana de Verano'. Este libro te produce una sensación inquietante y decides, sabiamente, dejar la cubierta cerrada.", + "library_of_varsil_1.tmx#34#0.0:name": "(Continuar)", + "library_of_varsil_1.tmx#34#0:text": "Aquí encuentras una colección de biografías de magos de los que nunca has oído hablar, y un vistazo rápido a su contenido te hace preguntarte quién se molestaría en escribirlas.", + "library_of_varsil_1.tmx#35#0.0:name": "(Continuar)", + "library_of_varsil_1.tmx#35#0:text": "Una colección de dibujos infantiles llena esta estantería, aunque a diferencia de la mayoría de colecciones similares, todos parecen representar temas arcanos.", + "library_of_varsil_1.tmx#36#0.0:name": "(Continuar)", + "library_of_varsil_1.tmx#36#0:text": "Aquí encuentras un plano de la propia biblioteca. Por desgracia, no parece haber ninguna lista de pasadizos secretos que aprovechar.", + "library_of_varsil_2.tmx#26#0.0.0:name": "(Continuar)", + "library_of_varsil_2.tmx#26#0.0:name": "(Continuar)", + "library_of_varsil_2.tmx#26#0.0:text": "Este ejemplar viene precedido, sin embargo, por notas de un escriba según las cuales todas las figuras históricas mencionadas en el texto y sus interacciones parecen estar representadas con extrema precisión, lo que pone en duda el origen ficticio del relato de Kuthuman.", + "library_of_varsil_2.tmx#26#0:text": "'La Condena del Bufón Loco' se presenta como el relato ficticio de un hombre llamado Kuthuman, cuyos relatos meticulosamente detallados sobre mundos fantásticos elevaron su posición de mendigo a bufón real, antes de ser arrastrado por demonios en pleno tribunal del rey, sin que ninguna otra alma resultara herida.", + "library_of_varsil_2.tmx#27#0.0:name": "(Continuar)", + "library_of_varsil_2.tmx#27#0:text": "Esta estantería es simplemente un revoltijo de páginas que parecen haberse desprendido de varios libros de toda la biblioteca. No ves nada de especial importancia entre ellas.", + "library_of_varsil_2.tmx#28#0.0:name": "(Continuar)", + "library_of_varsil_2.tmx#28#0:text": "'Meteorología Mágica', 'El Poder Destructivo de los Cielos', todos estos libros parecen centrarse en cosas que caen del cielo.", + "library_of_varsil_2.tmx#29#0.0:name": "(Continuar)", + "library_of_varsil_2.tmx#29#0:text": "'Lidiando con los Discapacitados Mágicos' describe las dificultades en las comunidades de Shandalar para permitir que las personas sin talento mágico se sientan miembros plenamente participantes de la sociedad.", + "library_of_varsil_2.tmx#30#0.0:name": "(Continuar)", + "library_of_varsil_2.tmx#30#0:text": "Una pila de libros infantiles yace en esta estantería. El de más arriba cuenta la historia de una Brigada de Globos Goblin cuyos miembros no tienen nombre y se llaman entre sí 'Más Tonto que X', donde X equivale al número de compañeros que se acuerda que son más listos ese día.", + "library_of_varsil_2.tmx#31#0.0:name": "(Continuar)", + "library_of_varsil_2.tmx#31#0:text": "Informes genealógicos y recopilaciones de datos censales cubren esta estantería. Comprensiblemente, están bastante polvorientos, lo que hace aún más evidente que varios libros han sido retirados recientemente.", + "library_of_varsil_2.tmx#32#0.0:name": "(Continuar)", + "library_of_varsil_2.tmx#32#0:text": "Encuentras un libro sobre la biología de los Elfos. Una página está marcada con la esquina doblada y describe un tipo de Elfo que no has visto en ningún lugar de Shandalar.", + "library_of_varsil_2.tmx#34#0.0:name": "(Continuar)", + "library_of_varsil_2.tmx#34#0:text": "'Relato Histórico de una Incursión Costera', esta es una colección de entrevistas realizadas a los supervivientes de un pueblo pesquero costero que fue saqueado por criaturas desconocidas que simplemente salieron del mar caminando.", + "library_of_varsil_2.tmx#35#0.0:name": "(Continuar)", + "library_of_varsil_2.tmx#35#0:text": "Una colección de escritos sobre los Fragmentos de Maná: desde teorías sobre cómo absorben maná mientras están enterrados bajo tierra, hasta dibujos fantasiosos como un molino de grano funcionando junto a un cauce seco, alimentado por fragmentos en lugar de agua.", + "library_of_varsil_2.tmx#36#0.0:name": "(Continuar)", + "library_of_varsil_2.tmx#36#0:text": "'El Precio de la Magia' no se centra en los efectos directos de los hechizos, sino en el coste y las consecuencias de lanzarlos. No es un libro muy popular.", + "library_of_varsil_2.tmx#38#0.0:name": "(Continuar)", + "library_of_varsil_2.tmx#38#0:text": "'El Lince Perdido' parece ser una comparación biológica y de comportamiento entre felinos domesticados y Leoninos. El texto plantea varias teorías, concluyendo que uno de los dos fue el resultado de que la investigación de un antiguo mago se aplicara mal.", + "library_of_varsil_3.tmx#26#0.0:name": "(Continuar)", + "library_of_varsil_3.tmx#26#0:text": "'Las Ciudades Más Inflamables de Shandalar'. Bueno, este suena a lectura ligera...", + "library_of_varsil_3.tmx#27#0.0:name": "(Continuar)", + "library_of_varsil_3.tmx#27#0:text": "Aquí encuentras una colección de biografías de magos de los que nunca has oído hablar. Ninguno de ellos parece haber logrado nada significativo.", + "library_of_varsil_3.tmx#28#0.0:name": "(Continuar)", + "library_of_varsil_3.tmx#28#0:text": "Diarios de soldados, todos de una época similar pero de varios ejércitos distintos, se encuentran aquí. Entre todos ellos, parece que se podría reconstruir un relato completo de las batallas comunes.", + "library_of_varsil_3.tmx#30#0.0:name": "(Continuar)", + "library_of_varsil_3.tmx#30#0:text": "'El Arte del Contrahechizo Sutil' es una lectura muy útil si tienes tiempo para ella.", + "library_of_varsil_3.tmx#31#0.0:name": "(Continuar)", + "library_of_varsil_3.tmx#31#0:text": "Aquí se recopilan registros de manifiestos de caravanas. Todo el contenido parece mundano, pero alguien ha rodeado varios artículos y garabateado notas con una letra tan desordenada que resulta prácticamente ilegible.", + "library_of_varsil_3.tmx#32#0.0.0:name": "(Dejar el informe)", + "library_of_varsil_3.tmx#32#0.0.1.0:name": "(Continuar)", + "library_of_varsil_3.tmx#32#0.0.1:name": "¿Quizás siga ahí? Vamos a anotar la ubicación.", + "library_of_varsil_3.tmx#32#0.0.1:text": "Marcas la ubicación del Panal en tu propio mapa por si decides investigarlo más adelante.", + "library_of_varsil_3.tmx#32#0.0:name": "(Continuar)", + "library_of_varsil_3.tmx#32#0.0:text": "El informe, relativamente reciente para los estándares de esta biblioteca, describe una colmena de Astillas que empequeñece a las ciudades más grandes de Shandalar. Incluye un mapa detallado de la ubicación.", + "library_of_varsil_3.tmx#32#0:text": "'Informe Sobre una Amenaza Urgente para Todas las Naciones Civilizadas' es un título bastante rimbombante para un informe de reconocimiento, pero eso es lo que encuentras aquí.", + "library_of_varsil_3.tmx#34#0.0:name": "(Continuar)", + "library_of_varsil_3.tmx#34#0:text": "Aquí encuentras una colección de biografías de magos de los que nunca has oído hablar. Ninguno de ellos parece haber logrado nada significativo.", + "library_of_varsil_3.tmx#35#0.0:name": "(Continuar)", + "library_of_varsil_3.tmx#35#0:text": "Aquí encuentras una colección de planos copiados de varios inventos goblin. El transcriptor añadió notas junto a cada uno, calificándolos en una escala que va de 'Seguro que explota' a 'No funcionará lo suficiente como para explotar'.", + "library_of_varsil_3.tmx#36#0.0:name": "(Continuar)", + "library_of_varsil_3.tmx#36#0:text": "'Cómo Entrenar a tu Tejón', de Mangaverde... ¿Qué es más ridículo, el tema o el seudónimo?", + "library_of_varsil_3.tmx#37#0.0:name": "(Continuar)", + "library_of_varsil_3.tmx#37#0:text": "'Calor Párdico' es, entre todas las cosas que se pueden encontrar aquí, una novela romántica. Cuenta la historia de una llama naciente entre magos condenados por el destino.", + "library_of_varsil_3.tmx#50#0.0:name": "(Continuar)", + "library_of_varsil_3.tmx#50#0:text": "'Formas Comunes de Imitadores' sería en realidad un libro bastante útil de leer, si no se esforzara tanto en comerte.", + "library_of_varsil_3.tmx#51#0.0.0.0:name": "(Continuar)", + "library_of_varsil_3.tmx#51#0.0.0:name": "Coger los documentos", + "library_of_varsil_3.tmx#51#0.0.0:text": "Probablemente haya más cosas que encontrar aquí, pero ya tienes lo que pidió sir Donovan y podrías marcharte por donde entraste.", + "library_of_varsil_3.tmx#51#0.0.1.0:name": "(Continuar)", + "library_of_varsil_3.tmx#51#0.0.1:name": "Coger los documentos", + "library_of_varsil_3.tmx#51#0.0.1:text": "Con la enorme máquina de arriba ya derrotada, tu trabajo aquí ha terminado.", + "library_of_varsil_3.tmx#51#0.0:name": "(Continuar)", + "library_of_varsil_3.tmx#51#0.0:text": "Esto parece ser la investigación que buscabas.", + "library_of_varsil_3.tmx#51#0:text": "\"...s35 mantuvo su insistencia en no haber sido invocado anteriormente. Sin embargo, al iniciar la etapa siete, s35 mostró signos reducidos de malestar y pareció anticipar, al menos de forma subconsciente, el peligro que se aproximaba en la etapa doce, momento en el que invocamos a s36 para...\"", + "library_of_varsil_4.tmx#27#0.0:name": "(Continuar)", + "library_of_varsil_4.tmx#27#0:text": "Con esta máquina monstruosa fuera de servicio, derrotar a sus compañeros (relativamente) más pequeños podría dejarse a aventureros de menor nivel, pero aún no has encontrado los documentos que quería sir Donovan. Deben de estar en algún lugar de abajo.", + "library_of_varsil_4.tmx#27#1.0:name": "(Continuar)", + "library_of_varsil_4.tmx#27#1:text": "Con esta máquina monstruosa fuera de servicio, derrotar a sus compañeros (relativamente) más pequeños podría dejarse a aventureros de menor nivel. Ya has encontrado los documentos que quería sir Donovan y puedes informarle ahora o volver abajo a explorar más primero.", + "library_of_varsil_4.tmx#28#0.0:name": "(Continuar)", + "library_of_varsil_4.tmx#28#0:text": "Con esta máquina monstruosa fuera de servicio, derrotar a sus compañeros (relativamente) más pequeños podría dejarse a aventureros de menor nivel, pero aún no has encontrado los documentos que quería sir Donovan. Deben de estar en algún lugar de abajo.", + "library_of_varsil_4.tmx#28#1.0:name": "(Continuar)", + "library_of_varsil_4.tmx#28#1:text": "Con esta máquina monstruosa fuera de servicio, derrotar a sus compañeros (relativamente) más pequeños podría dejarse a aventureros de menor nivel. Ya has encontrado los documentos que quería sir Donovan y puedes informarle ahora o volver abajo a explorar más primero.", + "library_of_varsil_4.tmx#29#0.0:name": "(Continuar)", + "library_of_varsil_4.tmx#29#0:text": "Con esta máquina monstruosa fuera de servicio, derrotar a sus compañeros (relativamente) más pequeños podría dejarse a aventureros de menor nivel, pero aún no has encontrado los documentos que quería sir Donovan. Deben de estar en algún lugar de abajo.", + "library_of_varsil_4.tmx#29#1.0:name": "(Continuar)", + "library_of_varsil_4.tmx#29#1:text": "Con esta máquina monstruosa fuera de servicio, derrotar a sus compañeros (relativamente) más pequeños podría dejarse a aventureros de menor nivel. Ya has encontrado los documentos que quería sir Donovan y puedes informarle ahora o volver abajo a explorar más primero.", + "library_of_varsil_4.tmx#33#0.0:name": "(Continuar)", + "library_of_varsil_4.tmx#33#0:text": "Si hay alguna información que rescatar de las páginas hechas jirones amontonadas por este suelo, dependerá de los eruditos que puedan recordar algo de lo que fueron. Pero mientras te acercas, el portal se abre, ofreciendo una ruta rápida de vuelta a la entrada.", + "library_of_varsil_4.tmx#35#0.0.0.0:name": "(Continuar)", + "library_of_varsil_4.tmx#35#0.0.0:name": "(Continuar)", + "library_of_varsil_4.tmx#35#0.0.0:text": "(Nota: Este encuentro es difícil y opcional)", + "library_of_varsil_4.tmx#35#0.0:name": "(Continuar)", + "library_of_varsil_4.tmx#35#0.0:text": "Detrás de la máquina ves los restos de muchos libros arrancados de las estanterías de abajo, ahora hechos pedazos.", + "library_of_varsil_4.tmx#35#0:text": "Ante ti se alza uno de los constructos más grandes que has visto jamás. A diferencia de los gólems de abajo, su forma parece menos inspirada en otros humanoides y más una silueta única y propia.", + "magetower_14_horrors.tmx#102#0.0:name": "Continuar", + "magetower_14_horrors.tmx#102#0:text": "Una verja bloquea el paso. Parece que se abre desde otro lugar.", + "magetower_8_illusion.tmx#106#0.0:name": "(Marcharse)", + "magetower_8_illusion.tmx#106#0.1.0:name": "Continuar", + "magetower_8_illusion.tmx#106#0.1:name": "Abrir la verja con la llave del Ilusionista", + "magetower_8_illusion.tmx#106#0.1:text": "La puerta se abre y puedes seguir explorando la torre.", + "magetower_8_illusion.tmx#106#0:text": "Esta puerta está cerrada con llave. A juzgar por los arañazos y marcas en el suelo, sin embargo, parece que se abre con frecuencia, así que la llave probablemente esté cerca.", + "maze_2.tmx#57#0:text": "Tu oponente lanza un grito agudo mientras vuelve a su forma de piedra, ya no equilibrado sobre un pedestal. La estatua cae y se hace añicos, y muchos de los fragmentos caen al estanque. Casi jurarías poder oír el grito continuar débilmente bajo la superficie del agua.", + "maze_2.tmx#58#0.0:name": "Tienes un mal presentimiento sobre esto.", + "maze_2.tmx#58#0:text": "De repente oyes extraños sonidos a tu espalda. Una voz extraña grita con voz ronca: ¡INTRUSO! ¡Este es tu último error!", + "phyrexian_b1.tmx#71#0.0:name": "Accionar la palanca", + "phyrexian_b1.tmx#71#0.0:text": "Oyes el sonido de metal deslizándose contra metal a tu espalda.", + "phyrexian_b1.tmx#71#0.1:name": "Marcharse", + "phyrexian_b1.tmx#71#0:text": "Una palanca grande y llamativa sobresale de la pared al fondo del laboratorio.", + "phyrexian_b1.tmx#73#0.0:name": "Continuar", + "phyrexian_b1.tmx#73#0:text": "Esta verja está cerrada con llave. Debe de haber una forma de abrirla desde otro lugar de aquí.", + "plains_capital.tmx#64#0.0:name": "Marcharse", + "plains_capital.tmx#64#0:text": "Hola. No hay nada que puedas hacer aquí...\nPor ahora.", + "plains_town.tmx#54#0.0:name": "De acuerdo...", + "plains_town.tmx#54#0:text": "Soy una gran verja. Saludos.", + "red_castle.tmx#55#0.0.0:name": "(Continuar)", + "red_castle.tmx#55#0.0:name": "¡Lathliss, he hecho lo que me pediste! ¡Es hora de acabar con esto!", + "red_castle.tmx#55#0.0:text": "Con una ráfaga de llamas rojas, la puerta se consume dejando solo cenizas a tu paso. Ya puedes pasar libremente.", + "red_castle.tmx#55#0.1.0:name": "(Continuar)", + "red_castle.tmx#55#0.1:name": "¡Lathliss, he hecho lo que me pediste! ¡Es hora de acabar con esto!", + "red_castle.tmx#55#0.1:text": "Con una ráfaga de llamas rojas, la puerta se consume dejando solo cenizas a tu paso. Ya puedes pasar libremente.", + "red_castle.tmx#55#0.2.0:name": "(Continuar)", + "red_castle.tmx#55#0.2:name": "Llamas a la puerta.", + "red_castle.tmx#55#0.2:text": "NO ERES DIGNO, ¡LÁRGATE!", + "red_castle.tmx#55#0:text": "Llegas ante una verja.", + "red_castle.tmx#72#0.0.0.0:name": "Demostraré mi valía, solo asegúrate de abrir la verja cuando derrote a tus retadores.", + "red_castle.tmx#72#0.0.0.0:text": "Marcharse", + "red_castle.tmx#72#0.0.0:name": "¿Qué necesito hacer para pasar por esta verja?", + "red_castle.tmx#72#0.0.0:text": "Debes demostrar tu fuerza derrotando al menos a cuatro de los cinco enemigos que acechan en esta mazmorra para ser digno de una audiencia con mi ilustre ama.\n Afila tu espada, prepara tus hechizos y reúne valor, pues los desafíos que te esperan pondrán a prueba el temple incluso del guerrero más curtido.", + "red_castle.tmx#72#0.0:name": "¿Ah, sí? Supongo que no te importará abrir esa verja delante de mí, ¿verdad?", + "red_castle.tmx#72#0.0:text": "Me temo que no tengo permitido hacer eso, no soy más que un dragón corriente, un mero sirviente de la poderosa Lathliss, reina de los dragones.", + "red_castle.tmx#72#0:text": "Bienvenido, {var=player_name}. Lathliss ha estado esperando ansiosamente este momento.", + "red_castle.tmx#72#1.0:name": "(Continuar)", + "red_castle.tmx#72#1:text": "Los retadores siguen con vida, no podrás pasar de esta verja", + "red_castle.tmx#72#2.0:name": "(Continuar)", + "red_castle.tmx#72#2:text": "Estoy impresionada, eres bienvenido para reunirte con mi ama en el piso de arriba, aunque no puedo garantizar que sobrevivas a ese encuentro.", + "red_castle_f1.tmx#52#0.0:name": "(Continuar)", + "red_castle_f1.tmx#52#0:text": "Al asestar tu golpe final contra Lathliss, sientes un pulso de maná considerable.", + "red_castle_f1.tmx#52#1.0:name": "(Continuar)", + "red_castle_f1.tmx#52#1:text": "Al asestar tu golpe final contra Lathliss, sientes otro pulso de maná.", + "red_castle_f1.tmx#56#0.0:name": "(Continuar)", + "red_castle_f1.tmx#56#0:text": "Al asestar tu golpe final contra Lathliss, sientes un pulso de maná considerable.", + "red_castle_f1.tmx#56#1.0:name": "(Continuar)", + "red_castle_f1.tmx#56#1:text": "Al asestar tu golpe final contra Lathliss, sientes otro pulso de maná.", + "skep_outer.tmx#100#0.0:name": "Marcharse", + "skep_outer.tmx#100#0:text": "¡Buen día, aventurero!", + "skep_outer.tmx#101#0.0.0.0.0.0:name": "Fin", + "skep_outer.tmx#101#0.0.0.0.0:name": "Puedo encargarme de la reina, pero ¿qué gano yo con esto?", + "skep_outer.tmx#101#0.0.0.0.0:text": "Aparte del agradecimiento del pueblo de Shandalar por lidiar con estas criaturas horribles, te daré una pieza de armadura nueva y elegante que te ayudará en tus próximas aventuras. Encárgate de la reina y vuelve a verme para recibir tu recompensa. Haré que mis hombres abran la verja para dejarte entrar en la colmena. ¡Buena suerte, aventurero!", + "skep_outer.tmx#101#0.0.0.0:name": "¿De alguna forma podría servir de ayuda contra las Astillas?", + "skep_outer.tmx#101#0.0.0.0:text": "Las Astillas forman una mente colmena, lo que significa que si su reina fuera neutralizada de alguna forma, las Astillas ya no serían un problema. Por desgracia, no tenemos un voluntario valiente dispuesto a entrar en la colmena y encargarse de la reina...", + "skep_outer.tmx#101#0.0.0:name": "¿Así que pretendéis simplemente asaltar la colmena y esperar lo mejor?", + "skep_outer.tmx#101#0.0.0:text": "Bueno, lo intentamos antes, pero debido a la enorme cantidad de Astillas no hemos avanzado mucho más allá de amurallar la colmena para evitar más ataques contra los aldeanos de los alrededores.", + "skep_outer.tmx#101#0.0:name": "¿Qué está pasando por aquí?", + "skep_outer.tmx#101#0.0:text": "Por razones desconocidas, las Astillas del Panal se han vuelto hostiles y han estado lanzando partidas de saqueo contra varios pueblos de Shandalar. El general Jarkhald ha reunido una gran hueste para lidiar con la situación.", + "skep_outer.tmx#101#0:text": "Buen día, aventurero. Como puedes ver, tenemos una buena situación entre manos.", + "skep_outer.tmx#101#1.0:name": "(Continuar)", + "skep_outer.tmx#101#1:text": "Esas cosas siguen merodeando más allá de las murallas, deduzco que aún no te has ocupado del asunto, ¿verdad?", + "skep_outer.tmx#101#2.0:name": "(Continuar)", + "skep_outer.tmx#101#2:name": "Las Astillas ya no serán un problema.", + "skep_outer.tmx#101#2:text": "¡No pensé que realmente lo lograrías! Tal como prometí, te daré el objeto del que hablé antes. Gracias, aventurero. ¡MUCHACHOS, escuchad! ¡Nuestro trabajo aquí ha terminado, el líder de esas cosas está muerto! Salgamos de este sitio espeluznante. ¡La cerveza corre de mi cuenta!", + "skep_outer.tmx#150#0.0:name": "Marcharse", + "skep_outer.tmx#150#0:text": "¡Buen día, aventurero!", + "skep_outer.tmx#151#0.0:name": "Marcharse", + "skep_outer.tmx#151#0:text": "¡Buen día, aventurero!", + "skep_outer.tmx#238#0.0:name": "Marcharse", + "skep_outer.tmx#238#0:text": "Esas cosas no pasarán de esta verja. Puedes contar con ello, aventurero.", + "skep_outer.tmx#239#0.0:name": "Marcharse", + "skep_outer.tmx#239#0:text": "¡Buen día, aventurero!", + "skep_outer.tmx#240#0.0:name": "Marcharse", + "skep_outer.tmx#240#0:text": "¡Buen día, aventurero!", + "skep_outer.tmx#241#0.0:name": "Marcharse", + "skep_outer.tmx#241#0:text": "¡Buen día, aventurero!", + "skep_outer.tmx#249#0.0:name": "Marcharse", + "skep_outer.tmx#249#0.1.0:name": "Continuar", + "skep_outer.tmx#249#0.1:name": "Abrir con la Llave de la Verja Exterior", + "skep_outer.tmx#249#0.1:text": "La verja se ha abierto.", + "skep_outer.tmx#249#0:text": "Esta verja está cerrada con llave.", + "skep_outer.tmx#250#0.0:name": "Marcharse", + "skep_outer.tmx#250#0:text": "El caballo te mira con desinterés.", + "skep_outer.tmx#256#0.0:name": "Marcharse", + "skep_outer.tmx#256#0.1:name": "El campo rojo se disuelve ante tus ojos. Puedes seguir adelante.", + "skep_outer.tmx#256#0:text": "Un campo rojo translúcido y reluciente bloquea tu camino. Extraños sonidos resuenan en la sala a tus espaldas.", + "skep_outer.tmx#266#0.0:name": "Marcharse", + "skep_outer.tmx#266#0:text": "Muchas bocas que alimentar, poco tiempo para charlar.", + "skep_outer.tmx#266#1.0:name": "Continuar", + "skep_outer.tmx#266#1:text": "¿Adónde ha ido toda esa gente elegante? ¿Alguien ha dicho cerveza gratis?", + "skep_outer.tmx#57#0.0.0.0.0.0:name": "Considéralo hecho.", + "skep_outer.tmx#57#0.0.0.0.0.0:text": "Una vez que te hayas encargado de la reina, vuelve conmigo. Cuando sea reinstaurada como reina colmena de las Astillas de Shandalar, te prometo que las Astillas del Panal nunca volverán a ser un peligro para el pueblo de Shandalar. Además, toma esta Piedra Colmena, permitirá que tus criaturas se conviertan en Astillas, causando confusión en la Reina de las Astillas.", + "skep_outer.tmx#57#0.0.0.0.0:name": "¿Dónde está ubicada? Yo me encargaré de ello.", + "skep_outer.tmx#57#0.0.0.0.0:text": "Aprecio tu entusiasmo, sin embargo la reina no es un oponente al que enfrentarse a la ligera. En primer lugar, para acceder a su guarida necesitas derrotar a tres de sus lugartenientes, repartidos por el Panal. Solo entonces desaparecerá el escudo mágico y podrás entrar en su guarida.", + "skep_outer.tmx#57#0.0.0.0:name": "Supongo que la Reina de las Astillas es la razón por la que las Astillas del Panal están tan agresivas, ¿verdad?", + "skep_outer.tmx#57#0.0.0.0:text": "Exacto, ha estado reuniendo una poderosa hueste de Astillas de todo el multiverso. Pronto tendrá un ejército lo bastante grande para conquistar todo Shandalar.", + "skep_outer.tmx#57#0.0.0:name": "¿Usurpada? ¿De qué hablas?", + "skep_outer.tmx#57#0.0.0:text": "Durante milenios he mantenido a las Astillas del Panal sanas y en paz, controlándolas para evitar que atacaran a los forasteros. Todo cambió cuando la Reina de las Astillas atacó y tomó el control de esta colmena. Como puedes ver, no fui capaz de derrotarla.", + "skep_outer.tmx#57#0.0:name": "¿Qué eres?", + "skep_outer.tmx#57#0.0:text": "Soy la reina de las Astillas del Panal. Al menos lo era, hasta que usurparon mi posición.", + "skep_outer.tmx#57#0:text": "La Astilla Herida te observa con interés", + "skep_outer.tmx#57#1.0:name": "(Continuar)", + "skep_outer.tmx#57#1:text": "Débil... estoy. Derrota a la Reina de las Astillas... antes de que pierda mis últimas fuerzas.", + "skep_outer.tmx#57#2.0:name": "(Continuar)", + "skep_outer.tmx#57#2:name": "¡La Reina de las Astillas ha sido derrotada!", + "skep_outer.tmx#57#2:text": "Mi... mi gratitud hacia ti, forastero. Siento que mis fuerzas van volviendo poco a poco. Tal como prometí, retomaré el control de las Astillas como su reina. El pueblo de Shandalar ya no debería temer a las Astillas del Panal. Aunque ten cuidado, aventurero, mis hijos seguirán defendiéndose de cualquier intruso que entre en el Panal. ¡Adiós, aventurero!", + "skep_outer.tmx#73#0.0:name": "Marcharse", + "skep_outer.tmx#73#0:text": "Muchas bocas que alimentar, poco tiempo para charlar.", + "skep_outer.tmx#87#0.0:name": "Marcharse", + "skep_outer.tmx#87#0:text": "La inscripción dice: Forastero, di a nuestros compatriotas que aquí yacemos, fieles hasta el final a nuestra lucha contra la amenaza de las Astillas.", + "skep_outer.tmx#98#0.0:name": "Marcharse", + "skep_outer.tmx#98#0:text": "¡Buen día, aventurero!", + "skep_outer.tmx#99#0.0:name": "Marcharse", + "skep_outer.tmx#99#0:text": "¡Buen día, aventurero!", + "slime_hive.tmx#137#0.0:name": "Marcharse", + "slime_hive.tmx#137#0:text": "La inscripción dice: El sistema de alcantarillado de Shandalar está en mantenimiento. Un poco de baba verde ha contaminado la red de agua. Lo tenemos totalmente bajo control y el alcantarillado volverá a funcionar enseguida.", + "snowabbey_1.tmx#84#0.0:name": "Marcharse", + "snowabbey_1.tmx#84#0:text": "La inscripción dice: Bienvenido a la villa pesquera de Haran", + "spawn.tmx#69#0.0.0.0.0.0.0.0.0.0:name": "(Marcharse)", + "spawn.tmx#69#0.0.0.0.0.0.0.0.0:name": "Gracias", + "spawn.tmx#69#0.0.0.0.0.0.0.0.0:text": "Ahora reabriré el portal por el que llegaste, pero no puede devolverte al lugar del que vienes. Al otro lado encontrarás los páramos de Shandalar, que yo, y ahora tú también, llamamos hogar.", + "spawn.tmx#69#0.0.0.0.0.0.0.0:name": "¿Dónde son estos concursos?", + "spawn.tmx#69#0.0.0.0.0.0.0.0:text": "Muestra la moneda a los posaderos. Si hay un grupo en el pueblo, el posadero te dirigirá hacia ellos.", + "spawn.tmx#69#0.0.0.0.0.0.0:name": "¿Qué son entonces? ¿Para qué sirven?", + "spawn.tmx#69#0.0.0.0.0.0.0:text": "Son Monedas de Desafío. Los lanzadores de hechizos de Shandalar suelen reunirse para celebrar pruebas de habilidad. Estas monedas te darán acceso a esos concursos, y los premios disponibles pueden ayudarte en tu viaje.", + "spawn.tmx#69#0.0.0.0.0.0:name": "(Continuar)", + "spawn.tmx#69#0.0.0.0.0.0:text": "Tengo algo más para ti, {var=player_name}. Toma estas monedas, pero no las gastes con mercaderes.", + "spawn.tmx#69#0.0.0.0.0.1.0:name": "(Marcharse)", + "spawn.tmx#69#0.0.0.0.0.1:name": "Gracias.", + "spawn.tmx#69#0.0.0.0.0.1:text": "Ahora reabriré el portal por el que llegaste, pero no puede devolverte al lugar del que vienes. Al otro lado encontrarás los páramos de Shandalar, que yo, y ahora tú también, llamamos hogar.", + "spawn.tmx#69#0.0.0.0.0:name": "(Continuar)", + "spawn.tmx#69#0.0.0.0.0:text": "Toma esta runa. Puedes usarla en cualquier momento para volver aquí. Ten cuidado, caminante de planos.", + "spawn.tmx#69#0.0.0.0:name": "(Continuar)", + "spawn.tmx#69#0.0.0.0:text": "Encuentra a los caminantes de planos atrapados aquí. Guíalos hasta mí, te ayudarán en tu viaje.", + "spawn.tmx#69#0.0.0:name": "(Continuar)", + "spawn.tmx#69#0.0.0:text": "Como tú, algunos caminantes de planos han sido aprisionados aquí por los guardianes de los castillos. Debes derrotarlos en combate para liberarnos de este plano. Usa tus poderes mágicos para desafiarlos.", + "spawn.tmx#69#0.0:name": "¿Por qué estoy aquí?", + "spawn.tmx#69#0.0:text": "Esto... es Shandalar. Un plano donde el maná es tan abundante y usado por todos los seres conscientes que incluso la gente común lanza hechizos a diario.", + "spawn.tmx#69#0.1:name": "Adiós.", + "spawn.tmx#69#0:text": "Hola, caminante de planos {var=player_name}.", + "spawn.tmx#69#1.0:name": "\"Adiós.\"", + "spawn.tmx#69#1:text": "\"¡{var=player_name}! ¡Siento que el hechizo de los Guardianes se debilita! Derrótalos a todos y quizá aún podamos salvarnos.\"", + "spawn.tmx#69#2.0.0.0.0.0.0:name": "(Capítulo 1 completado)", + "spawn.tmx#69#2.0.0.0.0.0:name": "(Continuar)", + "spawn.tmx#69#2.0.0.0.0.0:text": "[RED}Nota del desarrollador:[] Vuelve a hablar con este PNJ después de actualizar Forge (o atento a los anuncios en nuestro Discord) para continuar la historia cuando esté lista. ¡Y gracias por venir con nosotros en esta Aventura!", + "spawn.tmx#69#2.0.0.0.0:name": "(Continuar)", + "spawn.tmx#69#2.0.0.0.0:text": "[RED]Nota del desarrollador:[] Has llegado al final del contenido de historia disponible por ahora, pero aún queda más por descubrir en Shandalar. Se han añadido varias mazmorras difíciles a tu mapa del mundo, y tu colección de cartas puede seguir creciendo.", + "spawn.tmx#69#2.0.0.0:name": "(Continuar)", + "spawn.tmx#69#2.0.0.0:text": "\"El hechizo que creó su presencia combinada provocó sutiles trucos de la mente que nos hicieron pasar por alto partes de nuestro mundo. Incluidas las prisiones que SÍ contienen a los Caminantes de Planos. Creo que ahora podrás encontrarlas...\"", + "spawn.tmx#69#2.0.0:name": "\"¿Efectos como cuáles?\"", + "spawn.tmx#69#2.0.0:text": "\"Probablemente viste una versión muy concentrada de los efectos de su presencia dentro de sus castillos. Pero también velaron ciertas zonas de nuestro mundo, haciendo que quedaran... 'ocultas', a falta de un término mejor.\"", + "spawn.tmx#69#2.0:name": "\"He derrotado a los ocupantes de los cinco castillos, pero no encontré ningún cautivo.\"", + "spawn.tmx#69#2.0:text": "\"Supongo que debería haberlo explicado mejor. Los guardianes que has derrotado no eran captores, no directamente. Pero su mera presencia tenía efectos que alteraban el mundo.\"", + "spawn.tmx#69#2:text": "\"Me alegra volver a verte, {var=player_name}. Deduzco que has tenido cierto éxito en tu búsqueda.\"", + "spawn.tmx#69#3.0:name": "Quiero cambiar las cinco llaves de colores por un mox de mi elección y la llave de la sala de Emrakul", + "spawn.tmx#69#3:text": "Hola de nuevo", + "steppe.tmx#237#0.0.0:name": "(Continuar)", + "steppe.tmx#237#0.0:name": "¡Lathliss! ¡Es hora de acabar con esto!", + "steppe.tmx#237#0.0:text": "Con una ráfaga de llamas rojas, la puerta se consume dejando solo cenizas a tu paso. Ya puedes pasar libremente.", + "steppe.tmx#237#0.1:name": "Llamas a la puerta", + "steppe.tmx#237#0.1:text": "NO ERES DIGNO, ¡LÁRGATE!", + "steppe.tmx#237#0:text": "Entras por la verja.", + "steppe.tmx#240#0.0:name": "Alejarse", + "steppe.tmx#240#0.1:name": "Atacar a la bruja", + "steppe.tmx#240#0.2.0:name": "Alejarse", + "steppe.tmx#240#0.2.1:name": "Atacar a la bruja", + "steppe.tmx#240#0.2:name": "Acercarse despacio", + "steppe.tmx#240#0.2:text": "\"¡Aléjate de aquí! ¡No los tendrás!\" Retrocede un paso, dejando caer parte de las hierbas y hongos que parecía estar recogiendo.", + "steppe.tmx#240#0:text": "Una vieja bruja te observa con recelo, pero no levanta su bastón para atacar.", + "templeofchandra.tmx#10#0.0:name": "Marcharse", + "templeofchandra.tmx#10#0:text": "Una gran palanca está empotrada en la pared. O lo estaba. Parece haberse fundido, lo que habría requerido un calor enorme.", + "templeofchandra.tmx#11#0.0:name": "Ahora, a encontrar la forma de encenderlo...", + "templeofchandra.tmx#11#0:text": "Esta verja parece estar conectada a la maquinaria al oeste.", + "templeofchandra.tmx#16#0.0:name": "Marcharse", + "templeofchandra.tmx#16#0:text": "Una gran palanca está empotrada en la pared. O lo estaba. Parece haberse fundido, lo que habría requerido un calor enorme.", + "templeofchandra.tmx#17#0.0:name": "¡Es hora de encontrarlas!", + "templeofchandra.tmx#17#0:text": "Esta verja parece estar bloqueada por algún mecanismo, pero no ves ningún control por aquí.", + "templeofchandra.tmx#18#0.0:name": "Es hora de encontrarlas. Otra vez...", + "templeofchandra.tmx#18#0:text": "Esta verja parece estar bloqueada por algún mecanismo, pero no ves ningún control por aquí.", + "templeofchandra.tmx#6#0.0:name": "Marcharse", + "templeofchandra.tmx#6#0:text": "Esta ominosa verja negra se alza entre tú y tu objetivo y/o tu perdición. Engranajes bien engrasados la mantienen cerrada.", + "tibalt_f0.tmx#193#0.0:name": "(Continuar)", + "tibalt_f0.tmx#193#0:text": "A medida que te acercas, las puertas del castillo se abren con un chirrido inquietante, revelando un patio en penumbra envuelto en un silencio perturbador. El suelo bajo tus pies se siente frío e inflexible, como si la propia tierra retrocediera ante la presencia del dominio de Tibalt. Gárgolas siniestras te observan desde los muros del castillo, sus formas grotescas pareciendo cobrar vida con la luz menguante.", + "tibalt_f1.tmx#136#0.0:name": "(Continuar)", + "tibalt_f1.tmx#136#0:text": "El Diablo lanza un grito agudo al caer al suelo. Su sangre se mezcla con la de sus víctimas, y ves cómo la barrera roja desaparece. El camino hacia arriba está abierto.", + "tibalt_f1.tmx#218#0.0:name": "Marcharse", + "tibalt_f1.tmx#218#0:text": "Un campo rojo translúcido y reluciente bloquea tu camino. Un mal ancestral acecha en estas criptas, impidiéndote entrar en la sala frente a ti...", + "tibalt_f2.tmx#119#0.0:name": "(Continuar)", + "tibalt_f2.tmx#119#0:text": "El Cíclope lanza un grito agudo al caer al suelo. Su sangre se mezcla con la de sus víctimas, y ves cómo la barrera roja desaparece. El camino hacia Tibalt está abierto.", + "tibalt_f2.tmx#200#0.0:name": "Marcharse", + "tibalt_f2.tmx#200#0:text": "Un campo rojo translúcido y reluciente bloquea tu camino. Un mal ancestral acecha en estas criptas, impidiéndote entrar en la sala frente a ti...", + "tibalt_f3.tmx#119#0.0:name": "(Continuar)", + "tibalt_f3.tmx#119#0:text": "El Torturador lanza un grito agudo al caer al suelo. Su sangre se mezcla con la de sus víctimas torturadas, y ves cómo la barrera roja desaparece. El camino hacia las cámaras de Tibalt está abierto.", + "tibalt_f3.tmx#201#0.0:name": "Marcharse", + "tibalt_f3.tmx#201#0:text": "Un campo rojo translúcido y reluciente bloquea tu camino. Un mal ancestral acecha en estas criptas, impidiéndote entrar en la sala frente a ti...", + "tibalt_f3.tmx#204#0.0:name": "Marcharse", + "tibalt_f3.tmx#204#0.1.0:name": "Continuar", + "tibalt_f3.tmx#204#0.1:name": "Abrir con la llave del Torturador", + "tibalt_f3.tmx#204#0.1:text": "La verja se ha abierto, aunque la llave se rompe al abrir la puerta.", + "tibalt_f3.tmx#204#0:text": "Esta puerta está cerrada con llave.", + "tibalt_f4.tmx#168#0.0:name": "Marcharse", + "tibalt_f4.tmx#168#0.1.0:name": "Continuar", + "tibalt_f4.tmx#168#0.1:name": "Abrir con la Llave de Tibalt", + "tibalt_f4.tmx#168#0.1:text": "La verja se ha abierto.", + "tibalt_f4.tmx#168#0:text": "Esta puerta está cerrada con llave.", + "tibalt_f4.tmx#176#0.0:name": "(Continuar)", + "tibalt_f4.tmx#176#0:text": "Una melodía baja e inquietante suena de fondo, procedente de fuentes invisibles. El sonido parece resonar desde las propias paredes, creando un ambiente perturbador que aumenta la sensación de fatalidad. Artefactos extraños y reliquias arcanas están esparcidos por toda la cámara, testimonio del dominio de Tibalt sobre la magia oscura.", + "town.tmx#187#0.0:name": "(Continuar)", + "town.tmx#187#0:text": "Marcando la calle como revisada", + "town.tmx#187#1.0:name": "(Continuar tu búsqueda)", + "town.tmx#187#1:text": "El alcalde no parece estar en la calle principal del pueblo.", + "town.tmx#187#2.0:name": "¡¡¡Perseguirlos!!!", + "town.tmx#187#2:text": "Tras registrar la mayor parte del pueblo, sigues sin encontrar al alcalde, pero al mirar de nuevo en esa dirección, ¡por fin lo ves al final de la calle!", + "town.tmx#188#0.0:name": "(Continuar)", + "town.tmx#188#0:text": "Marcando el callejón como revisado", + "town.tmx#188#1.0:name": "(Continuar tu búsqueda)", + "town.tmx#188#1:text": "El alcalde no parece estar en los callejones.", + "town.tmx#188#2.0:name": "¡¡¡Perseguirlos!!!", + "town.tmx#188#2:text": "Tras registrar la mayor parte del pueblo, sigues sin encontrar al alcalde, pero al mirar de nuevo en esa dirección, ¡por fin lo ves en plena calle!", + "town.tmx#192#0.0:name": "(Continuar)", + "town.tmx#192#0:text": "Marcando los muelles como revisados", + "town.tmx#192#1.0:name": "(Continuar tu búsqueda)", + "town.tmx#192#1:text": "El alcalde no parece estar en los muelles.", + "town.tmx#192#2.0:name": "¡¡¡Perseguirlos!!!", + "town.tmx#192#2:text": "Tras registrar la mayor parte del pueblo, sigues sin encontrar al alcalde, pero al mirar de nuevo en esa dirección, ¡por fin lo ves en plena calle!", + "town.tmx#193#0.0:name": "(Continuar)", + "town.tmx#193#0:text": "Marcando el almacén como revisado", + "town.tmx#193#1.0:name": "(Continuar tu búsqueda)", + "town.tmx#193#1:text": "El alcalde no parece estar en el almacén.", + "town.tmx#193#2.0:name": "¡¡¡Perseguirlos!!!", + "town.tmx#193#2:text": "Tras registrar la mayor parte del pueblo, sigues sin encontrar al alcalde, pero al mirar de nuevo en esa dirección, ¡por fin lo ves en plena calle!", + "town.tmx#197#0.0:name": "(Continuar)", + "town.tmx#197#0:text": "Marcando el templo como revisado", + "town.tmx#197#1.0:name": "(Continuar tu búsqueda)", + "town.tmx#197#1:text": "El alcalde no parece estar en el templo.", + "town.tmx#197#2.0:name": "¡¡¡Perseguirlos!!!", + "town.tmx#197#2:text": "Tras registrar la mayor parte del pueblo, sigues sin encontrar al alcalde, pero al mirar de nuevo en esa dirección, ¡por fin lo ves en plena calle!", + "town.tmx#200#0.0:name": "(Continuar)", + "town.tmx#200#0:text": "Marcando la calle como revisada", + "town.tmx#200#1.0:name": "(Continuar tu búsqueda)", + "town.tmx#200#1:text": "El alcalde no parece estar en la calle principal del pueblo.", + "town.tmx#200#2.0:name": "¡¡¡Perseguirlos!!!", + "town.tmx#200#2:text": "Tras registrar la mayor parte del pueblo, sigues sin encontrar al alcalde, pero al mirar de nuevo en esa dirección, ¡por fin lo ves al final de la calle!", + "town.tmx#209#0.0:name": "(Continuar)", + "town.tmx#209#0:text": "Marcando el templo como revisado", + "town.tmx#209#1.0:name": "(Continuar tu búsqueda)", + "town.tmx#209#1:text": "El alcalde no parece estar en el templo.", + "town.tmx#209#2.0:name": "¡¡¡Perseguirlos!!!", + "town.tmx#209#2:text": "Tras registrar la mayor parte del pueblo, sigues sin encontrar al alcalde, pero al mirar de nuevo en esa dirección, ¡por fin lo ves en plena calle!", + "town.tmx#210#0.0:name": "(Continuar)", + "town.tmx#210#0:text": "Marcando el templo como revisado", + "town.tmx#210#1.0:name": "(Continuar tu búsqueda)", + "town.tmx#210#1:text": "El alcalde no parece estar en el templo.", + "town.tmx#210#2.0:name": "¡¡¡Perseguirlos!!!", + "town.tmx#210#2:text": "Tras registrar la mayor parte del pueblo, sigues sin encontrar al alcalde, pero al mirar de nuevo en esa dirección, ¡por fin lo ves en plena calle!", + "town.tmx#211#0.0:name": "(Continuar)", + "town.tmx#211#0:text": "Marcando el almacén como revisado", + "town.tmx#211#1.0:name": "(Continuar tu búsqueda)", + "town.tmx#211#1:text": "El alcalde no parece estar en el almacén.", + "town.tmx#211#2.0:name": "¡¡¡Perseguirlos!!!", + "town.tmx#211#2:text": "Tras registrar la mayor parte del pueblo, sigues sin encontrar al alcalde, pero al mirar de nuevo en esa dirección, ¡por fin lo ves en plena calle!", + "town.tmx#212#0.0:name": "(Continuar)", + "town.tmx#212#0:text": "Marcando la calle como revisada", + "town.tmx#212#1.0:name": "(Continuar tu búsqueda)", + "town.tmx#212#1:text": "El alcalde no parece estar en la calle principal del pueblo.", + "town.tmx#212#2.0:name": "¡¡¡Perseguirlos!!!", + "town.tmx#212#2:text": "Tras registrar la mayor parte del pueblo, sigues sin encontrar al alcalde, pero al mirar de nuevo en esa dirección, ¡por fin lo ves al final de la calle!", + "town.tmx#213#0.0:name": "(Continuar)", + "town.tmx#213#0:text": "Marcando la cabaña como revisada", + "town.tmx#213#1.0:name": "(Continuar tu búsqueda)", + "town.tmx#213#1:text": "El alcalde no parece estar en la cabaña de la bruja.", + "town.tmx#213#2.0:name": "¡¡¡Perseguirlos!!!", + "town.tmx#213#2:text": "Tras registrar la mayor parte del pueblo, sigues sin encontrar al alcalde, pero al mirar de nuevo en esa dirección, ¡por fin lo ves en plena calle!", + "town.tmx#214#0.0:name": "(Continuar)", + "town.tmx#214#0:text": "Marcando la cabaña como revisada", + "town.tmx#214#1.0:name": "(Continuar tu búsqueda)", + "town.tmx#214#1:text": "El alcalde no parece estar en la cabaña de la bruja.", + "town.tmx#214#2.0:name": "¡¡¡Perseguirlos!!!", + "town.tmx#214#2:text": "Tras registrar la mayor parte del pueblo, sigues sin encontrar al alcalde, pero al mirar de nuevo en esa dirección, ¡por fin lo ves en plena calle!", + "town.tmx#215#0.0:name": "(Continuar)", + "town.tmx#215#0:text": "Marcando el callejón como revisado", + "town.tmx#215#1.0:name": "(Continuar tu búsqueda)", + "town.tmx#215#1:text": "El alcalde no parece estar en los callejones.", + "town.tmx#215#2.0:name": "¡¡¡Perseguirlos!!!", + "town.tmx#215#2:text": "Tras registrar la mayor parte del pueblo, sigues sin encontrar al alcalde, pero al mirar de nuevo en esa dirección, ¡por fin lo ves en plena calle!", + "town.tmx#216#0.0:name": "(Continuar)", + "town.tmx#216#0:text": "Marcando la calle como revisada", + "town.tmx#216#1.0:name": "(Continuar tu búsqueda)", + "town.tmx#216#1:text": "El alcalde no parece estar en la calle principal del pueblo.", + "town.tmx#216#2.0:name": "¡¡¡Perseguirlos!!!", + "town.tmx#216#2:text": "Tras registrar la mayor parte del pueblo, sigues sin encontrar al alcalde, pero al mirar de nuevo en esa dirección, ¡por fin lo ves al final de la calle!", + "town.tmx#217#0.0:name": "(Continuar)", + "town.tmx#217#0:text": "Marcando el templo como revisado", + "town.tmx#217#1.0:name": "(Continuar tu búsqueda)", + "town.tmx#217#1:text": "El alcalde no parece estar en el templo.", + "town.tmx#217#2.0:name": "¡¡¡Perseguirlos!!!", + "town.tmx#217#2:text": "Tras registrar la mayor parte del pueblo, sigues sin encontrar al alcalde, pero al mirar de nuevo en esa dirección, ¡por fin lo ves en plena calle!", + "town.tmx#218#0.0:name": "(Continuar)", + "town.tmx#218#0:text": "Marcando el callejón como revisado", + "town.tmx#218#1.0:name": "(Continuar tu búsqueda)", + "town.tmx#218#1:text": "El alcalde no parece estar en los callejones.", + "town.tmx#218#2.0:name": "¡¡¡Perseguirlos!!!", + "town.tmx#218#2:text": "Tras registrar la mayor parte del pueblo, sigues sin encontrar al alcalde, pero al mirar de nuevo en esa dirección, ¡por fin lo ves en plena calle!", + "town.tmx#219#0.0:name": "(Continuar)", + "town.tmx#219#0:text": "Marcando la calle como revisada", + "town.tmx#219#1.0:name": "(Continuar tu búsqueda)", + "town.tmx#219#1:text": "El alcalde no parece estar en la calle principal del pueblo.", + "town.tmx#219#2.0:name": "¡¡¡Perseguirlos!!!", + "town.tmx#219#2:text": "Tras registrar la mayor parte del pueblo, sigues sin encontrar al alcalde, pero al mirar de nuevo en esa dirección, ¡por fin lo ves al final de la calle!", + "town.tmx#220#0.0:name": "(Continuar)", + "town.tmx#220#0:text": "Marcando la taberna como revisada", + "town.tmx#220#1.0:name": "(Continuar tu búsqueda)", + "town.tmx#220#1:text": "El alcalde no parece estar en la taberna.", + "town.tmx#220#2.0:name": "¡¡¡Perseguirlos!!!", + "town.tmx#220#2:text": "Tras registrar la mayor parte del pueblo, sigues sin encontrar al alcalde, pero al mirar de nuevo en esa dirección, ¡por fin lo ves en plena calle!", + "town.tmx#221#0.0:name": "(Continuar)", + "town.tmx#221#0:text": "Marcando la calle como revisada", + "town.tmx#221#1.0:name": "(Continuar tu búsqueda)", + "town.tmx#221#1:text": "El alcalde no parece estar en la calle principal del pueblo.", + "town.tmx#221#2.0:name": "¡¡¡Perseguirlos!!!", + "town.tmx#221#2:text": "Tras registrar la mayor parte del pueblo, sigues sin encontrar al alcalde, pero al mirar de nuevo en esa dirección, ¡por fin lo ves al final de la calle!", + "town.tmx#222#0.0:name": "(Continuar)", + "town.tmx#222#0:text": "Marcando la taberna como revisada", + "town.tmx#222#1.0:name": "(Continuar tu búsqueda)", + "town.tmx#222#1:text": "El alcalde no parece estar en la taberna.", + "town.tmx#222#2.0:name": "¡¡¡Perseguirlos!!!", + "town.tmx#222#2:text": "Tras registrar la mayor parte del pueblo, sigues sin encontrar al alcalde, pero al mirar de nuevo en esa dirección, ¡por fin lo ves en plena calle!", + "town.tmx#223#0.0:name": "(Continuar)", + "town.tmx#223#0:text": "Marcando la calle como revisada", + "town.tmx#223#1.0:name": "(Continuar tu búsqueda)", + "town.tmx#223#1:text": "El alcalde no parece estar en la calle principal del pueblo.", + "town.tmx#223#2.0:name": "¡¡¡Perseguirlos!!!", + "town.tmx#223#2:text": "Tras registrar la mayor parte del pueblo, sigues sin encontrar al alcalde, pero al mirar de nuevo en esa dirección, ¡por fin lo ves al final de la calle!", + "town.tmx#224#0.0:name": "Alejarse", + "town.tmx#224#0.1:name": "Atacar al Alcalde", + "town.tmx#224#0:text": "El alcalde solo puede mantenerse alejado de ti un tiempo limitado antes de que consigas abrirte paso entre la multitud y alcanzarlo.", + "town.tmx#235#0.0:name": "(Continuar)", + "town.tmx#235#0:text": "Marcando el archivo como revisado", + "town.tmx#235#1.0:name": "(Continuar tu búsqueda)", + "town.tmx#235#1:text": "El alcalde no parece estar en los archivos.", + "town.tmx#235#2.0:name": "¡¡¡Perseguirlos!!!", + "town.tmx#235#2:text": "Tras registrar la mayor parte del pueblo, sigues sin encontrar al alcalde, pero al mirar de nuevo en esa dirección, ¡por fin lo ves en plena calle!", + "town.tmx#236#0.0:name": "(Continuar)", + "town.tmx#236#0:text": "Marcando la calle como revisada", + "town.tmx#236#1.0:name": "(Continuar tu búsqueda)", + "town.tmx#236#1:text": "El alcalde no parece estar en la calle principal del pueblo.", + "town.tmx#236#2.0:name": "¡¡¡Perseguirlos!!!", + "town.tmx#236#2:text": "Tras registrar la mayor parte del pueblo, sigues sin encontrar al alcalde, pero al mirar de nuevo en esa dirección, ¡por fin lo ves al final de la calle!", + "town.tmx#237#0.0.0.0:name": "(Continuar)", + "town.tmx#237#0.0.0:name": "(Continuar)", + "town.tmx#237#0.0.0:text": "El alcalde desaparece en una nube de humo negro, pero tienes la certeza de que sigue en algún lugar de la zona. Solo es cuestión de encontrarlo.", + "town.tmx#237#0.0:name": "(Continuar)", + "town.tmx#237#0.0:text": "Ante ti ves a un mago de aspecto bastante regio con una gran llave colgando de su cinturón. Parece que identificar al alcalde va a ser fácil. Sin embargo, suelta un grito ahogado al reconocerte y, evidentemente, no tiene ningún interés en quedarse a charlar contigo.", + "town.tmx#237#0:text": "En el extremo norte del cenagal encuentras un pequeño asentamiento de composición inusual. Incluso en lo más profundo de las tierras pantanosas, es raro ver a tantos habitantes de la noche y practicantes de artes impías reunidos en un solo lugar.", + "town.tmx#240#0.0:name": "(Continuar)", + "town.tmx#240#0:text": "Marcando los muelles como revisados", + "town.tmx#240#1.0:name": "(Continuar tu búsqueda)", + "town.tmx#240#1:text": "El alcalde no parece estar en los muelles.", + "town.tmx#240#2.0:name": "¡¡¡Perseguirlos!!!", + "town.tmx#240#2:text": "Tras registrar la mayor parte del pueblo, sigues sin encontrar al alcalde, pero al mirar de nuevo en esa dirección, ¡por fin lo ves en plena calle!", + "town.tmx#259#0.0:name": "(Continuar)", + "town.tmx#259#0:text": "Marcando el cementerio como revisado", + "town.tmx#259#1.0:name": "(Continuar tu búsqueda)", + "town.tmx#259#1:text": "El alcalde no parece estar en el cementerio.", + "town.tmx#259#2.0:name": "¡¡¡Perseguirlos!!!", + "town.tmx#259#2:text": "Tras registrar la mayor parte del pueblo, sigues sin encontrar al alcalde, pero al mirar de nuevo en esa dirección, ¡por fin lo ves en plena calle!", + "town.tmx#260#0.0:name": "(Continuar)", + "town.tmx#260#0:text": "Marcando el cementerio como revisado", + "town.tmx#260#1.0:name": "(Continuar tu búsqueda)", + "town.tmx#260#1:text": "El alcalde no parece estar en el cementerio.", + "town.tmx#260#2.0:name": "¡¡¡Perseguirlos!!!", + "town.tmx#260#2:text": "Tras registrar la mayor parte del pueblo, sigues sin encontrar al alcalde, pero al mirar de nuevo en esa dirección, ¡por fin lo ves en plena calle!", + "town.tmx#262#0.0:name": "(Continuar)", + "town.tmx#262#0:text": "Marcando el cementerio como revisado", + "town.tmx#262#1.0:name": "(Continuar tu búsqueda)", + "town.tmx#262#1:text": "El alcalde no parece estar en el cementerio.", + "town.tmx#262#2.0:name": "¡¡¡Perseguirlos!!!", + "town.tmx#262#2:text": "Tras registrar la mayor parte del pueblo, sigues sin encontrar al alcalde, pero al mirar de nuevo en esa dirección, ¡por fin lo ves en plena calle!", + "town.tmx#263#0.0:name": "(Continuar)", + "town.tmx#263#0:text": "Marcando el cementerio como revisado", + "town.tmx#263#1.0:name": "(Continuar tu búsqueda)", + "town.tmx#263#1:text": "El alcalde no parece estar en el cementerio.", + "town.tmx#263#2.0:name": "¡¡¡Perseguirlos!!!", + "town.tmx#263#2:text": "Tras registrar la mayor parte del pueblo, sigues sin encontrar al alcalde, pero al mirar de nuevo en esa dirección, ¡por fin lo ves en plena calle!", + "town.tmx#278#0.0:name": "(Continuar)", + "town.tmx#278#0:text": "Tras esta verja ves a la legendaria Liliana. Parece estar sumida en algún tipo de ritual. Pero para llegar hasta ella, primero necesitas encontrar al alcalde.", + "town.tmx#282#0.0.0:name": "(Continuar)", + "town.tmx#282#0.0:name": "(Continuar)", + "town.tmx#282#0.0:text": "Al abrir la verja, ella alcanza el clímax de sus conjuros, y los montones de cadáveres a ambos lados del portal empiezan a levantarse. ¡Debes detenerla antes de que esta horda de no-muertos sea liberada sobre Shandalar!", + "town.tmx#282#0:text": "El ritual de Liliana parece estar cerca de completarse. Ves un portal al otro lado de ella que conduce fuera de su dominio.", + "unhallowed_abbey_1F.tmx#86#0.0:name": "Marcharse", + "unhallowed_abbey_1F.tmx#86#0.1.0:name": "Continuar", + "unhallowed_abbey_1F.tmx#86#0.1:name": "Abrir con la Llave del Cultista", + "unhallowed_abbey_1F.tmx#86#0.1:text": "La verja se ha abierto.", + "unhallowed_abbey_1F.tmx#86#0:text": "Esta puerta está cerrada con llave.", + "unhallowed_abbey_2F.tmx#108#0.0:name": "Marcharse", + "unhallowed_abbey_2F.tmx#108#0:text": "Un campo rojo translúcido y reluciente bloquea tu camino. Gritos de dolor resuenan en la sala a tus espaldas.", + "unhallowed_abbey_2F.tmx#113#0.0.0:name": "Continuar", + "unhallowed_abbey_2F.tmx#113#0.0:name": "¡Porque eres un monstruo, y hay que detenerte!", + "unhallowed_abbey_2F.tmx#113#0.0:text": "*El demonio sonríe con desdén.*\n Ah, un noble *héroe*. Debí suponerlo. Los de tu calaña mueren como cualquier otro cuando se les agota el poder... ¡permíteme demostrártelo!", + "unhallowed_abbey_2F.tmx#113#0.1.0:name": "Continuar", + "unhallowed_abbey_2F.tmx#113#0.1:name": "Quiero poder. Lo tomaré de lo que quede de ti.", + "unhallowed_abbey_2F.tmx#113#0.1:text": "*El demonio se ríe entre dientes.*\n Elogio tu ambición, si no tu sensatez. Lucha con suficiente fuerza y quizás te deje reemplazar ese fracaso con el que lidiaste arriba.", + "unhallowed_abbey_2F.tmx#113#0.2.0:name": "Continuar", + "unhallowed_abbey_2F.tmx#113#0.2:name": "Sinceramente, solo parecías una buena pelea.", + "unhallowed_abbey_2F.tmx#113#0.2:text": "*El demonio parpadea sorprendido, luego ríe.*\n Bueno, si eso es lo que buscas, aquí encontrarás más de lo que esperabas. Espero que disfrutes de la última batalla de tu vida, *mortal*.", + "unhallowed_abbey_2F.tmx#113#0.3.0:name": "Continuar", + "unhallowed_abbey_2F.tmx#113#0.3:name": "...", + "unhallowed_abbey_2F.tmx#113#0.3:text": "*Los ojos del demonio se entrecierran.*\n ¿Demasiado asustado para hablar? Que así sea, mortal. Morirás igualmente.", + "unhallowed_abbey_2F.tmx#113#0:text": "*El demonio grande e imponente ante ti sonríe con suficiencia*\n Ah, así que tú eres quien ha estado liberando a mis sacrificios... y el voluntario para ser el siguiente. Dime, mortal, como últimas palabras que no sean un aullido de dolor: ¿por qué me desafías?", + "vampirecastle_4.tmx#105#0.0.0:name": "(Coger la Moneda de Desafío)", + "vampirecastle_4.tmx#105#0.0:name": "Eres libre de irte, Sorin ha sido derrotado.", + "vampirecastle_4.tmx#105#0.0:text": "Gracias... Gracias, señor, por favor acepte esto como muestra de mi gratitud.", + "vampirecastle_4.tmx#105#0:text": "El pobre campesino se acobarda ante ti.", + "vampirecastle_4.tmx#88#0.0:name": "Marcharse", + "vampirecastle_4.tmx#88#0.1.0:name": "Continuar", + "vampirecastle_4.tmx#88#0.1:name": "Abrir con la llave", + "vampirecastle_4.tmx#88#0.1:text": "La verja se ha abierto.", + "vampirecastle_4.tmx#88#0:text": "Una gran verja bloquea el paso. A través de los barrotes puedes ver una figura imponente en la sala más allá.", + "vampirecastle_grave_1.tmx#62#0.0:name": "Marcharse", + "vampirecastle_grave_1.tmx#62#0.1.0:name": "Marcharse", + "vampirecastle_grave_1.tmx#62#0.1.1.0:name": "¡Prepárate!", + "vampirecastle_grave_1.tmx#62#0.1.1:name": "Abrir el ataúd", + "vampirecastle_grave_1.tmx#62#0.1.1:text": "Al abrir el ataúd, una figura poderosa despierta entre las sombras. Grita con voz ancestral: ¿TE ATREVES A DESPERTARME, PATÉTICO MORTAL?", + "vampirecastle_grave_1.tmx#62#0.1:name": "Examinar de cerca el ataúd oxidado", + "vampirecastle_grave_1.tmx#62#0.1:text": "Sientes una cantidad inmensa de poder irradiando del ataúd. También empiezas a notar los diversos símbolos impíos grabados en la base del ataúd.", + "vampirecastle_grave_1.tmx#62#0:text": "Ves un ataúd tendido en el centro de la cripta. Esta reliquia de la historia vampírica, en su día un vaso para los no-muertos, permanece ahora como un testimonio desgastado por el paso del tiempo, testigo silencioso de los secretos y sombras que se han desarrollado entre sus confines. El antiguo ataúd, depositario de siglos, desprende un aura tanto de amenaza como de melancolía, centinela silencioso de los misterios del reino nocturno.", + "vampirecastle_grave_1.tmx#63#0.0:name": "Marcharse", + "vampirecastle_grave_1.tmx#63#0:text": "Un campo rojo translúcido y reluciente bloquea tu camino. Un mal ancestral acecha en estas criptas, impidiéndote entrar en la sala frente a ti...", + "vampirecastle_grave_2.tmx#100#0.0:name": "Marcharse", + "vampirecastle_grave_2.tmx#100#0.1.0:name": "Marcharse", + "vampirecastle_grave_2.tmx#100#0.1.1.0:name": "Coger el botín del ataúd vacío", + "vampirecastle_grave_2.tmx#100#0.1.1:name": "Abrir el ataúd", + "vampirecastle_grave_2.tmx#100#0.1.1:text": "Al abrir el ataúd, esperando que un mal ancestral salte de él, te das cuenta de que la sensación era solo tu imaginación.", + "vampirecastle_grave_2.tmx#100#0.1:name": "Examinar de cerca el ataúd oxidado", + "vampirecastle_grave_2.tmx#100#0.1:text": "Sientes una cantidad inmensa de poder irradiando del ataúd. También empiezas a notar los diversos símbolos impíos grabados en la base del ataúd.", + "vampirecastle_grave_2.tmx#100#0:text": "Te acercas a un ataúd cubierto de telarañas que yace en el centro de la sala.", + "vampirecastle_grave_2.tmx#101#0.0:name": "Marcharse", + "vampirecastle_grave_2.tmx#101#0.1.0:name": "Marcharse", + "vampirecastle_grave_2.tmx#101#0.1.1.0:name": "Coger el botín del ataúd vacío", + "vampirecastle_grave_2.tmx#101#0.1.1:name": "Abrir el ataúd", + "vampirecastle_grave_2.tmx#101#0.1.1:text": "Al abrir el ataúd, esperando que un mal ancestral salte de él, te das cuenta de que la sensación era solo tu imaginación.", + "vampirecastle_grave_2.tmx#101#0.1:name": "Examinar de cerca el ataúd oxidado", + "vampirecastle_grave_2.tmx#101#0.1:text": "Sientes una cantidad inmensa de poder irradiando del ataúd. También empiezas a notar los diversos símbolos impíos grabados en la base del ataúd.", + "vampirecastle_grave_2.tmx#101#0:text": "Te acercas a un ataúd cubierto de telarañas que yace en el centro de la sala.", + "vampirecastle_grave_2.tmx#102#0.0:name": "Marcharse", + "vampirecastle_grave_2.tmx#102#0.1.0:name": "Marcharse", + "vampirecastle_grave_2.tmx#102#0.1.1.0:name": "Coger el botín del ataúd vacío", + "vampirecastle_grave_2.tmx#102#0.1.1:name": "Abrir el ataúd", + "vampirecastle_grave_2.tmx#102#0.1.1:text": "Al abrir el ataúd, esperando que un mal ancestral salte de él, te das cuenta de que la sensación era solo tu imaginación.", + "vampirecastle_grave_2.tmx#102#0.1:name": "Examinar de cerca el ataúd oxidado", + "vampirecastle_grave_2.tmx#102#0.1:text": "Sientes una cantidad inmensa de poder irradiando del ataúd. También empiezas a notar los diversos símbolos impíos grabados en la base del ataúd.", + "vampirecastle_grave_2.tmx#102#0:text": "Te acercas a un ataúd cubierto de telarañas que yace en el centro de la sala.", + "vampirecastle_grave_2.tmx#103#0.0:name": "Marcharse", + "vampirecastle_grave_2.tmx#103#0.1.0:name": "Marcharse", + "vampirecastle_grave_2.tmx#103#0.1.1.0:name": "Coger el botín del ataúd vacío", + "vampirecastle_grave_2.tmx#103#0.1.1:name": "Abrir el ataúd", + "vampirecastle_grave_2.tmx#103#0.1.1:text": "Al abrir el ataúd, esperando que un mal ancestral salte de él, te das cuenta de que la sensación era solo tu imaginación.", + "vampirecastle_grave_2.tmx#103#0.1:name": "Examinar de cerca el ataúd oxidado", + "vampirecastle_grave_2.tmx#103#0.1:text": "Sientes una cantidad inmensa de poder irradiando del ataúd. También empiezas a notar los diversos símbolos impíos grabados en la base del ataúd.", + "vampirecastle_grave_2.tmx#103#0:text": "Te acercas a un ataúd cubierto de telarañas que yace en el centro de la sala.", + "vampirecastle_grave_2.tmx#104#0.0:name": "Marcharse", + "vampirecastle_grave_2.tmx#104#0.1.0:name": "Marcharse", + "vampirecastle_grave_2.tmx#104#0.1.1.0:name": "Coger el botín del ataúd vacío", + "vampirecastle_grave_2.tmx#104#0.1.1:name": "Abrir el ataúd", + "vampirecastle_grave_2.tmx#104#0.1.1:text": "Al abrir el ataúd, esperando que un mal ancestral salte de él, te das cuenta de que la sensación era solo tu imaginación.", + "vampirecastle_grave_2.tmx#104#0.1:name": "Examinar de cerca el ataúd oxidado", + "vampirecastle_grave_2.tmx#104#0.1:text": "Sientes una cantidad inmensa de poder irradiando del ataúd. También empiezas a notar los diversos símbolos impíos grabados en la base del ataúd.", + "vampirecastle_grave_2.tmx#104#0:text": "Te acercas a un ataúd cubierto de telarañas que yace en el centro de la sala.", + "vampirecastle_grave_2.tmx#63#0.0:name": "Marcharse", + "vampirecastle_grave_2.tmx#63#0:text": "Un campo rojo translúcido y reluciente bloquea tu camino. Gritos de dolor resuenan en la sala a tus espaldas.", + "vampirecastle_grave_2.tmx#79#0.0:name": "Marcharse", + "vampirecastle_grave_2.tmx#79#0.1.0:name": "Marcharse", + "vampirecastle_grave_2.tmx#79#0.1.1.0:name": "¡Prepárate!", + "vampirecastle_grave_2.tmx#79#0.1.1:name": "Abrir el ataúd", + "vampirecastle_grave_2.tmx#79#0.1.1:text": "Al abrir el ataúd, una figura poderosa despierta entre las sombras. Grita con voz ancestral: ¿TE ATREVES A DESPERTARME, PATÉTICO MORTAL?", + "vampirecastle_grave_2.tmx#79#0.1:name": "Examinar de cerca el ataúd oxidado", + "vampirecastle_grave_2.tmx#79#0.1:text": "Sientes una cantidad inmensa de poder irradiando del ataúd. También empiezas a notar los diversos símbolos impíos grabados en la base del ataúd.", + "vampirecastle_grave_2.tmx#79#0:text": "Te acercas a un ataúd cubierto de telarañas que yace en el centro de la sala.", + "vampirecastle_grave_2.tmx#82#0.0:name": "Marcharse", + "vampirecastle_grave_2.tmx#82#0.1.0:name": "Marcharse", + "vampirecastle_grave_2.tmx#82#0.1.1.0:name": "¡Hora de control de plagas!", + "vampirecastle_grave_2.tmx#82#0.1.1:name": "Abrir el ataúd", + "vampirecastle_grave_2.tmx#82#0.1.1:text": "Al abrir el ataúd, una rata topo gigante salta desde su interior, con aspecto muy molesto y furioso.", + "vampirecastle_grave_2.tmx#82#0.1:name": "Examinar de cerca el ataúd oxidado", + "vampirecastle_grave_2.tmx#82#0.1:text": "Sientes una cantidad inmensa de poder irradiando del ataúd. También empiezas a notar los diversos símbolos impíos grabados en la base del ataúd.", + "vampirecastle_grave_2.tmx#82#0:text": "Te acercas a un ataúd cubierto de telarañas que yace en el centro de la sala.", + "vampirecastle_grave_2.tmx#83#0.0:name": "Marcharse", + "vampirecastle_grave_2.tmx#83#0.1.0:name": "Marcharse", + "vampirecastle_grave_2.tmx#83#0.1.1.0:name": "¡Hora de control de plagas!", + "vampirecastle_grave_2.tmx#83#0.1.1:name": "Abrir el ataúd", + "vampirecastle_grave_2.tmx#83#0.1.1:text": "Al abrir el ataúd, una rata topo gigante salta desde su interior, con aspecto muy molesto y furioso", + "vampirecastle_grave_2.tmx#83#0.1:name": "Examinar de cerca el ataúd oxidado", + "vampirecastle_grave_2.tmx#83#0.1:text": "Sientes una cantidad inmensa de poder irradiando del ataúd. También empiezas a notar los diversos símbolos impíos grabados en la base del ataúd.", + "vampirecastle_grave_2.tmx#83#0:text": "Te acercas a un ataúd cubierto de telarañas que yace en el centro de la sala.", + "vampirecastle_grave_2.tmx#86#0.0:name": "Marcharse", + "vampirecastle_grave_2.tmx#86#0.1.0:name": "Marcharse", + "vampirecastle_grave_2.tmx#86#0.1.1.0:name": "Coger el botín del ataúd vacío", + "vampirecastle_grave_2.tmx#86#0.1.1:name": "Abrir el ataúd", + "vampirecastle_grave_2.tmx#86#0.1.1:text": "Al abrir el ataúd, esperando que un mal ancestral salte de él, te das cuenta de que la sensación era solo tu imaginación.", + "vampirecastle_grave_2.tmx#86#0.1:name": "Examinar de cerca el ataúd oxidado", + "vampirecastle_grave_2.tmx#86#0.1:text": "Sientes una cantidad inmensa de poder irradiando del ataúd. También empiezas a notar los diversos símbolos impíos grabados en la base del ataúd.", + "vampirecastle_grave_2.tmx#86#0:text": "Te acercas a un ataúd cubierto de telarañas que yace en el centro de la sala.", + "vampirecastle_grave_2.tmx#97#0.0:name": "Marcharse", + "vampirecastle_grave_2.tmx#97#0.1.0:name": "Marcharse", + "vampirecastle_grave_2.tmx#97#0.1.1.0:name": "Coger el botín del ataúd vacío", + "vampirecastle_grave_2.tmx#97#0.1.1:name": "Abrir el ataúd", + "vampirecastle_grave_2.tmx#97#0.1.1:text": "Al abrir el ataúd, esperando que un mal ancestral salte de él, te das cuenta de que la sensación era solo tu imaginación.", + "vampirecastle_grave_2.tmx#97#0.1:name": "Examinar de cerca el ataúd oxidado", + "vampirecastle_grave_2.tmx#97#0.1:text": "Sientes una cantidad inmensa de poder irradiando del ataúd. También empiezas a notar los diversos símbolos impíos grabados en la base del ataúd.", + "vampirecastle_grave_2.tmx#97#0:text": "Te acercas a un ataúd cubierto de telarañas que yace en el centro de la sala.", + "vampirecastle_grave_2.tmx#98#0.0:name": "Marcharse", + "vampirecastle_grave_2.tmx#98#0.1.0:name": "Marcharse", + "vampirecastle_grave_2.tmx#98#0.1.1.0:name": "Coger el botín del ataúd vacío", + "vampirecastle_grave_2.tmx#98#0.1.1:name": "Abrir el ataúd", + "vampirecastle_grave_2.tmx#98#0.1.1:text": "Al abrir el ataúd, esperando que un mal ancestral salte de él, te das cuenta de que la sensación era solo tu imaginación.", + "vampirecastle_grave_2.tmx#98#0.1:name": "Examinar de cerca el ataúd oxidado", + "vampirecastle_grave_2.tmx#98#0.1:text": "Sientes una cantidad inmensa de poder irradiando del ataúd. También empiezas a notar los diversos símbolos impíos grabados en la base del ataúd.", + "vampirecastle_grave_2.tmx#98#0:text": "Te acercas a un ataúd cubierto de telarañas que yace en el centro de la sala.", + "vampirecastle_grave_2.tmx#99#0.0:name": "Marcharse", + "vampirecastle_grave_2.tmx#99#0.1.0:name": "Marcharse", + "vampirecastle_grave_2.tmx#99#0.1.1.0:name": "Coger el botín del ataúd vacío", + "vampirecastle_grave_2.tmx#99#0.1.1:name": "Abrir el ataúd", + "vampirecastle_grave_2.tmx#99#0.1.1:text": "Al abrir el ataúd, esperando que un mal ancestral salte de él, te das cuenta de que la sensación era solo tu imaginación.", + "vampirecastle_grave_2.tmx#99#0.1:name": "Examinar de cerca el ataúd oxidado", + "vampirecastle_grave_2.tmx#99#0.1:text": "Sientes una cantidad inmensa de poder irradiando del ataúd. También empiezas a notar los diversos símbolos impíos grabados en la base del ataúd.", + "vampirecastle_grave_2.tmx#99#0:text": "Te acercas a un ataúd cubierto de telarañas que yace en el centro de la sala.", + "vampirecastle_grave_3.tmx#66#0.0:name": "Marcharse", + "vampirecastle_grave_3.tmx#66#0:text": "Un campo rojo translúcido y reluciente bloquea tu camino. Un mal ancestral acecha en estas criptas, impidiéndote entrar en la sala frente a ti...", + "vampirecastle_grave_3.tmx#67#0.0:name": "Marcharse", + "vampirecastle_grave_3.tmx#67#0.1.0:name": "Marcharse", + "vampirecastle_grave_3.tmx#67#0.1.1.0:name": "¡Prepárate!", + "vampirecastle_grave_3.tmx#67#0.1.1:name": "Abrir el ataúd", + "vampirecastle_grave_3.tmx#67#0.1.1:text": "Al abrir el ataúd, una figura poderosa despierta entre las sombras. Grita con voz ancestral: ¿TE ATREVES A DESPERTARME, PATÉTICO MORTAL?", + "vampirecastle_grave_3.tmx#67#0.1:name": "Examinar de cerca el ataúd oxidado", + "vampirecastle_grave_3.tmx#67#0.1:text": "Sientes una cantidad inmensa de poder irradiando del ataúd. También empiezas a notar los diversos símbolos impíos grabados en la base del ataúd.", + "vampirecastle_grave_3.tmx#67#0:text": "Ves un ataúd tendido en el centro de la cripta. Esta reliquia de la historia vampírica, en su día un vaso para los no-muertos, permanece ahora como un testimonio desgastado por el paso del tiempo, testigo silencioso de los secretos y sombras que se han desarrollado entre sus confines. El antiguo ataúd, depositario de siglos, desprende un aura tanto de amenaza como de melancolía, centinela silencioso de los misterios del reino nocturno.", + "waste_town_abandoned.tmx#76#0.0:name": "(Continuar)", + "waste_town_abandoned.tmx#76#0:text": "Uno de los pocos sonidos en la zona, la rueda de agua de este viejo molino cruje mientras gira lentamente en el agua de movimiento lento y color extraño.", + "waste_town_abandoned.tmx#77#0.0:name": "(Continuar)", + "waste_town_abandoned.tmx#77#0:text": "Estas tiendas están tan sin vida como el resto del pueblo, pero parece que quedan algunos objetos, sospechosamente intactos después de tanto tiempo.", + "waste_town_abandoned.tmx#78#0.0:name": "(Continuar)", + "waste_town_abandoned.tmx#78#0:text": "La posada está cerrada a cal y canto. El ayuntamiento, en cambio, no tiene puerta principal, pero no encuentras nada fuera de lo común en el interior, solo papeles desmoronados bien organizados y cubiertos de tinta ilegible.", + "waste_town_abandoned.tmx#79#0.0:name": "(Continuar)", + "waste_town_abandoned.tmx#79#0:text": "Las enredaderas que cubren estas casas parecen enfermizas, como si buscaran un sustento que no encuentran en la tierra de aquí.", + "waste_town_abandoned.tmx#82#0.0:name": "(Continuar)", + "waste_town_abandoned.tmx#82#0:text": "'Sepulcralmente quieto' parece una descripción acertada para el cementerio. Casi te encuentras deseando que los muertos se levanten solo para que algo suceda.", + "waste_town_abandoned.tmx#83#1.0.0:name": "Hora de ir a cazar portales. Supongo que no puedo pedirle indicaciones a nadie...", + "waste_town_abandoned.tmx#83#1.0:name": "(Continuar)", + "waste_town_abandoned.tmx#83#1.0:text": "Al acercarte más, resulta evidente que la mayoría de los edificios están intactos pero en un estado de abandono o directamente cubiertos de maleza. Es dudoso que alguien haya residido aquí en bastante tiempo.", + "waste_town_abandoned.tmx#83#1:text": "Tal y como describió el mercader, un pueblo vacío se extiende tras estas verjas. Incluso el viento parece más quieto aquí, como si temiera perturbar algo.", + "waste_town_abandoned.tmx#94#0.0:name": "(Continuar)", + "waste_town_abandoned.tmx#94#0:text": "Quizás solo sea cosa de tu imaginación, pero no puedes librarte de la sensación de que te observan mientras exploras la zona.", + "wastetown..tmx#102#0.0:name": "Continuar", + "wastetown..tmx#102#0:text": "Una verja bloquea el paso. Parece que se abre desde otro lugar.", + "wastetown..tmx#137#0.0:name": "Marcharse", + "wastetown..tmx#137#0:text": "La inscripción dice: El sistema de alcantarillado de Shandalar está en mantenimiento. Un poco de baba verde ha contaminado la red de agua. Lo tenemos totalmente bajo control y el alcantarillado volverá a funcionar enseguida.", + "wastetown..tmx#55#0.0:name": "Marcharse", + "wastetown..tmx#55#0.1.0:name": "Continuar", + "wastetown..tmx#55#0.1:name": "Abrir con las cinco llaves de colores.", + "wastetown..tmx#55#0.1:text": "La verja se ha abierto", + "wastetown..tmx#55#0:text": "Una gran verja bloquea el paso.", + "wastetown..tmx#69#0.0:name": "Continuar", + "wastetown..tmx#69#0:text": "Hola, caminante de planos {var=player_name}. Esta zona está actualmente en construcción y sujeta a cambios. Además, este es un jefe difícil, así que ven preparado con un mazo fuerte.", + "white_castle.tmx#55#0.0.0:name": "(Continuar)", + "white_castle.tmx#55#0.0:name": "¡Akroma, he hecho lo que me pediste! ¡Es hora de acabar con esto!", + "white_castle.tmx#55#0.0:text": "Con una explosión ensordecedora, la verja estalla dejando solo cenizas a tu paso. Ya puedes pasar libremente.", + "white_castle.tmx#55#0.1.0:name": "(Continuar)", + "white_castle.tmx#55#0.1:name": "¡Akroma, he hecho lo que me pediste! ¡Es hora de acabar con esto!", + "white_castle.tmx#55#0.1:text": "Con una explosión ensordecedora, la verja estalla dejando solo cenizas a tu paso. Ya puedes pasar libremente.", + "white_castle.tmx#55#0.2.0:name": "(Continuar)", + "white_castle.tmx#55#0.2:name": "Llamas a la puerta.", + "white_castle.tmx#55#0.2:text": "NO ERES DIGNO, ¡LÁRGATE!", + "white_castle.tmx#55#0:text": "Llegas ante una verja.", + "white_castle.tmx#74#0.0.0.0:name": "Demostraré mi valía, solo asegúrate de abrir la verja cuando derrote a tus retadores.", + "white_castle.tmx#74#0.0.0.0:text": "Marcharse", + "white_castle.tmx#74#0.0.0:name": "¿Qué necesito hacer para pasar por esta verja?", + "white_castle.tmx#74#0.0.0:text": "Debes demostrar tu fuerza derrotando al menos a cuatro de los cinco enemigos que acechan en esta mazmorra para ser digno de una audiencia con mi ilustre ama.\n Afila tu espada, prepara tus hechizos y reúne valor, pues los desafíos que te esperan pondrán a prueba el temple incluso del guerrero más curtido.", + "white_castle.tmx#74#0.0:name": "¿Ah, sí? Supongo que no te importará abrir esa verja delante de mí, ¿verdad?", + "white_castle.tmx#74#0.0:text": "Me temo que no tengo permitido hacer eso, soy una mera sirviente de la poderosa Akroma, soberana de los Ángeles.", + "white_castle.tmx#74#0:text": "Bienvenido, {var=player_name}. Akroma ha estado esperando ansiosamente este momento.", + "white_castle.tmx#74#1.0:name": "(Continuar)", + "white_castle.tmx#74#1:text": "Los retadores siguen con vida, no podrás pasar de esta verja.", + "white_castle.tmx#74#2.0:name": "(Continuar)", + "white_castle.tmx#74#2:text": "En efecto, estoy impresionada, eres bienvenido para reunirte con mi ama en el piso de arriba, aunque no puedo garantizar que sobrevivas a ese encuentro.", + "white_castle_f1.tmx#50#0.0:name": "(Continuar)", + "white_castle_f1.tmx#50#0:text": "Al asestar tu golpe final contra Akroma, sientes un pulso de maná considerable. Pero, eliminada la amenaza inmediata, ahora puedes ver claramente que la sala cerrada al norte de la cámara no contiene ningún prisionero.", + "white_castle_f1.tmx#50#1.0:name": "(Continuar)", + "white_castle_f1.tmx#50#1:text": "Al asestar tu golpe final contra Akroma, sientes otro pulso de maná. Pero, como antes, la sala cerrada tras tu enemigo caído no contiene ningún prisionero.", + "zedruu.tmx#224#0.0:name": "Marcharse", + "zedruu.tmx#224#0.1.0:name": "Continuar", + "zedruu.tmx#224#0.1:name": "Abrir con la Llave de la Verja Exterior", + "zedruu.tmx#224#0.1:text": "La verja se ha abierto.", + "zedruu.tmx#224#0:text": "Esta verja está cerrada con llave.", + "zedruu_f0.tmx#223#0.0:name": "Marcharse", + "zedruu_f0.tmx#223#0.1.0:name": "Continuar", + "zedruu_f0.tmx#223#0.1:name": "Abrir con la Llave del Sótano", + "zedruu_f0.tmx#223#0.1:text": "La verja se ha abierto.", + "zedruu_f0.tmx#223#0:text": "Esta puerta está cerrada con llave." +} \ No newline at end of file From 3185e96285967f93cd02aa8982a05204491197a1 Mon Sep 17 00:00:00 2001 From: Churrufli Date: Sun, 23 Aug 2026 19:19:14 +0200 Subject: [PATCH 4/8] Migrate spawn.tmx dialog to the new per-locale JSON catalog; drop the now-unused loctext/locname properties keys --- .../adventure/common/maps/dialog-es-ES.json | 38 ----- .../common/maps/map/main_story/spawn.tmx | 76 ++++----- forge-gui/res/languages/es-ES.properties | 30 ---- .../tools/checkAdventureTmxTranslations.py | 158 ++++++++++++++++++ 4 files changed, 196 insertions(+), 106 deletions(-) create mode 100644 forge-gui/tools/checkAdventureTmxTranslations.py diff --git a/forge-gui/res/adventure/common/maps/dialog-es-ES.json b/forge-gui/res/adventure/common/maps/dialog-es-ES.json index 64e09700c327..5f0ccc046395 100644 --- a/forge-gui/res/adventure/common/maps/dialog-es-ES.json +++ b/forge-gui/res/adventure/common/maps/dialog-es-ES.json @@ -494,44 +494,6 @@ "slime_hive.tmx#137#0:text": "La inscripción dice: El sistema de alcantarillado de Shandalar está en mantenimiento. Un poco de baba verde ha contaminado la red de agua. Lo tenemos totalmente bajo control y el alcantarillado volverá a funcionar enseguida.", "snowabbey_1.tmx#84#0.0:name": "Marcharse", "snowabbey_1.tmx#84#0:text": "La inscripción dice: Bienvenido a la villa pesquera de Haran", - "spawn.tmx#69#0.0.0.0.0.0.0.0.0.0:name": "(Marcharse)", - "spawn.tmx#69#0.0.0.0.0.0.0.0.0:name": "Gracias", - "spawn.tmx#69#0.0.0.0.0.0.0.0.0:text": "Ahora reabriré el portal por el que llegaste, pero no puede devolverte al lugar del que vienes. Al otro lado encontrarás los páramos de Shandalar, que yo, y ahora tú también, llamamos hogar.", - "spawn.tmx#69#0.0.0.0.0.0.0.0:name": "¿Dónde son estos concursos?", - "spawn.tmx#69#0.0.0.0.0.0.0.0:text": "Muestra la moneda a los posaderos. Si hay un grupo en el pueblo, el posadero te dirigirá hacia ellos.", - "spawn.tmx#69#0.0.0.0.0.0.0:name": "¿Qué son entonces? ¿Para qué sirven?", - "spawn.tmx#69#0.0.0.0.0.0.0:text": "Son Monedas de Desafío. Los lanzadores de hechizos de Shandalar suelen reunirse para celebrar pruebas de habilidad. Estas monedas te darán acceso a esos concursos, y los premios disponibles pueden ayudarte en tu viaje.", - "spawn.tmx#69#0.0.0.0.0.0:name": "(Continuar)", - "spawn.tmx#69#0.0.0.0.0.0:text": "Tengo algo más para ti, {var=player_name}. Toma estas monedas, pero no las gastes con mercaderes.", - "spawn.tmx#69#0.0.0.0.0.1.0:name": "(Marcharse)", - "spawn.tmx#69#0.0.0.0.0.1:name": "Gracias.", - "spawn.tmx#69#0.0.0.0.0.1:text": "Ahora reabriré el portal por el que llegaste, pero no puede devolverte al lugar del que vienes. Al otro lado encontrarás los páramos de Shandalar, que yo, y ahora tú también, llamamos hogar.", - "spawn.tmx#69#0.0.0.0.0:name": "(Continuar)", - "spawn.tmx#69#0.0.0.0.0:text": "Toma esta runa. Puedes usarla en cualquier momento para volver aquí. Ten cuidado, caminante de planos.", - "spawn.tmx#69#0.0.0.0:name": "(Continuar)", - "spawn.tmx#69#0.0.0.0:text": "Encuentra a los caminantes de planos atrapados aquí. Guíalos hasta mí, te ayudarán en tu viaje.", - "spawn.tmx#69#0.0.0:name": "(Continuar)", - "spawn.tmx#69#0.0.0:text": "Como tú, algunos caminantes de planos han sido aprisionados aquí por los guardianes de los castillos. Debes derrotarlos en combate para liberarnos de este plano. Usa tus poderes mágicos para desafiarlos.", - "spawn.tmx#69#0.0:name": "¿Por qué estoy aquí?", - "spawn.tmx#69#0.0:text": "Esto... es Shandalar. Un plano donde el maná es tan abundante y usado por todos los seres conscientes que incluso la gente común lanza hechizos a diario.", - "spawn.tmx#69#0.1:name": "Adiós.", - "spawn.tmx#69#0:text": "Hola, caminante de planos {var=player_name}.", - "spawn.tmx#69#1.0:name": "\"Adiós.\"", - "spawn.tmx#69#1:text": "\"¡{var=player_name}! ¡Siento que el hechizo de los Guardianes se debilita! Derrótalos a todos y quizá aún podamos salvarnos.\"", - "spawn.tmx#69#2.0.0.0.0.0.0:name": "(Capítulo 1 completado)", - "spawn.tmx#69#2.0.0.0.0.0:name": "(Continuar)", - "spawn.tmx#69#2.0.0.0.0.0:text": "[RED}Nota del desarrollador:[] Vuelve a hablar con este PNJ después de actualizar Forge (o atento a los anuncios en nuestro Discord) para continuar la historia cuando esté lista. ¡Y gracias por venir con nosotros en esta Aventura!", - "spawn.tmx#69#2.0.0.0.0:name": "(Continuar)", - "spawn.tmx#69#2.0.0.0.0:text": "[RED]Nota del desarrollador:[] Has llegado al final del contenido de historia disponible por ahora, pero aún queda más por descubrir en Shandalar. Se han añadido varias mazmorras difíciles a tu mapa del mundo, y tu colección de cartas puede seguir creciendo.", - "spawn.tmx#69#2.0.0.0:name": "(Continuar)", - "spawn.tmx#69#2.0.0.0:text": "\"El hechizo que creó su presencia combinada provocó sutiles trucos de la mente que nos hicieron pasar por alto partes de nuestro mundo. Incluidas las prisiones que SÍ contienen a los Caminantes de Planos. Creo que ahora podrás encontrarlas...\"", - "spawn.tmx#69#2.0.0:name": "\"¿Efectos como cuáles?\"", - "spawn.tmx#69#2.0.0:text": "\"Probablemente viste una versión muy concentrada de los efectos de su presencia dentro de sus castillos. Pero también velaron ciertas zonas de nuestro mundo, haciendo que quedaran... 'ocultas', a falta de un término mejor.\"", - "spawn.tmx#69#2.0:name": "\"He derrotado a los ocupantes de los cinco castillos, pero no encontré ningún cautivo.\"", - "spawn.tmx#69#2.0:text": "\"Supongo que debería haberlo explicado mejor. Los guardianes que has derrotado no eran captores, no directamente. Pero su mera presencia tenía efectos que alteraban el mundo.\"", - "spawn.tmx#69#2:text": "\"Me alegra volver a verte, {var=player_name}. Deduzco que has tenido cierto éxito en tu búsqueda.\"", - "spawn.tmx#69#3.0:name": "Quiero cambiar las cinco llaves de colores por un mox de mi elección y la llave de la sala de Emrakul", - "spawn.tmx#69#3:text": "Hola de nuevo", "steppe.tmx#237#0.0.0:name": "(Continuar)", "steppe.tmx#237#0.0:name": "¡Lathliss! ¡Es hora de acabar con esto!", "steppe.tmx#237#0.0:text": "Con una ráfaga de llamas rojas, la puerta se consume dejando solo cenizas a tu paso. Ya puedes pasar libremente.", diff --git a/forge-gui/res/adventure/common/maps/map/main_story/spawn.tmx b/forge-gui/res/adventure/common/maps/map/main_story/spawn.tmx index 32f5dc8a8310..226c0e0b1003 100644 --- a/forge-gui/res/adventure/common/maps/map/main_story/spawn.tmx +++ b/forge-gui/res/adventure/common/maps/map/main_story/spawn.tmx @@ -31,10 +31,10 @@ [ { - "text": "Hello, planeswalker {var=player_name}.","loctext":"advDlgCommonMainStorySpawn1", + "text": "Hello, planeswalker {var=player_name}.", "options": [ { - "name": "Why am I here?","locname":"advDlgCommonMainStorySpawn2", + "name": "Why am I here?", "condition": [ { "checkQuestFlag": "mainQuest", @@ -45,22 +45,22 @@ "not": true } ], - "text": "This... is Shandalar. A plane where mana is so prevalent and used by all that is sentient. Even the common people use spells daily.","loctext":"advDlgCommonMainStorySpawn3", + "text": "This... is Shandalar. A plane where mana is so prevalent and used by all that is sentient. Even the common people use spells daily.", "voiceFile": "audio/WizPAR1.mp3", "options": [ { - "name": "(Continue)","locname":"advDlgBtnContinue", - "text": "Like you, some planeswalkers have been imprisoned here by the guardians in the castles. You must defeat them in battle to release us from this plane. Use your powers of magic to challenge them.","loctext":"advDlgCommonMainStorySpawn4", + "name": "(Continue)", + "text": "Like you, some planeswalkers have been imprisoned here by the guardians in the castles. You must defeat them in battle to release us from this plane. Use your powers of magic to challenge them.", "voiceFile": "audio/WizPAR2.mp3", "options": [ { - "name": "(Continue)","locname":"advDlgBtnContinue", - "text": "Find the planeswalkers trapped here. Guide them to me, they will help you on your journey.","loctext":"advDlgCommonMainStorySpawn5", + "name": "(Continue)", + "text": "Find the planeswalkers trapped here. Guide them to me, they will help you on your journey.", "voiceFile": "audio/WizPAR3.mp3", "options": [ { - "name": "(Continue)","locname":"advDlgBtnContinue", - "text": "Take this rune. You can use it anytime to return here. Be careful, planeswalker.","loctext":"advDlgCommonMainStorySpawn6", + "name": "(Continue)", + "text": "Take this rune. You can use it anytime to return here. Be careful, planeswalker.", "action": [ { "addItem": "Colorless rune" @@ -69,8 +69,8 @@ "voiceFile": "audio/WizPAR4.mp3", "options": [ { - "name": "(Continue)","locname":"advDlgBtnContinue", - "text": "I have something else for you, {var=player_name}. Take these coins, but do not spend them with merchants.","loctext":"advDlgCommonMainStorySpawn7", + "name": "(Continue)", + "text": "I have something else for you, {var=player_name}. Take these coins, but do not spend them with merchants.", "condition": [ { "checkCharacterFlag": "freeChallengeCoins", @@ -106,19 +106,19 @@ } } ], - "name": "What are they, then? What are they for?","locname":"advDlgCommonMainStorySpawn8", - "text": "These are Challenge Coins. Spellcasters of Shandalar will often gather to hold tests of skill. These coins will grant you entry to contests, and the prizes available can help you on your journey.","loctext":"advDlgCommonMainStorySpawn9", + "name": "What are they, then? What are they for?", + "text": "These are Challenge Coins. Spellcasters of Shandalar will often gather to hold tests of skill. These coins will grant you entry to contests, and the prizes available can help you on your journey.", "options": [ { - "name": "Where are these contests?","locname":"advDlgCommonMainStorySpawn10", - "text": "Show the coin to innkeepers. If there is a group in the town, the innkeeper will direct you to them.","loctext":"advDlgCommonMainStorySpawn11", + "name": "Where are these contests?", + "text": "Show the coin to innkeepers. If there is a group in the town, the innkeeper will direct you to them.", "options": [ { - "name": "Thank you","locname":"advDlgCommonMainStorySpawn12", - "text": "I will reopen the portal you arrived through now, but it cannot send you back from wherever you have come. On the other side, you will find the barrens of Shandalar which I, and now you, call home.","loctext":"advDlgCommonMainStorySpawn13", + "name": "Thank you", + "text": "I will reopen the portal you arrived through now, but it cannot send you back from wherever you have come. On the other side, you will find the barrens of Shandalar which I, and now you, call home.", "options": [ { - "name": "(Leave)","locname":"advDlgBtnLeaveParen", + "name": "(Leave)", "action": [ { "setQuestFlag": { @@ -138,8 +138,8 @@ ] }, { - "name": "Thank you.","locname":"advDlgCommonMainStorySpawn14", - "text": "I will reopen the portal you arrived through now, but it cannot send you back from wherever you have come. On the other side, you will find the barrens of Shandalar which I, and now you, call home.","loctext":"advDlgCommonMainStorySpawn13", + "name": "Thank you.", + "text": "I will reopen the portal you arrived through now, but it cannot send you back from wherever you have come. On the other side, you will find the barrens of Shandalar which I, and now you, call home.", "condition": [ { "checkCharacterFlag": "freeChallengeCoins" @@ -147,7 +147,7 @@ ], "options": [ { - "name": "(Leave)","locname":"advDlgBtnLeaveParen", + "name": "(Leave)", "action": [ { "setQuestFlag": { @@ -169,7 +169,7 @@ ] }, { - "name": "Goodbye.","locname":"advDlgCommonMainStorySpawn15" + "name": "Goodbye." } ] }, @@ -184,10 +184,10 @@ } } ], - "text": "\"{var=player_name}! I feel the Guardians' spell growing weaker! Defeat them all and you may save us yet.\"","loctext":"advDlgCommonMainStorySpawn16", + "text": "\"{var=player_name}! I feel the Guardians' spell growing weaker! Defeat them all and you may save us yet.\"", "options": [ { - "name": "\"Goodbye.\"","locname":"advDlgCommonMainStorySpawn17" + "name": "\"Goodbye.\"" } ] }, @@ -201,7 +201,7 @@ } } ], - "text": "\"Good to see you again {var=player_name}. I take it that you have had some success in your quest?\"","loctext":"advDlgCommonMainStorySpawn18", + "text": "\"Good to see you again {var=player_name}. I take it that you have had some success in your quest?\"", "options": [ { "action": [ @@ -221,27 +221,27 @@ "POIReference": "" } ], - "name": "\"I have defeated the occupants of the five castles, but I did not find any captives.\"","locname":"advDlgCommonMainStorySpawn19", - "text": "\"I suppose I should have explained further. The guardians you have defeated were not captors, not directly. But their mere presence had world altering effects.\"","loctext":"advDlgCommonMainStorySpawn20", + "name": "\"I have defeated the occupants of the five castles, but I did not find any captives.\"", + "text": "\"I suppose I should have explained further. The guardians you have defeated were not captors, not directly. But their mere presence had world altering effects.\"", "options": [ { - "name": "\"Effects such as what?\"","locname":"advDlgCommonMainStorySpawn21", - "text": "\"You likely saw a very focused version of the effects of their presence within their castles. But they also shrouded certain areas of our world, causing them to be... 'hidden', for the lack of a better term.\"","loctext":"advDlgCommonMainStorySpawn22", + "name": "\"Effects such as what?\"", + "text": "\"You likely saw a very focused version of the effects of their presence within their castles. But they also shrouded certain areas of our world, causing them to be... 'hidden', for the lack of a better term.\"", "options": [ { - "name": "(Continue)","locname":"advDlgBtnContinue", - "text": "\"The spell their combined presences created caused subtle tricks of the mind which made us look right past parts of our world. Including the prisons which DO hold the Planeswalkers. I believe you will now be able to find them...\"","loctext":"advDlgCommonMainStorySpawn23", + "name": "(Continue)", + "text": "\"The spell their combined presences created caused subtle tricks of the mind which made us look right past parts of our world. Including the prisons which DO hold the Planeswalkers. I believe you will now be able to find them...\"", "options": [ { - "name": "(Continue)","locname":"advDlgBtnContinue", - "text": "[RED]Developer's note:[] You have now reached the end of the currently available story content, but there is more to be found in Shandalar. Several difficult dungeons have now been added to your world map, and your card collection can continue to grow.","loctext":"advDlgCommonMainStorySpawn24", + "name": "(Continue)", + "text": "[RED]Developer's note:[] You have now reached the end of the currently available story content, but there is more to be found in Shandalar. Several difficult dungeons have now been added to your world map, and your card collection can continue to grow.", "options": [ { - "name": "(Continue)","locname":"advDlgBtnContinue", - "text": "[RED}Developer's note:[] Check in with this NPC after updating Forge (or watch for announcements in our Discord) to continue the story when it is ready. And thanks for coming on this Adventure with us!","loctext":"advDlgCommonMainStorySpawn25", + "name": "(Continue)", + "text": "[RED}Developer's note:[] Check in with this NPC after updating Forge (or watch for announcements in our Discord) to continue the story when it is ready. And thanks for coming on this Adventure with us!", "options": [ { - "name": "(Chapter 1 complete)","locname":"advDlgCommonMainStorySpawn26" + "name": "(Chapter 1 complete)" } ] } @@ -273,10 +273,10 @@ "item": "Red Key" } ], - "text": "Hello again","loctext":"advDlgCommonMainStorySpawn27", + "text": "Hello again", "options": [ { - "name": "I want to trade in the five colored keys for a mox of my choice and the key to Emrakul's room","locname":"advDlgCommonMainStorySpawn28", + "name": "I want to trade in the five colored keys for a mox of my choice and the key to Emrakul's room", "action": [ { "grantRewardsChoice": [ diff --git a/forge-gui/res/languages/es-ES.properties b/forge-gui/res/languages/es-ES.properties index f644d0a7aa59..846d1a886e44 100644 --- a/forge-gui/res/languages/es-ES.properties +++ b/forge-gui/res/languages/es-ES.properties @@ -3930,36 +3930,6 @@ lblCommanderBracketReasonLateGameCombo=Los combos con 2 cartas al final del jueg lblCommanderBracketReasonEarlyGameCombo=Los combos con 2 cartas al principio del juego hacen que el mazo sea al menos del grupo 4. lblAutoSellVariantsCommander=Vender automáticamente las variantes de cartas que posees en Commander #Adventure Mode - common/maps/map/main_story/spawn.tmx -advDlgBtnContinue=(Continuar) -advDlgBtnLeaveParen=(Salir) -advDlgCommonMainStorySpawn1=Hola, planeswalker '{var=player_name}'. -advDlgCommonMainStorySpawn2=¿Por qué estoy aquí? -advDlgCommonMainStorySpawn3=Esto... es Shandalar. Un plano donde el maná es tan abundante y lo usa todo ser sensible que hasta la gente corriente lanza hechizos a diario. -advDlgCommonMainStorySpawn4=Como tú, otros planeswalkers han sido encerrados aquí por los guardianes de los castillos. Debes derrotarlos en combate para liberarnos de este plano. Usa tus poderes mágicos para desafiarlos. -advDlgCommonMainStorySpawn5=Encuentra a los planeswalkers atrapados aquí. Guíalos hasta mí, te ayudarán en tu viaje. -advDlgCommonMainStorySpawn6=Toma esta runa. Puedes usarla en cualquier momento para volver aquí. Ten cuidado, planeswalker. -advDlgCommonMainStorySpawn7=Tengo algo más para ti, '{var=player_name}'. Toma estas monedas, pero no las gastes con los mercaderes. -advDlgCommonMainStorySpawn8=Entonces, ¿qué son? ¿Para qué sirven? -advDlgCommonMainStorySpawn9=Son Monedas de Desafío. Los lanzadores de hechizos de Shandalar suelen reunirse para celebrar pruebas de habilidad. Estas monedas te darán acceso a esas competiciones, y los premios que ofrecen pueden ayudarte en tu viaje. -advDlgCommonMainStorySpawn10=¿Dónde se celebran esas competiciones? -advDlgCommonMainStorySpawn11=Muestra la moneda a los posaderos. Si hay un grupo en el pueblo, el posadero te indicará dónde encontrarlos. -advDlgCommonMainStorySpawn12=Gracias -advDlgCommonMainStorySpawn13=Voy a reabrir el portal por el que llegaste, pero no puede devolverte al lugar del que vienes. Al otro lado encontrarás los páramos de Shandalar, que yo, y ahora tú también, llamamos hogar. -advDlgCommonMainStorySpawn14=Gracias. -advDlgCommonMainStorySpawn15=Adiós. -advDlgCommonMainStorySpawn16="¡'{var=player_name}'! ¡Siento que el hechizo de los Guardianes se debilita! Derrótalos a todos y aún podrás salvarnos." -advDlgCommonMainStorySpawn17="Adiós." -advDlgCommonMainStorySpawn18="Me alegra volver a verte, '{var=player_name}'. Supongo que has tenido algo de éxito en tu misión, ¿no?" -advDlgCommonMainStorySpawn19="He derrotado a los ocupantes de los cinco castillos, pero no encontré a ningún cautivo." -advDlgCommonMainStorySpawn20="Supongo que debería haberlo explicado mejor. Los guardianes que has derrotado no eran carceleros, no directamente. Pero su mera presencia alteraba el mundo a su alrededor." -advDlgCommonMainStorySpawn21="¿Qué clase de efectos?" -advDlgCommonMainStorySpawn22="Probablemente viste una versión muy concentrada de los efectos de su presencia dentro de sus castillos. Pero además ocultaban ciertas zonas de nuestro mundo, haciendo que quedaran... ''escondidas'', a falta de un término mejor." -advDlgCommonMainStorySpawn23="El hechizo que creaba su presencia combinada provocaba sutiles trucos mentales que nos hacían pasar por alto ciertas partes de nuestro mundo. Incluidas las prisiones que sí retienen a los planeswalkers. Creo que ahora podrás encontrarlas..." -advDlgCommonMainStorySpawn24=[RED]Nota del desarrollador:[] Has llegado al final del contenido de historia disponible por ahora, pero aún queda mucho por descubrir en Shandalar. Se han añadido varias mazmorras difíciles a tu mapa del mundo, y tu colección de cartas puede seguir creciendo. -advDlgCommonMainStorySpawn25=[RED}Nota del desarrollador:[] Vuelve a hablar con este PNJ después de actualizar Forge (o atento a los anuncios en nuestro Discord) para continuar la historia cuando esté lista. ¡Y gracias por acompañarnos en esta Aventura! -advDlgCommonMainStorySpawn26=(Capítulo 1 completado) -advDlgCommonMainStorySpawn27=Hola de nuevo -advDlgCommonMainStorySpawn28=Quiero cambiar las cinco llaves de colores por un mox a mi elección y la llave de la sala de Emrakul #GameHUD.java lblReputation=Reputación #GameStage.java diff --git a/forge-gui/tools/checkAdventureTmxTranslations.py b/forge-gui/tools/checkAdventureTmxTranslations.py new file mode 100644 index 000000000000..f16896380e3e --- /dev/null +++ b/forge-gui/tools/checkAdventureTmxTranslations.py @@ -0,0 +1,158 @@ +#!/usr/bin/env python3 +""" +checkAdventureTmxTranslations.py + +Standalone-only tool for the .tmx-embedded NPC/enemy dialog translation +mechanism (see forge.adventure.util.DialogTranslations in the Java code). + +It never touches the English .tmx files. It only: + 1. Walks a maps directory (e.g. forge-gui/res/adventure/common/maps/map) + and extracts every dialogue string embedded in "dialog"/"defeatDialog" + object properties, generating the exact same stable keys the Java + runtime uses (see DialogTranslations.java's key-format docs). + 2. Optionally compares that against an existing dialog-.json + catalog and reports: + - MISSING: strings that exist in English but have no translation yet + (these silently fall back to English in-game - not a bug, but + useful to know what's left to translate). + - ORPHANED: catalog keys that no longer match anything in the current + English .tmx files (usually because the English source text/dialog + structure changed) - these are candidates for review/removal so + stale translations don't linger unnoticed. + 3. Can also just dump a skeleton catalog (English text as placeholder + values) as a starting point for translators, with --skeleton. + +Usage: + # Report translation coverage for es-ES against a maps folder: + python3 checkAdventureTmxTranslations.py \\ + --maps forge-gui/res/adventure/common/maps/map \\ + --catalog forge-gui/res/adventure/common/maps/dialog-es-ES.json + + # Generate a starting skeleton catalog (English placeholders) to translate: + python3 checkAdventureTmxTranslations.py \\ + --maps forge-gui/res/adventure/common/maps/map \\ + --skeleton > dialog-es-ES.skeleton.json +""" +import argparse +import html +import json +import sys +import xml.etree.ElementTree as ET +from pathlib import Path + + +def extract_source_strings(maps_dir: Path): + """Walks every .tmx under maps_dir and returns {key: english_text}.""" + source = {} + for tmx_path in sorted(maps_dir.rglob("*.tmx")): + try: + tree = ET.parse(tmx_path) + except ET.ParseError as e: + print(f"WARNING: could not parse {tmx_path}: {e}", file=sys.stderr) + continue + + file_name = tmx_path.name + for obj in tree.getroot().iter("object"): + obj_id = obj.get("id") + if obj_id is None: + continue + props = obj.find("properties") + if props is None: + continue + for prop in props.findall("property"): + if prop.get("name") not in ("dialog", "defeatDialog"): + continue + raw = prop.text if prop.text is not None else prop.get("value", "") + if not raw or not raw.strip(): + continue + try: + unescaped = html.unescape(raw) + dialog_tree = json.loads(unescaped) + except (json.JSONDecodeError, ValueError) as e: + print(f"WARNING: bad dialog JSON in {tmx_path} object {obj_id}: {e}", + file=sys.stderr) + continue + + base_key = f"{file_name}#{obj_id}" + for i, node in enumerate(dialog_tree): + _walk(node, f"{base_key}#{i}", source) + return source + + +def _walk(node, path, out): + if not isinstance(node, dict): + return + text = node.get("text") + if isinstance(text, str) and text.strip(): + out[f"{path}:text"] = text + name = node.get("name") + if isinstance(name, str) and name.strip(): + out[f"{path}:name"] = name + for i, option in enumerate(node.get("options", []) or []): + _walk(option, f"{path}.{i}", out) + + +def load_catalog(catalog_path: Path): + if not catalog_path.exists(): + return {} + with catalog_path.open(encoding="utf-8") as f: + data = json.load(f) + return {k: v for k, v in data.items() if not k.startswith("_")} + + +def main(): + parser = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawDescriptionHelpFormatter) + parser.add_argument("--maps", required=True, type=Path, + help="Directory containing .tmx files (searched recursively)") + parser.add_argument("--catalog", type=Path, + help="Existing dialog-.json catalog to check coverage against") + parser.add_argument("--skeleton", action="store_true", + help="Print a skeleton catalog (English placeholders) to stdout and exit") + args = parser.parse_args() + + if not args.maps.is_dir(): + print(f"error: {args.maps} is not a directory", file=sys.stderr) + sys.exit(1) + + source = extract_source_strings(args.maps) + + if args.skeleton: + skeleton = { + "_comment": "Auto-generated skeleton. Replace each value with its translation.", + } + skeleton.update(sorted(source.items())) + json.dump(skeleton, sys.stdout, ensure_ascii=False, indent=2) + print() + return + + print(f"{len(source)} translatable string(s) found across " + f"{len(list(args.maps.rglob('*.tmx')))} .tmx file(s).") + + if not args.catalog: + return + + catalog = load_catalog(args.catalog) + missing = sorted(set(source) - set(catalog)) + orphaned = sorted(set(catalog) - set(source)) + + print(f"\nCatalog: {args.catalog}") + print(f"Translated: {len(source) - len(missing)} / {len(source)}") + + if missing: + print(f"\nMISSING ({len(missing)}) - not yet translated, falls back to English:") + for key in missing: + print(f" {key}") + + if orphaned: + print(f"\nORPHANED ({len(orphaned)}) - no longer matches any English source string," + f" review/remove:") + for key in orphaned: + print(f" {key}") + + if missing or orphaned: + sys.exit(1) + + +if __name__ == "__main__": + main() From d42a4fd8e32ccbbf01cb916af590e3e63eb73d94 Mon Sep 17 00:00:00 2001 From: Churrufli Date: Sun, 23 Aug 2026 19:28:49 +0200 Subject: [PATCH 5/8] Migrate spawn.tmx dialog to the new per-locale JSON catalog; drop the now-unused loctext/locname properties keys --- .../adventure/common/maps/dialog-es-ES.json | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/forge-gui/res/adventure/common/maps/dialog-es-ES.json b/forge-gui/res/adventure/common/maps/dialog-es-ES.json index 5f0ccc046395..64e09700c327 100644 --- a/forge-gui/res/adventure/common/maps/dialog-es-ES.json +++ b/forge-gui/res/adventure/common/maps/dialog-es-ES.json @@ -494,6 +494,44 @@ "slime_hive.tmx#137#0:text": "La inscripción dice: El sistema de alcantarillado de Shandalar está en mantenimiento. Un poco de baba verde ha contaminado la red de agua. Lo tenemos totalmente bajo control y el alcantarillado volverá a funcionar enseguida.", "snowabbey_1.tmx#84#0.0:name": "Marcharse", "snowabbey_1.tmx#84#0:text": "La inscripción dice: Bienvenido a la villa pesquera de Haran", + "spawn.tmx#69#0.0.0.0.0.0.0.0.0.0:name": "(Marcharse)", + "spawn.tmx#69#0.0.0.0.0.0.0.0.0:name": "Gracias", + "spawn.tmx#69#0.0.0.0.0.0.0.0.0:text": "Ahora reabriré el portal por el que llegaste, pero no puede devolverte al lugar del que vienes. Al otro lado encontrarás los páramos de Shandalar, que yo, y ahora tú también, llamamos hogar.", + "spawn.tmx#69#0.0.0.0.0.0.0.0:name": "¿Dónde son estos concursos?", + "spawn.tmx#69#0.0.0.0.0.0.0.0:text": "Muestra la moneda a los posaderos. Si hay un grupo en el pueblo, el posadero te dirigirá hacia ellos.", + "spawn.tmx#69#0.0.0.0.0.0.0:name": "¿Qué son entonces? ¿Para qué sirven?", + "spawn.tmx#69#0.0.0.0.0.0.0:text": "Son Monedas de Desafío. Los lanzadores de hechizos de Shandalar suelen reunirse para celebrar pruebas de habilidad. Estas monedas te darán acceso a esos concursos, y los premios disponibles pueden ayudarte en tu viaje.", + "spawn.tmx#69#0.0.0.0.0.0:name": "(Continuar)", + "spawn.tmx#69#0.0.0.0.0.0:text": "Tengo algo más para ti, {var=player_name}. Toma estas monedas, pero no las gastes con mercaderes.", + "spawn.tmx#69#0.0.0.0.0.1.0:name": "(Marcharse)", + "spawn.tmx#69#0.0.0.0.0.1:name": "Gracias.", + "spawn.tmx#69#0.0.0.0.0.1:text": "Ahora reabriré el portal por el que llegaste, pero no puede devolverte al lugar del que vienes. Al otro lado encontrarás los páramos de Shandalar, que yo, y ahora tú también, llamamos hogar.", + "spawn.tmx#69#0.0.0.0.0:name": "(Continuar)", + "spawn.tmx#69#0.0.0.0.0:text": "Toma esta runa. Puedes usarla en cualquier momento para volver aquí. Ten cuidado, caminante de planos.", + "spawn.tmx#69#0.0.0.0:name": "(Continuar)", + "spawn.tmx#69#0.0.0.0:text": "Encuentra a los caminantes de planos atrapados aquí. Guíalos hasta mí, te ayudarán en tu viaje.", + "spawn.tmx#69#0.0.0:name": "(Continuar)", + "spawn.tmx#69#0.0.0:text": "Como tú, algunos caminantes de planos han sido aprisionados aquí por los guardianes de los castillos. Debes derrotarlos en combate para liberarnos de este plano. Usa tus poderes mágicos para desafiarlos.", + "spawn.tmx#69#0.0:name": "¿Por qué estoy aquí?", + "spawn.tmx#69#0.0:text": "Esto... es Shandalar. Un plano donde el maná es tan abundante y usado por todos los seres conscientes que incluso la gente común lanza hechizos a diario.", + "spawn.tmx#69#0.1:name": "Adiós.", + "spawn.tmx#69#0:text": "Hola, caminante de planos {var=player_name}.", + "spawn.tmx#69#1.0:name": "\"Adiós.\"", + "spawn.tmx#69#1:text": "\"¡{var=player_name}! ¡Siento que el hechizo de los Guardianes se debilita! Derrótalos a todos y quizá aún podamos salvarnos.\"", + "spawn.tmx#69#2.0.0.0.0.0.0:name": "(Capítulo 1 completado)", + "spawn.tmx#69#2.0.0.0.0.0:name": "(Continuar)", + "spawn.tmx#69#2.0.0.0.0.0:text": "[RED}Nota del desarrollador:[] Vuelve a hablar con este PNJ después de actualizar Forge (o atento a los anuncios en nuestro Discord) para continuar la historia cuando esté lista. ¡Y gracias por venir con nosotros en esta Aventura!", + "spawn.tmx#69#2.0.0.0.0:name": "(Continuar)", + "spawn.tmx#69#2.0.0.0.0:text": "[RED]Nota del desarrollador:[] Has llegado al final del contenido de historia disponible por ahora, pero aún queda más por descubrir en Shandalar. Se han añadido varias mazmorras difíciles a tu mapa del mundo, y tu colección de cartas puede seguir creciendo.", + "spawn.tmx#69#2.0.0.0:name": "(Continuar)", + "spawn.tmx#69#2.0.0.0:text": "\"El hechizo que creó su presencia combinada provocó sutiles trucos de la mente que nos hicieron pasar por alto partes de nuestro mundo. Incluidas las prisiones que SÍ contienen a los Caminantes de Planos. Creo que ahora podrás encontrarlas...\"", + "spawn.tmx#69#2.0.0:name": "\"¿Efectos como cuáles?\"", + "spawn.tmx#69#2.0.0:text": "\"Probablemente viste una versión muy concentrada de los efectos de su presencia dentro de sus castillos. Pero también velaron ciertas zonas de nuestro mundo, haciendo que quedaran... 'ocultas', a falta de un término mejor.\"", + "spawn.tmx#69#2.0:name": "\"He derrotado a los ocupantes de los cinco castillos, pero no encontré ningún cautivo.\"", + "spawn.tmx#69#2.0:text": "\"Supongo que debería haberlo explicado mejor. Los guardianes que has derrotado no eran captores, no directamente. Pero su mera presencia tenía efectos que alteraban el mundo.\"", + "spawn.tmx#69#2:text": "\"Me alegra volver a verte, {var=player_name}. Deduzco que has tenido cierto éxito en tu búsqueda.\"", + "spawn.tmx#69#3.0:name": "Quiero cambiar las cinco llaves de colores por un mox de mi elección y la llave de la sala de Emrakul", + "spawn.tmx#69#3:text": "Hola de nuevo", "steppe.tmx#237#0.0.0:name": "(Continuar)", "steppe.tmx#237#0.0:name": "¡Lathliss! ¡Es hora de acabar con esto!", "steppe.tmx#237#0.0:text": "Con una ráfaga de llamas rojas, la puerta se consume dejando solo cenizas a tu paso. Ya puedes pasar libremente.", From 36c19c8988cf5cf2fabb8adcc03428e655c790bc Mon Sep 17 00:00:00 2001 From: Churrufli Date: Sun, 23 Aug 2026 19:39:56 +0200 Subject: [PATCH 6/8] deleting py tools --- .../tools/checkAdventureTmxTranslations.py | 158 ---------- .../tools/updateAdventureTranslations.py | 293 ------------------ 2 files changed, 451 deletions(-) delete mode 100644 forge-gui/tools/checkAdventureTmxTranslations.py delete mode 100644 forge-gui/tools/updateAdventureTranslations.py diff --git a/forge-gui/tools/checkAdventureTmxTranslations.py b/forge-gui/tools/checkAdventureTmxTranslations.py deleted file mode 100644 index f16896380e3e..000000000000 --- a/forge-gui/tools/checkAdventureTmxTranslations.py +++ /dev/null @@ -1,158 +0,0 @@ -#!/usr/bin/env python3 -""" -checkAdventureTmxTranslations.py - -Standalone-only tool for the .tmx-embedded NPC/enemy dialog translation -mechanism (see forge.adventure.util.DialogTranslations in the Java code). - -It never touches the English .tmx files. It only: - 1. Walks a maps directory (e.g. forge-gui/res/adventure/common/maps/map) - and extracts every dialogue string embedded in "dialog"/"defeatDialog" - object properties, generating the exact same stable keys the Java - runtime uses (see DialogTranslations.java's key-format docs). - 2. Optionally compares that against an existing dialog-.json - catalog and reports: - - MISSING: strings that exist in English but have no translation yet - (these silently fall back to English in-game - not a bug, but - useful to know what's left to translate). - - ORPHANED: catalog keys that no longer match anything in the current - English .tmx files (usually because the English source text/dialog - structure changed) - these are candidates for review/removal so - stale translations don't linger unnoticed. - 3. Can also just dump a skeleton catalog (English text as placeholder - values) as a starting point for translators, with --skeleton. - -Usage: - # Report translation coverage for es-ES against a maps folder: - python3 checkAdventureTmxTranslations.py \\ - --maps forge-gui/res/adventure/common/maps/map \\ - --catalog forge-gui/res/adventure/common/maps/dialog-es-ES.json - - # Generate a starting skeleton catalog (English placeholders) to translate: - python3 checkAdventureTmxTranslations.py \\ - --maps forge-gui/res/adventure/common/maps/map \\ - --skeleton > dialog-es-ES.skeleton.json -""" -import argparse -import html -import json -import sys -import xml.etree.ElementTree as ET -from pathlib import Path - - -def extract_source_strings(maps_dir: Path): - """Walks every .tmx under maps_dir and returns {key: english_text}.""" - source = {} - for tmx_path in sorted(maps_dir.rglob("*.tmx")): - try: - tree = ET.parse(tmx_path) - except ET.ParseError as e: - print(f"WARNING: could not parse {tmx_path}: {e}", file=sys.stderr) - continue - - file_name = tmx_path.name - for obj in tree.getroot().iter("object"): - obj_id = obj.get("id") - if obj_id is None: - continue - props = obj.find("properties") - if props is None: - continue - for prop in props.findall("property"): - if prop.get("name") not in ("dialog", "defeatDialog"): - continue - raw = prop.text if prop.text is not None else prop.get("value", "") - if not raw or not raw.strip(): - continue - try: - unescaped = html.unescape(raw) - dialog_tree = json.loads(unescaped) - except (json.JSONDecodeError, ValueError) as e: - print(f"WARNING: bad dialog JSON in {tmx_path} object {obj_id}: {e}", - file=sys.stderr) - continue - - base_key = f"{file_name}#{obj_id}" - for i, node in enumerate(dialog_tree): - _walk(node, f"{base_key}#{i}", source) - return source - - -def _walk(node, path, out): - if not isinstance(node, dict): - return - text = node.get("text") - if isinstance(text, str) and text.strip(): - out[f"{path}:text"] = text - name = node.get("name") - if isinstance(name, str) and name.strip(): - out[f"{path}:name"] = name - for i, option in enumerate(node.get("options", []) or []): - _walk(option, f"{path}.{i}", out) - - -def load_catalog(catalog_path: Path): - if not catalog_path.exists(): - return {} - with catalog_path.open(encoding="utf-8") as f: - data = json.load(f) - return {k: v for k, v in data.items() if not k.startswith("_")} - - -def main(): - parser = argparse.ArgumentParser(description=__doc__, - formatter_class=argparse.RawDescriptionHelpFormatter) - parser.add_argument("--maps", required=True, type=Path, - help="Directory containing .tmx files (searched recursively)") - parser.add_argument("--catalog", type=Path, - help="Existing dialog-.json catalog to check coverage against") - parser.add_argument("--skeleton", action="store_true", - help="Print a skeleton catalog (English placeholders) to stdout and exit") - args = parser.parse_args() - - if not args.maps.is_dir(): - print(f"error: {args.maps} is not a directory", file=sys.stderr) - sys.exit(1) - - source = extract_source_strings(args.maps) - - if args.skeleton: - skeleton = { - "_comment": "Auto-generated skeleton. Replace each value with its translation.", - } - skeleton.update(sorted(source.items())) - json.dump(skeleton, sys.stdout, ensure_ascii=False, indent=2) - print() - return - - print(f"{len(source)} translatable string(s) found across " - f"{len(list(args.maps.rglob('*.tmx')))} .tmx file(s).") - - if not args.catalog: - return - - catalog = load_catalog(args.catalog) - missing = sorted(set(source) - set(catalog)) - orphaned = sorted(set(catalog) - set(source)) - - print(f"\nCatalog: {args.catalog}") - print(f"Translated: {len(source) - len(missing)} / {len(source)}") - - if missing: - print(f"\nMISSING ({len(missing)}) - not yet translated, falls back to English:") - for key in missing: - print(f" {key}") - - if orphaned: - print(f"\nORPHANED ({len(orphaned)}) - no longer matches any English source string," - f" review/remove:") - for key in orphaned: - print(f" {key}") - - if missing or orphaned: - sys.exit(1) - - -if __name__ == "__main__": - main() diff --git a/forge-gui/tools/updateAdventureTranslations.py b/forge-gui/tools/updateAdventureTranslations.py deleted file mode 100644 index 635cf107f235..000000000000 --- a/forge-gui/tools/updateAdventureTranslations.py +++ /dev/null @@ -1,293 +0,0 @@ -#!/usr/bin/env python3 - -import argparse -import copy -import json -import os -import sys - -TOOLS_DIR = os.path.abspath(os.path.dirname(__file__)) -DEFAULT_ADVENTURE_DIR = os.path.join(TOOLS_DIR, "..", "res", "adventure") - -TRANSLATABLE_FIELDS = { - "name", "text", "description", "displayName", "rewardDescription", - "synopsis", "bossIntro", "bossInsult", "comment", -} - -IDENTITY_FIELDS = ("id", "name") - - -def is_prose(value): - return isinstance(value, str) and value.strip() != "" - - -def entry_identity(entry, index): - if isinstance(entry, dict): - for field in IDENTITY_FIELDS: - if field in entry and entry[field] not in (None, ""): - return f"{field}={entry[field]}" - return f"index={index}" - - -def collect_prose(node, path, out): - if isinstance(node, dict): - for key, value in node.items(): - child = f"{path}.{key}" if path else key - if key in TRANSLATABLE_FIELDS and is_prose(value): - out[child] = value - else: - collect_prose(value, child, out) - elif isinstance(node, list): - for i, value in enumerate(node): - collect_prose(value, f"{path}[{i}]", out) - - -def load_json(path): - with open(path, encoding="utf-8") as f: - return json.load(f) - - -def save_json(path, data): - with open(path, "w", encoding="utf-8") as f: - json.dump(data, f, ensure_ascii=False, indent=2) - f.write("\n") - - -def merge_missing(base_node, translated_node): - """Fill gaps in translated_node using base_node's English content. - - Never touches a value that is already present in translated_node, even - if it looks untranslated (still English, empty, etc.) - only adds what - is genuinely absent, so existing translator work is never overwritten. - Returns (merged_node, added_count). - """ - if isinstance(base_node, dict): - if not isinstance(translated_node, dict): - return copy.deepcopy(base_node), count_leaves(base_node) - result = dict(translated_node) - added = 0 - for key, base_value in base_node.items(): - if key in result: - merged, sub_added = merge_missing(base_value, result[key]) - result[key] = merged - added += sub_added - else: - result[key] = copy.deepcopy(base_value) - added += count_leaves(base_value) - return result, added - if isinstance(base_node, list): - translated_list = translated_node if isinstance(translated_node, list) else [] - result = [] - added = 0 - for i, base_item in enumerate(base_node): - if i < len(translated_list): - merged, sub_added = merge_missing(base_item, translated_list[i]) - result.append(merged) - added += sub_added - else: - result.append(copy.deepcopy(base_item)) - added += count_leaves(base_item) - return result, added - return translated_node, 0 - - -def count_leaves(node): - if isinstance(node, dict): - return sum(count_leaves(v) for v in node.values()) - if isinstance(node, list): - return sum(count_leaves(v) for v in node) - return 1 - - -def fix_translation(base_path, translated_path): - base = load_json(base_path) - translated = load_json(translated_path) - if not isinstance(base, list) or not isinstance(translated, list): - return None, None - - translated_by_id = {} - for i, entry in enumerate(translated): - translated_by_id[entry_identity(entry, i)] = entry - - new_list = [] - created_entries = 0 - patched_fields = 0 - for i, base_entry in enumerate(base): - key = entry_identity(base_entry, i) - translated_entry = translated_by_id.get(key) - if translated_entry is None: - new_list.append(copy.deepcopy(base_entry)) - created_entries += 1 - else: - merged, added = merge_missing(base_entry, translated_entry) - new_list.append(merged) - patched_fields += added - - # Preserve any translated entries that no longer match a base entry - # (e.g. renamed/removed upstream) instead of silently dropping them. - base_ids = {entry_identity(entry, i) for i, entry in enumerate(base)} - for i, entry in enumerate(translated): - if entry_identity(entry, i) not in base_ids: - new_list.append(entry) - - if created_entries or patched_fields: - save_json(translated_path, new_list) - return created_entries, patched_fields - - -def compare(base_path, translated_path): - base = load_json(base_path) - translated = load_json(translated_path) - - if not isinstance(base, list) or not isinstance(translated, list): - return None, None, None - - base_by_id = {} - for i, entry in enumerate(base): - base_by_id[entry_identity(entry, i)] = entry - translated_by_id = {} - for i, entry in enumerate(translated): - translated_by_id[entry_identity(entry, i)] = entry - - missing = [k for k in base_by_id if k not in translated_by_id] - orphaned = [k for k in translated_by_id if k not in base_by_id] - - changed = [] - for key, base_entry in base_by_id.items(): - translated_entry = translated_by_id.get(key) - if translated_entry is None: - continue - base_prose = {} - translated_prose = {} - collect_prose(base_entry, "", base_prose) - collect_prose(translated_entry, "", translated_prose) - for prose_path in base_prose: - if prose_path not in translated_prose: - changed.append((key, prose_path, "missing in translation")) - for prose_path in translated_prose: - if prose_path not in base_prose: - changed.append((key, prose_path, "no longer in source")) - - return missing, orphaned, changed - - -def is_translation_of_existing(data_dir, filename): - stem, ext = os.path.splitext(filename) - if "-" not in stem: - return False - base_filename = stem.split("-", 1)[0] + ext - return base_filename != filename and os.path.isfile(os.path.join(data_dir, base_filename)) - - -def find_translations(data_dir, filename, lang): - stem, ext = os.path.splitext(filename) - if lang != "all": - path = os.path.join(data_dir, f"{stem}-{lang}{ext}") - return [(lang, path)] if os.path.isfile(path) else [] - prefix = stem + "-" - found = [] - for other in sorted(os.listdir(data_dir)): - if other.startswith(prefix) and other.endswith(ext) and other != filename: - found.append((other[len(prefix):-len(ext)], os.path.join(data_dir, other))) - return found - - -def report(world_dir, lang, fix): - world_name = os.path.basename(world_dir.rstrip(os.sep)) - data_dir = os.path.join(world_dir, "world") - if not os.path.isdir(data_dir): - return 0 - - problems = 0 - for filename in sorted(os.listdir(data_dir)): - if not filename.endswith(".json") or is_translation_of_existing(data_dir, filename): - continue - base_path = os.path.join(data_dir, filename) - for translation_lang, translated_path in find_translations(data_dir, filename, lang): - if fix: - created, patched = fix_translation(base_path, translated_path) - if created is None: - print(f"[{world_name}/{filename}] skipped (not a list of entries)") - continue - if created or patched: - print(f"[{world_name}/{filename} -> {translation_lang}] " - f"created {created} missing entries, filled {patched} missing fields " - f"(English placeholder text, ready for a translator)") - continue - - missing, orphaned, changed = compare(base_path, translated_path) - if missing is None: - print(f"[{world_name}/{filename}] skipped (not a list of entries)") - continue - - print(f"\n[{world_name}/{filename} -> {translation_lang}]") - if missing: - problems += len(missing) - print(f" {len(missing)} entries in English but MISSING from the translation " - f"(players using {translation_lang} will not see these at all):") - for key in missing[:20]: - print(f" - {key}") - if len(missing) > 20: - print(f" ... and {len(missing) - 20} more") - if orphaned: - problems += len(orphaned) - print(f" {len(orphaned)} entries in the translation that no longer exist in English:") - for key in orphaned[:20]: - print(f" - {key}") - if len(orphaned) > 20: - print(f" ... and {len(orphaned) - 20} more") - if changed: - problems += len(changed) - print(f" {len(changed)} structural differences (text added or removed since translating):") - for key, prose_path, why in changed[:20]: - print(f" - {key}: {prose_path} ({why})") - if len(changed) > 20: - print(f" ... and {len(changed) - 20} more") - if not missing and not orphaned and not changed: - print(" up to date") - - return problems - - -def main(): - parser = argparse.ArgumentParser( - description="Report drift between an Adventure world's English data files " - "and their per-language translations (-.json).") - parser.add_argument("--adventure-dir", default=DEFAULT_ADVENTURE_DIR) - parser.add_argument("--lang", default="all", - help="Language code to check, e.g. es-ES, or 'all' to check " - "every -.json variant found (default: all)") - parser.add_argument("--world", default=None, - help="Only check this world (default: all worlds)") - parser.add_argument("--fix", action="store_true", - help="Instead of just reporting, create missing entries/fields in " - "existing translation files using the English text as a " - "placeholder, ready for a translator to fill in. Never touches " - "or removes content that is already there.") - args = parser.parse_args() - - adventure_dir = os.path.abspath(args.adventure_dir) - if not os.path.isdir(adventure_dir): - print(f"not found: {adventure_dir}") - sys.exit(1) - - worlds = sorted(d for d in os.listdir(adventure_dir) - if os.path.isdir(os.path.join(adventure_dir, d))) - if args.world: - worlds = [w for w in worlds if w == args.world] - if not worlds: - print(f"world not found: {args.world}") - sys.exit(1) - - total = 0 - for world in worlds: - total += report(os.path.join(adventure_dir, world), args.lang, args.fix) - - if args.fix: - sys.exit(0) - print(f"\ntotal problems: {total}") - sys.exit(1 if total else 0) - - -if __name__ == "__main__": - main() From 0a575a7ab2db8f3dd41f79bed620b2e206ae870a Mon Sep 17 00:00:00 2001 From: Churrufli Date: Sun, 23 Aug 2026 23:09:01 +0200 Subject: [PATCH 7/8] cleaning --- .../adventure/util/DialogTranslations.java | 58 +------------------ .../src/forge/adventure/util/MapDialog.java | 7 --- .../adventure/common/maps/dialog-es-ES.json | 1 - 3 files changed, 2 insertions(+), 64 deletions(-) diff --git a/forge-gui-mobile/src/forge/adventure/util/DialogTranslations.java b/forge-gui-mobile/src/forge/adventure/util/DialogTranslations.java index 1b9b634c1b79..56966edfa3b7 100644 --- a/forge-gui-mobile/src/forge/adventure/util/DialogTranslations.java +++ b/forge-gui-mobile/src/forge/adventure/util/DialogTranslations.java @@ -9,46 +9,6 @@ import java.util.HashMap; import java.util.Map; -/** - * DialogTranslations - * - * Applies optional per-locale translations to dialogue trees parsed from the - * "dialog"/"defeatDialog" JSON blocks embedded directly in .tmx map files. - * - * Design goals: - * - The English .tmx files are the single source of truth and are NEVER - * duplicated or modified by this mechanism. Map/gameplay data (tiles, - * object positions, enemy stats, etc.) only ever exists once, in English, - * so it can never drift between languages. - * - Translators work in a small, separate, per-locale JSON catalog - * ("dialog-<locale>.json") that sits next to the maps. English - * maintainers never need to know it exists, and never touch it. - * - Any string with no entry in the catalog - including the case where the - * catalog file itself doesn't exist for the current locale - silently - * falls back to the English text already embedded in the .tmx. Missing or - * partial translations can never break the game or show blank text. - * - * Catalog file format (flat JSON object, key -> translated string): - * { - * "aerie_0.tmx#92#0:text": "Bienvenido {var=player_name}, veo que...", - * "aerie_0.tmx#92#0.0:name": "¿Quién eres?", - * "aerie_0.tmx#92#0.0:text": "Soy un trabajador del gremio del aviario..." - * } - * - * Key format: "<tmxFileName>#<objectId>#<dialogPath>:<field>" - * - tmxFileName: the .tmx file's own name (no directory), e.g. "aerie_0.tmx". - * - objectId: the numeric "id" of the map object the dialog is attached to - * (the same id libGDX's Tiled loader exposes as the "id" property). - * - dialogPath: position within the dialog tree, root index then each - * nested "options" index separated by '.', e.g. "0.1.2". - * - field: either "text" or "name", matching DialogData's text/name fields. - * - * This exact key scheme is also implemented by - * forge-gui/tools/checkAdventureTmxTranslations.py, which can generate a - * catalog skeleton from the current English .tmx files and report any - * catalog entries that are missing or orphaned (e.g. because the English - * source text changed) so translations never silently go stale. - */ public class DialogTranslations { private static final String CATALOG_SUBDIR = "maps/"; @@ -56,18 +16,11 @@ public class DialogTranslations { private DialogTranslations() {} - /** - * Applies any available translations, in place, to a freshly parsed - * dialog tree. Safe to call with a null/empty sourceMapFile (e.g. for - * dialogs built directly in Java code, or already localized through - * quests.json/shops.json's own per-language file mechanism) - in that - * case this is a no-op. - */ public static void apply(String sourceMapFile, int parentID, Array roots) { if (sourceMapFile == null || sourceMapFile.isEmpty() || roots == null || roots.size == 0) return; Map catalog = getCatalog(); - if (catalog.isEmpty()) return; // English, or no catalog for the current locale: nothing to translate. + if (catalog.isEmpty()) return; String baseKey = fileBaseName(sourceMapFile) + "#" + parentID; for (int i = 0; i < roots.size; i++) { @@ -99,12 +52,6 @@ private static String fileBaseName(String path) { return slash >= 0 ? name.substring(slash + 1) : name; } - /** - * Loads (and caches) the translation catalog for the current UI - * language, merging the shared "common" maps catalog with the current - * plane's own catalog if both exist. Returns an empty map - never null - - * when nothing is found, e.g. when running in English. - */ private static Map getCatalog() { String lang = Config.instance().getLang(); Map cached = catalogCache.get(lang); @@ -120,7 +67,7 @@ private static Map getCatalog() { private static void loadCatalogFile(String path, Map target) { FileHandle file = new FileHandle(path); - if (!file.exists()) return; // No catalog for this locale here yet: silently skip, fall back to English. + if (!file.exists()) return; try { JsonValue root = new JsonReader().parse(file); for (JsonValue entry = root.child; entry != null; entry = entry.next) { @@ -133,7 +80,6 @@ private static void loadCatalogFile(String path, Map target) { } } - /** Clears the cache. Call this if the UI language changes at runtime. */ public static void reset() { catalogCache.clear(); } diff --git a/forge-gui-mobile/src/forge/adventure/util/MapDialog.java b/forge-gui-mobile/src/forge/adventure/util/MapDialog.java index 1f098a87900b..224637af6baa 100644 --- a/forge-gui-mobile/src/forge/adventure/util/MapDialog.java +++ b/forge-gui-mobile/src/forge/adventure/util/MapDialog.java @@ -64,13 +64,6 @@ public MapDialog(String S, MapStage stage, int parentID) { this(S, stage, parentID, null); } - /** - * @param sourceMapFile The .tmx file this dialog JSON was embedded in (e.g. - * "aerie_0.tmx"), used to look up optional translations - * via DialogTranslations. Pass null when the dialog - * isn't sourced from a .tmx (no translation lookup is - * attempted in that case). - */ public MapDialog(String S, MapStage stage, int parentID, String sourceMapFile) { this.stage = stage; this.parentID = parentID; diff --git a/forge-gui/res/adventure/common/maps/dialog-es-ES.json b/forge-gui/res/adventure/common/maps/dialog-es-ES.json index 64e09700c327..180e0b39be41 100644 --- a/forge-gui/res/adventure/common/maps/dialog-es-ES.json +++ b/forge-gui/res/adventure/common/maps/dialog-es-ES.json @@ -1,5 +1,4 @@ { - "_comment": "Catalogo de traducciones (es-ES) para dialogos de PNJ/enemigos embebidos en los .tmx bajo esta carpeta. No es un fichero .properties: solo cadenas de dialogo, generadas y verificadas con forge-gui/tools/checkAdventureTmxTranslations.py. Cualquier clave ausente cae automaticamente al ingles embebido en el .tmx.", "aerie_0.tmx#92#0.0.0.0:name": "Gracias por la información. Adiós.", "aerie_0.tmx#92#0.0.0.0:text": "Marcharse", "aerie_0.tmx#92#0.0.0:name": "¿Puedo entrar en el aviario?", From 3d45ac83431aab8ea40d9f7cc8542adc4508845d Mon Sep 17 00:00:00 2001 From: Churrufli Date: Mon, 24 Aug 2026 00:26:12 +0200 Subject: [PATCH 8/8] updates --- .../forge/adventure/scene/NewGameScene.java | 88 ++++++++++--------- .../src/forge/adventure/stage/GameHUD.java | 2 +- .../util/AdventureQuestController.java | 15 ++-- forge-gui/res/languages/de-DE.properties | 41 +++++++++ forge-gui/res/languages/en-US.properties | 41 +++++++++ forge-gui/res/languages/es-ES.properties | 42 ++++++++- forge-gui/res/languages/fr-FR.properties | 41 +++++++++ forge-gui/res/languages/it-IT.properties | 41 +++++++++ forge-gui/res/languages/ja-JP.properties | 41 +++++++++ forge-gui/res/languages/ko-KR.properties | 41 +++++++++ forge-gui/res/languages/pt-BR.properties | 41 +++++++++ forge-gui/res/languages/ru-RU.properties | 41 +++++++++ forge-gui/res/languages/zh-CN.properties | 40 +++++++++ 13 files changed, 464 insertions(+), 51 deletions(-) diff --git a/forge-gui-mobile/src/forge/adventure/scene/NewGameScene.java b/forge-gui-mobile/src/forge/adventure/scene/NewGameScene.java index f964aa82c84e..73c76ef26173 100644 --- a/forge-gui-mobile/src/forge/adventure/scene/NewGameScene.java +++ b/forge-gui-mobile/src/forge/adventure/scene/NewGameScene.java @@ -27,6 +27,7 @@ import forge.player.GamePlayerUtil; import forge.screens.TransitionScreen; import forge.sound.SoundSystem; +import forge.util.Localizer; import forge.util.NameGenerator; import java.util.Random; @@ -398,48 +399,48 @@ public void enter() { } private void showDifficultyHelp() { + Localizer localizer = Forge.getLocalizer(); DifficultyData selectedDifficulty = Config.instance().getConfigData().difficulties[difficulty.getCurrentIndex()]; boolean enableGeneticAI = Config.instance().getConfigData().enableGeneticAI; String startingEquipment = selectedDifficulty.startItems == null || selectedDifficulty.startItems.length == 0 - ? "None" + ? localizer.getMessage("lblNone") : String.join(", ", selectedDifficulty.startItems); difficultySummary = new DialogData(); - difficultySummary.name = "Summary"; + difficultySummary.name = localizer.getMessage("lblSummary"); switch (selectedDifficulty.name) { case "Easy": - difficultySummary.text = String.format("Difficulty: %s\nFor newer players or those who want a relaxed experience.\nStarter decks are monocolored.\nStarting equipment: %s", selectedDifficulty.name, startingEquipment); + difficultySummary.text = localizer.getMessage("advDifficultySummaryEasy", selectedDifficulty.name, startingEquipment); break; case "Normal": - difficultySummary.text = String.format("Difficulty: %s\nHow Adventure Mode is intended to be played.\nStarter decks will include a second color.\nStarting equipment: %s", selectedDifficulty.name, startingEquipment); + difficultySummary.text = localizer.getMessage("advDifficultySummaryNormal", selectedDifficulty.name, startingEquipment); break; case "Hard": if (enableGeneticAI) { - difficultySummary.text = String.format("Difficulty: %s\nFor players who want a challenge.\nSome enemies will use genetic AI decks.\nStarter decks will include 2-3 colors.\nStarting equipment: %s", selectedDifficulty.name, startingEquipment); + difficultySummary.text = localizer.getMessage("advDifficultySummaryHardGenetic", selectedDifficulty.name, startingEquipment); } else { - difficultySummary.text = String.format("Difficulty: %s\nFor players who want a challenge.\nStarter decks will include 2-3 colors.\nStarting equipment: %s", selectedDifficulty.name, startingEquipment); + difficultySummary.text = localizer.getMessage("advDifficultySummaryHard", selectedDifficulty.name, startingEquipment); } break; case "Insane": - difficultySummary.text = String.format("Difficulty: %s\nFor players who don't want to like the game.\nIdentical to Hard difficulty, but with even less forgiving and rewarding results.\nStarter decks will include 2-3 colors.\nStarting equipment: %s", selectedDifficulty.name, startingEquipment); + difficultySummary.text = localizer.getMessage("advDifficultySummaryInsane", selectedDifficulty.name, startingEquipment); break; default: - difficultySummary.text = "((Custom difficulty settings))"; + difficultySummary.text = localizer.getMessage("advDifficultySummaryCustom"); break; } DialogData dismiss = new DialogData(); - //todo: add translation - dismiss.name = "OK"; + dismiss.name = localizer.getMessage("lblOK"); DialogData matchImpacts = new DialogData(); - matchImpacts.text = String.format("Difficulty: %s\nStarting Life: %d\nEnemy Health: %d%%\nGold loss on defeat: %d%%\nLife loss on defeat: %d%%", selectedDifficulty.name, selectedDifficulty.startingLife, (int) (selectedDifficulty.enemyLifeFactor * 100), (int) (selectedDifficulty.goldLoss * 100), (int) (selectedDifficulty.lifeLoss * 100)); - matchImpacts.name = "Duels"; + matchImpacts.text = localizer.getMessage("advDifficultyMatchImpacts", selectedDifficulty.name, selectedDifficulty.startingLife, (int) (selectedDifficulty.enemyLifeFactor * 100), (int) (selectedDifficulty.goldLoss * 100), (int) (selectedDifficulty.lifeLoss * 100)); + matchImpacts.name = localizer.getMessage("lblDuels"); DialogData economyImpacts = new DialogData(); - economyImpacts.text = String.format("Difficulty: %s\nStarting Gold: %d\nStarting Mana Shards: %d\nCard Sale Price: %d%%\nMana Shard Sale Price: %d%%\nRandom loot rate: %d%%", selectedDifficulty.name, selectedDifficulty.startingMoney, selectedDifficulty.startingShards, (int) (selectedDifficulty.sellFactor * 100), (int) (selectedDifficulty.shardSellRatio * 100), (int) (selectedDifficulty.rewardMaxFactor * 100)); - economyImpacts.name = "Economy"; + economyImpacts.text = localizer.getMessage("advDifficultyEconomyImpacts", selectedDifficulty.name, selectedDifficulty.startingMoney, selectedDifficulty.startingShards, (int) (selectedDifficulty.sellFactor * 100), (int) (selectedDifficulty.shardSellRatio * 100), (int) (selectedDifficulty.rewardMaxFactor * 100)); + economyImpacts.name = localizer.getMessage("lblEconomy"); difficultySummary.options = new DialogData[3]; difficultySummary.options[0] = matchImpacts; @@ -459,103 +460,104 @@ private void showDifficultyHelp() { private void showModeHelp() { + Localizer localizer = Forge.getLocalizer(); AdventureModes selectedMode = modes.get(mode.getCurrentIndex()); DifficultyData selectedDifficulty = Config.instance().getConfigData().difficulties[difficulty.getCurrentIndex()]; boolean enableGeneticAI = Config.instance().getConfigData().enableGeneticAI; modeSummary = new DialogData(); - modeSummary.name = "Summary"; + modeSummary.name = localizer.getMessage("lblSummary"); StringBuilder summaryText = new StringBuilder(); switch (selectedMode) { case Standard: - summaryText.append("Mode: Standard\n\nYour starting deck is built from 2-3 Jumpstart packs of twenty cards each.\n\n"); + summaryText.append(localizer.getMessage("advModeStandardSummary")); switch (selectedDifficulty.name) { case "Easy": - summaryText.append("On your currently selected difficulty, Easy, you will receive three jumpstart packs of your chosen color."); + summaryText.append(localizer.getMessage("advDiffEasyStandard")); break; case "Normal": - summaryText.append("On your currently selected difficulty, Normal, you will receive two jumpstart packs of your chosen color and one of an allied color."); + summaryText.append(localizer.getMessage("advDiffNormalStandard")); break; case "Hard": - summaryText.append("On your currently selected difficulty, Hard, you will receive one jumpstart pack of your chosen color and one of an allied color."); + summaryText.append(localizer.getMessage("advDiffHardStandard")); break; case "Insane": - summaryText.append("On your currently selected difficulty, Insane, you will receive one jumpstart pack of your chosen color and one of an allied color."); + summaryText.append(localizer.getMessage("advDiffInsaneStandard")); break; default: - difficultySummary.text = "((Cannot determine starter deck based on custom difficulty settings))"; + difficultySummary.text = localizer.getMessage("advCannotDetermineStarterDeck"); break; } break; case Constructed: - summaryText.append("Mode: Constructed\n\nYou will receive a specific preconstructed deck based on your chosen color and difficulty.\n\n"); + summaryText.append(localizer.getMessage("advModeConstructedSummary")); switch (selectedDifficulty.name) { case "Easy": - summaryText.append("On your currently selected difficulty, Easy, your deck will only contain your chosen color."); + summaryText.append(localizer.getMessage("advDiffEasyConstructed")); break; case "Normal": - summaryText.append("On your currently selected difficulty, Normal, your deck will contain your chosen color and one allied color."); + summaryText.append(localizer.getMessage("advDiffNormalConstructed")); break; case "Hard": - summaryText.append("On your currently selected difficulty, Hard, your deck will contain your chosen color and one opposing color."); + summaryText.append(localizer.getMessage("advDiffHardConstructed")); break; case "Insane": - summaryText.append("On your currently selected difficulty, Insane, your deck will contain your chosen color and one opposing color."); + summaryText.append(localizer.getMessage("advDiffInsaneConstructed")); break; default: - difficultySummary.text = "((Cannot determine starter deck based on custom difficulty settings))"; + difficultySummary.text = localizer.getMessage("advCannotDetermineStarterDeck"); break; } break; case Pile: - summaryText.append("Mode: Pile\n\nYou will receive a random pile of cards based on your chosen color and difficulty.\n\n"); + summaryText.append(localizer.getMessage("advModePileSummary")); switch (selectedDifficulty.name) { case "Easy": - summaryText.append("On your currently selected difficulty, Easy, your deck will only contain your chosen color and one allied color."); + summaryText.append(localizer.getMessage("advDiffEasyPile")); break; case "Normal": - summaryText.append("On your currently selected difficulty, Normal, your deck will contain your chosen color and two allied colors."); + summaryText.append(localizer.getMessage("advDiffNormalPile")); break; case "Hard": - summaryText.append("On your currently selected difficulty, Hard, your deck will contain your chosen color and two allied colors.\n\n"); - summaryText.append("You will receive less uncommon and rare cards than on Normal difficulty."); + summaryText.append(localizer.getMessage("advDiffHardPile")); + summaryText.append(localizer.getMessage("advPileLessRareReward")); break; case "Insane": - summaryText.append("On your currently selected difficulty, Insane, your deck will contain your chosen color and two allied colors.\n\n"); - summaryText.append("You will receive less uncommon and rare cards than on Normal difficulty."); + summaryText.append(localizer.getMessage("advDiffInsanePile")); + summaryText.append(localizer.getMessage("advPileLessRareReward")); break; default: - difficultySummary.text = "((Cannot determine starter deck based on custom difficulty settings))"; + difficultySummary.text = localizer.getMessage("advCannotDetermineStarterDeck"); break; } break; case Chaos: - summaryText.append("Mode: Chaos\n\nYou (and all enemies) will receive a random preconstructed deck.\n\nWarning: This will make encounter difficulty vary wildly from the developers' intent"); + summaryText.append(localizer.getMessage("advModeChaosSummary")); break; case Custom: if (enableGeneticAI) { - summaryText.append("Mode: Custom\n\nChoose your own preconstructed deck. Enemies can receive a random genetic AI deck (difficult).\n\nWarning: This will make encounter difficulty vary wildly from the developers' intent"); + summaryText.append(localizer.getMessage("advModeCustomGeneticSummary")); } else { - summaryText.append("Mode: Custom\n\nChoose your own preconstructed deck."); + summaryText.append(localizer.getMessage("advModeCustomSummary")); } break; case Precon: - summaryText.append("Mode: Precon\n\nYou will receive a specific preconstructed deck. You can choose a random or a specific preconstructed deck from an edition of your choice.\n\n"); + summaryText.append(localizer.getMessage("advModePreconSummary")); break; case Commander: - summaryText.append("Mode: Commander\n\nYou will be given a preconstructed commander deck based on the chosen color theme to start the playthrough.\n\nGood luck on your quest of creating a coherent deck that can win consistently and defeat the bosses."); + summaryText.append(localizer.getMessage("advModeCommanderSummary")); break; case CommanderPrecon: - summaryText.append("Mode: Commander Precon\n\nChoose a named commander preconstructed deck to start the playthrough.\n\nThis uses Commander deckbuilding and game rules, but lets you pick from the curated commander precon folder."); + summaryText.append(localizer.getMessage("advModeCommanderPreconSummary")); break; default: - summaryText.append("No summary available for this game mode."); + summaryText.append(localizer.getMessage("advNoModeSummaryAvailable")); break; } DialogData dismiss = new DialogData(); - dismiss.name = "OK"; + dismiss.name = localizer.getMessage("lblOK"); modeSummary.text = summaryText.toString(); modeSummary.options = new DialogData[1]; modeSummary.options[0] = dismiss; diff --git a/forge-gui-mobile/src/forge/adventure/stage/GameHUD.java b/forge-gui-mobile/src/forge/adventure/stage/GameHUD.java index ccb3a5b51a69..fc2834cf74b9 100644 --- a/forge-gui-mobile/src/forge/adventure/stage/GameHUD.java +++ b/forge-gui-mobile/src/forge/adventure/stage/GameHUD.java @@ -395,7 +395,7 @@ public void enter() { case "town": if (MapStage.getInstance().isInMap()) { int rep = TileMapScene.instance().getPointOfInterestChanges().getMapReputation(); - String reputationText = TileMapScene.instance().rootPoint.getDisplayName() + "\nReputation: " + (rep > 0 ? "[GREEN]" : rep < 0 ? "[RED]" : "[WHITE]") + rep + "[/]"; + String reputationText = TileMapScene.instance().rootPoint.getDisplayName() + "\n" + Forge.getLocalizer().getMessage("advReputation") + ": " + (rep > 0 ? "[GREEN]" : rep < 0 ? "[RED]" : "[WHITE]") + rep + "[/]"; if (fromWorldMap) { addNotification(reputationText); fromWorldMap = false; diff --git a/forge-gui-mobile/src/forge/adventure/util/AdventureQuestController.java b/forge-gui-mobile/src/forge/adventure/util/AdventureQuestController.java index a85c771df107..8fa14b3fb925 100644 --- a/forge-gui-mobile/src/forge/adventure/util/AdventureQuestController.java +++ b/forge-gui-mobile/src/forge/adventure/util/AdventureQuestController.java @@ -7,6 +7,7 @@ import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.Json; import com.badlogic.gdx.utils.Timer; +import forge.Forge; import forge.adventure.character.EnemySprite; import forge.adventure.data.*; import forge.adventure.pointofintrest.PointOfInterest; @@ -16,6 +17,7 @@ import forge.adventure.stage.MapStage; import forge.adventure.world.WorldSave; import forge.util.Aggregates; +import forge.util.Localizer; import java.io.Serializable; import java.time.LocalDate; @@ -558,6 +560,7 @@ public void abandon(AdventureQuestData quest){ } public AdventureQuestData getQuestNPCResponse(String pointID, PointOfInterestChanges changes, String questOrigin) { + Localizer localizer = Forge.getLocalizer(); AdventureQuestData ret; for (AdventureQuestData q : Current.player().getQuests()) { @@ -566,9 +569,9 @@ public AdventureQuestData getQuestNPCResponse(String pointID, PointOfInterestCha if (q.sourceID.equals(pointID)) { //remind player about current active side quest DialogData response = new DialogData(); - response.text = "\"You haven't finished the last thing we asked you to do!\" (" + q.name +") "; + response.text = localizer.getMessage("advQuestNotFinished", q.name); DialogData dismiss = new DialogData(); - dismiss.name = "\"Oh, right, let me go take care of that.\""; + dismiss.name = localizer.getMessage("advQuestGoTakeCareOfThat"); response.options = new DialogData[]{dismiss}; ret = new AdventureQuestData(); ret.offerDialog = response; @@ -578,9 +581,9 @@ public AdventureQuestData getQuestNPCResponse(String pointID, PointOfInterestCha if (nextQuestDate.containsKey(pointID) && nextQuestDate.get(pointID) >= LocalDate.now().toEpochDay()){ //No more side quests available here today due to previous activity DialogData response = new DialogData(); - response.text = "\"We don't have anything new for you to do right now. Come back tomorrow.\""; + response.text = localizer.getMessage("advQuestComeBackTomorrow"); DialogData dismiss = new DialogData(); - dismiss.name = "\"Okay.\" (Leave)"; + dismiss.name = localizer.getMessage("advOkayLeave"); response.options = new DialogData[]{dismiss}; ret = new AdventureQuestData(); ret.offerDialog = response; @@ -590,9 +593,9 @@ public AdventureQuestData getQuestNPCResponse(String pointID, PointOfInterestCha if (tooManyQuests(Current.player().getQuests())) { //No more side quests available here today, too many active DialogData response = new DialogData(); - response.text = "\"Adventurer, we need your assistance!\""; + response.text = localizer.getMessage("advQuestNeedAssistance"); DialogData dismiss = new DialogData(); - dismiss.name = "\"I can't, I have far too many things to do right now\" (Your quest log is too full already) (Leave)"; + dismiss.name = localizer.getMessage("advQuestLogFull"); response.options = new DialogData[]{dismiss}; ret = new AdventureQuestData(); ret.offerDialog = response; diff --git a/forge-gui/res/languages/de-DE.properties b/forge-gui/res/languages/de-DE.properties index b3164cf0eec8..39e059466808 100644 --- a/forge-gui/res/languages/de-DE.properties +++ b/forge-gui/res/languages/de-DE.properties @@ -3936,3 +3936,44 @@ lblCommanderBracketReasonExtraTurnsFew=Weniger als 2 Extrazug-Karten erhöhen di lblCommanderBracketReasonLateGameCombo=2-Karten-Kombos im späten Spiel machen das Deck mindestens zu Gruppe 3. lblCommanderBracketReasonEarlyGameCombo=2-Karten-Kombos im frühen Spiel machen das Deck mindestens zu Gruppe 4. lblAutoSellVariantsCommander=Auto-sell variants of owned cards in Commander +advQuestNotFinished="You haven''t finished the last thing we asked you to do!" ({0}) +advQuestGoTakeCareOfThat="Oh, right, let me go take care of that." +advQuestComeBackTomorrow="We don''t have anything new for you to do right now. Come back tomorrow." +advOkayLeave="Okay." (Leave) +advQuestNeedAssistance="Adventurer, we need your assistance!" +advQuestLogFull="I can''t, I have far too many things to do right now" (Your quest log is too full already) (Leave) +advReputation=Reputation +advModeStandardSummary=Mode: Standard\n\nYour starting deck is built from 2-3 Jumpstart packs of twenty cards each.\n\n +advDiffEasyStandard=On your currently selected difficulty, Easy, you will receive three jumpstart packs of your chosen color. +advDiffNormalStandard=On your currently selected difficulty, Normal, you will receive two jumpstart packs of your chosen color and one of an allied color. +advDiffHardStandard=On your currently selected difficulty, Hard, you will receive one jumpstart pack of your chosen color and one of an allied color. +advDiffInsaneStandard=On your currently selected difficulty, Insane, you will receive one jumpstart pack of your chosen color and one of an allied color. +advCannotDetermineStarterDeck=((Cannot determine starter deck based on custom difficulty settings)) +advModeConstructedSummary=Mode: Constructed\n\nYou will receive a specific preconstructed deck based on your chosen color and difficulty.\n\n +advDiffEasyConstructed=On your currently selected difficulty, Easy, your deck will only contain your chosen color. +advDiffNormalConstructed=On your currently selected difficulty, Normal, your deck will contain your chosen color and one allied color. +advDiffHardConstructed=On your currently selected difficulty, Hard, your deck will contain your chosen color and one opposing color. +advDiffInsaneConstructed=On your currently selected difficulty, Insane, your deck will contain your chosen color and one opposing color. +advModePileSummary=Mode: Pile\n\nYou will receive a random pile of cards based on your chosen color and difficulty.\n\n +advDiffEasyPile=On your currently selected difficulty, Easy, your deck will only contain your chosen color and one allied color. +advDiffNormalPile=On your currently selected difficulty, Normal, your deck will contain your chosen color and two allied colors. +advDiffHardPile=On your currently selected difficulty, Hard, your deck will contain your chosen color and two allied colors.\n\n +advPileLessRareReward=You will receive less uncommon and rare cards than on Normal difficulty. +advDiffInsanePile=On your currently selected difficulty, Insane, your deck will contain your chosen color and two allied colors.\n\n +advModeChaosSummary=Mode: Chaos\n\nYou (and all enemies) will receive a random preconstructed deck.\n\nWarning: This will make encounter difficulty vary wildly from the developers'' intent +advModeCustomGeneticSummary=Mode: Custom\n\nChoose your own preconstructed deck. Enemies can receive a random genetic AI deck (difficult).\n\nWarning: This will make encounter difficulty vary wildly from the developers'' intent +advModeCustomSummary=Mode: Custom\n\nChoose your own preconstructed deck. +advModePreconSummary=Mode: Precon\n\nYou will receive a specific preconstructed deck. You can choose a random or a specific preconstructed deck from an edition of your choice.\n\n +advModeCommanderSummary=Mode: Commander\n\nYou will be given a preconstructed commander deck based on the chosen color theme to start the playthrough.\n\nGood luck on your quest of creating a coherent deck that can win consistently and defeat the bosses. +advModeCommanderPreconSummary=Mode: Commander Precon\n\nChoose a named commander preconstructed deck to start the playthrough.\n\nThis uses Commander deckbuilding and game rules, but lets you pick from the curated commander precon folder. +advNoModeSummaryAvailable=No summary available for this game mode. +lblSummary=Summary +lblEconomy=Economy +advDifficultySummaryEasy=Difficulty: {0}\nFor newer players or those who want a relaxed experience.\nStarter decks are monocolored.\nStarting equipment: {1} +advDifficultySummaryNormal=Difficulty: {0}\nHow Adventure Mode is intended to be played.\nStarter decks will include a second color.\nStarting equipment: {1} +advDifficultySummaryHardGenetic=Difficulty: {0}\nFor players who want a challenge.\nSome enemies will use genetic AI decks.\nStarter decks will include 2-3 colors.\nStarting equipment: {1} +advDifficultySummaryHard=Difficulty: {0}\nFor players who want a challenge.\nStarter decks will include 2-3 colors.\nStarting equipment: {1} +advDifficultySummaryInsane=Difficulty: {0}\nFor players who don''t want to like the game.\nIdentical to Hard difficulty, but with even less forgiving and rewarding results.\nStarter decks will include 2-3 colors.\nStarting equipment: {1} +advDifficultySummaryCustom=((Custom difficulty settings)) +advDifficultyMatchImpacts=Difficulty: {0}\nStarting Life: {1}\nEnemy Health: {2}%\nGold loss on defeat: {3}%\nLife loss on defeat: {4}% +advDifficultyEconomyImpacts=Difficulty: {0}\nStarting Gold: {1}\nStarting Mana Shards: {2}\nCard Sale Price: {3}%\nMana Shard Sale Price: {4}%\nRandom loot rate: {5}% diff --git a/forge-gui/res/languages/en-US.properties b/forge-gui/res/languages/en-US.properties index d1907fdae538..1c600b7c55a2 100644 --- a/forge-gui/res/languages/en-US.properties +++ b/forge-gui/res/languages/en-US.properties @@ -3627,3 +3627,44 @@ lblCommanderBracketReasonExtraTurnsFew=Fewer than 2 Extra Turn cards do not rais lblCommanderBracketReasonLateGameCombo=Late Game 2-card combos make the deck at least Bracket 3. lblCommanderBracketReasonEarlyGameCombo=Early Game 2-card combos make the deck at least Bracket 4. lblAutoSellVariantsCommander=Auto-sell variants of owned cards in Commander +advQuestNotFinished="You haven''t finished the last thing we asked you to do!" ({0}) +advQuestGoTakeCareOfThat="Oh, right, let me go take care of that." +advQuestComeBackTomorrow="We don''t have anything new for you to do right now. Come back tomorrow." +advOkayLeave="Okay." (Leave) +advQuestNeedAssistance="Adventurer, we need your assistance!" +advQuestLogFull="I can''t, I have far too many things to do right now" (Your quest log is too full already) (Leave) +advReputation=Reputation +advModeStandardSummary=Mode: Standard\n\nYour starting deck is built from 2-3 Jumpstart packs of twenty cards each.\n\n +advDiffEasyStandard=On your currently selected difficulty, Easy, you will receive three jumpstart packs of your chosen color. +advDiffNormalStandard=On your currently selected difficulty, Normal, you will receive two jumpstart packs of your chosen color and one of an allied color. +advDiffHardStandard=On your currently selected difficulty, Hard, you will receive one jumpstart pack of your chosen color and one of an allied color. +advDiffInsaneStandard=On your currently selected difficulty, Insane, you will receive one jumpstart pack of your chosen color and one of an allied color. +advCannotDetermineStarterDeck=((Cannot determine starter deck based on custom difficulty settings)) +advModeConstructedSummary=Mode: Constructed\n\nYou will receive a specific preconstructed deck based on your chosen color and difficulty.\n\n +advDiffEasyConstructed=On your currently selected difficulty, Easy, your deck will only contain your chosen color. +advDiffNormalConstructed=On your currently selected difficulty, Normal, your deck will contain your chosen color and one allied color. +advDiffHardConstructed=On your currently selected difficulty, Hard, your deck will contain your chosen color and one opposing color. +advDiffInsaneConstructed=On your currently selected difficulty, Insane, your deck will contain your chosen color and one opposing color. +advModePileSummary=Mode: Pile\n\nYou will receive a random pile of cards based on your chosen color and difficulty.\n\n +advDiffEasyPile=On your currently selected difficulty, Easy, your deck will only contain your chosen color and one allied color. +advDiffNormalPile=On your currently selected difficulty, Normal, your deck will contain your chosen color and two allied colors. +advDiffHardPile=On your currently selected difficulty, Hard, your deck will contain your chosen color and two allied colors.\n\n +advPileLessRareReward=You will receive less uncommon and rare cards than on Normal difficulty. +advDiffInsanePile=On your currently selected difficulty, Insane, your deck will contain your chosen color and two allied colors.\n\n +advModeChaosSummary=Mode: Chaos\n\nYou (and all enemies) will receive a random preconstructed deck.\n\nWarning: This will make encounter difficulty vary wildly from the developers'' intent +advModeCustomGeneticSummary=Mode: Custom\n\nChoose your own preconstructed deck. Enemies can receive a random genetic AI deck (difficult).\n\nWarning: This will make encounter difficulty vary wildly from the developers'' intent +advModeCustomSummary=Mode: Custom\n\nChoose your own preconstructed deck. +advModePreconSummary=Mode: Precon\n\nYou will receive a specific preconstructed deck. You can choose a random or a specific preconstructed deck from an edition of your choice.\n\n +advModeCommanderSummary=Mode: Commander\n\nYou will be given a preconstructed commander deck based on the chosen color theme to start the playthrough.\n\nGood luck on your quest of creating a coherent deck that can win consistently and defeat the bosses. +advModeCommanderPreconSummary=Mode: Commander Precon\n\nChoose a named commander preconstructed deck to start the playthrough.\n\nThis uses Commander deckbuilding and game rules, but lets you pick from the curated commander precon folder. +advNoModeSummaryAvailable=No summary available for this game mode. +lblSummary=Summary +lblEconomy=Economy +advDifficultySummaryEasy=Difficulty: {0}\nFor newer players or those who want a relaxed experience.\nStarter decks are monocolored.\nStarting equipment: {1} +advDifficultySummaryNormal=Difficulty: {0}\nHow Adventure Mode is intended to be played.\nStarter decks will include a second color.\nStarting equipment: {1} +advDifficultySummaryHardGenetic=Difficulty: {0}\nFor players who want a challenge.\nSome enemies will use genetic AI decks.\nStarter decks will include 2-3 colors.\nStarting equipment: {1} +advDifficultySummaryHard=Difficulty: {0}\nFor players who want a challenge.\nStarter decks will include 2-3 colors.\nStarting equipment: {1} +advDifficultySummaryInsane=Difficulty: {0}\nFor players who don''t want to like the game.\nIdentical to Hard difficulty, but with even less forgiving and rewarding results.\nStarter decks will include 2-3 colors.\nStarting equipment: {1} +advDifficultySummaryCustom=((Custom difficulty settings)) +advDifficultyMatchImpacts=Difficulty: {0}\nStarting Life: {1}\nEnemy Health: {2}%\nGold loss on defeat: {3}%\nLife loss on defeat: {4}% +advDifficultyEconomyImpacts=Difficulty: {0}\nStarting Gold: {1}\nStarting Mana Shards: {2}\nCard Sale Price: {3}%\nMana Shard Sale Price: {4}%\nRandom loot rate: {5}% diff --git a/forge-gui/res/languages/es-ES.properties b/forge-gui/res/languages/es-ES.properties index 846d1a886e44..71979760d274 100644 --- a/forge-gui/res/languages/es-ES.properties +++ b/forge-gui/res/languages/es-ES.properties @@ -3933,4 +3933,44 @@ lblAutoSellVariantsCommander=Vender automáticamente las variantes de cartas que #GameHUD.java lblReputation=Reputación #GameStage.java -lblQuicksaveOnlyOnWorldMap=Partida no guardada. El guardado rápido solo está disponible en el mapa del mundo. \ No newline at end of file +lblQuicksaveOnlyOnWorldMap=Partida no guardada. El guardado rápido solo está disponible en el mapa del mundo. +advQuestNotFinished="¡Aún no has terminado lo último que te pedimos!" ({0}) +advQuestGoTakeCareOfThat="Ah, cierto, voy a encargarme de eso." +advQuestComeBackTomorrow="No tenemos nada nuevo para ti ahora mismo. Vuelve mañana." +advOkayLeave="Vale." (Salir) +advQuestNeedAssistance="¡Aventurero, necesitamos tu ayuda!" +advQuestLogFull="No puedo, tengo demasiadas cosas que hacer ahora mismo" (Tu registro de misiones ya está demasiado lleno) (Salir) +advModeStandardSummary=Modo: Estándar\n\nTu mazo inicial se construye con 2-3 sobres Jumpstart de veinte cartas cada uno.\n\n +advDiffEasyStandard=En la dificultad actualmente seleccionada, Fácil, recibirás tres sobres jumpstart de tu color elegido. +advDiffNormalStandard=En la dificultad actualmente seleccionada, Normal, recibirás dos sobres jumpstart de tu color elegido y uno de un color aliado. +advDiffHardStandard=En la dificultad actualmente seleccionada, Difícil, recibirás un sobre jumpstart de tu color elegido y uno de un color aliado. +advDiffInsaneStandard=En la dificultad actualmente seleccionada, Insana, recibirás un sobre jumpstart de tu color elegido y uno de un color aliado. +advCannotDetermineStarterDeck=((No se puede determinar el mazo inicial con esta configuración de dificultad personalizada)) +advModeConstructedSummary=Modo: Construido\n\nRecibirás un mazo preconstruido específico según tu color y dificultad elegidos.\n\n +advDiffEasyConstructed=En la dificultad actualmente seleccionada, Fácil, tu mazo contendrá solo tu color elegido. +advDiffNormalConstructed=En la dificultad actualmente seleccionada, Normal, tu mazo contendrá tu color elegido y un color aliado. +advDiffHardConstructed=En la dificultad actualmente seleccionada, Difícil, tu mazo contendrá tu color elegido y un color opuesto. +advDiffInsaneConstructed=En la dificultad actualmente seleccionada, Insana, tu mazo contendrá tu color elegido y un color opuesto. +advModePileSummary=Modo: Montón\n\nRecibirás un montón aleatorio de cartas según tu color y dificultad elegidos.\n\n +advDiffEasyPile=En la dificultad actualmente seleccionada, Fácil, tu mazo contendrá solo tu color elegido y un color aliado. +advDiffNormalPile=En la dificultad actualmente seleccionada, Normal, tu mazo contendrá tu color elegido y dos colores aliados. +advDiffHardPile=En la dificultad actualmente seleccionada, Difícil, tu mazo contendrá tu color elegido y dos colores aliados.\n\n +advPileLessRareReward=Recibirás menos cartas infrecuentes y raras que en dificultad Normal. +advDiffInsanePile=En la dificultad actualmente seleccionada, Insana, tu mazo contendrá tu color elegido y dos colores aliados.\n\n +advModeChaosSummary=Modo: Caos\n\nTú (y todos los enemigos) recibiréis un mazo preconstruido aleatorio.\n\nAviso: esto hará que la dificultad de los encuentros varíe mucho respecto a lo previsto por los desarrolladores +advModeCustomGeneticSummary=Modo: Personalizado\n\nElige tu propio mazo preconstruido. Los enemigos pueden recibir un mazo de IA genética aleatorio (difícil).\n\nAviso: esto hará que la dificultad de los encuentros varíe mucho respecto a lo previsto por los desarrolladores +advModeCustomSummary=Modo: Personalizado\n\nElige tu propio mazo preconstruido. +advModePreconSummary=Modo: Preconstruido\n\nRecibirás un mazo preconstruido específico. Puedes elegir uno aleatorio o uno específico de una edición a tu elección.\n\n +advModeCommanderSummary=Modo: Commander\n\nSe te dará un mazo de Commander preconstruido según el tema de color elegido para empezar la partida.\n\nBuena suerte en tu misión de crear un mazo coherente capaz de ganar de forma consistente y derrotar a los jefes. +advModeCommanderPreconSummary=Modo: Commander Preconstruido\n\nElige un mazo de Commander preconstruido con nombre propio para empezar la partida.\n\nEsto usa las reglas de construcción y juego de Commander, pero te deja elegir de la carpeta seleccionada de mazos preconstruidos de Commander. +advNoModeSummaryAvailable=No hay resumen disponible para este modo de juego. +lblSummary=Resumen +lblEconomy=Economía +advDifficultySummaryEasy=Dificultad: {0}\nPara jugadores nuevos o quienes quieran una experiencia relajada.\nLos mazos iniciales son monocolor.\nEquipo inicial: {1} +advDifficultySummaryNormal=Dificultad: {0}\nAsí es como está pensado jugar el Modo Aventura.\nLos mazos iniciales incluirán un segundo color.\nEquipo inicial: {1} +advDifficultySummaryHardGenetic=Dificultad: {0}\nPara jugadores que buscan un desafío.\nAlgunos enemigos usarán mazos con IA genética.\nLos mazos iniciales incluirán 2-3 colores.\nEquipo inicial: {1} +advDifficultySummaryHard=Dificultad: {0}\nPara jugadores que buscan un desafío.\nLos mazos iniciales incluirán 2-3 colores.\nEquipo inicial: {1} +advDifficultySummaryInsane=Dificultad: {0}\nPara jugadores a quienes no les quiere gustar el juego.\nIdéntica a la dificultad Difícil, pero con resultados aún menos indulgentes y menos gratificantes.\nLos mazos iniciales incluirán 2-3 colores.\nEquipo inicial: {1} +advDifficultySummaryCustom=((Ajustes de dificultad personalizada)) +advDifficultyMatchImpacts=Dificultad: {0}\nVida inicial: {1}\nSalud del enemigo: {2}%\nPérdida de oro al ser derrotado: {3}%\nPérdida de vida al ser derrotado: {4}% +advDifficultyEconomyImpacts=Dificultad: {0}\nOro inicial: {1}\nFragmentos de maná iniciales: {2}\nPrecio de venta de cartas: {3}%\nPrecio de venta de fragmentos de maná: {4}%\nTasa de botín aleatorio: {5}% diff --git a/forge-gui/res/languages/fr-FR.properties b/forge-gui/res/languages/fr-FR.properties index 058464637492..d33728d64101 100644 --- a/forge-gui/res/languages/fr-FR.properties +++ b/forge-gui/res/languages/fr-FR.properties @@ -3935,3 +3935,44 @@ lblCommanderBracketReasonExtraTurnsFew=Moins de 2 cartes de tours supplémentair lblCommanderBracketReasonLateGameCombo=Les combos à 2 cartes de fin de partie placent le deck au moins en catégorie 3. lblCommanderBracketReasonEarlyGameCombo=Les combos à 2 cartes de début de partie placent le deck au moins en catégorie 4. lblAutoSellVariantsCommander=Auto-sell variants of owned cards in Commander +advQuestNotFinished="You haven''t finished the last thing we asked you to do!" ({0}) +advQuestGoTakeCareOfThat="Oh, right, let me go take care of that." +advQuestComeBackTomorrow="We don''t have anything new for you to do right now. Come back tomorrow." +advOkayLeave="Okay." (Leave) +advQuestNeedAssistance="Adventurer, we need your assistance!" +advQuestLogFull="I can''t, I have far too many things to do right now" (Your quest log is too full already) (Leave) +advReputation=Reputation +advModeStandardSummary=Mode: Standard\n\nYour starting deck is built from 2-3 Jumpstart packs of twenty cards each.\n\n +advDiffEasyStandard=On your currently selected difficulty, Easy, you will receive three jumpstart packs of your chosen color. +advDiffNormalStandard=On your currently selected difficulty, Normal, you will receive two jumpstart packs of your chosen color and one of an allied color. +advDiffHardStandard=On your currently selected difficulty, Hard, you will receive one jumpstart pack of your chosen color and one of an allied color. +advDiffInsaneStandard=On your currently selected difficulty, Insane, you will receive one jumpstart pack of your chosen color and one of an allied color. +advCannotDetermineStarterDeck=((Cannot determine starter deck based on custom difficulty settings)) +advModeConstructedSummary=Mode: Constructed\n\nYou will receive a specific preconstructed deck based on your chosen color and difficulty.\n\n +advDiffEasyConstructed=On your currently selected difficulty, Easy, your deck will only contain your chosen color. +advDiffNormalConstructed=On your currently selected difficulty, Normal, your deck will contain your chosen color and one allied color. +advDiffHardConstructed=On your currently selected difficulty, Hard, your deck will contain your chosen color and one opposing color. +advDiffInsaneConstructed=On your currently selected difficulty, Insane, your deck will contain your chosen color and one opposing color. +advModePileSummary=Mode: Pile\n\nYou will receive a random pile of cards based on your chosen color and difficulty.\n\n +advDiffEasyPile=On your currently selected difficulty, Easy, your deck will only contain your chosen color and one allied color. +advDiffNormalPile=On your currently selected difficulty, Normal, your deck will contain your chosen color and two allied colors. +advDiffHardPile=On your currently selected difficulty, Hard, your deck will contain your chosen color and two allied colors.\n\n +advPileLessRareReward=You will receive less uncommon and rare cards than on Normal difficulty. +advDiffInsanePile=On your currently selected difficulty, Insane, your deck will contain your chosen color and two allied colors.\n\n +advModeChaosSummary=Mode: Chaos\n\nYou (and all enemies) will receive a random preconstructed deck.\n\nWarning: This will make encounter difficulty vary wildly from the developers'' intent +advModeCustomGeneticSummary=Mode: Custom\n\nChoose your own preconstructed deck. Enemies can receive a random genetic AI deck (difficult).\n\nWarning: This will make encounter difficulty vary wildly from the developers'' intent +advModeCustomSummary=Mode: Custom\n\nChoose your own preconstructed deck. +advModePreconSummary=Mode: Precon\n\nYou will receive a specific preconstructed deck. You can choose a random or a specific preconstructed deck from an edition of your choice.\n\n +advModeCommanderSummary=Mode: Commander\n\nYou will be given a preconstructed commander deck based on the chosen color theme to start the playthrough.\n\nGood luck on your quest of creating a coherent deck that can win consistently and defeat the bosses. +advModeCommanderPreconSummary=Mode: Commander Precon\n\nChoose a named commander preconstructed deck to start the playthrough.\n\nThis uses Commander deckbuilding and game rules, but lets you pick from the curated commander precon folder. +advNoModeSummaryAvailable=No summary available for this game mode. +lblSummary=Summary +lblEconomy=Economy +advDifficultySummaryEasy=Difficulty: {0}\nFor newer players or those who want a relaxed experience.\nStarter decks are monocolored.\nStarting equipment: {1} +advDifficultySummaryNormal=Difficulty: {0}\nHow Adventure Mode is intended to be played.\nStarter decks will include a second color.\nStarting equipment: {1} +advDifficultySummaryHardGenetic=Difficulty: {0}\nFor players who want a challenge.\nSome enemies will use genetic AI decks.\nStarter decks will include 2-3 colors.\nStarting equipment: {1} +advDifficultySummaryHard=Difficulty: {0}\nFor players who want a challenge.\nStarter decks will include 2-3 colors.\nStarting equipment: {1} +advDifficultySummaryInsane=Difficulty: {0}\nFor players who don''t want to like the game.\nIdentical to Hard difficulty, but with even less forgiving and rewarding results.\nStarter decks will include 2-3 colors.\nStarting equipment: {1} +advDifficultySummaryCustom=((Custom difficulty settings)) +advDifficultyMatchImpacts=Difficulty: {0}\nStarting Life: {1}\nEnemy Health: {2}%\nGold loss on defeat: {3}%\nLife loss on defeat: {4}% +advDifficultyEconomyImpacts=Difficulty: {0}\nStarting Gold: {1}\nStarting Mana Shards: {2}\nCard Sale Price: {3}%\nMana Shard Sale Price: {4}%\nRandom loot rate: {5}% diff --git a/forge-gui/res/languages/it-IT.properties b/forge-gui/res/languages/it-IT.properties index 76304034e6f5..c64e12ce238a 100644 --- a/forge-gui/res/languages/it-IT.properties +++ b/forge-gui/res/languages/it-IT.properties @@ -3932,3 +3932,44 @@ lblCommanderBracketReasonExtraTurnsFew=Meno di 2 carte di turni extra non aument lblCommanderBracketReasonLateGameCombo=Le combo da 2 carte in fase avanzata rendono il mazzo almeno di fascia 3. lblCommanderBracketReasonEarlyGameCombo=Le combo da 2 carte in fase iniziale rendono il mazzo almeno di fascia 4. lblAutoSellVariantsCommander=Auto-sell variants of owned cards in Commander +advQuestNotFinished="You haven''t finished the last thing we asked you to do!" ({0}) +advQuestGoTakeCareOfThat="Oh, right, let me go take care of that." +advQuestComeBackTomorrow="We don''t have anything new for you to do right now. Come back tomorrow." +advOkayLeave="Okay." (Leave) +advQuestNeedAssistance="Adventurer, we need your assistance!" +advQuestLogFull="I can''t, I have far too many things to do right now" (Your quest log is too full already) (Leave) +advReputation=Reputation +advModeStandardSummary=Mode: Standard\n\nYour starting deck is built from 2-3 Jumpstart packs of twenty cards each.\n\n +advDiffEasyStandard=On your currently selected difficulty, Easy, you will receive three jumpstart packs of your chosen color. +advDiffNormalStandard=On your currently selected difficulty, Normal, you will receive two jumpstart packs of your chosen color and one of an allied color. +advDiffHardStandard=On your currently selected difficulty, Hard, you will receive one jumpstart pack of your chosen color and one of an allied color. +advDiffInsaneStandard=On your currently selected difficulty, Insane, you will receive one jumpstart pack of your chosen color and one of an allied color. +advCannotDetermineStarterDeck=((Cannot determine starter deck based on custom difficulty settings)) +advModeConstructedSummary=Mode: Constructed\n\nYou will receive a specific preconstructed deck based on your chosen color and difficulty.\n\n +advDiffEasyConstructed=On your currently selected difficulty, Easy, your deck will only contain your chosen color. +advDiffNormalConstructed=On your currently selected difficulty, Normal, your deck will contain your chosen color and one allied color. +advDiffHardConstructed=On your currently selected difficulty, Hard, your deck will contain your chosen color and one opposing color. +advDiffInsaneConstructed=On your currently selected difficulty, Insane, your deck will contain your chosen color and one opposing color. +advModePileSummary=Mode: Pile\n\nYou will receive a random pile of cards based on your chosen color and difficulty.\n\n +advDiffEasyPile=On your currently selected difficulty, Easy, your deck will only contain your chosen color and one allied color. +advDiffNormalPile=On your currently selected difficulty, Normal, your deck will contain your chosen color and two allied colors. +advDiffHardPile=On your currently selected difficulty, Hard, your deck will contain your chosen color and two allied colors.\n\n +advPileLessRareReward=You will receive less uncommon and rare cards than on Normal difficulty. +advDiffInsanePile=On your currently selected difficulty, Insane, your deck will contain your chosen color and two allied colors.\n\n +advModeChaosSummary=Mode: Chaos\n\nYou (and all enemies) will receive a random preconstructed deck.\n\nWarning: This will make encounter difficulty vary wildly from the developers'' intent +advModeCustomGeneticSummary=Mode: Custom\n\nChoose your own preconstructed deck. Enemies can receive a random genetic AI deck (difficult).\n\nWarning: This will make encounter difficulty vary wildly from the developers'' intent +advModeCustomSummary=Mode: Custom\n\nChoose your own preconstructed deck. +advModePreconSummary=Mode: Precon\n\nYou will receive a specific preconstructed deck. You can choose a random or a specific preconstructed deck from an edition of your choice.\n\n +advModeCommanderSummary=Mode: Commander\n\nYou will be given a preconstructed commander deck based on the chosen color theme to start the playthrough.\n\nGood luck on your quest of creating a coherent deck that can win consistently and defeat the bosses. +advModeCommanderPreconSummary=Mode: Commander Precon\n\nChoose a named commander preconstructed deck to start the playthrough.\n\nThis uses Commander deckbuilding and game rules, but lets you pick from the curated commander precon folder. +advNoModeSummaryAvailable=No summary available for this game mode. +lblSummary=Summary +lblEconomy=Economy +advDifficultySummaryEasy=Difficulty: {0}\nFor newer players or those who want a relaxed experience.\nStarter decks are monocolored.\nStarting equipment: {1} +advDifficultySummaryNormal=Difficulty: {0}\nHow Adventure Mode is intended to be played.\nStarter decks will include a second color.\nStarting equipment: {1} +advDifficultySummaryHardGenetic=Difficulty: {0}\nFor players who want a challenge.\nSome enemies will use genetic AI decks.\nStarter decks will include 2-3 colors.\nStarting equipment: {1} +advDifficultySummaryHard=Difficulty: {0}\nFor players who want a challenge.\nStarter decks will include 2-3 colors.\nStarting equipment: {1} +advDifficultySummaryInsane=Difficulty: {0}\nFor players who don''t want to like the game.\nIdentical to Hard difficulty, but with even less forgiving and rewarding results.\nStarter decks will include 2-3 colors.\nStarting equipment: {1} +advDifficultySummaryCustom=((Custom difficulty settings)) +advDifficultyMatchImpacts=Difficulty: {0}\nStarting Life: {1}\nEnemy Health: {2}%\nGold loss on defeat: {3}%\nLife loss on defeat: {4}% +advDifficultyEconomyImpacts=Difficulty: {0}\nStarting Gold: {1}\nStarting Mana Shards: {2}\nCard Sale Price: {3}%\nMana Shard Sale Price: {4}%\nRandom loot rate: {5}% diff --git a/forge-gui/res/languages/ja-JP.properties b/forge-gui/res/languages/ja-JP.properties index 6ca10c7dd5df..e84512b2a9fe 100644 --- a/forge-gui/res/languages/ja-JP.properties +++ b/forge-gui/res/languages/ja-JP.properties @@ -3929,3 +3929,44 @@ lblCommanderBracketReasonExtraTurnsFew=追加ターン・カードが2枚未満 lblCommanderBracketReasonLateGameCombo=終盤の2枚コンボがあるため、このデッキは少なくともブラケット3です。 lblCommanderBracketReasonEarlyGameCombo=序盤の2枚コンボがあるため、このデッキは少なくともブラケット4です。 lblAutoSellVariantsCommander=Auto-sell variants of owned cards in Commander +advQuestNotFinished="You haven''t finished the last thing we asked you to do!" ({0}) +advQuestGoTakeCareOfThat="Oh, right, let me go take care of that." +advQuestComeBackTomorrow="We don''t have anything new for you to do right now. Come back tomorrow." +advOkayLeave="Okay." (Leave) +advQuestNeedAssistance="Adventurer, we need your assistance!" +advQuestLogFull="I can''t, I have far too many things to do right now" (Your quest log is too full already) (Leave) +advReputation=Reputation +advModeStandardSummary=Mode: Standard\n\nYour starting deck is built from 2-3 Jumpstart packs of twenty cards each.\n\n +advDiffEasyStandard=On your currently selected difficulty, Easy, you will receive three jumpstart packs of your chosen color. +advDiffNormalStandard=On your currently selected difficulty, Normal, you will receive two jumpstart packs of your chosen color and one of an allied color. +advDiffHardStandard=On your currently selected difficulty, Hard, you will receive one jumpstart pack of your chosen color and one of an allied color. +advDiffInsaneStandard=On your currently selected difficulty, Insane, you will receive one jumpstart pack of your chosen color and one of an allied color. +advCannotDetermineStarterDeck=((Cannot determine starter deck based on custom difficulty settings)) +advModeConstructedSummary=Mode: Constructed\n\nYou will receive a specific preconstructed deck based on your chosen color and difficulty.\n\n +advDiffEasyConstructed=On your currently selected difficulty, Easy, your deck will only contain your chosen color. +advDiffNormalConstructed=On your currently selected difficulty, Normal, your deck will contain your chosen color and one allied color. +advDiffHardConstructed=On your currently selected difficulty, Hard, your deck will contain your chosen color and one opposing color. +advDiffInsaneConstructed=On your currently selected difficulty, Insane, your deck will contain your chosen color and one opposing color. +advModePileSummary=Mode: Pile\n\nYou will receive a random pile of cards based on your chosen color and difficulty.\n\n +advDiffEasyPile=On your currently selected difficulty, Easy, your deck will only contain your chosen color and one allied color. +advDiffNormalPile=On your currently selected difficulty, Normal, your deck will contain your chosen color and two allied colors. +advDiffHardPile=On your currently selected difficulty, Hard, your deck will contain your chosen color and two allied colors.\n\n +advPileLessRareReward=You will receive less uncommon and rare cards than on Normal difficulty. +advDiffInsanePile=On your currently selected difficulty, Insane, your deck will contain your chosen color and two allied colors.\n\n +advModeChaosSummary=Mode: Chaos\n\nYou (and all enemies) will receive a random preconstructed deck.\n\nWarning: This will make encounter difficulty vary wildly from the developers'' intent +advModeCustomGeneticSummary=Mode: Custom\n\nChoose your own preconstructed deck. Enemies can receive a random genetic AI deck (difficult).\n\nWarning: This will make encounter difficulty vary wildly from the developers'' intent +advModeCustomSummary=Mode: Custom\n\nChoose your own preconstructed deck. +advModePreconSummary=Mode: Precon\n\nYou will receive a specific preconstructed deck. You can choose a random or a specific preconstructed deck from an edition of your choice.\n\n +advModeCommanderSummary=Mode: Commander\n\nYou will be given a preconstructed commander deck based on the chosen color theme to start the playthrough.\n\nGood luck on your quest of creating a coherent deck that can win consistently and defeat the bosses. +advModeCommanderPreconSummary=Mode: Commander Precon\n\nChoose a named commander preconstructed deck to start the playthrough.\n\nThis uses Commander deckbuilding and game rules, but lets you pick from the curated commander precon folder. +advNoModeSummaryAvailable=No summary available for this game mode. +lblSummary=Summary +lblEconomy=Economy +advDifficultySummaryEasy=Difficulty: {0}\nFor newer players or those who want a relaxed experience.\nStarter decks are monocolored.\nStarting equipment: {1} +advDifficultySummaryNormal=Difficulty: {0}\nHow Adventure Mode is intended to be played.\nStarter decks will include a second color.\nStarting equipment: {1} +advDifficultySummaryHardGenetic=Difficulty: {0}\nFor players who want a challenge.\nSome enemies will use genetic AI decks.\nStarter decks will include 2-3 colors.\nStarting equipment: {1} +advDifficultySummaryHard=Difficulty: {0}\nFor players who want a challenge.\nStarter decks will include 2-3 colors.\nStarting equipment: {1} +advDifficultySummaryInsane=Difficulty: {0}\nFor players who don''t want to like the game.\nIdentical to Hard difficulty, but with even less forgiving and rewarding results.\nStarter decks will include 2-3 colors.\nStarting equipment: {1} +advDifficultySummaryCustom=((Custom difficulty settings)) +advDifficultyMatchImpacts=Difficulty: {0}\nStarting Life: {1}\nEnemy Health: {2}%\nGold loss on defeat: {3}%\nLife loss on defeat: {4}% +advDifficultyEconomyImpacts=Difficulty: {0}\nStarting Gold: {1}\nStarting Mana Shards: {2}\nCard Sale Price: {3}%\nMana Shard Sale Price: {4}%\nRandom loot rate: {5}% diff --git a/forge-gui/res/languages/ko-KR.properties b/forge-gui/res/languages/ko-KR.properties index 73b9f366e7e8..6d4fa791c419 100644 --- a/forge-gui/res/languages/ko-KR.properties +++ b/forge-gui/res/languages/ko-KR.properties @@ -3632,3 +3632,44 @@ lblCommanderBracketReasonExtraTurnsFew=추가 턴 카드가 2장 미만이면 lblCommanderBracketReasonLateGameCombo=후반 2장 콤보는 이 덱을 최소 브래킷 3으로 만듭니다. lblCommanderBracketReasonEarlyGameCombo=초반 2장 콤보는 이 덱을 최소 브래킷 4로 만듭니다. lblAutoSellVariantsCommander=Auto-sell variants of owned cards in Commander +advQuestNotFinished="You haven''t finished the last thing we asked you to do!" ({0}) +advQuestGoTakeCareOfThat="Oh, right, let me go take care of that." +advQuestComeBackTomorrow="We don''t have anything new for you to do right now. Come back tomorrow." +advOkayLeave="Okay." (Leave) +advQuestNeedAssistance="Adventurer, we need your assistance!" +advQuestLogFull="I can''t, I have far too many things to do right now" (Your quest log is too full already) (Leave) +advReputation=Reputation +advModeStandardSummary=Mode: Standard\n\nYour starting deck is built from 2-3 Jumpstart packs of twenty cards each.\n\n +advDiffEasyStandard=On your currently selected difficulty, Easy, you will receive three jumpstart packs of your chosen color. +advDiffNormalStandard=On your currently selected difficulty, Normal, you will receive two jumpstart packs of your chosen color and one of an allied color. +advDiffHardStandard=On your currently selected difficulty, Hard, you will receive one jumpstart pack of your chosen color and one of an allied color. +advDiffInsaneStandard=On your currently selected difficulty, Insane, you will receive one jumpstart pack of your chosen color and one of an allied color. +advCannotDetermineStarterDeck=((Cannot determine starter deck based on custom difficulty settings)) +advModeConstructedSummary=Mode: Constructed\n\nYou will receive a specific preconstructed deck based on your chosen color and difficulty.\n\n +advDiffEasyConstructed=On your currently selected difficulty, Easy, your deck will only contain your chosen color. +advDiffNormalConstructed=On your currently selected difficulty, Normal, your deck will contain your chosen color and one allied color. +advDiffHardConstructed=On your currently selected difficulty, Hard, your deck will contain your chosen color and one opposing color. +advDiffInsaneConstructed=On your currently selected difficulty, Insane, your deck will contain your chosen color and one opposing color. +advModePileSummary=Mode: Pile\n\nYou will receive a random pile of cards based on your chosen color and difficulty.\n\n +advDiffEasyPile=On your currently selected difficulty, Easy, your deck will only contain your chosen color and one allied color. +advDiffNormalPile=On your currently selected difficulty, Normal, your deck will contain your chosen color and two allied colors. +advDiffHardPile=On your currently selected difficulty, Hard, your deck will contain your chosen color and two allied colors.\n\n +advPileLessRareReward=You will receive less uncommon and rare cards than on Normal difficulty. +advDiffInsanePile=On your currently selected difficulty, Insane, your deck will contain your chosen color and two allied colors.\n\n +advModeChaosSummary=Mode: Chaos\n\nYou (and all enemies) will receive a random preconstructed deck.\n\nWarning: This will make encounter difficulty vary wildly from the developers'' intent +advModeCustomGeneticSummary=Mode: Custom\n\nChoose your own preconstructed deck. Enemies can receive a random genetic AI deck (difficult).\n\nWarning: This will make encounter difficulty vary wildly from the developers'' intent +advModeCustomSummary=Mode: Custom\n\nChoose your own preconstructed deck. +advModePreconSummary=Mode: Precon\n\nYou will receive a specific preconstructed deck. You can choose a random or a specific preconstructed deck from an edition of your choice.\n\n +advModeCommanderSummary=Mode: Commander\n\nYou will be given a preconstructed commander deck based on the chosen color theme to start the playthrough.\n\nGood luck on your quest of creating a coherent deck that can win consistently and defeat the bosses. +advModeCommanderPreconSummary=Mode: Commander Precon\n\nChoose a named commander preconstructed deck to start the playthrough.\n\nThis uses Commander deckbuilding and game rules, but lets you pick from the curated commander precon folder. +advNoModeSummaryAvailable=No summary available for this game mode. +lblSummary=Summary +lblEconomy=Economy +advDifficultySummaryEasy=Difficulty: {0}\nFor newer players or those who want a relaxed experience.\nStarter decks are monocolored.\nStarting equipment: {1} +advDifficultySummaryNormal=Difficulty: {0}\nHow Adventure Mode is intended to be played.\nStarter decks will include a second color.\nStarting equipment: {1} +advDifficultySummaryHardGenetic=Difficulty: {0}\nFor players who want a challenge.\nSome enemies will use genetic AI decks.\nStarter decks will include 2-3 colors.\nStarting equipment: {1} +advDifficultySummaryHard=Difficulty: {0}\nFor players who want a challenge.\nStarter decks will include 2-3 colors.\nStarting equipment: {1} +advDifficultySummaryInsane=Difficulty: {0}\nFor players who don''t want to like the game.\nIdentical to Hard difficulty, but with even less forgiving and rewarding results.\nStarter decks will include 2-3 colors.\nStarting equipment: {1} +advDifficultySummaryCustom=((Custom difficulty settings)) +advDifficultyMatchImpacts=Difficulty: {0}\nStarting Life: {1}\nEnemy Health: {2}%\nGold loss on defeat: {3}%\nLife loss on defeat: {4}% +advDifficultyEconomyImpacts=Difficulty: {0}\nStarting Gold: {1}\nStarting Mana Shards: {2}\nCard Sale Price: {3}%\nMana Shard Sale Price: {4}%\nRandom loot rate: {5}% diff --git a/forge-gui/res/languages/pt-BR.properties b/forge-gui/res/languages/pt-BR.properties index 15fddeb077e8..84133905a385 100644 --- a/forge-gui/res/languages/pt-BR.properties +++ b/forge-gui/res/languages/pt-BR.properties @@ -4017,3 +4017,44 @@ lblCommanderBracketReasonExtraTurnsFew=Menos de 2 cards de turnos extras não au lblCommanderBracketReasonLateGameCombo=Combos de 2 cards no fim de jogo tornam o deck pelo menos do grupo 3. lblCommanderBracketReasonEarlyGameCombo=Combos de 2 cards no início de jogo tornam o deck pelo menos do grupo 4. lblAutoSellVariantsCommander=Auto-sell variants of owned cards in Commander +advQuestNotFinished="You haven''t finished the last thing we asked you to do!" ({0}) +advQuestGoTakeCareOfThat="Oh, right, let me go take care of that." +advQuestComeBackTomorrow="We don''t have anything new for you to do right now. Come back tomorrow." +advOkayLeave="Okay." (Leave) +advQuestNeedAssistance="Adventurer, we need your assistance!" +advQuestLogFull="I can''t, I have far too many things to do right now" (Your quest log is too full already) (Leave) +advReputation=Reputation +advModeStandardSummary=Mode: Standard\n\nYour starting deck is built from 2-3 Jumpstart packs of twenty cards each.\n\n +advDiffEasyStandard=On your currently selected difficulty, Easy, you will receive three jumpstart packs of your chosen color. +advDiffNormalStandard=On your currently selected difficulty, Normal, you will receive two jumpstart packs of your chosen color and one of an allied color. +advDiffHardStandard=On your currently selected difficulty, Hard, you will receive one jumpstart pack of your chosen color and one of an allied color. +advDiffInsaneStandard=On your currently selected difficulty, Insane, you will receive one jumpstart pack of your chosen color and one of an allied color. +advCannotDetermineStarterDeck=((Cannot determine starter deck based on custom difficulty settings)) +advModeConstructedSummary=Mode: Constructed\n\nYou will receive a specific preconstructed deck based on your chosen color and difficulty.\n\n +advDiffEasyConstructed=On your currently selected difficulty, Easy, your deck will only contain your chosen color. +advDiffNormalConstructed=On your currently selected difficulty, Normal, your deck will contain your chosen color and one allied color. +advDiffHardConstructed=On your currently selected difficulty, Hard, your deck will contain your chosen color and one opposing color. +advDiffInsaneConstructed=On your currently selected difficulty, Insane, your deck will contain your chosen color and one opposing color. +advModePileSummary=Mode: Pile\n\nYou will receive a random pile of cards based on your chosen color and difficulty.\n\n +advDiffEasyPile=On your currently selected difficulty, Easy, your deck will only contain your chosen color and one allied color. +advDiffNormalPile=On your currently selected difficulty, Normal, your deck will contain your chosen color and two allied colors. +advDiffHardPile=On your currently selected difficulty, Hard, your deck will contain your chosen color and two allied colors.\n\n +advPileLessRareReward=You will receive less uncommon and rare cards than on Normal difficulty. +advDiffInsanePile=On your currently selected difficulty, Insane, your deck will contain your chosen color and two allied colors.\n\n +advModeChaosSummary=Mode: Chaos\n\nYou (and all enemies) will receive a random preconstructed deck.\n\nWarning: This will make encounter difficulty vary wildly from the developers'' intent +advModeCustomGeneticSummary=Mode: Custom\n\nChoose your own preconstructed deck. Enemies can receive a random genetic AI deck (difficult).\n\nWarning: This will make encounter difficulty vary wildly from the developers'' intent +advModeCustomSummary=Mode: Custom\n\nChoose your own preconstructed deck. +advModePreconSummary=Mode: Precon\n\nYou will receive a specific preconstructed deck. You can choose a random or a specific preconstructed deck from an edition of your choice.\n\n +advModeCommanderSummary=Mode: Commander\n\nYou will be given a preconstructed commander deck based on the chosen color theme to start the playthrough.\n\nGood luck on your quest of creating a coherent deck that can win consistently and defeat the bosses. +advModeCommanderPreconSummary=Mode: Commander Precon\n\nChoose a named commander preconstructed deck to start the playthrough.\n\nThis uses Commander deckbuilding and game rules, but lets you pick from the curated commander precon folder. +advNoModeSummaryAvailable=No summary available for this game mode. +lblSummary=Summary +lblEconomy=Economy +advDifficultySummaryEasy=Difficulty: {0}\nFor newer players or those who want a relaxed experience.\nStarter decks are monocolored.\nStarting equipment: {1} +advDifficultySummaryNormal=Difficulty: {0}\nHow Adventure Mode is intended to be played.\nStarter decks will include a second color.\nStarting equipment: {1} +advDifficultySummaryHardGenetic=Difficulty: {0}\nFor players who want a challenge.\nSome enemies will use genetic AI decks.\nStarter decks will include 2-3 colors.\nStarting equipment: {1} +advDifficultySummaryHard=Difficulty: {0}\nFor players who want a challenge.\nStarter decks will include 2-3 colors.\nStarting equipment: {1} +advDifficultySummaryInsane=Difficulty: {0}\nFor players who don''t want to like the game.\nIdentical to Hard difficulty, but with even less forgiving and rewarding results.\nStarter decks will include 2-3 colors.\nStarting equipment: {1} +advDifficultySummaryCustom=((Custom difficulty settings)) +advDifficultyMatchImpacts=Difficulty: {0}\nStarting Life: {1}\nEnemy Health: {2}%\nGold loss on defeat: {3}%\nLife loss on defeat: {4}% +advDifficultyEconomyImpacts=Difficulty: {0}\nStarting Gold: {1}\nStarting Mana Shards: {2}\nCard Sale Price: {3}%\nMana Shard Sale Price: {4}%\nRandom loot rate: {5}% diff --git a/forge-gui/res/languages/ru-RU.properties b/forge-gui/res/languages/ru-RU.properties index 6e6877ba08db..863cc4304a05 100644 --- a/forge-gui/res/languages/ru-RU.properties +++ b/forge-gui/res/languages/ru-RU.properties @@ -3627,3 +3627,44 @@ lblCommanderBracketReasonExtraTurnsFew=Менее 2 карт дополните lblCommanderBracketReasonLateGameCombo=Комбо из 2 карт поздней игры делают колоду как минимум бракетом 3. lblCommanderBracketReasonEarlyGameCombo=Комбо из 2 карт ранней игры делают колоду как минимум бракетом 4. lblAutoSellVariantsCommander=Автопродажа вариантов имеющихся карт в Командире +advQuestNotFinished="You haven''t finished the last thing we asked you to do!" ({0}) +advQuestGoTakeCareOfThat="Oh, right, let me go take care of that." +advQuestComeBackTomorrow="We don''t have anything new for you to do right now. Come back tomorrow." +advOkayLeave="Okay." (Leave) +advQuestNeedAssistance="Adventurer, we need your assistance!" +advQuestLogFull="I can''t, I have far too many things to do right now" (Your quest log is too full already) (Leave) +advReputation=Reputation +advModeStandardSummary=Mode: Standard\n\nYour starting deck is built from 2-3 Jumpstart packs of twenty cards each.\n\n +advDiffEasyStandard=On your currently selected difficulty, Easy, you will receive three jumpstart packs of your chosen color. +advDiffNormalStandard=On your currently selected difficulty, Normal, you will receive two jumpstart packs of your chosen color and one of an allied color. +advDiffHardStandard=On your currently selected difficulty, Hard, you will receive one jumpstart pack of your chosen color and one of an allied color. +advDiffInsaneStandard=On your currently selected difficulty, Insane, you will receive one jumpstart pack of your chosen color and one of an allied color. +advCannotDetermineStarterDeck=((Cannot determine starter deck based on custom difficulty settings)) +advModeConstructedSummary=Mode: Constructed\n\nYou will receive a specific preconstructed deck based on your chosen color and difficulty.\n\n +advDiffEasyConstructed=On your currently selected difficulty, Easy, your deck will only contain your chosen color. +advDiffNormalConstructed=On your currently selected difficulty, Normal, your deck will contain your chosen color and one allied color. +advDiffHardConstructed=On your currently selected difficulty, Hard, your deck will contain your chosen color and one opposing color. +advDiffInsaneConstructed=On your currently selected difficulty, Insane, your deck will contain your chosen color and one opposing color. +advModePileSummary=Mode: Pile\n\nYou will receive a random pile of cards based on your chosen color and difficulty.\n\n +advDiffEasyPile=On your currently selected difficulty, Easy, your deck will only contain your chosen color and one allied color. +advDiffNormalPile=On your currently selected difficulty, Normal, your deck will contain your chosen color and two allied colors. +advDiffHardPile=On your currently selected difficulty, Hard, your deck will contain your chosen color and two allied colors.\n\n +advPileLessRareReward=You will receive less uncommon and rare cards than on Normal difficulty. +advDiffInsanePile=On your currently selected difficulty, Insane, your deck will contain your chosen color and two allied colors.\n\n +advModeChaosSummary=Mode: Chaos\n\nYou (and all enemies) will receive a random preconstructed deck.\n\nWarning: This will make encounter difficulty vary wildly from the developers'' intent +advModeCustomGeneticSummary=Mode: Custom\n\nChoose your own preconstructed deck. Enemies can receive a random genetic AI deck (difficult).\n\nWarning: This will make encounter difficulty vary wildly from the developers'' intent +advModeCustomSummary=Mode: Custom\n\nChoose your own preconstructed deck. +advModePreconSummary=Mode: Precon\n\nYou will receive a specific preconstructed deck. You can choose a random or a specific preconstructed deck from an edition of your choice.\n\n +advModeCommanderSummary=Mode: Commander\n\nYou will be given a preconstructed commander deck based on the chosen color theme to start the playthrough.\n\nGood luck on your quest of creating a coherent deck that can win consistently and defeat the bosses. +advModeCommanderPreconSummary=Mode: Commander Precon\n\nChoose a named commander preconstructed deck to start the playthrough.\n\nThis uses Commander deckbuilding and game rules, but lets you pick from the curated commander precon folder. +advNoModeSummaryAvailable=No summary available for this game mode. +lblSummary=Summary +lblEconomy=Economy +advDifficultySummaryEasy=Difficulty: {0}\nFor newer players or those who want a relaxed experience.\nStarter decks are monocolored.\nStarting equipment: {1} +advDifficultySummaryNormal=Difficulty: {0}\nHow Adventure Mode is intended to be played.\nStarter decks will include a second color.\nStarting equipment: {1} +advDifficultySummaryHardGenetic=Difficulty: {0}\nFor players who want a challenge.\nSome enemies will use genetic AI decks.\nStarter decks will include 2-3 colors.\nStarting equipment: {1} +advDifficultySummaryHard=Difficulty: {0}\nFor players who want a challenge.\nStarter decks will include 2-3 colors.\nStarting equipment: {1} +advDifficultySummaryInsane=Difficulty: {0}\nFor players who don''t want to like the game.\nIdentical to Hard difficulty, but with even less forgiving and rewarding results.\nStarter decks will include 2-3 colors.\nStarting equipment: {1} +advDifficultySummaryCustom=((Custom difficulty settings)) +advDifficultyMatchImpacts=Difficulty: {0}\nStarting Life: {1}\nEnemy Health: {2}%\nGold loss on defeat: {3}%\nLife loss on defeat: {4}% +advDifficultyEconomyImpacts=Difficulty: {0}\nStarting Gold: {1}\nStarting Mana Shards: {2}\nCard Sale Price: {3}%\nMana Shard Sale Price: {4}%\nRandom loot rate: {5}% diff --git a/forge-gui/res/languages/zh-CN.properties b/forge-gui/res/languages/zh-CN.properties index 6a4d599dc508..0a5c89404491 100644 --- a/forge-gui/res/languages/zh-CN.properties +++ b/forge-gui/res/languages/zh-CN.properties @@ -3911,3 +3911,43 @@ lblCommanderBracketReasonExtraTurnsFew=少于2张额外回合牌不会提高分 lblCommanderBracketReasonLateGameCombo=后期2张牌组合技会使该套牌至少为第3级。 lblCommanderBracketReasonEarlyGameCombo=前期2张牌组合技会使该套牌至少为第4级。 lblAutoSellVariantsCommander=Auto-sell variants of owned cards in Commander +advQuestNotFinished="You haven''t finished the last thing we asked you to do!" ({0}) +advQuestGoTakeCareOfThat="Oh, right, let me go take care of that." +advQuestComeBackTomorrow="We don''t have anything new for you to do right now. Come back tomorrow." +advOkayLeave="Okay." (Leave) +advQuestNeedAssistance="Adventurer, we need your assistance!" +advQuestLogFull="I can''t, I have far too many things to do right now" (Your quest log is too full already) (Leave) +advModeStandardSummary=Mode: Standard\n\nYour starting deck is built from 2-3 Jumpstart packs of twenty cards each.\n\n +advDiffEasyStandard=On your currently selected difficulty, Easy, you will receive three jumpstart packs of your chosen color. +advDiffNormalStandard=On your currently selected difficulty, Normal, you will receive two jumpstart packs of your chosen color and one of an allied color. +advDiffHardStandard=On your currently selected difficulty, Hard, you will receive one jumpstart pack of your chosen color and one of an allied color. +advDiffInsaneStandard=On your currently selected difficulty, Insane, you will receive one jumpstart pack of your chosen color and one of an allied color. +advCannotDetermineStarterDeck=((Cannot determine starter deck based on custom difficulty settings)) +advModeConstructedSummary=Mode: Constructed\n\nYou will receive a specific preconstructed deck based on your chosen color and difficulty.\n\n +advDiffEasyConstructed=On your currently selected difficulty, Easy, your deck will only contain your chosen color. +advDiffNormalConstructed=On your currently selected difficulty, Normal, your deck will contain your chosen color and one allied color. +advDiffHardConstructed=On your currently selected difficulty, Hard, your deck will contain your chosen color and one opposing color. +advDiffInsaneConstructed=On your currently selected difficulty, Insane, your deck will contain your chosen color and one opposing color. +advModePileSummary=Mode: Pile\n\nYou will receive a random pile of cards based on your chosen color and difficulty.\n\n +advDiffEasyPile=On your currently selected difficulty, Easy, your deck will only contain your chosen color and one allied color. +advDiffNormalPile=On your currently selected difficulty, Normal, your deck will contain your chosen color and two allied colors. +advDiffHardPile=On your currently selected difficulty, Hard, your deck will contain your chosen color and two allied colors.\n\n +advPileLessRareReward=You will receive less uncommon and rare cards than on Normal difficulty. +advDiffInsanePile=On your currently selected difficulty, Insane, your deck will contain your chosen color and two allied colors.\n\n +advModeChaosSummary=Mode: Chaos\n\nYou (and all enemies) will receive a random preconstructed deck.\n\nWarning: This will make encounter difficulty vary wildly from the developers'' intent +advModeCustomGeneticSummary=Mode: Custom\n\nChoose your own preconstructed deck. Enemies can receive a random genetic AI deck (difficult).\n\nWarning: This will make encounter difficulty vary wildly from the developers'' intent +advModeCustomSummary=Mode: Custom\n\nChoose your own preconstructed deck. +advModePreconSummary=Mode: Precon\n\nYou will receive a specific preconstructed deck. You can choose a random or a specific preconstructed deck from an edition of your choice.\n\n +advModeCommanderSummary=Mode: Commander\n\nYou will be given a preconstructed commander deck based on the chosen color theme to start the playthrough.\n\nGood luck on your quest of creating a coherent deck that can win consistently and defeat the bosses. +advModeCommanderPreconSummary=Mode: Commander Precon\n\nChoose a named commander preconstructed deck to start the playthrough.\n\nThis uses Commander deckbuilding and game rules, but lets you pick from the curated commander precon folder. +advNoModeSummaryAvailable=No summary available for this game mode. +lblSummary=Summary +lblEconomy=Economy +advDifficultySummaryEasy=Difficulty: {0}\nFor newer players or those who want a relaxed experience.\nStarter decks are monocolored.\nStarting equipment: {1} +advDifficultySummaryNormal=Difficulty: {0}\nHow Adventure Mode is intended to be played.\nStarter decks will include a second color.\nStarting equipment: {1} +advDifficultySummaryHardGenetic=Difficulty: {0}\nFor players who want a challenge.\nSome enemies will use genetic AI decks.\nStarter decks will include 2-3 colors.\nStarting equipment: {1} +advDifficultySummaryHard=Difficulty: {0}\nFor players who want a challenge.\nStarter decks will include 2-3 colors.\nStarting equipment: {1} +advDifficultySummaryInsane=Difficulty: {0}\nFor players who don''t want to like the game.\nIdentical to Hard difficulty, but with even less forgiving and rewarding results.\nStarter decks will include 2-3 colors.\nStarting equipment: {1} +advDifficultySummaryCustom=((Custom difficulty settings)) +advDifficultyMatchImpacts=Difficulty: {0}\nStarting Life: {1}\nEnemy Health: {2}%\nGold loss on defeat: {3}%\nLife loss on defeat: {4}% +advDifficultyEconomyImpacts=Difficulty: {0}\nStarting Gold: {1}\nStarting Mana Shards: {2}\nCard Sale Price: {3}%\nMana Shard Sale Price: {4}%\nRandom loot rate: {5}%