Tutorial: Crookfinger leads a new master through the first steps

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Richard ZinkandClaude Opus 5.5 committed 2026-11-06 00:37:25 +01:00
1 parent 1fb6a6ab58
commit 160935bf40
23 files changed
+501 -3

No files matched your search

+2
View File
@@ -104,6 +104,8 @@ After every game a chart shows how it went, and 64 achievements wait - some of t
(blue, writes threatening letters on scented paper) dig their own dungeons in free play and in the campaign. (blue, writes threatening letters on scented paper) dig their own dungeons in free play and in the campaign.
And the humans attack *everybody*. Let them bite each other first. And the humans attack *everybody*. Let them bite each other first.
**🎓 New down here?** The *Tutorial* in the title menu: Crookfinger shows you the ropes, one step at a time.
**📜 A campaign of thirty missions.** Take back the shards of your soul core - from the first little outpost by the **📜 A campaign of thirty missions.** Take back the shards of your soul core - from the first little outpost by the
border brook to the citadel of Grand Master Valerian Brightshield. Rivers, fortresses, treasure islands, sealed border brook to the citadel of Grand Master Valerian Brightshield. Rivers, fortresses, treasure islands, sealed
caves, rival masters, and me, telling you the story. With tea. caves, rival masters, and me, telling you the story. With tea.
+4 -2
View File
@@ -65,7 +65,7 @@ surface songs, so the older pieces stay byte for byte the same): build16-19, bat
surface_battle1-2; `audio::Category::Surface` / `SurfaceBattle`, chosen in `MusicDirector` when most of the surface_battle1-2; `audio::Category::Surface` / `SurfaceBattle`, chosen in `MusicDirector` when most of the
camera's surroundings lie above ground (4 s crossfade). camera's surroundings lie above ground (4 s crossfade).
## 4. Additions ## 4. Additions – done (v202611-00047)
Status: creature abilities (personality.rs: an ability per creature at level 3-7, used by itself) and Status: creature abilities (personality.rs: an ability per creature at level 3-7, used by itself) and
creature relationships (likes, hates, brawls) existed already. Done in this block so far: creature relationships (likes, hates, brawls) existed already. Done in this block so far:
@@ -84,7 +84,9 @@ wood or a mana potion), seasons (snow above ground in winter, pumpkins at Hallow
creature equipment (`src/armory.rs`: without orders the forge makes iron, steel and rune gear for gold; each creature equipment (`src/armory.rs`: without orders the forge makes iron, steel and rune gear for gold; each
piece goes to the strongest creature without one that good: +10/22/38% health and attack, a coloured mark at piece goes to the strongest creature without one that good: +10/22/38% health and attack, a coloured mark at
the health bar). The dynamic music (calm and battle) existed already and now also follows the camera to the the health bar). The dynamic music (calm and battle) existed already and now also follows the camera to the
surface. Still open: the tutorial mission. surface. The tutorial (*Tutorial* in the title menu, `editor::templates::tutorial_campaign`): Crookfinger leads a
new master through digging, claiming, lair, mushroom garden, the first creatures, a slap and two knights - one
painted mission whose triggers switch each other on. **Block 4 is done.**
1. **Random events** – earthquake (tunnels cave in), lava eruption, flood, gold vein found. Rare 1. **Random events** – earthquake (tunnels cave in), lava eruption, flood, gold vein found. Rare
(every 8–12 minutes), free play and multiplayer only, can be switched off in the menu; in (every 8–12 minutes), free play and multiplayer only, can be switched off in the menu; in
+20
View File
@@ -1643,3 +1643,23 @@ ach.wyrm.name = Zde jsou draci
ach.wyrm.desc = Žhavý drak se přidá k tvé kobce. ach.wyrm.desc = Žhavý drak se přidá k tvé kobce.
ach.fullhand.name = Plné ruce práce ach.fullhand.name = Plné ruce práce
ach.fullhand.desc = Drž v ruce najednou osm jednotek. ach.fullhand.desc = Drž v ruce najednou osm jednotek.
# tutorial
menu.tutorial = Úvod
tut.name = První kroky
tut.title = Křivoprst ti ukáže, jak se to dělá
tut.story = Tak ty jsi ten nový pán. Malý, ale jádro ještě bije, a to je hlavní.\n\nUkážu ti základy: kopání, místnosti, tvory a co dělat s rytíři. Dělej, co říkám, a nikomu se nic nestane. Kromě rytířů.
tut.start = Křivoprst: První lekce - kopání. Vezmi nástroj Kopat (klávesa 1), táhni přes zeminu východně od srdce a tvoji čertíci ji vykopou.
tut.obj1 = Vykopej tunel východně od srdce.
tut.dug = Křivoprst: Hle, za ní je síň! Tvoji čertíci si půdu zaberou sami. Teď otevři Místnosti a postav doupě na vlastní podlaze - tam spí tvoji tvorové.
tut.obj2 = Postav doupě (Místnosti).
tut.lair = Křivoprst: Postele, hotovo. Tvorové taky jedí: postav vedle houbovou zahradu.
tut.obj3 = Postav houbovou zahradu (Místnosti).
tut.farm = Křivoprst: Strava a nocleh - teď ti portál posílá tvory. Trpělivost, přijdou sami. Počkej na dva.
tut.obj4 = Počkej, až portálem projdou dva tvorové.
tut.creatures = Křivoprst: Tady jsou! Trocha motivace nikdy neuškodí: vezmi ruku (klávesa 2) a klikni na tvora s podrženým Shiftem (na dotykové obrazovce: klepni na něj dvakrát), abys mu dal pohlavek. Chvíli bude pracovat rychleji.
tut.obj5 = Dej pohlavek jednomu ze svých tvorů (ruka, Shift + klik).
tut.slap = Křivoprst: Ha! Slyšel jsi to? Něco přichází od východu. Připrav se: blesk (Kouzla) udeří tvrdě a tvoji tvorové bojují sami.
tut.obj6 = Poraz dva rytíře.
tut.knights = Křivoprst: Dva rytíři! Pošli na ně tvory útočnou vlajkou (Rozkazy) nebo je zasáhni bleskem.
tut.win = Křivoprst: Výborně, pane! To je všechno. No - skoro. Zbytek poví kampaň. Přistavím vodu na čaj.
+20
View File
@@ -1642,3 +1642,23 @@ ach.wyrm.name = Her Er Drager
ach.wyrm.desc = En glødelindorm slutter sig til dit dungeon. ach.wyrm.desc = En glødelindorm slutter sig til dit dungeon.
ach.fullhand.name = Hænderne Fulde ach.fullhand.name = Hænderne Fulde
ach.fullhand.desc = Hold otte enheder i hånden på én gang. ach.fullhand.desc = Hold otte enheder i hånden på én gang.
# tutorial
menu.tutorial = Introduktion
tut.name = Første skridt
tut.title = Krumfinger viser dig, hvordan det gøres
tut.story = Så du er den nye mester. Lille, men kernen slår stadig, og det er det, der tæller.\n\nJeg viser dig det vigtigste: gravning, rum, væsner og hvad man gør med riddere. Gør som jeg siger, så kommer ingen til skade. Undtagen ridderne.
tut.start = Krumfinger: Første lektion: gravning. Tag hakken (tast 1), træk hen over jorden øst for hjertet, så graver dine imps den ud.
tut.obj1 = Grav gangen øst for hjertet ud.
tut.dug = Krumfinger: Se der, en hal bagved! Dine imps gør selv krav på gulvet. Åbn nu Rum og byg et hi på dit eget gulv: der sover dine væsner.
tut.obj2 = Byg et hi (Rum).
tut.lair = Krumfinger: Senge, klaret. Væsner spiser også: byg en svampehave ved siden af.
tut.obj3 = Byg en svampehave (Rum).
tut.farm = Krumfinger: Kost og logi: nu sender portalen dig væsner. Tålmodighed, de kommer af sig selv. Vent på to.
tut.obj4 = Vent, til to væsner er kommet gennem portalen.
tut.creatures = Krumfinger: Der er de! Lidt motivation skader aldrig: tag hånden (tast 2) og klik på et væsen med Shift holdt nede (på en berøringsskærm: tryk to gange) for at give det en lussing. Så arbejder det hurtigere et stykke tid.
tut.obj5 = Giv et af dine væsner en lussing (hånd, Shift + klik).
tut.slap = Krumfinger: Ha! Hørte du det? Noget kommer fra øst. Gør dig klar: lynet (Besværgelser) rammer hårdt, og dine væsner kæmper af sig selv.
tut.obj6 = Besejr de to riddere.
tut.knights = Krumfinger: To riddere! Send dine væsner af sted med angrebsflaget (Ordrer), eller ram dem med lynet.
tut.win = Krumfinger: Godt gået, mester! Det er alt, hvad der skal til. Altså – næsten. Kampagnen fortæller resten. Jeg sætter kedlen over.
+20
View File
@@ -1642,3 +1642,23 @@ ach.wyrm.name = Hier seien Drachen
ach.wyrm.desc = Ein Glutwurm schließt sich deinem Kerker an. ach.wyrm.desc = Ein Glutwurm schließt sich deinem Kerker an.
ach.fullhand.name = Alle Hände voll ach.fullhand.name = Alle Hände voll
ach.fullhand.desc = Halte acht Einheiten gleichzeitig in der Hand. ach.fullhand.desc = Halte acht Einheiten gleichzeitig in der Hand.
# tutorial
menu.tutorial = Einführung
tut.name = Erste Schritte
tut.title = Crookfinger zeigt dir, wie es geht
tut.story = Du bist also der neue Meister. Klein, aber der Kern schlägt noch, und das zählt.\n\nIch zeige dir das Wichtigste: Graben, Räume, Kreaturen und was man mit Rittern macht. Tu, was ich sage, und niemandem passiert etwas. Außer den Rittern.
tut.start = Crookfinger: Erste Lektion – Graben. Nimm die Spitzhacke (Taste 1), zieh über die Erde östlich des Herzens, und deine Imps graben sie aus.
tut.obj1 = Grabe den Gang östlich des Herzens aus.
tut.dug = Crookfinger: Sieh an, eine Halle dahinter! Deine Imps beanspruchen den Boden von selbst. Öffne jetzt Räume und baue ein Lager auf deinem Boden – dort schlafen deine Kreaturen.
tut.obj2 = Baue ein Lager (Räume).
tut.lair = Crookfinger: Betten, erledigt. Kreaturen essen auch: Baue daneben einen Pilzgarten.
tut.obj3 = Baue einen Pilzgarten (Räume).
tut.farm = Crookfinger: Kost und Logis – jetzt schickt dir das Portal Kreaturen. Geduld, sie kommen von selbst. Warte auf zwei.
tut.obj4 = Warte, bis zwei Kreaturen durchs Portal gekommen sind.
tut.creatures = Crookfinger: Da sind sie! Ein wenig Ansporn schadet nie: Nimm die Hand (Taste 2) und klick eine Kreatur mit gedrückter Umschalttaste an (am Touchscreen: zweimal antippen), um ihr einen Klaps zu geben. Eine Weile arbeitet sie schneller.
tut.obj5 = Gib einer deiner Kreaturen einen Klaps (Hand, Umschalt + Klick).
tut.slap = Crookfinger: Ha! Hast du das gehört? Aus dem Osten kommt etwas. Mach dich bereit: Der Blitz (Zauber) trifft hart, und deine Kreaturen kämpfen von selbst.
tut.obj6 = Besiege die beiden Ritter.
tut.knights = Crookfinger: Zwei Ritter! Schick deine Kreaturen mit der Angriffsflagge (Befehle) oder triff sie mit dem Blitz.
tut.win = Crookfinger: Gut gemacht, Meister! Mehr ist es nicht. Na ja – fast. Den Rest erzählt die Kampagne. Ich setze Wasser auf.
+20
View File
@@ -1643,3 +1643,23 @@ ach.wyrm.name = Εδώ υπάρχουν δράκοι
ach.wyrm.desc = Ένας δράκος της θράκας μπαίνει στο μπουντρούμι σου. ach.wyrm.desc = Ένας δράκος της θράκας μπαίνει στο μπουντρούμι σου.
ach.fullhand.name = Γεμάτα χέρια ach.fullhand.name = Γεμάτα χέρια
ach.fullhand.desc = Κράτα οκτώ μονάδες στο χέρι σου ταυτόχρονα. ach.fullhand.desc = Κράτα οκτώ μονάδες στο χέρι σου ταυτόχρονα.
# tutorial
menu.tutorial = Εκμάθηση
tut.name = Πρώτα βήματα
tut.title = Ο Στραβοδάχτυλος σού δείχνει τα κόλπα
tut.story = Ώστε εσύ είσαι ο νέος αφέντης. Μικρός, αλλά ο πυρήνας ακόμα χτυπά, και αυτό μετράει.\n\nΘα σου δείξω τα βασικά: σκάψιμο, δωμάτια, πλάσματα και τι να κάνεις με τους ιππότες. Κάνε ό,τι σου λέω και κανείς δεν θα πάθει τίποτα. Εκτός από τους ιππότες.
tut.start = Στραβοδάχτυλος: Πρώτο μάθημα - σκάψιμο. Πάρε το εργαλείο Σκάψε (πλήκτρο 1), σύρε πάνω από το χώμα ανατολικά της καρδιάς και τα δαιμονάκια σου θα το σκάψουν.
tut.obj1 = Σκάψε το τούνελ ανατολικά της καρδιάς.
tut.dug = Στραβοδάχτυλος: Ορίστε, μια αίθουσα από πίσω! Τα δαιμονάκια σου κατακτούν το έδαφος μόνα τους. Τώρα άνοιξε τα Δωμάτια και χτίσε μια φωλιά στο δικό σου δάπεδο - εκεί κοιμούνται τα πλάσματά σου.
tut.obj2 = Χτίσε μια φωλιά (Δωμάτια).
tut.lair = Στραβοδάχτυλος: Κρεβάτια, έτοιμα. Τα πλάσματα και τρώνε: χτίσε έναν μανιταρόκηπο δίπλα.
tut.obj3 = Χτίσε έναν μανιταρόκηπο (Δωμάτια).
tut.farm = Στραβοδάχτυλος: Στέγη και τροφή - τώρα η πύλη μετάβασης σού στέλνει πλάσματα. Υπομονή, έρχονται μόνα τους. Περίμενε δύο.
tut.obj4 = Περίμενε μέχρι να περάσουν δύο πλάσματα από την πύλη μετάβασης.
tut.creatures = Στραβοδάχτυλος: Να τα! Λίγο κίνητρο δεν βλάπτει ποτέ: πάρε το χέρι (πλήκτρο 2) και κάνε κλικ σε ένα πλάσμα κρατώντας πατημένο το Shift (σε οθόνη αφής: πάτησέ το δύο φορές) για να το χαστουκίσεις. Για λίγο δουλεύει πιο γρήγορα.
tut.obj5 = Χαστούκισε ένα από τα πλάσματά σου (χέρι, Shift + κλικ).
tut.slap = Στραβοδάχτυλος: Χα! Το άκουσες; Κάτι έρχεται από την ανατολή. Ετοιμάσου: ο κεραυνός (Ξόρκια) χτυπά δυνατά, και τα πλάσματά σου πολεμούν μόνα τους.
tut.obj6 = Νίκησε τους δύο ιππότες.
tut.knights = Στραβοδάχτυλος: Δύο ιππότες! Στείλε τα πλάσματά σου με τη σημαία επίθεσης (Εντολές) ή χτύπησέ τους με κεραυνό.
tut.win = Στραβοδάχτυλος: Μπράβο, αφέντη! Αυτό ήταν όλο. Ε - σχεδόν. Τα υπόλοιπα θα τα πει η εκστρατεία. Βάζω νερό για τσάι.
+20
View File
@@ -1643,3 +1643,23 @@ ach.wyrm.name = Here Be Dragons
ach.wyrm.desc = An ember wyrm joins your dungeon. ach.wyrm.desc = An ember wyrm joins your dungeon.
ach.fullhand.name = Hands Full ach.fullhand.name = Hands Full
ach.fullhand.desc = Hold eight units in your hand at once. ach.fullhand.desc = Hold eight units in your hand at once.
# tutorial
menu.tutorial = Tutorial
tut.name = First Steps
tut.title = Crookfinger Shows You the Ropes
tut.story = So you are the new master. Small, but the core still beats, and that is what counts.\n\nI will show you the basics: digging, rooms, creatures, and what to do with knights. Do what I say, and nobody gets hurt. Except the knights.
tut.start = Crookfinger: First lesson - digging. Take the pick (key 1), drag over the earth east of the heart and your imps dig it out.
tut.obj1 = Dig out the tunnel east of the heart.
tut.dug = Crookfinger: There, a hall behind it! Your imps claim the ground by themselves. Now open Rooms and build a lair on your own floor - your creatures sleep there.
tut.obj2 = Build a lair (Rooms).
tut.lair = Crookfinger: Beds, check. Creatures also eat: build a mushroom garden next to it.
tut.obj3 = Build a mushroom garden (Rooms).
tut.farm = Crookfinger: Bed and board - now the portal sends you creatures. Be patient, they come by themselves. Wait for two.
tut.obj4 = Wait until two creatures have come through the portal.
tut.creatures = Crookfinger: Here they are! A little motivation never hurts: take the hand (key 2) and click a creature with Shift held down (on a touch screen: tap it twice) to slap it. It works faster for a while.
tut.obj5 = Slap one of your creatures (hand, Shift + click).
tut.slap = Crookfinger: Ha! Did you hear that? Something is coming from the east. Get ready: lightning (Spells) hits hard, and your creatures fight on their own.
tut.obj6 = Defeat the two knights.
tut.knights = Crookfinger: Two knights! Send your creatures with the attack flag (Orders) or strike them with lightning.
tut.win = Crookfinger: Well done, master! That is all there is to it. Well - almost. The campaign tells the rest. I'll put the kettle on.
+20
View File
@@ -1643,3 +1643,23 @@ ach.wyrm.name = Aquí hay dragones
ach.wyrm.desc = Un dragón de brasas se une a tu mazmorra. ach.wyrm.desc = Un dragón de brasas se une a tu mazmorra.
ach.fullhand.name = Manos llenas ach.fullhand.name = Manos llenas
ach.fullhand.desc = Sostén ocho unidades en la mano a la vez. ach.fullhand.desc = Sostén ocho unidades en la mano a la vez.
# tutorial
menu.tutorial = Tutorial
tut.name = Primeros pasos
tut.title = Dedotuerto te enseña el oficio
tut.story = Así que tú eres el nuevo amo. Pequeño, pero el núcleo aún late, y eso es lo que cuenta.\n\nTe enseñaré lo básico: excavar, salas, criaturas y qué hacer con los caballeros. Haz lo que te digo y nadie saldrá herido. Salvo los caballeros.
tut.start = Dedotuerto: Primera lección: excavar. Coge el pico (tecla 1), arrastra sobre la tierra al este del corazón y tus diablillos la excavarán.
tut.obj1 = Excava el túnel al este del corazón.
tut.dug = Dedotuerto: ¡Mira, una sala detrás! Tus diablillos reclaman el suelo por sí solos. Ahora abre Salas y construye una guarida en tu propio suelo: ahí duermen tus criaturas.
tut.obj2 = Construye una guarida (Salas).
tut.lair = Dedotuerto: Camas, hecho. Las criaturas también comen: construye un huerto de setas al lado.
tut.obj3 = Construye un huerto de setas (Salas).
tut.farm = Dedotuerto: Cama y comida: ahora el portal te envía criaturas. Paciencia, vienen solas. Espera a dos.
tut.obj4 = Espera a que dos criaturas lleguen por el portal.
tut.creatures = Dedotuerto: ¡Aquí están! Un poco de motivación nunca viene mal: coge la mano (tecla 2) y haz clic en una criatura manteniendo Mayús pulsada (en pantalla táctil: tócala dos veces) para darle un bofetón. Trabajará más rápido durante un rato.
tut.obj5 = Dale un bofetón a una de tus criaturas (mano, Mayús + clic).
tut.slap = Dedotuerto: ¡Ja! ¿Lo has oído? Algo viene del este. Prepárate: el rayo (Hechizos) golpea fuerte, y tus criaturas luchan solas.
tut.obj6 = Derrota a los dos caballeros.
tut.knights = Dedotuerto: ¡Dos caballeros! Envía a tus criaturas con la bandera de ataque (Órdenes) o fulmínalos con el rayo.
tut.win = Dedotuerto: ¡Bien hecho, amo! Eso es todo. Bueno, casi. La campaña cuenta el resto. Voy a poner el agua a hervir.
+20
View File
@@ -1643,3 +1643,23 @@ ach.wyrm.name = Täällä on lohikäärmeitä
ach.wyrm.desc = Hehkulohikäärme liittyy luolastoosi. ach.wyrm.desc = Hehkulohikäärme liittyy luolastoosi.
ach.fullhand.name = Kädet täynnä ach.fullhand.name = Kädet täynnä
ach.fullhand.desc = Pidä kahdeksaa yksikköä kädessäsi yhtä aikaa. ach.fullhand.desc = Pidä kahdeksaa yksikköä kädessäsi yhtä aikaa.
# tutorial
menu.tutorial = Opastus
tut.name = Ensiaskeleet
tut.title = Crookfinger näyttää, miten homma toimii
tut.story = Vai sinä olet se uusi mestari. Pieni, mutta ydin sykkii yhä, ja se on pääasia.\n\nNäytän sinulle perusasiat: kaivamisen, huoneet, olennot ja sen, mitä ritareille tehdään. Tee kuten sanon, niin kenellekään ei käy kuinkaan. Paitsi ritareille.
tut.start = Crookfinger: Ensimmäinen oppitunti - kaivaminen. Ota Kaiva-työkalu (näppäin 1), vedä sydämen itäpuolella olevan maan yli, niin pirusi kaivavat sen auki.
tut.obj1 = Kaiva tunneli auki sydämen itäpuolelle.
tut.dug = Crookfinger: Kas, sen takana on halli! Pirusi valtaavat maan itsestään. Avaa nyt Huoneet ja rakenna pesä omalle lattiallesi - olentosi nukkuvat siellä.
tut.obj2 = Rakenna pesä (Huoneet).
tut.lair = Crookfinger: Sängyt, valmis. Olennot myös syövät: rakenna sienitarha viereen.
tut.obj3 = Rakenna sienitarha (Huoneet).
tut.farm = Crookfinger: Täysihoito - nyt portaali lähettää sinulle olentoja. Kärsivällisyyttä, ne tulevat itsestään. Odota kahta.
tut.obj4 = Odota, kunnes kaksi olentoa on tullut portaalin läpi.
tut.creatures = Crookfinger: Siinä ne ovat! Pieni motivointi ei koskaan haittaa: ota käsi (näppäin 2) ja napsauta olentoa Shift pohjassa (kosketusnäytöllä: napauta sitä kahdesti) läimäyttääksesi sitä. Se työskentelee hetken nopeammin.
tut.obj5 = Läimäytä yhtä olennoistasi (käsi, Shift + napsautus).
tut.slap = Crookfinger: Ha! Kuulitko? Idästä tulee jotain. Valmistaudu: salama (Loitsut) iskee kovaa, ja olentosi taistelevat omin päin.
tut.obj6 = Kukista kaksi ritaria.
tut.knights = Crookfinger: Kaksi ritaria! Lähetä olentosi hyökkäyslipulla (Käskyt) tai iske heitä salamalla.
tut.win = Crookfinger: Hyvin tehty, mestari! Siinä kaikki. No - melkein. Kampanja kertoo loput. Panen teeveden kiehumaan.
+20
View File
@@ -1643,3 +1643,23 @@ ach.wyrm.name = Ovdje su zmajevi
ach.wyrm.desc = Žarni zmaj pridružuje se tvojoj tamnici. ach.wyrm.desc = Žarni zmaj pridružuje se tvojoj tamnici.
ach.fullhand.name = Pune ruke posla ach.fullhand.name = Pune ruke posla
ach.fullhand.desc = Drži osam jedinica u ruci odjednom. ach.fullhand.desc = Drži osam jedinica u ruci odjednom.
# tutorial
menu.tutorial = Uvod
tut.name = Prvi koraci
tut.title = Krivoprst ti pokazuje kako se to radi
tut.story = Dakle, ti si novi gospodar. Malen, ali jezgra još kuca, a to je ono što se računa.\n\nPokazat ću ti osnove: kopanje, sobe, stvorenja i što učiniti s vitezovima. Radi što kažem i nitko neće stradati. Osim vitezova.
tut.start = Krivoprst: Prva lekcija - kopanje. Uzmi alat za kopanje (tipka 1), povuci preko zemlje istočno od srca i tvoji vražići će je iskopati.
tut.obj1 = Iskopaj tunel istočno od srca.
tut.dug = Krivoprst: Eto, iza je dvorana! Tvoji vražići sami osvajaju tlo. Sad otvori Sobe i izgradi brlog na svom podu - tamo spavaju tvoja stvorenja.
tut.obj2 = Izgradi brlog (Sobe).
tut.lair = Krivoprst: Kreveti, gotovo. Stvorenja i jedu: izgradi vrt gljiva odmah do njega.
tut.obj3 = Izgradi vrt gljiva (Sobe).
tut.farm = Krivoprst: Stan i hrana - sad ti portal šalje stvorenja. Strpljenja, dolaze sama. Pričekaj dva.
tut.obj4 = Pričekaj da kroz portal dođu dva stvorenja.
tut.creatures = Krivoprst: Evo ih! Malo motivacije nikad ne škodi: uzmi ruku (tipka 2) i klikni stvorenje držeći Shift (na zaslonu osjetljivom na dodir: dodirni ga dvaput) da ga pljusneš. Neko vrijeme radi brže.
tut.obj5 = Pljusni jedno od svojih stvorenja (ruka, Shift + klik).
tut.slap = Krivoprst: Ha! Jesi li čuo? Nešto dolazi s istoka. Pripremi se: munja (Čarolije) snažno udara, a tvoja se stvorenja bore sama.
tut.obj6 = Porazi dva viteza.
tut.knights = Krivoprst: Dva viteza! Pošalji stvorenja zastavom napada (Naredbe) ili ih udari munjom.
tut.win = Krivoprst: Bravo, gospodaru! To je sve. Pa - skoro. Ostatak će ispričati kampanja. Idem staviti vodu za čaj.
+20
View File
@@ -1643,3 +1643,23 @@ ach.wyrm.name = Itt sárkányok laknak
ach.wyrm.desc = Egy parázssárkány csatlakozik a kazamatádhoz. ach.wyrm.desc = Egy parázssárkány csatlakozik a kazamatádhoz.
ach.fullhand.name = Tele a kéz ach.fullhand.name = Tele a kéz
ach.fullhand.desc = Tarts egyszerre nyolc egységet a kezedben. ach.fullhand.desc = Tarts egyszerre nyolc egységet a kezedben.
# tutorial
menu.tutorial = Bevezető
tut.name = Első lépések
tut.title = Crookfinger beavat a fortélyokba
tut.story = Szóval te vagy az új mester. Kicsi, de a mag még dobog, és ez a lényeg.\n\nMegmutatom az alapokat: ásás, szobák, lények, és hogy mit kezdj a lovagokkal. Tedd, amit mondok, és senkinek nem esik baja. Kivéve a lovagokat.
tut.start = Crookfinger: Első lecke - ásás. Fogd az Ásás eszközt (1-es billentyű), húzd végig a szívtől keletre lévő földön, és a manóid kiássák.
tut.obj1 = Ásd ki a szívtől keletre lévő alagutat.
tut.dug = Crookfinger: Na tessék, mögötte egy csarnok! A manóid maguktól elfoglalják a talajt. Most nyisd meg a Szobákat, és építs odút a saját padlódra - ott alszanak a lényeid.
tut.obj2 = Építs odút (Szobák).
tut.lair = Crookfinger: Ágyak, pipa. A lények esznek is: építs mellé gombakertet.
tut.obj3 = Építs gombakertet (Szobák).
tut.farm = Crookfinger: Ágy és koszt - most a portál lényeket küld neked. Türelem, maguktól jönnek. Várj kettőre.
tut.obj4 = Várd meg, amíg két lény átjön a portálon.
tut.creatures = Crookfinger: Itt is vannak! Egy kis motiváció sosem árt: fogd a kezet (2-es billentyű), és a Shiftet lenyomva tartva kattints egy lényre (érintőképernyőn: koppints rá kétszer), hogy felpofozd. Egy ideig gyorsabban dolgozik.
tut.obj5 = Pofozd fel az egyik lényedet (kéz, Shift + kattintás).
tut.slap = Crookfinger: Ha! Hallottad? Valami jön keletről. Készülj: a villám (Varázs) nagyot üt, és a lényeid maguktól harcolnak.
tut.obj6 = Győzd le a két lovagot.
tut.knights = Crookfinger: Két lovag! Küldd rájuk a lényeidet a támadózászlóval (Parancs), vagy sújtsd őket villámmal.
tut.win = Crookfinger: Szép munka, mester! Ennyi az egész. Nos - majdnem. A többit elmondja a hadjárat. Felteszem a teavizet.
+20
View File
@@ -1643,3 +1643,23 @@ ach.wyrm.name = Hic sunt dracones
ach.wyrm.desc = Un drago di brace si unisce al tuo dungeon. ach.wyrm.desc = Un drago di brace si unisce al tuo dungeon.
ach.fullhand.name = Mani piene ach.fullhand.name = Mani piene
ach.fullhand.desc = Tieni in mano otto unità contemporaneamente. ach.fullhand.desc = Tieni in mano otto unità contemporaneamente.
# tutorial
menu.tutorial = Tutorial
tut.name = Primi passi
tut.title = Ditastorte ti insegna il mestiere
tut.story = Dunque sei tu il nuovo padrone. Piccolo, ma il nucleo batte ancora, ed è questo che conta.\n\nTi mostrerò le basi: scavare, stanze, creature e cosa fare con i cavalieri. Fai quello che dico e nessuno si farà male. Tranne i cavalieri.
tut.start = Ditastorte: Prima lezione: scavare. Prendi il piccone (tasto 1), trascina sulla terra a est del cuore e i tuoi imp la scaveranno.
tut.obj1 = Scava il tunnel a est del cuore.
tut.dug = Ditastorte: Guarda, c'è una sala dietro! I tuoi imp reclamano il suolo da soli. Ora apri Stanze e costruisci una tana sul tuo pavimento: lì dormono le tue creature.
tut.obj2 = Costruisci una tana (Stanze).
tut.lair = Ditastorte: Letti, fatto. Anche le creature mangiano: costruisci una fungaia lì accanto.
tut.obj3 = Costruisci una fungaia (Stanze).
tut.farm = Ditastorte: Vitto e alloggio: ora il portale ti manda creature. Pazienza, arrivano da sole. Aspettane due.
tut.obj4 = Aspetta che due creature arrivino dal portale.
tut.creatures = Ditastorte: Eccole! Un po' di incoraggiamento non guasta mai: prendi la mano (tasto 2) e clicca su una creatura tenendo premuto Shift (su touch screen: toccala due volte) per darle uno schiaffo. Per un po' lavorerà più in fretta.
tut.obj5 = Dai uno schiaffo a una delle tue creature (mano, Shift + clic).
tut.slap = Ditastorte: Ah! Hai sentito? Qualcosa arriva da est. Preparati: il fulmine (Magie) colpisce duro, e le tue creature combattono da sole.
tut.obj6 = Sconfiggi i due cavalieri.
tut.knights = Ditastorte: Due cavalieri! Manda le tue creature con la bandiera d'attacco (Ordini) o colpiscili con il fulmine.
tut.win = Ditastorte: Ben fatto, padrone! Tutto qui. Be', quasi. Il resto lo racconta la campagna. Metto su il bollitore.
+20
View File
@@ -1643,3 +1643,23 @@ ach.wyrm.name = Hier Zijn Draken
ach.wyrm.desc = Een gloeddraak sluit zich aan bij je kerker. ach.wyrm.desc = Een gloeddraak sluit zich aan bij je kerker.
ach.fullhand.name = Handen Vol ach.fullhand.name = Handen Vol
ach.fullhand.desc = Houd acht units tegelijk in je hand. ach.fullhand.desc = Houd acht units tegelijk in je hand.
# tutorial
menu.tutorial = Tutorial
tut.name = Eerste stappen
tut.title = Krommevinger wijst je de weg
tut.story = Dus jij bent de nieuwe meester. Klein, maar de kern klopt nog, en dat telt.\n\nIk laat je de basis zien: graven, kamers, wezens en wat je met ridders doet. Doe wat ik zeg en niemand raakt gewond. Behalve de ridders.
tut.start = Krommevinger: Eerste les: graven. Pak het houweel (toets 1), sleep over de aarde ten oosten van het hart en je imps graven het uit.
tut.obj1 = Graaf de gang ten oosten van het hart uit.
tut.dug = Krommevinger: Kijk eens, een hal erachter! Je imps nemen de grond vanzelf in. Open nu Kamers en bouw een hol op je eigen vloer: daar slapen je wezens.
tut.obj2 = Bouw een hol (Kamers).
tut.lair = Krommevinger: Bedden, check. Wezens eten ook: bouw er een paddenstoeltuin naast.
tut.obj3 = Bouw een paddenstoeltuin (Kamers).
tut.farm = Krommevinger: Kost en inwoning: nu stuurt het portaal je wezens. Geduld, ze komen vanzelf. Wacht op twee.
tut.obj4 = Wacht tot er twee wezens door het portaal zijn gekomen.
tut.creatures = Krommevinger: Daar zijn ze! Een beetje motivatie kan nooit kwaad: pak de hand (toets 2) en klik met ingedrukte Shift op een wezen (op een touchscreen: tik er twee keer op) om het een mep te geven. Het werkt dan een tijdje sneller.
tut.obj5 = Geef een van je wezens een mep (hand, Shift + klik).
tut.slap = Krommevinger: Ha! Hoorde je dat? Er komt iets uit het oosten. Maak je klaar: de bliksem (Spreuken) slaat hard toe, en je wezens vechten vanzelf.
tut.obj6 = Versla de twee ridders.
tut.knights = Krommevinger: Twee ridders! Stuur je wezens met de aanvalsvlag (Bevelen) of tref ze met de bliksem.
tut.win = Krommevinger: Goed gedaan, meester! Meer is het niet. Nou ja, bijna. De veldtocht vertelt de rest. Ik zet water op.
+20
View File
@@ -1642,3 +1642,23 @@ ach.wyrm.name = Her Være Drager
ach.wyrm.desc = En glødlindorm slutter seg til dungeonet ditt. ach.wyrm.desc = En glødlindorm slutter seg til dungeonet ditt.
ach.fullhand.name = Hendene Fulle ach.fullhand.name = Hendene Fulle
ach.fullhand.desc = Hold åtte enheter i hånden samtidig. ach.fullhand.desc = Hold åtte enheter i hånden samtidig.
# tutorial
menu.tutorial = Opplæring
tut.name = Første skritt
tut.title = Krokfinger viser deg hvordan det gjøres
tut.story = Så du er den nye mesteren. Liten, men kjernen slår fortsatt, og det er det som teller.\n\nJeg skal vise deg det viktigste: graving, rom, skapninger og hva man gjør med riddere. Gjør som jeg sier, så blir ingen skadet. Bortsett fra ridderne.
tut.start = Krokfinger: Første leksjon: graving. Ta hakka (tast 1), dra over jorda øst for hjertet, så graver impene dine den ut.
tut.obj1 = Grav ut gangen øst for hjertet.
tut.dug = Krokfinger: Se der, en hall bak! Impene dine tar gulvet av seg selv. Åpne nå Rom og bygg et hi på ditt eget gulv: der sover skapningene dine.
tut.obj2 = Bygg et hi (Rom).
tut.lair = Krokfinger: Senger, klart. Skapninger spiser også: bygg en soppehage ved siden av.
tut.obj3 = Bygg en soppehage (Rom).
tut.farm = Krokfinger: Kost og losji: nå sender portalen deg skapninger. Tålmodighet, de kommer av seg selv. Vent på to.
tut.obj4 = Vent til to skapninger har kommet gjennom portalen.
tut.creatures = Krokfinger: Der er de! Litt motivasjon skader aldri: ta hånden (tast 2) og klikk på en skapning mens du holder Shift nede (på berøringsskjerm: trykk to ganger) for å gi den en ørefik. Da jobber den fortere en stund.
tut.obj5 = Gi en av skapningene dine en ørefik (hånd, Shift + klikk).
tut.slap = Krokfinger: Ha! Hørte du det? Noe kommer fra øst. Gjør deg klar: lynet (Formler) slår hardt, og skapningene dine kjemper av seg selv.
tut.obj6 = Beseir de to ridderne.
tut.knights = Krokfinger: To riddere! Send skapningene dine med angrepsflagget (Ordrer), eller slå dem med lynet.
tut.win = Krokfinger: Godt gjort, mester! Det var det hele. Vel – nesten. Kampanjen forteller resten. Jeg setter på kjelen.
+20
View File
@@ -1643,3 +1643,23 @@ ach.wyrm.name = Aqui Há Dragões
ach.wyrm.desc = Uma serpe de brasa junta-se à tua masmorra. ach.wyrm.desc = Uma serpe de brasa junta-se à tua masmorra.
ach.fullhand.name = Mãos Cheias ach.fullhand.name = Mãos Cheias
ach.fullhand.desc = Segura oito unidades na mão ao mesmo tempo. ach.fullhand.desc = Segura oito unidades na mão ao mesmo tempo.
# tutorial
menu.tutorial = Tutorial
tut.name = Primeiros Passos
tut.title = Dedotorto Ensina-te o Ofício
tut.story = Então tu és o novo mestre. Pequeno, mas o núcleo ainda bate, e é isso que conta.\n\nVou mostrar-te o básico: cavar, salas, criaturas e o que fazer com cavaleiros. Faz o que eu digo e ninguém se magoa. Exceto os cavaleiros.
tut.start = Dedotorto: Primeira lição: cavar. Pega na picareta (tecla 1), arrasta sobre a terra a leste do coração e os teus diabretes escavam-na.
tut.obj1 = Escava o túnel a leste do coração.
tut.dug = Dedotorto: Olha, um salão lá atrás! Os teus diabretes reclamam o chão sozinhos. Agora abre Salas e constrói um covil no teu chão: é lá que as tuas criaturas dormem.
tut.obj2 = Constrói um covil (Salas).
tut.lair = Dedotorto: Camas, feito. As criaturas também comem: constrói uma horta de cogumelos ao lado.
tut.obj3 = Constrói uma horta de cogumelos (Salas).
tut.farm = Dedotorto: Cama e mesa: agora o portal envia-te criaturas. Paciência, elas vêm sozinhas. Espera por duas.
tut.obj4 = Espera até duas criaturas chegarem pelo portal.
tut.creatures = Dedotorto: Aqui estão elas! Um pouco de motivação nunca fez mal a ninguém: pega na mão (tecla 2) e clica numa criatura com Shift premido (num ecrã tátil: toca-lhe duas vezes) para lhe dar uma bofetada. Durante algum tempo trabalha mais depressa.
tut.obj5 = Dá uma bofetada a uma das tuas criaturas (mão, Shift + clique).
tut.slap = Dedotorto: Ah! Ouviste aquilo? Vem aí qualquer coisa do leste. Prepara-te: o relâmpago (Feitiços) atinge com força, e as tuas criaturas lutam sozinhas.
tut.obj6 = Derrota os dois cavaleiros.
tut.knights = Dedotorto: Dois cavaleiros! Envia as tuas criaturas com a bandeira de ataque (Ordens) ou atinge-os com o relâmpago.
tut.win = Dedotorto: Muito bem, mestre! É tudo. Bem, quase. A campanha conta o resto. Vou pôr a chaleira ao lume.
+20
View File
@@ -1643,3 +1643,23 @@ ach.wyrm.name = Aici sunt dragoni
ach.wyrm.desc = Un balaur de jar se alătură temniței tale. ach.wyrm.desc = Un balaur de jar se alătură temniței tale.
ach.fullhand.name = Mâinile pline ach.fullhand.name = Mâinile pline
ach.fullhand.desc = Ține opt unități în mână deodată. ach.fullhand.desc = Ține opt unități în mână deodată.
# tutorial
menu.tutorial = Tutorial
tut.name = Primii pași
tut.title = Crookfinger îți arată cum stă treaba
tut.story = Deci tu ești noul stăpân. Mic, dar miezul încă bate, și asta contează.\n\nÎți arăt elementele de bază: săpatul, camerele, creaturile și ce să faci cu cavalerii. Fă ce-ți spun și nimeni nu pățește nimic. În afară de cavaleri.
tut.start = Crookfinger: Prima lecție - săpatul. Ia unealta Sapă (tasta 1), trage peste pământul de la est de inimă și drăcușorii tăi îl vor săpa.
tut.obj1 = Sapă tunelul de la est de inimă.
tut.dug = Crookfinger: Uite, o sală în spate! Drăcușorii tăi cuceresc singuri terenul. Acum deschide Camere și construiește un bârlog pe podeaua ta - acolo dorm creaturile tale.
tut.obj2 = Construiește un bârlog (Camere).
tut.lair = Crookfinger: Paturi, bifat. Creaturile și mănâncă: construiește o grădină de ciuperci lângă el.
tut.obj3 = Construiește o grădină de ciuperci (Camere).
tut.farm = Crookfinger: Casă și masă - acum portalul îți trimite creaturi. Răbdare, vin singure. Așteaptă două.
tut.obj4 = Așteaptă până când două creaturi trec prin portal.
tut.creatures = Crookfinger: Iată-le! Puțină motivație nu strică niciodată: ia mâna (tasta 2) și dă clic pe o creatură ținând apăsat Shift (pe ecran tactil: atinge-o de două ori) ca să-i dai o palmă. Va munci mai repede o vreme.
tut.obj5 = Dă-i o palmă uneia dintre creaturile tale (mână, Shift + clic).
tut.slap = Crookfinger: Ha! Ai auzit? Ceva vine dinspre est. Pregătește-te: fulgerul (Vrăji) lovește tare, iar creaturile tale luptă singure.
tut.obj6 = Învinge cei doi cavaleri.
tut.knights = Crookfinger: Doi cavaleri! Trimite-ți creaturile cu steagul de atac (Ordine) sau lovește-i cu fulgerul.
tut.win = Crookfinger: Bravo, stăpâne! Asta e tot. Ei - aproape. Campania îți spune restul. Pun de un ceai.
+20
View File
@@ -1643,3 +1643,23 @@ ach.wyrm.name = Здесь водятся драконы
ach.wyrm.desc = Огненный змий присоединяется к твоему подземелью. ach.wyrm.desc = Огненный змий присоединяется к твоему подземелью.
ach.fullhand.name = Полные руки ach.fullhand.name = Полные руки
ach.fullhand.desc = Держи в руке восемь существ одновременно. ach.fullhand.desc = Держи в руке восемь существ одновременно.
# tutorial
menu.tutorial = Обучение
tut.name = Первые шаги
tut.title = Кривопал вводит тебя в курс дела
tut.story = Так ты, значит, новый хозяин. Маловат, но ядро ещё бьётся, а это главное.\n\nЯ покажу тебе основы: копать, комнаты, существа и что делать с рыцарями. Делай, как я говорю, и никто не пострадает. Кроме рыцарей.
tut.start = Кривопал: Урок первый — копать. Возьми кирку (клавиша 1), протяни по земле к востоку от сердца, и твои бесята её выкопают.
tut.obj1 = Выкопай проход к востоку от сердца.
tut.dug = Кривопал: Гляди-ка, за ним зал! Твои бесята сами захватывают пол. Теперь открой «Комнаты» и построй логово на своём полу — там спят твои существа.
tut.obj2 = Построй логово (Комнаты).
tut.lair = Кривопал: Кровати есть. Существа ещё и едят: построй рядом грибной сад.
tut.obj3 = Построй грибной сад (Комнаты).
tut.farm = Кривопал: Стол и кров — теперь портал присылает тебе существ. Терпение, они придут сами. Дождись двоих.
tut.obj4 = Дождись, пока через портал придут два существа.
tut.creatures = Кривопал: Вот и они! Немного мотивации никогда не повредит: возьми руку (клавиша 2) и щёлкни по существу, удерживая Shift (на сенсорном экране: коснись дважды), чтобы отвесить ему шлепок. Какое-то время оно будет работать быстрее.
tut.obj5 = Отвесь шлепок одному из своих существ (рука, Shift + щелчок).
tut.slap = Кривопал: Ха! Слышал? С востока что-то идёт. Готовься: молния (Чары) бьёт сильно, а твои существа сражаются сами.
tut.obj6 = Победи двух рыцарей.
tut.knights = Кривопал: Два рыцаря! Пошли своих существ флагом атаки (Приказы) или порази их молнией.
tut.win = Кривопал: Молодец, хозяин! Вот и всё. Ну — почти. Остальное расскажет кампания. Пойду поставлю чайник.
+20
View File
@@ -1643,3 +1643,23 @@ ach.wyrm.name = Tu sú draci
ach.wyrm.desc = Žeravý šarkan sa pridá k tvojej kobke. ach.wyrm.desc = Žeravý šarkan sa pridá k tvojej kobke.
ach.fullhand.name = Plné ruky práce ach.fullhand.name = Plné ruky práce
ach.fullhand.desc = Drž v ruke naraz osem jednotiek. ach.fullhand.desc = Drž v ruke naraz osem jednotiek.
# tutorial
menu.tutorial = Úvod
tut.name = Prvé kroky
tut.title = Krivoprst ti ukáže, ako sa to robí
tut.story = Tak ty si ten nový pán. Malý, ale jadro ešte bije, a to je hlavné.\n\nUkážem ti základy: kopanie, miestnosti, tvory a čo robiť s rytiermi. Rob, čo poviem, a nikomu sa nič nestane. Okrem rytierov.
tut.start = Krivoprst: Prvá lekcia - kopanie. Vezmi nástroj Kopať (kláves 1), potiahni cez zem na východ od srdca a tvoji čertíci ju vykopú.
tut.obj1 = Vykop tunel na východ od srdca.
tut.dug = Krivoprst: Hľa, za ním je sieň! Tvoji čertíci si zem zaberú sami. Teraz otvor Miestnosti a postav brloh na vlastnej podlahe - tam spia tvoje tvory.
tut.obj2 = Postav brloh (Miestnosti).
tut.lair = Krivoprst: Postele, hotovo. Tvory aj jedia: postav vedľa hubovú záhradu.
tut.obj3 = Postav hubovú záhradu (Miestnosti).
tut.farm = Krivoprst: Strava a nocľah - teraz ti portál posiela tvory. Trpezlivosť, prídu samy. Počkaj na dva.
tut.obj4 = Počkaj, kým cez portál prídu dva tvory.
tut.creatures = Krivoprst: Tu sú! Trocha motivácie nikdy nezaškodí: vezmi ruku (kláves 2) a klikni na tvora s podržaným Shiftom (na dotykovej obrazovke: ťukni naň dvakrát), aby si mu dal zaucho. Chvíľu bude pracovať rýchlejšie.
tut.obj5 = Daj zaucho jednému zo svojich tvorov (ruka, Shift + klik).
tut.slap = Krivoprst: Ha! Počul si? Niečo prichádza z východu. Priprav sa: blesk (Kúzla) udrie tvrdo a tvoje tvory bojujú samy.
tut.obj6 = Poraz dvoch rytierov.
tut.knights = Krivoprst: Dvaja rytieri! Pošli na nich tvory útočnou vlajkou (Rozkazy) alebo ich zasiahni bleskom.
tut.win = Krivoprst: Výborne, pane! To je všetko. No - takmer. Zvyšok povie kampaň. Pristavím vodu na čaj.
+20
View File
@@ -1643,3 +1643,23 @@ ach.wyrm.name = Овде су змајеви
ach.wyrm.desc = Жарки змај се придружује твојој тамници. ach.wyrm.desc = Жарки змај се придружује твојој тамници.
ach.fullhand.name = Пуне руке посла ach.fullhand.name = Пуне руке посла
ach.fullhand.desc = Држи осам јединица у руци одједном. ach.fullhand.desc = Држи осам јединица у руци одједном.
# tutorial
menu.tutorial = Увод
tut.name = Први кораци
tut.title = Кривопрст ти показује како се то ради
tut.story = Дакле, ти си нови господар. Мали, али језгро још куца, а то је оно што се рачуна.\n\nПоказаћу ти основе: копање, собе, створења и шта урадити с витезовима. Ради шта кажем и нико неће страдати. Осим витезова.
tut.start = Кривопрст: Прва лекција - копање. Узми алат за копање (тастер 1), превуци преко земље источно од срца и твоји ђаволци ће је ископати.
tut.obj1 = Ископај тунел источно од срца.
tut.dug = Кривопрст: Ето, иза је дворана! Твоји ђаволци сами освајају тло. Сад отвори Собе и изгради брлог на свом поду - тамо спавају твоја створења.
tut.obj2 = Изгради брлог (Собе).
tut.lair = Кривопрст: Кревети, готово. Створења и једу: изгради врт печурака одмах до њега.
tut.obj3 = Изгради врт печурака (Собе).
tut.farm = Кривопрст: Стан и храна - сад ти портал шаље створења. Стрпљења, долазе сама. Сачекај два.
tut.obj4 = Сачекај да кроз портал дођу два створења.
tut.creatures = Кривопрст: Ево их! Мало мотивације никад не шкоди: узми руку (тастер 2) и кликни створење држећи Shift (на екрану осетљивом на додир: додирни га двапут) да га ошамариш. Неко време ради брже.
tut.obj5 = Ошамари једно од својих створења (рука, Shift + клик).
tut.slap = Кривопрст: Ха! Јеси ли чуо? Нешто долази са истока. Спреми се: муња (Чини) снажно удара, а твоја створења се боре сама.
tut.obj6 = Порази два витеза.
tut.knights = Кривопрст: Два витеза! Пошаљи створења заставом напада (Наредбе) или их удари муњом.
tut.win = Кривопрст: Браво, господару! То је све. Па - скоро. Остатак ће испричати кампања. Идем да ставим воду за чај.
+20
View File
@@ -1643,3 +1643,23 @@ ach.wyrm.name = Här finns drakar
ach.wyrm.desc = En glödlindorm ansluter sig till din håla. ach.wyrm.desc = En glödlindorm ansluter sig till din håla.
ach.fullhand.name = Fullt upp ach.fullhand.name = Fullt upp
ach.fullhand.desc = Håll åtta enheter i handen samtidigt. ach.fullhand.desc = Håll åtta enheter i handen samtidigt.
# tutorial
menu.tutorial = Introduktion
tut.name = Första stegen
tut.title = Crookfinger visar hur det går till
tut.story = Så du är den nya mästaren. Liten, men kärnan slår fortfarande, och det är det som räknas.\n\nJag ska visa dig grunderna: grävning, rum, varelser och vad man gör med riddare. Gör som jag säger så kommer ingen till skada. Utom riddarna.
tut.start = Crookfinger: Första lektionen: grävning. Ta hackan (tangent 1), dra över jorden öster om hjärtat så gräver dina hobar ut den.
tut.obj1 = Gräv ut gången öster om hjärtat.
tut.dug = Crookfinger: Titta, en sal bakom! Dina hobar tar marken av sig själva. Öppna nu Rum och bygg ett näste på ditt eget golv: där sover dina varelser.
tut.obj2 = Bygg ett näste (Rum).
tut.lair = Crookfinger: Sängar, klart. Varelser äter också: bygg en svampträdgård bredvid.
tut.obj3 = Bygg en svampträdgård (Rum).
tut.farm = Crookfinger: Kost och logi: nu skickar portalen dig varelser. Tålamod, de kommer av sig själva. Vänta på två.
tut.obj4 = Vänta tills två varelser har kommit genom portalen.
tut.creatures = Crookfinger: Där är de! Lite motivation skadar aldrig: ta handen (tangent 2) och klicka på en varelse medan du håller ned Shift (på pekskärm: tryck två gånger) för att ge den en örfil. Då arbetar den snabbare en stund.
tut.obj5 = Ge en av dina varelser en örfil (hand, Shift + klick).
tut.slap = Crookfinger: Ha! Hörde du det? Något kommer från öster. Gör dig redo: blixten (Besvärjelser) slår hårt, och dina varelser slåss av sig själva.
tut.obj6 = Besegra de två riddarna.
tut.knights = Crookfinger: Två riddare! Skicka dina varelser med anfallsflaggan (Order) eller träffa dem med blixten.
tut.win = Crookfinger: Bra gjort, mästare! Det är allt. Nåja – nästan. Kampanjen berättar resten. Jag sätter på tevattnet.
+101
View File
@@ -238,6 +238,16 @@ pub fn demo_campaign() -> CampaignDoc {
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
#[test]
fn the_tutorial_is_a_valid_campaign() {
let doc = super::tutorial_campaign();
assert!(doc.validate().is_empty(), "{:?}", doc.validate());
assert_eq!(doc.missions.len(), 1);
let g = crate::campaign::start_editor_mission(&doc.missions[0], 0, 1);
assert!(g.script.is_some());
assert!(!g.ents.iter().any(|e| e.alive && e.active_hero()), "no knight before the last step");
}
use super::*; use super::*;
#[test] #[test]
@@ -278,3 +288,94 @@ mod tests {
assert!(g.mission.as_ref().unwrap().goals.contains(&Goal::Shards), "the shard of the outpost is still there"); assert!(g.mission.as_ref().unwrap().goals.contains(&Goal::Shards), "the shard of the outpost is still there");
} }
} }
// The tutorial: Crookfinger leads a new master step by step - dig the tunnel, claim the hall,
// build a lair and a mushroom garden, wait for the first creatures, slap one, and beat the first
// two knights. Each step switches on the trigger of the next one. Played like an editor campaign
// (title menu: Tutorial); texts come from the language files (tut.*).
pub fn tutorial_campaign() -> CampaignDoc {
let mut doc = CampaignDoc { name: tr("tut.name"), author: "DungeonCraft".into(), language: crate::i18n::language(), ..CampaignDoc::default() };
let mut m = MissionDoc {
key: "tutorial".into(),
title: tr("tut.title"),
story: tr("tut.story").replace("\\n", "\n"),
size: (64, 64),
seed: 777,
gold: 3000.0,
goals: Vec::new(),
gen: GenDoc { rivers: 0, lava: 0, forts: 0, rivals: 0, difficulty: 0, surface: false },
pos: (40.0, 60.0),
..MissionDoc::default()
};
let saved = (crate::map::mw(), crate::map::mh());
let mut g = crate::campaign::start_editor_mission(&m, 0, 777);
let (cx, cy) = g.map.core;
let (w, h) = (g.map.w as i32, g.map.h as i32);
let cl = |x: i32, y: i32| (x.clamp(3, w - 4), y.clamp(3, h - 4));
// east of the heart: a tunnel of earth to dig, then a hall of open ground behind it
let tunnel: Vec<(i32, i32)> = (cx + 4..cx + 8).flat_map(|x| [(x, cy + 1), (x, cy + 2)]).map(|(x, y)| cl(x, y)).collect();
let (hx0, hy0) = cl(cx + 8, cy - 2);
let (hx1, hy1) = cl(cx + 15, cy + 5);
for y in hy0 - 1..=hy1 + 1 {
for x in hx0..=hx1 + 1 {
let t = &mut g.map.t[crate::map::idx(x, y)];
let edge = y == hy0 - 1 || y == hy1 + 1 || x == hx1 + 1;
t.kind = if edge { crate::map::Kind::Earth } else { crate::map::Kind::Floor };
t.owner = crate::map::Owner::None;
t.gold = 0;
t.reinforced = false;
}
}
for &(x, y) in &tunnel {
let t = &mut g.map.t[crate::map::idx(x, y)];
t.kind = crate::map::Kind::Earth;
t.owner = crate::map::Owner::None;
t.hp = 3.0;
}
// the knights come from a cave further east
let (kx, ky) = cl(cx + 22, cy + 1);
for y in ky - 2..=ky + 2 {
for x in kx - 2..=kx + 2 {
let t = &mut g.map.t[crate::map::idx(x, y)];
t.kind = crate::map::Kind::Floor;
t.owner = crate::map::Owner::None;
}
}
for x in hx1 + 1..kx - 2 {
let t = &mut g.map.t[crate::map::idx(x, cy + 1)];
t.kind = crate::map::Kind::Earth;
t.owner = crate::map::Owner::None;
}
g.ents.retain(|e| !e.hero);
g.recount();
g.init_fog();
m.zones = vec![
ZoneDoc { name: "tunnel".into(), shape: "tiles".into(), at: None, radius: None, tiles: Some(tunnel), from: None, to: None, width: None },
zone_rect("hall", hx0, hy0, hx1, hy1),
ZoneDoc { name: "knights".into(), shape: "circle".into(), at: Some((kx as f32, ky as f32)), radius: Some(1.5), tiles: None, from: None, to: None, width: None },
];
m.map = MapDoc::Fixed { game: serde_json::to_string(&g).unwrap_or_default() };
crate::map::set_dims(saved.0, saved.1);
let s = &mut m.scripts;
let obj = |k: &str| Block::Objective { text: tr(k) };
let on = |t: &str| Block::Trigger { name: t.into(), on: true };
s.start = vec![say("tut.start"), obj("tut.obj1"), Block::SetVar { name: "knights".into(), value: n(0.0) }, Block::Camera { zone: "tunnel".into() }];
s.victory = vec![Block::If { cond: cmp(">=", var("knights"), n(2.0)), then: vec![say("tut.win"), Block::Win], els: vec![] }];
let off = |t: TriggerDoc| TriggerDoc { enabled: false, ..t };
s.triggers = vec![
trig("dug", TriggerKind::ZoneDug { zone: "tunnel".into() }, true, vec![say("tut.dug"), obj("tut.obj2"), on("lair")]),
off(trig("lair", TriggerKind::RoomBuilt { room: "Lair".into() }, true, vec![say("tut.lair"), obj("tut.obj3"), on("farm")])),
off(trig("farm", TriggerKind::RoomBuilt { room: "Farm".into() }, true, vec![say("tut.farm"), obj("tut.obj4"), on("creatures")])),
off(trig("creatures", TriggerKind::Value { what: "creatures".into(), var: String::new(), op: ">=".into(), n: 2.0 }, true, vec![say("tut.creatures"), obj("tut.obj5"), on("slap")])),
off(trig(
"slap",
TriggerKind::Slap,
true,
vec![say("tut.slap"), obj("tut.obj6"), Block::Wait { secs: n(20.0) }, Block::Spawn { side: 1, kind: "Knight".into(), count: n(2.0), level: n(1.0), place: Place::Zone("knights".into()), name: String::new() }, say("tut.knights"), Block::Camera { zone: "knights".into() }, on("knight")],
)),
off(trig("knight", TriggerKind::UnitDies { side: 1, kind: String::new(), name: String::new() }, false, vec![Block::AddVar { name: "knights".into(), value: n(1.0) }])),
];
doc.missions.push(m);
doc
}
+30 -1
View File
@@ -586,6 +586,7 @@ struct App {
coop_editor: bool, // the co-op match plays a mission of an editor campaign coop_editor: bool, // the co-op match plays a mission of an editor campaign
coop_run: Option<CoopRun>, // ... and this is where the run through that campaign stands coop_run: Option<CoopRun>, // ... and this is where the run through that campaign stands
offline: bool, // a co-op game played without the server: the other seat is an AI partner offline: bool, // a co-op game played without the server: the other seat is an AI partner
tutorial: bool, // the tutorial mission is being played (its end leads back to the title)
fps: f32, fps: f32,
renderer: String, renderer: String,
frame_ms: f32, frame_ms: f32,
@@ -881,7 +882,7 @@ async fn main() {
let seed = (miniquad::date::now() * 1000.0) as u32 | 1; let seed = (miniquad::date::now() * 1000.0) as u32 | 1;
// behind the title menu: the endless bridge battle // behind the title menu: the endless bridge battle
let (game, cam) = Game::new_demo(seed); let (game, cam) = Game::new_demo(seed);
let mut app = App { game, cam, settings, seed, status: None, recorded: false, client: MatchClient::new(), ws_id: 0, match_mode: false, coop: false, coop_editor: false, coop_run: None, offline: false, fps: 0.0, renderer: platform::renderer(), frame_ms: 0.0, frame_hist: [0.0; FRAME_HIST], frame_hist_pos: 0, custom_campaign: None, custom_progress: None, custom_mission_index: None, custom_next_index: None, editor: None, editor_testing: false, editor_test_only: false, editor_public_pending: false, editor_loading: None, pending_briefing: None }; let mut app = App { game, cam, settings, seed, status: None, recorded: false, client: MatchClient::new(), ws_id: 0, match_mode: false, coop: false, coop_editor: false, coop_run: None, offline: false, tutorial: false, fps: 0.0, renderer: platform::renderer(), frame_ms: 0.0, frame_hist: [0.0; FRAME_HIST], frame_hist_pos: 0, custom_campaign: None, custom_progress: None, custom_mission_index: None, custom_next_index: None, editor: None, editor_testing: false, editor_test_only: false, editor_public_pending: false, editor_loading: None, pending_briefing: None };
menu.progress = platform::storage_get(PROGRESS_KEY).and_then(|s| serde_json::from_str(&s).ok()).unwrap_or_default(); menu.progress = platform::storage_get(PROGRESS_KEY).and_then(|s| serde_json::from_str(&s).ok()).unwrap_or_default();
apply_game_settings(&mut app.game, &app.settings); apply_game_settings(&mut app.game, &app.settings);
let mut inp = Input { ldown: None, rdown: None, rlast: (0.0, 0.0), rdrag: false, mlast: None, minimap_drag: false, tlast: None, touch_world: false, inspect: None }; let mut inp = Input { ldown: None, rdown: None, rlast: (0.0, 0.0), rdrag: false, mlast: None, minimap_drag: false, tlast: None, touch_world: false, inspect: None };
@@ -1571,6 +1572,24 @@ app.pending_briefing = briefing_of(&menu.campaign_doc, i);
} }
} }
} }
MenuAction::Tutorial => {
let doc = editor::templates::tutorial_campaign();
let progress = campaign_doc::CampaignProgress::for_doc(&doc);
(app.game, app.cam) = custom_mission_game(&doc, 0, progress.run_seed);
app.pending_briefing = briefing_of(&doc, 0);
apply_game_settings(&mut app.game, &app.settings);
app.game.coop = false;
app.coop = false;
app.recorded = false;
app.custom_campaign = Some(doc);
app.custom_progress = Some(progress);
app.custom_mission_index = Some(0);
app.tutorial = true;
menu.page = None;
ui.log.clear();
ui.show_help = false;
autosave_t = 0.0;
}
MenuAction::OpenRepo => platform::open_url(menu::REPO_URL), MenuAction::OpenRepo => platform::open_url(menu::REPO_URL),
MenuAction::OpenClaudeCode => platform::open_url(menu::CLAUDE_CODE_URL), MenuAction::OpenClaudeCode => platform::open_url(menu::CLAUDE_CODE_URL),
MenuAction::OpenOpenCode => platform::open_url(menu::OPENCODE_URL), MenuAction::OpenOpenCode => platform::open_url(menu::OPENCODE_URL),
@@ -1608,6 +1627,7 @@ app.pending_briefing = briefing_of(&menu.campaign_doc, i);
MenuAction::BackToEditor => back_to_editor(&mut app, &mut menu, &mut r3d), MenuAction::BackToEditor => back_to_editor(&mut app, &mut menu, &mut r3d),
MenuAction::MainMenu if app.editor_testing => back_to_editor(&mut app, &mut menu, &mut r3d), MenuAction::MainMenu if app.editor_testing => back_to_editor(&mut app, &mut menu, &mut r3d),
MenuAction::MainMenu => { MenuAction::MainMenu => {
app.tutorial = false;
if app.match_mode || app.game.in_match() { if app.match_mode || app.game.in_match() {
app.leave_match(); app.leave_match();
} else if app.game.state == 0 { } else if app.game.state == 0 {
@@ -1689,6 +1709,15 @@ app.pending_briefing = briefing_of(&menu.campaign_doc, i);
menu.error = Some(i18n::tr("net.status_offline")); menu.error = Some(i18n::tr("net.status_offline"));
} }
} }
UiAction::EndNext | UiAction::EndCampaign if app.tutorial && app.game.state == 1 => {
app.tutorial = false;
app.custom_campaign = None;
app.custom_progress = None;
app.custom_mission_index = None;
menu.page = Some(Page::Title);
app.seed = next_seed(app.seed);
(app.game, app.cam) = Game::new_demo(app.seed);
}
UiAction::EndNext => { UiAction::EndNext => {
if app.custom_campaign.is_some() { if app.custom_campaign.is_some() {
let campaign = app.custom_campaign.clone(); let campaign = app.custom_campaign.clone();
+4
View File
@@ -301,6 +301,7 @@ enum Btn {
MatchChat, MatchChat,
Bestiary, Bestiary,
Achievements, Achievements,
Tutorial,
BestTab(usize), BestTab(usize),
BestSel(i32), BestSel(i32),
BestPick(usize), BestPick(usize),
@@ -392,6 +393,7 @@ pub enum MenuAction {
CampaignStart(usize), CampaignStart(usize),
OpenRepo, OpenRepo,
OpenClaudeCode, OpenClaudeCode,
Tutorial, // start the tutorial mission
BackToEditor, BackToEditor,
OpenOpenCode, OpenOpenCode,
Login(String, String), Login(String, String),
@@ -875,6 +877,7 @@ impl Menu {
Some(s) if s.side != 0 => MenuAction::MatchSetAi(s.side, !s.ai), Some(s) if s.side != 0 => MenuAction::MatchSetAi(s.side, !s.ai),
_ => MenuAction::Consumed, _ => MenuAction::Consumed,
}, },
Some(Btn::Tutorial) => MenuAction::Tutorial,
Some(Btn::Campaign) => { Some(Btn::Campaign) => {
self.page = Some(Page::Campaign); self.page = Some(Page::Campaign);
self.scroll = 0; self.scroll = 0;
@@ -1104,6 +1107,7 @@ impl Menu {
items.push((Btn::Continue, tr("menu.continue"))); items.push((Btn::Continue, tr("menu.continue")));
} }
items.push((Btn::Campaign, tr("menu.campaign"))); items.push((Btn::Campaign, tr("menu.campaign")));
items.push((Btn::Tutorial, tr("menu.tutorial")));
items.push((Btn::CampaignEditor, tr("menu.campaign_editor"))); items.push((Btn::CampaignEditor, tr("menu.campaign_editor")));
items.push((Btn::Match, tr("menu.multiplayer"))); items.push((Btn::Match, tr("menu.multiplayer")));
items.push((Btn::New, tr("menu.new"))); items.push((Btn::New, tr("menu.new")));