Drawbridges (down, up, automatic), frost spell and obsidian over cooled lava

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Richard ZinkandClaude Opus 5.5 committed 2026-11-05 21:52:12 +01:00
1 parent 76c23a06f0
commit 34b4640d85
32 files changed
+869 -31

No files matched your search

+5 -2
View File
@@ -3,7 +3,7 @@
Agreed on 2026-11-05. Worked through in this order; every block is committed, pushed and deployed Agreed on 2026-11-05. Worked through in this order; every block is committed, pushed and deployed
on its own. Details not listed here are decided along the way. on its own. Details not listed here are decided along the way.
## 1. Open items ## 1. Open items – done (v202611-00035)
1. **Heroes attack every master** – with rival masters or several players, each hero wave marches 1. **Heroes attack every master** – with rival masters or several players, each hero wave marches
to the heart of the *strongest* living master (most creatures and gold), not only the player's. to the heart of the *strongest* living master (most creatures and gold), not only the player's.
@@ -14,7 +14,7 @@ on its own. Details not listed here are decided along the way.
the reached mission; the host keeps the progress. the reached mission; the host keeps the progress.
4. **New screenshots** – title demo, language dropdown, co-op campaign. 4. **New screenshots** – title demo, language dropdown, co-op campaign.
## 2. Bridges ## 2. Bridges – done (v202611-00036)
Stone bridges over lava exist already (75 gold per tile). Stone bridges over lava exist already (75 gold per tile).
@@ -27,6 +27,9 @@ Stone bridges over lava exist already (75 gold per tile).
4. **Repairing bridges** – imps repair damaged bridges; knights wear bridges down step by step 4. **Repairing bridges** – imps repair damaged bridges; knights wear bridges down step by step
instead of in one blow. instead of in one blow.
Built as: `src/bridges.rs` (fire, wear, drawbridges, obsidian), the *Drawbridge* tool (click: down → up →
automatic) and the *Frost* spell (lava → obsidian for 40 s); the frost glow trap keeps lava next to it cooled.
## 3. The surface world ## 3. The surface world
1. **Surface terrain** – grass, trees, paths, daylight and sky. Trees act like earth: imps fell 1. **Surface terrain** – grass, trees, paths, daylight and sky. Trees act like earth: imps fell
+20
View File
@@ -399,6 +399,9 @@ help.start_touch = Klepni pro start
tool.bridge.label = Most tool.bridge.label = Most
tool.bridge.name = Postavit most tool.bridge.name = Postavit most
tool.bridge.desc = Postaví most přes vodu nebo lávu. Táhni z vlastní země přes řeku; most roste políčko po políčku od tvého území. tool.bridge.desc = Postaví most přes vodu nebo lávu. Táhni z vlastní země přes řeku; most roste políčko po políčku od tvého území.
tool.drawbridge.label = Padací most
tool.drawbridge.name = Postavit padací most
tool.drawbridge.desc = Most, který můžeš vytáhnout: táhni přes řeku a postav ho, kliknutím přepínáš: dole, nahoře, automaticky (zvedne se, když se blíží nepřátelé). Dřevo nad vodou hoří, kámen nad lávou ne.
cost.bridge = {0} zlata/políčko přes vodu, {1} přes lávu cost.bridge = {0} zlata/políčko přes vodu, {1} přes lávu
hint.bridge_where = Mosty musí začínat na tvé zemi: táhni ze svého území přes řeku. hint.bridge_where = Mosty musí začínat na tvé zemi: táhni ze svého území přes řeku.
hint.bridge_fire = Dřevěné mosty hoří: drž ohnivé pasti, ohnivý dech a blesky dál od nich – kamenné mosty nad lávou nehoří. hint.bridge_fire = Dřevěné mosty hoří: drž ohnivé pasti, ohnivý dech a blesky dál od nich – kamenné mosty nad lávou nehoří.
@@ -411,6 +414,15 @@ tile.lava = Láva
tile.lava_info = Co do ní spadne, shoří. Přecházejí ji kamenné mosty. tile.lava_info = Co do ní spadne, shoří. Přecházejí ji kamenné mosty.
tile.bridge = Dřevěný most tile.bridge = Dřevěný most
tile.lavabridge = Kamenný most tile.lavabridge = Kamenný most
tile.drawbridge = Padací most
tile.drawbridge_up = Vytažený
tile.drawbridge_down = Spuštěný
tile.drawbridge_auto = Automaticky (dole)
tile.drawbridge_auto_up = Automaticky (nahoře)
tile.obsidian = Obsidián
tile.obsidian_info = Ztuhlá láva – roztaje za {0} s
tile.bridge_burning = Hoří!
tile.bridge_worn = Poškozený {0}%
tile.shard = Střep tvého jádra duše tile.shard = Střep tvého jádra duše
tile.shard_info = Zaber tuto komnatu a získáš střep zpět. tile.shard_info = Zaber tuto komnatu a získáš střep zpět.
@@ -433,6 +445,10 @@ msg.vault_taken = Rytířský trezor dobyt: poklad v hodnotě {0} je tvůj.
msg.shard_taken = Střep tvého jádra duše je zpět v tvých rukou! msg.shard_taken = Střep tvého jádra duše je zpět v tvých rukou!
msg.bridge_torn = Rytíři strhli jeden z tvých mostů! msg.bridge_torn = Rytíři strhli jeden z tvých mostů!
msg.bridge_fire = Jeden z tvých mostů hoří! msg.bridge_fire = Jeden z tvých mostů hoří!
msg.drawbridge_up = Padací most je vytažený.
msg.drawbridge_down = Padací most je spuštěný.
msg.drawbridge_auto = Padací most se sám zvedne, když se blíží nepřátelé.
msg.drawbridge_rises = Blíží se nepřátelé: padací most se zvedá!
job.tear_bridge = Strhává most job.tear_bridge = Strhává most
job.patrol = Na hlídce job.patrol = Na hlídce
job.guard = Na stráži job.guard = Na stráži
@@ -804,6 +820,7 @@ best.b.torture.text = Sem končí zajatí hrdinové. S časem a žalářníkem n
best.b.temple.text = Modlitby léčí jádro duše a drží dobrou náladu. Kvůli chrámu přichází plamenná kněžka. best.b.temple.text = Modlitby léčí jádro duše a drží dobrou náladu. Kvůli chrámu přichází plamenná kněžka.
best.b.aerie.text = Bidla a hnízda pro létající tvory. Netopýři, chrliči, sovy i žhavý drak tu potřebují místo. best.b.aerie.text = Bidla a hnízda pro létající tvory. Netopýři, chrliči, sovy i žhavý drak tu potřebují místo.
best.b.bridge.text = Dřevo přes vodu, kámen přes lávu. Rytíři tvé mosty strhávají - zaber ty jejich. best.b.bridge.text = Dřevo přes vodu, kámen přes lávu. Rytíři tvé mosty strhávají - zaber ty jejich.
best.b.drawbridge.text = Vytažený most dělá z řeky opět zeď. V automatickém režimu se zvedne, když se blíží nepřátelé – a spustí se pro tvé bytosti.
best.b.steel.text = Nýtované železné pláty na zpevněné zdi. Nikdo se rychle neprokope, ani trpaslíci. best.b.steel.text = Nýtované železné pláty na zpevněné zdi. Nikdo se rychle neprokope, ani trpaslíci.
best.b.arrow.text = Šíp prolétne až dvěma dalšími nepřáteli za cílem. Levná a spolehlivá. best.b.arrow.text = Šíp prolétne až dvěma dalšími nepřáteli za cílem. Levná a spolehlivá.
best.b.cannon.text = Plošné poškození a odhození - natlač rytíře do lávy. best.b.cannon.text = Plošné poškození a odhození - natlač rytíře do lávy.
@@ -929,6 +946,9 @@ tool.plague.desc = Nemoc, která užírá nepřátele kolem místa a přeskakuje
tool.quake.label = Otřes tool.quake.label = Otřes
tool.quake.name = Zemětřesení tool.quake.name = Zemětřesení
tool.quake.desc = Země se otřese: nepřátelé kolem místa jsou zraněni a na dvě sekundy omráčeni. Tví tvorové se udrží na nohou. tool.quake.desc = Země se otřese: nepřátelé kolem místa jsou zraněni a na dvě sekundy omráčeni. Tví tvorové se udrží na nohou.
tool.freeze.label = Mráz
tool.freeze.name = Mráz
tool.freeze.desc = Ledová zima: láva kolem místa na 40 sekund ztuhne v průchozí obsidián, nepřátelé jsou podchlazení a zpomalení.
tile.unexplored = Neprozkoumaná temnota tile.unexplored = Neprozkoumaná temnota
# personality # personality
+20
View File
@@ -398,6 +398,9 @@ help.start_touch = Tryk for at starte
tool.bridge.label = Bro tool.bridge.label = Bro
tool.bridge.name = Byg bro tool.bridge.name = Byg bro
tool.bridge.desc = Bygger en bro over vand eller lava. Træk fra din egen jord hen over floden; broen vokser felt for felt fra dit område. tool.bridge.desc = Bygger en bro over vand eller lava. Træk fra din egen jord hen over floden; broen vokser felt for felt fra dit område.
tool.drawbridge.label = Vindebro
tool.drawbridge.name = Byg vindebro
tool.drawbridge.desc = En bro du kan hejse op: træk over floden for at bygge den, klik for at skifte: nede, oppe, automatisk (hejses når fjender nærmer sig). Træ over vand brænder, sten over lava gør ikke.
cost.bridge = {0} guld/felt over vand, {1} over lava cost.bridge = {0} guld/felt over vand, {1} over lava
hint.bridge_where = Broer skal starte på din egen jord: træk fra dit område hen over floden. hint.bridge_where = Broer skal starte på din egen jord: træk fra dit område hen over floden.
hint.bridge_fire = Træbroer brænder: hold ildfælder, ildånde og lyn væk fra dem – stenbroer over lava er brandsikre. hint.bridge_fire = Træbroer brænder: hold ildfælder, ildånde og lyn væk fra dem – stenbroer over lava er brandsikre.
@@ -410,6 +413,15 @@ tile.lava = Lava
tile.lava_info = Hvad der falder i, brænder. Stenbroer fører over. tile.lava_info = Hvad der falder i, brænder. Stenbroer fører over.
tile.bridge = Træbro tile.bridge = Træbro
tile.lavabridge = Stenbro tile.lavabridge = Stenbro
tile.drawbridge = Vindebro
tile.drawbridge_up = Hejst op
tile.drawbridge_down = Sænket
tile.drawbridge_auto = Automatisk (nede)
tile.drawbridge_auto_up = Automatisk (oppe)
tile.obsidian = Obsidian
tile.obsidian_info = Afkølet lava – smelter om {0} s
tile.bridge_burning = Brænder!
tile.bridge_worn = Beskadiget {0}%
tile.shard = Splint af din sjælekerne tile.shard = Splint af din sjælekerne
tile.shard_info = Indtag dette kammer for at tage splinten tilbage. tile.shard_info = Indtag dette kammer for at tage splinten tilbage.
@@ -432,6 +444,10 @@ msg.vault_taken = Riddernes boks indtaget: skatte til en værdi af {0} er dine.
msg.shard_taken = En splint af din sjælekerne er tilbage i dine hænder! msg.shard_taken = En splint af din sjælekerne er tilbage i dine hænder!
msg.bridge_torn = Ridderne har revet en af dine broer ned! msg.bridge_torn = Ridderne har revet en af dine broer ned!
msg.bridge_fire = En af dine broer brænder! msg.bridge_fire = En af dine broer brænder!
msg.drawbridge_up = Vindebroen er hejst op.
msg.drawbridge_down = Vindebroen er sænket.
msg.drawbridge_auto = Vindebroen hejses af sig selv, når fjender nærmer sig.
msg.drawbridge_rises = Fjender nærmer sig: en vindebro hejses!
job.tear_bridge = River en bro ned job.tear_bridge = River en bro ned
job.patrol = På patrulje job.patrol = På patrulje
job.guard = På vagt job.guard = På vagt
@@ -803,6 +819,7 @@ best.b.torture.text = Tilfangetagne helte ender her. Med tid og en fangevogter s
best.b.temple.text = Bønner heler sjælekernen og holder humøret oppe. Flammepræstinden kommer for et tempel. best.b.temple.text = Bønner heler sjælekernen og holder humøret oppe. Flammepræstinden kommer for et tempel.
best.b.aerie.text = Siddepinde og reder til flyvende væsner. Flagermus, gargoyler, ugler og selv glødelindormen skal have plads her. best.b.aerie.text = Siddepinde og reder til flyvende væsner. Flagermus, gargoyler, ugler og selv glødelindormen skal have plads her.
best.b.bridge.text = Træ over vand, sten over lava. Ridderne river dine broer ned - indtag deres. best.b.bridge.text = Træ over vand, sten over lava. Ridderne river dine broer ned - indtag deres.
best.b.drawbridge.text = Hejst op er floden igen en mur. På automatisk hejses den, når fjender nærmer sig – og sænkes for dine egne væsner.
best.b.steel.text = Nittede jernplader på en forstærket mur. Ingen graver sig hurtigt igennem, ikke engang dværge. best.b.steel.text = Nittede jernplader på en forstærket mur. Ingen graver sig hurtigt igennem, ikke engang dværge.
best.b.arrow.text = Pilen gennemborer op til to fjender mere bag målet. Billigt og pålideligt. best.b.arrow.text = Pilen gennemborer op til to fjender mere bag målet. Billigt og pålideligt.
best.b.cannon.text = Områdeskade og tilbageslag - skub ridderne i lavaen. best.b.cannon.text = Områdeskade og tilbageslag - skub ridderne i lavaen.
@@ -928,6 +945,9 @@ tool.plague.desc = En sygdom, der æder fjenderne omkring stedet og springer fra
tool.quake.label = Skælv tool.quake.label = Skælv
tool.quake.name = Jordskælv tool.quake.name = Jordskælv
tool.quake.desc = Jorden ryster: fjender omkring stedet såres og lammes i to sekunder. Dine væsner holder balancen. tool.quake.desc = Jorden ryster: fjender omkring stedet såres og lammes i to sekunder. Dine væsner holder balancen.
tool.freeze.label = Frost
tool.freeze.name = Frost
tool.freeze.desc = Isnende kulde: lava omkring stedet køles til farbar obsidian i 40 sekunder, fjender bliver nedkølet og langsomme.
tile.unexplored = Uudforsket mørke tile.unexplored = Uudforsket mørke
# personality # personality
+20
View File
@@ -398,6 +398,9 @@ help.start_touch = Tippen zum Starten
tool.bridge.label = Brücke tool.bridge.label = Brücke
tool.bridge.name = Brücke bauen tool.bridge.name = Brücke bauen
tool.bridge.desc = Baut eine Brücke über Wasser oder Lava. Ziehe von deinem Gebiet aus über den Fluss; die Brücke wächst Feld für Feld von deinem Reich aus. tool.bridge.desc = Baut eine Brücke über Wasser oder Lava. Ziehe von deinem Gebiet aus über den Fluss; die Brücke wächst Feld für Feld von deinem Reich aus.
tool.drawbridge.label = Zugbrücke
tool.drawbridge.name = Zugbrücke bauen
tool.drawbridge.desc = Eine Brücke, die du hochziehen kannst: Ziehe über den Fluss, um sie zu bauen, klicke sie an zum Umschalten: unten, oben, automatisch (hebt sich, wenn Feinde nahen). Holz über Wasser brennt, Stein über Lava nicht.
cost.bridge = {0} Gold/Feld über Wasser, {1} über Lava cost.bridge = {0} Gold/Feld über Wasser, {1} über Lava
hint.bridge_where = Brücken müssen an deinem Gebiet beginnen: Ziehe von deinem Reich aus über den Fluss. hint.bridge_where = Brücken müssen an deinem Gebiet beginnen: Ziehe von deinem Reich aus über den Fluss.
hint.bridge_fire = Holzbrücken brennen: Halte Feuerfallen, Feueratem und Blitze von ihnen fern – Steinbrücken über Lava sind feuerfest. hint.bridge_fire = Holzbrücken brennen: Halte Feuerfallen, Feueratem und Blitze von ihnen fern – Steinbrücken über Lava sind feuerfest.
@@ -410,6 +413,15 @@ tile.lava = Lava
tile.lava_info = Was hineinfällt, verbrennt. Steinbrücken führen hinüber. tile.lava_info = Was hineinfällt, verbrennt. Steinbrücken führen hinüber.
tile.bridge = Holzbrücke tile.bridge = Holzbrücke
tile.lavabridge = Steinbrücke tile.lavabridge = Steinbrücke
tile.drawbridge = Zugbrücke
tile.drawbridge_up = Hochgezogen
tile.drawbridge_down = Herabgelassen
tile.drawbridge_auto = Automatisch (unten)
tile.drawbridge_auto_up = Automatisch (oben)
tile.obsidian = Obsidian
tile.obsidian_info = Erkaltete Lava – schmilzt in {0} s wieder
tile.bridge_burning = Brennt!
tile.bridge_worn = Beschädigt {0}%
tile.shard = Splitter deines Seelenkerns tile.shard = Splitter deines Seelenkerns
tile.shard_info = Erobere diese Kammer, um den Splitter zurückzuholen. tile.shard_info = Erobere diese Kammer, um den Splitter zurückzuholen.
@@ -432,6 +444,10 @@ msg.vault_taken = Ritterschatz erobert: Schätze im Wert von {0} gehören dir.
msg.shard_taken = Ein Splitter deines Seelenkerns ist wieder in deiner Hand! msg.shard_taken = Ein Splitter deines Seelenkerns ist wieder in deiner Hand!
msg.bridge_torn = Die Ritter haben eine deiner Brücken eingerissen! msg.bridge_torn = Die Ritter haben eine deiner Brücken eingerissen!
msg.bridge_fire = Eine deiner Brücken brennt! msg.bridge_fire = Eine deiner Brücken brennt!
msg.drawbridge_up = Die Zugbrücke ist hochgezogen.
msg.drawbridge_down = Die Zugbrücke ist herabgelassen.
msg.drawbridge_auto = Die Zugbrücke hebt sich von selbst, wenn Feinde nahen.
msg.drawbridge_rises = Feinde nahen: Eine Zugbrücke hebt sich!
job.tear_bridge = Reißt eine Brücke ein job.tear_bridge = Reißt eine Brücke ein
job.patrol = Auf Patrouille job.patrol = Auf Patrouille
job.guard = Hält Wache job.guard = Hält Wache
@@ -803,6 +819,7 @@ best.b.torture.text = Gefangene Helden landen hier. Mit der Zeit und einem Kerke
best.b.temple.text = Gebete heilen den Seelenkern und heben die Stimmung. Die Flammenpriesterin kommt für einen Tempel. best.b.temple.text = Gebete heilen den Seelenkern und heben die Stimmung. Die Flammenpriesterin kommt für einen Tempel.
best.b.aerie.text = Sitzstangen und Nester für Flieger. Fledermäuse, Gargoyles, Eulen und sogar der Glutlindwurm brauchen hier Platz. best.b.aerie.text = Sitzstangen und Nester für Flieger. Fledermäuse, Gargoyles, Eulen und sogar der Glutlindwurm brauchen hier Platz.
best.b.bridge.text = Holz über Wasser, Stein über Lava. Die Ritter reißen deine Brücken ein - nimm dir ihre. best.b.bridge.text = Holz über Wasser, Stein über Lava. Die Ritter reißen deine Brücken ein - nimm dir ihre.
best.b.drawbridge.text = Hochgezogen ist der Fluss wieder eine Mauer. Auf Automatik hebt sie sich, sobald Feinde nahen – und senkt sich für deine eigenen Kreaturen.
best.b.steel.text = Genietete Eisenplatten auf einer verstärkten Mauer. Da gräbt sich keiner schnell durch, nicht einmal Zwerge. best.b.steel.text = Genietete Eisenplatten auf einer verstärkten Mauer. Da gräbt sich keiner schnell durch, nicht einmal Zwerge.
best.b.arrow.text = Der Pfeil durchbohrt bis zu zwei weitere Feinde hinter dem Ziel. Billig und zuverlässig. best.b.arrow.text = Der Pfeil durchbohrt bis zu zwei weitere Feinde hinter dem Ziel. Billig und zuverlässig.
best.b.cannon.text = Flächenschaden und Rückstoß - schieb die Ritter in die Lava. best.b.cannon.text = Flächenschaden und Rückstoß - schieb die Ritter in die Lava.
@@ -928,6 +945,9 @@ tool.plague.desc = Eine Krankheit, die an den Feinden rund um die Stelle zehrt u
tool.quake.label = Beben tool.quake.label = Beben
tool.quake.name = Beben tool.quake.name = Beben
tool.quake.desc = Der Boden bebt: Feinde rund um die Stelle werden verletzt und zwei Sekunden betäubt. Deine Kreaturen bleiben standfest. tool.quake.desc = Der Boden bebt: Feinde rund um die Stelle werden verletzt und zwei Sekunden betäubt. Deine Kreaturen bleiben standfest.
tool.freeze.label = Frost
tool.freeze.name = Frost
tool.freeze.desc = Eisige Kälte: Lava rund um die Stelle erkaltet für 40 Sekunden zu begehbarem Obsidian, Feinde werden unterkühlt und verlangsamt.
tile.unexplored = Unerforschte Finsternis tile.unexplored = Unerforschte Finsternis
# personality # personality
+20
View File
@@ -399,6 +399,9 @@ help.start_touch = Πάτησε για αρχή
tool.bridge.label = Γέφυρα tool.bridge.label = Γέφυρα
tool.bridge.name = Χτίσιμο Γέφυρας tool.bridge.name = Χτίσιμο Γέφυρας
tool.bridge.desc = Χτίζει γέφυρα πάνω από νερό ή λάβα. Σύρε από το δικό σου έδαφος πέρα από το ποτάμι, η γέφυρα μεγαλώνει πλακίδιο-πλακίδιο από την επικράτειά σου. tool.bridge.desc = Χτίζει γέφυρα πάνω από νερό ή λάβα. Σύρε από το δικό σου έδαφος πέρα από το ποτάμι, η γέφυρα μεγαλώνει πλακίδιο-πλακίδιο από την επικράτειά σου.
tool.drawbridge.label = Κινητή γέφυρα
tool.drawbridge.name = Χτίσε κινητή γέφυρα
tool.drawbridge.desc = Γέφυρα που μπορείς να σηκώσεις: σύρε πάνω από το ποτάμι για να τη χτίσεις, κάνε κλικ για αλλαγή: κάτω, πάνω, αυτόματα (σηκώνεται όταν πλησιάζουν εχθροί). Το ξύλο πάνω από νερό καίγεται, η πέτρα πάνω από λάβα όχι.
cost.bridge = {0} χρυσός/πλακίδιο πάνω από νερό, {1} πάνω από λάβα cost.bridge = {0} χρυσός/πλακίδιο πάνω από νερό, {1} πάνω από λάβα
hint.bridge_where = Οι γέφυρες ξεκινούν από το δικό σου έδαφος: σύρε από την επικράτειά σου πέρα από το ποτάμι. hint.bridge_where = Οι γέφυρες ξεκινούν από το δικό σου έδαφος: σύρε από την επικράτειά σου πέρα από το ποτάμι.
hint.bridge_fire = Οι ξύλινες γέφυρες καίγονται: κράτα μακριά παγίδες φωτιάς, πύρινη ανάσα και κεραυνούς – οι πέτρινες γέφυρες πάνω από λάβα δεν καίγονται. hint.bridge_fire = Οι ξύλινες γέφυρες καίγονται: κράτα μακριά παγίδες φωτιάς, πύρινη ανάσα και κεραυνούς – οι πέτρινες γέφυρες πάνω από λάβα δεν καίγονται.
@@ -411,6 +414,15 @@ tile.lava = Λάβα
tile.lava_info = Ό,τι πέφτει μέσα καίγεται. Οι πέτρινες γέφυρες την περνούν. tile.lava_info = Ό,τι πέφτει μέσα καίγεται. Οι πέτρινες γέφυρες την περνούν.
tile.bridge = Ξύλινη γέφυρα tile.bridge = Ξύλινη γέφυρα
tile.lavabridge = Πέτρινη γέφυρα tile.lavabridge = Πέτρινη γέφυρα
tile.drawbridge = Κινητή γέφυρα
tile.drawbridge_up = Σηκωμένη
tile.drawbridge_down = Κατεβασμένη
tile.drawbridge_auto = Αυτόματα (κάτω)
tile.drawbridge_auto_up = Αυτόματα (πάνω)
tile.obsidian = Οψιδιανός
tile.obsidian_info = Κρυωμένη λάβα – λιώνει σε {0} δ
tile.bridge_burning = Καίγεται!
tile.bridge_worn = Φθορά {0}%
tile.shard = Θραύσμα του πυρήνα ψυχής σου tile.shard = Θραύσμα του πυρήνα ψυχής σου
tile.shard_info = Κατάκτησε αυτόν τον θάλαμο για να πάρεις πίσω το θραύσμα. tile.shard_info = Κατάκτησε αυτόν τον θάλαμο για να πάρεις πίσω το θραύσμα.
@@ -433,6 +445,10 @@ msg.vault_taken = Ιπποτικό θησαυροφυλάκιο κατελήφθ
msg.shard_taken = Ένα θραύσμα του πυρήνα ψυχής σου είναι ξανά στα χέρια σου! msg.shard_taken = Ένα θραύσμα του πυρήνα ψυχής σου είναι ξανά στα χέρια σου!
msg.bridge_torn = Οι ιππότες γκρέμισαν μία από τις γέφυρές σου! msg.bridge_torn = Οι ιππότες γκρέμισαν μία από τις γέφυρές σου!
msg.bridge_fire = Μια από τις γέφυρές σου καίγεται! msg.bridge_fire = Μια από τις γέφυρές σου καίγεται!
msg.drawbridge_up = Η κινητή γέφυρα είναι σηκωμένη.
msg.drawbridge_down = Η κινητή γέφυρα είναι κατεβασμένη.
msg.drawbridge_auto = Η κινητή γέφυρα σηκώνεται μόνη της όταν πλησιάζουν εχθροί.
msg.drawbridge_rises = Εχθροί κοντά: μια κινητή γέφυρα σηκώνεται!
job.tear_bridge = Γκρεμίζει γέφυρα job.tear_bridge = Γκρεμίζει γέφυρα
job.patrol = Σε περιπολία job.patrol = Σε περιπολία
job.guard = Σε φρουρά job.guard = Σε φρουρά
@@ -804,6 +820,7 @@ best.b.torture.text = Εδώ καταλήγουν οι αιχμάλωτοι ήρ
best.b.temple.text = Οι προσευχές γιατρεύουν τον πυρήνα ψυχής και κρατούν ψηλά το ηθικό. Η ιέρεια της φλόγας έρχεται για έναν ναό. best.b.temple.text = Οι προσευχές γιατρεύουν τον πυρήνα ψυχής και κρατούν ψηλά το ηθικό. Η ιέρεια της φλόγας έρχεται για έναν ναό.
best.b.aerie.text = Κούρνιες και φωλιές για ιπτάμενα πλάσματα. Νυχτερίδες, γκάργκοϊλ, κουκουβάγιες, ακόμη και ο δράκος της θράκας χρειάζονται χώρο εδώ. best.b.aerie.text = Κούρνιες και φωλιές για ιπτάμενα πλάσματα. Νυχτερίδες, γκάργκοϊλ, κουκουβάγιες, ακόμη και ο δράκος της θράκας χρειάζονται χώρο εδώ.
best.b.bridge.text = Ξύλο πάνω από νερό, πέτρα πάνω από λάβα. Οι ιππότες γκρεμίζουν τις γέφυρές σου - κατάκτησε τις δικές τους. best.b.bridge.text = Ξύλο πάνω από νερό, πέτρα πάνω από λάβα. Οι ιππότες γκρεμίζουν τις γέφυρές σου - κατάκτησε τις δικές τους.
best.b.drawbridge.text = Σηκωμένη, το ποτάμι γίνεται ξανά τείχος. Στο αυτόματο σηκώνεται όταν πλησιάζουν εχθροί – και κατεβαίνει για τα δικά σου πλάσματα.
best.b.steel.text = Καρφωμένες σιδερένιες πλάκες πάνω σε ενισχυμένο τοίχο. Κανείς δεν σκάβει γρήγορα από μέσα, ούτε καν οι νάνοι. best.b.steel.text = Καρφωμένες σιδερένιες πλάκες πάνω σε ενισχυμένο τοίχο. Κανείς δεν σκάβει γρήγορα από μέσα, ούτε καν οι νάνοι.
best.b.arrow.text = Το βέλος διαπερνά έως δύο ακόμη εχθρούς πίσω από τον στόχο. Φθηνός και αξιόπιστος. best.b.arrow.text = Το βέλος διαπερνά έως δύο ακόμη εχθρούς πίσω από τον στόχο. Φθηνός και αξιόπιστος.
best.b.cannon.text = Ζημιά περιοχής και απώθηση - σπρώξε τους ιππότες στη λάβα. best.b.cannon.text = Ζημιά περιοχής και απώθηση - σπρώξε τους ιππότες στη λάβα.
@@ -929,6 +946,9 @@ tool.plague.desc = Μια αρρώστια που κατατρώει τους ε
tool.quake.label = Σεισμός tool.quake.label = Σεισμός
tool.quake.name = Σεισμός tool.quake.name = Σεισμός
tool.quake.desc = Η γη σείεται: οι εχθροί γύρω από το σημείο πληγώνονται και ζαλίζονται για δύο δευτερόλεπτα. Τα πλάσματά σου μένουν όρθια. tool.quake.desc = Η γη σείεται: οι εχθροί γύρω από το σημείο πληγώνονται και ζαλίζονται για δύο δευτερόλεπτα. Τα πλάσματά σου μένουν όρθια.
tool.freeze.label = Παγετός
tool.freeze.name = Παγετός
tool.freeze.desc = Παγωμένο κρύο: η λάβα γύρω από το σημείο κρυώνει σε βατό οψιδιανό για 40 δευτερόλεπτα, οι εχθροί παγώνουν και επιβραδύνονται.
tile.unexplored = Ανεξερεύνητο σκοτάδι tile.unexplored = Ανεξερεύνητο σκοτάδι
# personality # personality
+20
View File
@@ -399,6 +399,9 @@ help.start_touch = Tap to start
tool.bridge.label = Bridge tool.bridge.label = Bridge
tool.bridge.name = Build Bridge tool.bridge.name = Build Bridge
tool.bridge.desc = Builds a bridge over water or lava. Drag from your own ground across the river; the bridge grows tile by tile from your territory. tool.bridge.desc = Builds a bridge over water or lava. Drag from your own ground across the river; the bridge grows tile by tile from your territory.
tool.drawbridge.label = Drawbridge
tool.drawbridge.name = Build Drawbridge
tool.drawbridge.desc = A bridge you can raise: drag across the river to build it, click it to switch: down, up, automatic (rises when enemies come near). Wood over water burns, stone over lava does not.
cost.bridge = {0} gold/tile over water, {1} over lava cost.bridge = {0} gold/tile over water, {1} over lava
hint.bridge_where = Bridges must start at your own ground: drag from your territory across the river. hint.bridge_where = Bridges must start at your own ground: drag from your territory across the river.
hint.bridge_fire = Wooden bridges burn: keep fire traps, fire breath and lightning away from them – stone bridges over lava are fireproof. hint.bridge_fire = Wooden bridges burn: keep fire traps, fire breath and lightning away from them – stone bridges over lava are fireproof.
@@ -411,6 +414,15 @@ tile.lava = Lava
tile.lava_info = Whatever falls in burns. Stone bridges cross it. tile.lava_info = Whatever falls in burns. Stone bridges cross it.
tile.bridge = Wooden bridge tile.bridge = Wooden bridge
tile.lavabridge = Stone bridge tile.lavabridge = Stone bridge
tile.drawbridge = Drawbridge
tile.drawbridge_up = Raised
tile.drawbridge_down = Lowered
tile.drawbridge_auto = Automatic (down)
tile.drawbridge_auto_up = Automatic (up)
tile.obsidian = Obsidian
tile.obsidian_info = Cooled lava – melts again in {0} s
tile.bridge_burning = Burning!
tile.bridge_worn = Worn {0}%
tile.shard = Shard of your soul core tile.shard = Shard of your soul core
tile.shard_info = Claim this chamber to take the shard back. tile.shard_info = Claim this chamber to take the shard back.
@@ -433,6 +445,10 @@ msg.vault_taken = Knight vault taken: {0} worth of treasure is yours.
msg.shard_taken = A shard of your soul core is back in your hands! msg.shard_taken = A shard of your soul core is back in your hands!
msg.bridge_torn = The knights have torn down one of your bridges! msg.bridge_torn = The knights have torn down one of your bridges!
msg.bridge_fire = One of your bridges is on fire! msg.bridge_fire = One of your bridges is on fire!
msg.drawbridge_up = The drawbridge is raised.
msg.drawbridge_down = The drawbridge is lowered.
msg.drawbridge_auto = The drawbridge rises by itself when enemies come near.
msg.drawbridge_rises = Enemies near: a drawbridge rises!
job.tear_bridge = Tearing down a bridge job.tear_bridge = Tearing down a bridge
job.patrol = On patrol job.patrol = On patrol
job.guard = On guard job.guard = On guard
@@ -804,6 +820,7 @@ best.b.torture.text = Captured heroes end up here. With time and a jailer, some
best.b.temple.text = Prayers heal the soul core and keep spirits high. The flame priestess comes for a temple. best.b.temple.text = Prayers heal the soul core and keep spirits high. The flame priestess comes for a temple.
best.b.aerie.text = Perches and nests for flying creatures. Bats, gargoyles, owls and even the ember wyrm need room here. best.b.aerie.text = Perches and nests for flying creatures. Bats, gargoyles, owls and even the ember wyrm need room here.
best.b.bridge.text = Wood over water, stone over lava. The knights tear down your bridges - claim theirs. best.b.bridge.text = Wood over water, stone over lava. The knights tear down your bridges - claim theirs.
best.b.drawbridge.text = Pull it up and the river is a wall again. Set to automatic, it rises whenever enemies come close – and comes down for your own creatures.
best.b.steel.text = Riveted iron plates on a reinforced wall. Nobody digs through quickly, not even dwarves. best.b.steel.text = Riveted iron plates on a reinforced wall. Nobody digs through quickly, not even dwarves.
best.b.arrow.text = The arrow pierces up to two more enemies behind the target. Cheap and reliable. best.b.arrow.text = The arrow pierces up to two more enemies behind the target. Cheap and reliable.
best.b.cannon.text = Splash damage and knockback - push the knights into the lava. best.b.cannon.text = Splash damage and knockback - push the knights into the lava.
@@ -929,6 +946,9 @@ tool.plague.desc = A sickness that eats at the enemies around the spot and jumps
tool.quake.label = Quake tool.quake.label = Quake
tool.quake.name = Quake tool.quake.name = Quake
tool.quake.desc = The ground shakes: enemies around the spot are hurt and stunned for two seconds. Your creatures keep their footing. tool.quake.desc = The ground shakes: enemies around the spot are hurt and stunned for two seconds. Your creatures keep their footing.
tool.freeze.label = Frost
tool.freeze.name = Frost
tool.freeze.desc = Icy cold: lava around the spot cools into walkable obsidian for 40 seconds, enemies are chilled and slowed.
tile.unexplored = Unexplored darkness tile.unexplored = Unexplored darkness
# personality # personality
+20
View File
@@ -399,6 +399,9 @@ help.start_touch = Toca para empezar
tool.bridge.label = Puente tool.bridge.label = Puente
tool.bridge.name = Construir puente tool.bridge.name = Construir puente
tool.bridge.desc = Construye un puente sobre agua o lava. Arrastra desde tu propio suelo a través del río; el puente crece casilla a casilla desde tu territorio. tool.bridge.desc = Construye un puente sobre agua o lava. Arrastra desde tu propio suelo a través del río; el puente crece casilla a casilla desde tu territorio.
tool.drawbridge.label = Levadizo
tool.drawbridge.name = Construir puente levadizo
tool.drawbridge.desc = Un puente que puedes alzar: arrástralo sobre el río para construirlo y haz clic para cambiar: abajo, arriba, automático (se alza cuando se acercan enemigos). La madera sobre agua arde, la piedra sobre lava no.
cost.bridge = {0} de oro/casilla sobre agua, {1} sobre lava cost.bridge = {0} de oro/casilla sobre agua, {1} sobre lava
hint.bridge_where = Los puentes deben empezar en tu propio suelo: arrastra desde tu territorio a través del río. hint.bridge_where = Los puentes deben empezar en tu propio suelo: arrastra desde tu territorio a través del río.
hint.bridge_fire = Los puentes de madera arden: aleja de ellos las trampas de fuego, el aliento de fuego y los rayos; los puentes de piedra sobre lava son ignífugos. hint.bridge_fire = Los puentes de madera arden: aleja de ellos las trampas de fuego, el aliento de fuego y los rayos; los puentes de piedra sobre lava son ignífugos.
@@ -411,6 +414,15 @@ tile.lava = Lava
tile.lava_info = Lo que cae dentro arde. Los puentes de piedra lo cruzan. tile.lava_info = Lo que cae dentro arde. Los puentes de piedra lo cruzan.
tile.bridge = Puente de madera tile.bridge = Puente de madera
tile.lavabridge = Puente de piedra tile.lavabridge = Puente de piedra
tile.drawbridge = Puente levadizo
tile.drawbridge_up = Alzado
tile.drawbridge_down = Bajado
tile.drawbridge_auto = Automático (abajo)
tile.drawbridge_auto_up = Automático (arriba)
tile.obsidian = Obsidiana
tile.obsidian_info = Lava enfriada: se funde en {0} s
tile.bridge_burning = ¡Arde!
tile.bridge_worn = Dañado {0}%
tile.shard = Fragmento de tu núcleo de alma tile.shard = Fragmento de tu núcleo de alma
tile.shard_info = Reclama esta cámara para recuperar el fragmento. tile.shard_info = Reclama esta cámara para recuperar el fragmento.
@@ -433,6 +445,10 @@ msg.vault_taken = Cámara acorazada tomada: {0} en tesoros son tuyos.
msg.shard_taken = ¡Un fragmento de tu núcleo de alma vuelve a estar en tus manos! msg.shard_taken = ¡Un fragmento de tu núcleo de alma vuelve a estar en tus manos!
msg.bridge_torn = ¡Los caballeros han derribado uno de tus puentes! msg.bridge_torn = ¡Los caballeros han derribado uno de tus puentes!
msg.bridge_fire = ¡Uno de tus puentes está en llamas! msg.bridge_fire = ¡Uno de tus puentes está en llamas!
msg.drawbridge_up = El puente levadizo está alzado.
msg.drawbridge_down = El puente levadizo está bajado.
msg.drawbridge_auto = El puente levadizo se alza solo cuando se acercan enemigos.
msg.drawbridge_rises = ¡Se acercan enemigos: un puente levadizo se alza!
job.tear_bridge = Derribando un puente job.tear_bridge = Derribando un puente
job.patrol = De patrulla job.patrol = De patrulla
job.guard = De guardia job.guard = De guardia
@@ -796,6 +812,7 @@ best.b.torture.text = Los héroes capturados acaban aquí. Con tiempo y un carce
best.b.temple.text = Las oraciones curan el núcleo de alma y mantienen alta la moral. La sacerdotisa de llamas viene por un templo. best.b.temple.text = Las oraciones curan el núcleo de alma y mantienen alta la moral. La sacerdotisa de llamas viene por un templo.
best.b.aerie.text = Perchas y nidos para criaturas voladoras. Murciélagos, gárgolas, búhos e incluso el dragón de brasas necesitan sitio aquí. best.b.aerie.text = Perchas y nidos para criaturas voladoras. Murciélagos, gárgolas, búhos e incluso el dragón de brasas necesitan sitio aquí.
best.b.bridge.text = Madera sobre agua, piedra sobre lava. Los caballeros derriban tus puentes: reclama los suyos. best.b.bridge.text = Madera sobre agua, piedra sobre lava. Los caballeros derriban tus puentes: reclama los suyos.
best.b.drawbridge.text = Álzalo y el río vuelve a ser un muro. En automático se alza cuando se acercan enemigos y baja para tus criaturas.
best.b.steel.text = Placas de hierro remachadas sobre un muro reforzado. Nadie lo atraviesa rápido, ni siquiera los enanos. best.b.steel.text = Placas de hierro remachadas sobre un muro reforzado. Nadie lo atraviesa rápido, ni siquiera los enanos.
best.b.arrow.text = La flecha atraviesa hasta dos enemigos más detrás del objetivo. Barata y fiable. best.b.arrow.text = La flecha atraviesa hasta dos enemigos más detrás del objetivo. Barata y fiable.
best.b.cannon.text = Daño en área y retroceso: empuja a los caballeros a la lava. best.b.cannon.text = Daño en área y retroceso: empuja a los caballeros a la lava.
@@ -921,6 +938,9 @@ tool.plague.desc = Una enfermedad que corroe a los enemigos alrededor del punto
tool.quake.label = Temblor tool.quake.label = Temblor
tool.quake.name = Terremoto tool.quake.name = Terremoto
tool.quake.desc = La tierra tiembla: los enemigos alrededor del punto sufren daño y quedan aturdidos dos segundos. Tus criaturas no pierden el equilibrio. tool.quake.desc = La tierra tiembla: los enemigos alrededor del punto sufren daño y quedan aturdidos dos segundos. Tus criaturas no pierden el equilibrio.
tool.freeze.label = Escarcha
tool.freeze.name = Escarcha
tool.freeze.desc = Frío glacial: la lava alrededor se enfría en obsidiana transitable durante 40 segundos; los enemigos quedan helados y ralentizados.
tile.unexplored = Oscuridad inexplorada tile.unexplored = Oscuridad inexplorada
# personality # personality
+20
View File
@@ -399,6 +399,9 @@ help.start_touch = Napauta aloittaaksesi
tool.bridge.label = Silta tool.bridge.label = Silta
tool.bridge.name = Rakenna silta tool.bridge.name = Rakenna silta
tool.bridge.desc = Rakentaa sillan veden tai laavan yli. Vedä omalta maaltasi joen yli; silta kasvaa ruutu kerrallaan alueeltasi. tool.bridge.desc = Rakentaa sillan veden tai laavan yli. Vedä omalta maaltasi joen yli; silta kasvaa ruutu kerrallaan alueeltasi.
tool.drawbridge.label = Laskusilta
tool.drawbridge.name = Rakenna laskusilta
tool.drawbridge.desc = Silta, jonka voit nostaa: vedä joen yli rakentaaksesi, napsauta vaihtaaksesi: alhaalla, ylhäällä, automaattinen (nousee vihollisten lähestyessä). Puu veden yllä palaa, kivi laavan yllä ei.
cost.bridge = {0} kultaa/ruutu veden yli, {1} laavan yli cost.bridge = {0} kultaa/ruutu veden yli, {1} laavan yli
hint.bridge_where = Siltojen on alettava omalta maaltasi: vedä alueeltasi joen yli. hint.bridge_where = Siltojen on alettava omalta maaltasi: vedä alueeltasi joen yli.
hint.bridge_fire = Puusillat palavat: pidä tuliansat, tulihenkäys ja salamat loitolla – kivisillat laavan yllä eivät pala. hint.bridge_fire = Puusillat palavat: pidä tuliansat, tulihenkäys ja salamat loitolla – kivisillat laavan yllä eivät pala.
@@ -411,6 +414,15 @@ tile.lava = Laava
tile.lava_info = Mikä sinne putoaa, se palaa. Kivisillat ylittävät sen. tile.lava_info = Mikä sinne putoaa, se palaa. Kivisillat ylittävät sen.
tile.bridge = Puusilta tile.bridge = Puusilta
tile.lavabridge = Kivisilta tile.lavabridge = Kivisilta
tile.drawbridge = Laskusilta
tile.drawbridge_up = Nostettu
tile.drawbridge_down = Laskettu
tile.drawbridge_auto = Automaattinen (alhaalla)
tile.drawbridge_auto_up = Automaattinen (ylhäällä)
tile.obsidian = Obsidiaani
tile.obsidian_info = Jäähtynyt laava – sulaa {0} s kuluttua
tile.bridge_burning = Palaa!
tile.bridge_worn = Vaurioitunut {0}%
tile.shard = Sieluytimesi siru tile.shard = Sieluytimesi siru
tile.shard_info = Valtaa tämä kammio saadaksesi sirun takaisin. tile.shard_info = Valtaa tämä kammio saadaksesi sirun takaisin.
@@ -433,6 +445,10 @@ msg.vault_taken = Ritarien holvi vallattu: aarteita arvoltaan {0} on nyt sinun.
msg.shard_taken = Sieluytimesi siru on taas käsissäsi! msg.shard_taken = Sieluytimesi siru on taas käsissäsi!
msg.bridge_torn = Ritarit ovat purkaneet yhden silloistasi! msg.bridge_torn = Ritarit ovat purkaneet yhden silloistasi!
msg.bridge_fire = Yksi silloistasi palaa! msg.bridge_fire = Yksi silloistasi palaa!
msg.drawbridge_up = Laskusilta on nostettu.
msg.drawbridge_down = Laskusilta on laskettu.
msg.drawbridge_auto = Laskusilta nousee itsestään vihollisten lähestyessä.
msg.drawbridge_rises = Vihollisia lähellä: laskusilta nousee!
job.tear_bridge = Purkaa siltaa job.tear_bridge = Purkaa siltaa
job.patrol = Partiossa job.patrol = Partiossa
job.guard = Vartiossa job.guard = Vartiossa
@@ -804,6 +820,7 @@ best.b.torture.text = Vangitut sankarit päätyvät tänne. Ajan ja vanginvartij
best.b.temple.text = Rukoukset parantavat sieluydintä ja pitävät mielialan korkealla. Liekkipapitar tulee temppeliin. best.b.temple.text = Rukoukset parantavat sieluydintä ja pitävät mielialan korkealla. Liekkipapitar tulee temppeliin.
best.b.aerie.text = Orsia ja pesiä lentäville olennoille. Lepakot, gargoilit, pöllöt ja jopa hehkulohikäärme tarvitsevat täällä tilaa. best.b.aerie.text = Orsia ja pesiä lentäville olennoille. Lepakot, gargoilit, pöllöt ja jopa hehkulohikäärme tarvitsevat täällä tilaa.
best.b.bridge.text = Puuta veden yli, kiveä laavan yli. Ritarit purkavat siltasi - valtaa heidän siltansa. best.b.bridge.text = Puuta veden yli, kiveä laavan yli. Ritarit purkavat siltasi - valtaa heidän siltansa.
best.b.drawbridge.text = Nostettuna joki on taas muuri. Automaattisena se nousee vihollisten lähestyessä – ja laskeutuu omille olennoillesi.
best.b.steel.text = Niitattuja rautalevyjä vahvistetulla seinällä. Kukaan ei kaiva läpi nopeasti, eivät edes kääpiöt. best.b.steel.text = Niitattuja rautalevyjä vahvistetulla seinällä. Kukaan ei kaiva läpi nopeasti, eivät edes kääpiöt.
best.b.arrow.text = Nuoli lävistää vielä kaksi vihollista kohteen takana. Halpa ja luotettava. best.b.arrow.text = Nuoli lävistää vielä kaksi vihollista kohteen takana. Halpa ja luotettava.
best.b.cannon.text = Roiskevahinkoa ja takaisku - tönäise ritarit laavaan. best.b.cannon.text = Roiskevahinkoa ja takaisku - tönäise ritarit laavaan.
@@ -929,6 +946,9 @@ tool.plague.desc = Tauti, joka kalvaa kohdan ympärillä olevia vihollisia ja hy
tool.quake.label = Järistys tool.quake.label = Järistys
tool.quake.name = Järistys tool.quake.name = Järistys
tool.quake.desc = Maa järisee: kohdan ympärillä olevat viholliset loukkaantuvat ja huumautuvat kahdeksi sekunniksi. Olentosi pysyvät jaloillaan. tool.quake.desc = Maa järisee: kohdan ympärillä olevat viholliset loukkaantuvat ja huumautuvat kahdeksi sekunniksi. Olentosi pysyvät jaloillaan.
tool.freeze.label = Pakkanen
tool.freeze.name = Pakkanen
tool.freeze.desc = Jäätävä kylmyys: laava kohdan ympärillä jäähtyy 40 sekunniksi kuljettavaksi obsidiaaniksi, viholliset jäähtyvät ja hidastuvat.
tile.unexplored = Tutkimaton pimeys tile.unexplored = Tutkimaton pimeys
# personality # personality
+20
View File
@@ -399,6 +399,9 @@ help.start_touch = Dodirni za početak
tool.bridge.label = Most tool.bridge.label = Most
tool.bridge.name = Gradnja mosta tool.bridge.name = Gradnja mosta
tool.bridge.desc = Gradi most preko vode ili lave. Povuci sa svog tla preko rijeke; most raste polje po polje od tvog teritorija. tool.bridge.desc = Gradi most preko vode ili lave. Povuci sa svog tla preko rijeke; most raste polje po polje od tvog teritorija.
tool.drawbridge.label = Pokretni most
tool.drawbridge.name = Izgradi pokretni most
tool.drawbridge.desc = Most koji možeš podići: povuci preko rijeke da ga izgradiš, klikni za promjenu: dolje, gore, automatski (diže se kad se neprijatelji približe). Drvo nad vodom gori, kamen nad lavom ne.
cost.bridge = {0} zlata/polje preko vode, {1} preko lave cost.bridge = {0} zlata/polje preko vode, {1} preko lave
hint.bridge_where = Mostovi moraju početi na tvom tlu: povuci sa svog teritorija preko rijeke. hint.bridge_where = Mostovi moraju početi na tvom tlu: povuci sa svog teritorija preko rijeke.
hint.bridge_fire = Drveni mostovi gore: drži vatrene zamke, vatreni dah i munje podalje – kameni mostovi nad lavom ne gore. hint.bridge_fire = Drveni mostovi gore: drži vatrene zamke, vatreni dah i munje podalje – kameni mostovi nad lavom ne gore.
@@ -411,6 +414,15 @@ tile.lava = Lava
tile.lava_info = Što god upadne, izgori. Kameni mostovi je premošćuju. tile.lava_info = Što god upadne, izgori. Kameni mostovi je premošćuju.
tile.bridge = Drveni most tile.bridge = Drveni most
tile.lavabridge = Kameni most tile.lavabridge = Kameni most
tile.drawbridge = Pokretni most
tile.drawbridge_up = Podignut
tile.drawbridge_down = Spušten
tile.drawbridge_auto = Automatski (dolje)
tile.drawbridge_auto_up = Automatski (gore)
tile.obsidian = Opsidijan
tile.obsidian_info = Ohlađena lava – topi se za {0} s
tile.bridge_burning = Gori!
tile.bridge_worn = Oštećen {0}%
tile.shard = Krhotina tvoje jezgre duše tile.shard = Krhotina tvoje jezgre duše
tile.shard_info = Osvoji ovu odaju da vratiš krhotinu. tile.shard_info = Osvoji ovu odaju da vratiš krhotinu.
@@ -433,6 +445,10 @@ msg.vault_taken = Viteški trezor osvojen: blago vrijedno {0} je tvoje.
msg.shard_taken = Krhotina tvoje jezgre duše opet je u tvojim rukama! msg.shard_taken = Krhotina tvoje jezgre duše opet je u tvojim rukama!
msg.bridge_torn = Vitezovi su srušili jedan od tvojih mostova! msg.bridge_torn = Vitezovi su srušili jedan od tvojih mostova!
msg.bridge_fire = Jedan od tvojih mostova gori! msg.bridge_fire = Jedan od tvojih mostova gori!
msg.drawbridge_up = Pokretni most je podignut.
msg.drawbridge_down = Pokretni most je spušten.
msg.drawbridge_auto = Pokretni most se sam diže kad se neprijatelji približe.
msg.drawbridge_rises = Neprijatelji blizu: pokretni most se diže!
job.tear_bridge = Ruši most job.tear_bridge = Ruši most
job.patrol = U ophodnji job.patrol = U ophodnji
job.guard = Na straži job.guard = Na straži
@@ -804,6 +820,7 @@ best.b.torture.text = Zarobljeni junaci završe ovdje. S vremenom i tamničarom
best.b.temple.text = Molitve liječe jezgru duše i drže duh visoko. Svećenica plamena dolazi zbog hrama. best.b.temple.text = Molitve liječe jezgru duše i drže duh visoko. Svećenica plamena dolazi zbog hrama.
best.b.aerie.text = Prečke i gnijezda za leteća stvorenja. Šišmišima, gargojlima, sovama, pa i žarnom zmaju ovdje treba mjesta. best.b.aerie.text = Prečke i gnijezda za leteća stvorenja. Šišmišima, gargojlima, sovama, pa i žarnom zmaju ovdje treba mjesta.
best.b.bridge.text = Drvo preko vode, kamen preko lave. Vitezovi ruše tvoje mostove - osvoji njihove. best.b.bridge.text = Drvo preko vode, kamen preko lave. Vitezovi ruše tvoje mostove - osvoji njihove.
best.b.drawbridge.text = Podignut, rijeka je opet zid. Na automatskom se diže kad se neprijatelji približe – i spušta za tvoja stvorenja.
best.b.steel.text = Zakovane željezne ploče na ojačanom zidu. Nitko se ne prokopa brzo, čak ni patuljci. best.b.steel.text = Zakovane željezne ploče na ojačanom zidu. Nitko se ne prokopa brzo, čak ni patuljci.
best.b.arrow.text = Strijela probija do dva neprijatelja iza mete. Jeftino i pouzdano. best.b.arrow.text = Strijela probija do dva neprijatelja iza mete. Jeftino i pouzdano.
best.b.cannon.text = Šteta u području i odbacivanje - gurni vitezove u lavu. best.b.cannon.text = Šteta u području i odbacivanje - gurni vitezove u lavu.
@@ -929,6 +946,9 @@ tool.plague.desc = Bolest koja izjeda neprijatelje oko mjesta i preskače s jedn
tool.quake.label = Potres tool.quake.label = Potres
tool.quake.name = Potres tool.quake.name = Potres
tool.quake.desc = Tlo se trese: neprijatelji oko mjesta ozlijeđeni su i omamljeni dvije sekunde. Tvoja stvorenja ostaju na nogama. tool.quake.desc = Tlo se trese: neprijatelji oko mjesta ozlijeđeni su i omamljeni dvije sekunde. Tvoja stvorenja ostaju na nogama.
tool.freeze.label = Mraz
tool.freeze.name = Mraz
tool.freeze.desc = Ledena hladnoća: lava oko mjesta se na 40 sekundi hladi u prohodni opsidijan, neprijatelji se smrzavaju i usporavaju.
tile.unexplored = Neistražena tama tile.unexplored = Neistražena tama
# personality # personality
+20
View File
@@ -399,6 +399,9 @@ help.start_touch = Koppints az indításhoz
tool.bridge.label = Híd tool.bridge.label = Híd
tool.bridge.name = Hídépítés tool.bridge.name = Hídépítés
tool.bridge.desc = Hidat épít víz vagy láva fölé. Húzd a saját földedről a folyón át; a híd mezőről mezőre nő a területedről. tool.bridge.desc = Hidat épít víz vagy láva fölé. Húzd a saját földedről a folyón át; a híd mezőről mezőre nő a területedről.
tool.drawbridge.label = Felvonóhíd
tool.drawbridge.name = Felvonóhíd építése
tool.drawbridge.desc = Felhúzható híd: húzd át a folyón az építéshez, kattints rá a váltáshoz: lent, fent, automatikus (felemelkedik, ha ellenség közeledik). A víz feletti fa ég, a láva feletti kő nem.
cost.bridge = {0} arany/mező víz fölött, {1} láva fölött cost.bridge = {0} arany/mező víz fölött, {1} láva fölött
hint.bridge_where = A hídnak a saját földedről kell indulnia: húzd a területedről a folyón át. hint.bridge_where = A hídnak a saját földedről kell indulnia: húzd a területedről a folyón át.
hint.bridge_fire = A fahidak égnek: tartsd távol tőlük a tűzcsapdákat, a tűzleheletet és a villámokat – a láva feletti kőhidak tűzállók. hint.bridge_fire = A fahidak égnek: tartsd távol tőlük a tűzcsapdákat, a tűzleheletet és a villámokat – a láva feletti kőhidak tűzállók.
@@ -411,6 +414,15 @@ tile.lava = Láva
tile.lava_info = Ami beleesik, elég. Kőhidak vezetnek át rajta. tile.lava_info = Ami beleesik, elég. Kőhidak vezetnek át rajta.
tile.bridge = Fahíd tile.bridge = Fahíd
tile.lavabridge = Kőhíd tile.lavabridge = Kőhíd
tile.drawbridge = Felvonóhíd
tile.drawbridge_up = Felhúzva
tile.drawbridge_down = Leeresztve
tile.drawbridge_auto = Automatikus (lent)
tile.drawbridge_auto_up = Automatikus (fent)
tile.obsidian = Obszidián
tile.obsidian_info = Kihűlt láva – {0} mp múlva megolvad
tile.bridge_burning = Ég!
tile.bridge_worn = Sérült {0}%
tile.shard = A Lélekmagod egyik szilánkja tile.shard = A Lélekmagod egyik szilánkja
tile.shard_info = Foglald el ezt a kamrát, hogy visszaszerezd a szilánkot. tile.shard_info = Foglald el ezt a kamrát, hogy visszaszerezd a szilánkot.
@@ -433,6 +445,10 @@ msg.vault_taken = Lovagi kincstár elfoglalva: {0} értékű kincs a tiéd.
msg.shard_taken = A Lélekmagod egyik szilánkja újra a kezedben van! msg.shard_taken = A Lélekmagod egyik szilánkja újra a kezedben van!
msg.bridge_torn = A lovagok lerombolták az egyik hidadat! msg.bridge_torn = A lovagok lerombolták az egyik hidadat!
msg.bridge_fire = Az egyik hidad lángokban áll! msg.bridge_fire = Az egyik hidad lángokban áll!
msg.drawbridge_up = A felvonóhíd fel van húzva.
msg.drawbridge_down = A felvonóhíd le van eresztve.
msg.drawbridge_auto = A felvonóhíd magától felemelkedik, ha ellenség közeledik.
msg.drawbridge_rises = Ellenség közeledik: egy felvonóhíd felemelkedik!
job.tear_bridge = Hidat rombol job.tear_bridge = Hidat rombol
job.patrol = Járőrözik job.patrol = Járőrözik
job.guard = Őrt áll job.guard = Őrt áll
@@ -804,6 +820,7 @@ best.b.torture.text = Ide kerülnek a foglyul ejtett hősök. Idővel és egy b
best.b.temple.text = Az imák gyógyítják a lélekmagot, és jó hangulatban tartanak. A templomért a lángpapnő jön. best.b.temple.text = Az imák gyógyítják a lélekmagot, és jó hangulatban tartanak. A templomért a lángpapnő jön.
best.b.aerie.text = Ülőrudak és fészkek repülő lényeknek. A denevéreknek, vízköpőknek, baglyoknak, sőt a parázssárkánynak is itt kell hely. best.b.aerie.text = Ülőrudak és fészkek repülő lényeknek. A denevéreknek, vízköpőknek, baglyoknak, sőt a parázssárkánynak is itt kell hely.
best.b.bridge.text = Fa a víz fölött, kő a láva fölött. A lovagok lerombolják a hidaidat - foglald el az övéiket. best.b.bridge.text = Fa a víz fölött, kő a láva fölött. A lovagok lerombolják a hidaidat - foglald el az övéiket.
best.b.drawbridge.text = Felhúzva a folyó újra fal. Automatikus módban felemelkedik, ha ellenség közeledik – és leereszkedik a saját lényeidnek.
best.b.steel.text = Szegecselt vaslemezek egy megerősített falon. Senki sem ás át rajta gyorsan, még a törpék sem. best.b.steel.text = Szegecselt vaslemezek egy megerősített falon. Senki sem ás át rajta gyorsan, még a törpék sem.
best.b.arrow.text = A nyíl a célpont mögött még legfeljebb két ellenségen áthatol. Olcsó és megbízható. best.b.arrow.text = A nyíl a célpont mögött még legfeljebb két ellenségen áthatol. Olcsó és megbízható.
best.b.cannon.text = Területi sebzés és hátralökés - lökd a lovagokat a lávába. best.b.cannon.text = Területi sebzés és hátralökés - lökd a lovagokat a lávába.
@@ -929,6 +946,9 @@ tool.plague.desc = Kór, amely a hely körüli ellenségeket emészti, és egyik
tool.quake.label = Rengés tool.quake.label = Rengés
tool.quake.name = Földrengés tool.quake.name = Földrengés
tool.quake.desc = Megremeg a föld: a hely körüli ellenségek megsérülnek, és két másodpercre elkábulnak. A lényeid talpon maradnak. tool.quake.desc = Megremeg a föld: a hely körüli ellenségek megsérülnek, és két másodpercre elkábulnak. A lényeid talpon maradnak.
tool.freeze.label = Fagy
tool.freeze.name = Fagy
tool.freeze.desc = Jeges hideg: a láva a hely körül 40 másodpercre járható obszidiánná hűl, az ellenségek átfagynak és lelassulnak.
tile.unexplored = Feltáratlan sötétség tile.unexplored = Feltáratlan sötétség
# personality # personality
+20
View File
@@ -399,6 +399,9 @@ help.start_touch = Tocca per iniziare
tool.bridge.label = Ponte tool.bridge.label = Ponte
tool.bridge.name = Costruisci ponte tool.bridge.name = Costruisci ponte
tool.bridge.desc = Costruisce un ponte su acqua o lava. Trascina dal tuo suolo attraverso il fiume; il ponte cresce casella per casella dal tuo territorio. tool.bridge.desc = Costruisce un ponte su acqua o lava. Trascina dal tuo suolo attraverso il fiume; il ponte cresce casella per casella dal tuo territorio.
tool.drawbridge.label = Levatoio
tool.drawbridge.name = Costruisci ponte levatoio
tool.drawbridge.desc = Un ponte che puoi sollevare: trascina sul fiume per costruirlo, clicca per cambiare: giù, su, automatico (si alza quando arrivano nemici). Il legno sull'acqua brucia, la pietra sulla lava no.
cost.bridge = {0} oro/casella sull'acqua, {1} sulla lava cost.bridge = {0} oro/casella sull'acqua, {1} sulla lava
hint.bridge_where = I ponti devono partire dal tuo suolo: trascina dal tuo territorio attraverso il fiume. hint.bridge_where = I ponti devono partire dal tuo suolo: trascina dal tuo territorio attraverso il fiume.
hint.bridge_fire = I ponti di legno bruciano: tieni lontani trappole di fuoco, soffio infuocato e fulmini; i ponti di pietra sulla lava sono ignifughi. hint.bridge_fire = I ponti di legno bruciano: tieni lontani trappole di fuoco, soffio infuocato e fulmini; i ponti di pietra sulla lava sono ignifughi.
@@ -411,6 +414,15 @@ tile.lava = Lava
tile.lava_info = Ciò che ci cade brucia. I ponti di pietra la attraversano. tile.lava_info = Ciò che ci cade brucia. I ponti di pietra la attraversano.
tile.bridge = Ponte di legno tile.bridge = Ponte di legno
tile.lavabridge = Ponte di pietra tile.lavabridge = Ponte di pietra
tile.drawbridge = Ponte levatoio
tile.drawbridge_up = Sollevato
tile.drawbridge_down = Abbassato
tile.drawbridge_auto = Automatico (giù)
tile.drawbridge_auto_up = Automatico (su)
tile.obsidian = Ossidiana
tile.obsidian_info = Lava raffreddata: si scioglie tra {0} s
tile.bridge_burning = Brucia!
tile.bridge_worn = Danneggiato {0}%
tile.shard = Frammento del tuo nucleo tile.shard = Frammento del tuo nucleo
tile.shard_info = Conquista questa camera per riprenderti il frammento. tile.shard_info = Conquista questa camera per riprenderti il frammento.
@@ -433,6 +445,10 @@ msg.vault_taken = Caveau dei cavalieri preso: tesori per {0} sono tuoi.
msg.shard_taken = Un frammento del tuo nucleo è di nuovo nelle tue mani! msg.shard_taken = Un frammento del tuo nucleo è di nuovo nelle tue mani!
msg.bridge_torn = I cavalieri hanno abbattuto uno dei tuoi ponti! msg.bridge_torn = I cavalieri hanno abbattuto uno dei tuoi ponti!
msg.bridge_fire = Uno dei tuoi ponti è in fiamme! msg.bridge_fire = Uno dei tuoi ponti è in fiamme!
msg.drawbridge_up = Il ponte levatoio è sollevato.
msg.drawbridge_down = Il ponte levatoio è abbassato.
msg.drawbridge_auto = Il ponte levatoio si alza da solo quando arrivano nemici.
msg.drawbridge_rises = Arrivano nemici: un ponte levatoio si alza!
job.tear_bridge = Abbatte un ponte job.tear_bridge = Abbatte un ponte
job.patrol = Di pattuglia job.patrol = Di pattuglia
job.guard = Di guardia job.guard = Di guardia
@@ -796,6 +812,7 @@ best.b.torture.text = Gli eroi catturati finiscono qui. Con il tempo e un carcer
best.b.temple.text = Le preghiere curano il nucleo dell'anima e tengono alto il morale. La sacerdotessa della fiamma viene per un tempio. best.b.temple.text = Le preghiere curano il nucleo dell'anima e tengono alto il morale. La sacerdotessa della fiamma viene per un tempio.
best.b.aerie.text = Posatoi e nidi per creature volanti. Pipistrelli, gargoyle, gufi e perfino il drago di brace hanno bisogno di spazio qui. best.b.aerie.text = Posatoi e nidi per creature volanti. Pipistrelli, gargoyle, gufi e perfino il drago di brace hanno bisogno di spazio qui.
best.b.bridge.text = Legno sull'acqua, pietra sulla lava. I cavalieri abbattono i tuoi ponti - conquista i loro. best.b.bridge.text = Legno sull'acqua, pietra sulla lava. I cavalieri abbattono i tuoi ponti - conquista i loro.
best.b.drawbridge.text = Sollevato, il fiume torna a essere un muro. In automatico si alza quando arrivano nemici e si abbassa per le tue creature.
best.b.steel.text = Piastre di ferro rivettate su un muro rinforzato. Nessuno ci scava attraverso in fretta, nemmeno i nani. best.b.steel.text = Piastre di ferro rivettate su un muro rinforzato. Nessuno ci scava attraverso in fretta, nemmeno i nani.
best.b.arrow.text = La freccia trapassa fino a due nemici dietro il bersaglio. Economica e affidabile. best.b.arrow.text = La freccia trapassa fino a due nemici dietro il bersaglio. Economica e affidabile.
best.b.cannon.text = Danno ad area e contraccolpo - spingi i cavalieri nella lava. best.b.cannon.text = Danno ad area e contraccolpo - spingi i cavalieri nella lava.
@@ -921,6 +938,9 @@ tool.plague.desc = Una malattia che divora i nemici intorno al punto e salta dal
tool.quake.label = Sisma tool.quake.label = Sisma
tool.quake.name = Terremoto tool.quake.name = Terremoto
tool.quake.desc = La terra trema: i nemici intorno al punto vengono feriti e storditi per due secondi. Le tue creature restano in piedi. tool.quake.desc = La terra trema: i nemici intorno al punto vengono feriti e storditi per due secondi. Le tue creature restano in piedi.
tool.freeze.label = Gelo
tool.freeze.name = Gelo
tool.freeze.desc = Freddo glaciale: la lava intorno si raffredda in ossidiana calpestabile per 40 secondi, i nemici vengono gelati e rallentati.
tile.unexplored = Oscurità inesplorata tile.unexplored = Oscurità inesplorata
# personality # personality
+20
View File
@@ -399,6 +399,9 @@ help.start_touch = Tik om te beginnen
tool.bridge.label = Brug tool.bridge.label = Brug
tool.bridge.name = Brug bouwen tool.bridge.name = Brug bouwen
tool.bridge.desc = Bouwt een brug over water of lava. Sleep vanaf je eigen grond over de rivier; de brug groeit vak voor vak vanuit je gebied. tool.bridge.desc = Bouwt een brug over water of lava. Sleep vanaf je eigen grond over de rivier; de brug groeit vak voor vak vanuit je gebied.
tool.drawbridge.label = Ophaalbrug
tool.drawbridge.name = Ophaalbrug bouwen
tool.drawbridge.desc = Een brug die je kunt ophalen: sleep over de rivier om hem te bouwen, klik om te wisselen: omlaag, omhoog, automatisch (gaat omhoog als vijanden naderen). Hout boven water brandt, steen boven lava niet.
cost.bridge = {0} goud/vak over water, {1} over lava cost.bridge = {0} goud/vak over water, {1} over lava
hint.bridge_where = Bruggen moeten op je eigen grond beginnen: sleep vanuit je gebied over de rivier. hint.bridge_where = Bruggen moeten op je eigen grond beginnen: sleep vanuit je gebied over de rivier.
hint.bridge_fire = Houten bruggen branden: houd vuurvallen, vuuradem en bliksem uit de buurt – stenen bruggen over lava zijn vuurvast. hint.bridge_fire = Houten bruggen branden: houd vuurvallen, vuuradem en bliksem uit de buurt – stenen bruggen over lava zijn vuurvast.
@@ -411,6 +414,15 @@ tile.lava = Lava
tile.lava_info = Wat erin valt, verbrandt. Stenen bruggen gaan eroverheen. tile.lava_info = Wat erin valt, verbrandt. Stenen bruggen gaan eroverheen.
tile.bridge = Houten brug tile.bridge = Houten brug
tile.lavabridge = Stenen brug tile.lavabridge = Stenen brug
tile.drawbridge = Ophaalbrug
tile.drawbridge_up = Opgehaald
tile.drawbridge_down = Neergelaten
tile.drawbridge_auto = Automatisch (omlaag)
tile.drawbridge_auto_up = Automatisch (omhoog)
tile.obsidian = Obsidiaan
tile.obsidian_info = Afgekoelde lava – smelt over {0} s
tile.bridge_burning = Brandt!
tile.bridge_worn = Beschadigd {0}%
tile.shard = Scherf van je zielenkern tile.shard = Scherf van je zielenkern
tile.shard_info = Neem deze kamer in om de scherf terug te halen. tile.shard_info = Neem deze kamer in om de scherf terug te halen.
@@ -433,6 +445,10 @@ msg.vault_taken = Riddergewelf ingenomen: schatten ter waarde van {0} zijn van j
msg.shard_taken = Een scherf van je zielenkern is weer in jouw handen! msg.shard_taken = Een scherf van je zielenkern is weer in jouw handen!
msg.bridge_torn = De ridders hebben een van je bruggen afgebroken! msg.bridge_torn = De ridders hebben een van je bruggen afgebroken!
msg.bridge_fire = Een van je bruggen staat in brand! msg.bridge_fire = Een van je bruggen staat in brand!
msg.drawbridge_up = De ophaalbrug is opgehaald.
msg.drawbridge_down = De ophaalbrug is neergelaten.
msg.drawbridge_auto = De ophaalbrug gaat vanzelf omhoog als vijanden naderen.
msg.drawbridge_rises = Vijanden naderen: een ophaalbrug gaat omhoog!
job.tear_bridge = Breekt een brug af job.tear_bridge = Breekt een brug af
job.patrol = Op patrouille job.patrol = Op patrouille
job.guard = Op wacht job.guard = Op wacht
@@ -804,6 +820,7 @@ best.b.torture.text = Gevangen helden belanden hier. Met tijd en een cipier lope
best.b.temple.text = Gebeden genezen de zielenkern en houden de moed erin. De vlampriesteres komt voor een tempel. best.b.temple.text = Gebeden genezen de zielenkern en houden de moed erin. De vlampriesteres komt voor een tempel.
best.b.aerie.text = Zitstokken en nesten voor vliegende wezens. Vleermuizen, gargouilles, uilen en zelfs de gloeddraak hebben hier ruimte nodig. best.b.aerie.text = Zitstokken en nesten voor vliegende wezens. Vleermuizen, gargouilles, uilen en zelfs de gloeddraak hebben hier ruimte nodig.
best.b.bridge.text = Hout over water, steen over lava. De ridders breken je bruggen af - neem de hunne in. best.b.bridge.text = Hout over water, steen over lava. De ridders breken je bruggen af - neem de hunne in.
best.b.drawbridge.text = Opgehaald is de rivier weer een muur. Op automatisch gaat hij omhoog zodra vijanden naderen – en zakt voor je eigen wezens.
best.b.steel.text = Geklonken ijzeren platen op een versterkte muur. Niemand graaft er snel doorheen, zelfs dwergen niet. best.b.steel.text = Geklonken ijzeren platen op een versterkte muur. Niemand graaft er snel doorheen, zelfs dwergen niet.
best.b.arrow.text = De pijl doorboort tot twee extra vijanden achter het doelwit. Goedkoop en betrouwbaar. best.b.arrow.text = De pijl doorboort tot twee extra vijanden achter het doelwit. Goedkoop en betrouwbaar.
best.b.cannon.text = Spatschade en terugslag - duw de ridders de lava in. best.b.cannon.text = Spatschade en terugslag - duw de ridders de lava in.
@@ -929,6 +946,9 @@ tool.plague.desc = Een ziekte die de vijanden rond de plek aanvreet en van de ee
tool.quake.label = Beving tool.quake.label = Beving
tool.quake.name = Aardbeving tool.quake.name = Aardbeving
tool.quake.desc = De grond schudt: vijanden rond de plek raken gewond en zijn twee seconden verdoofd. Je wezens blijven overeind. tool.quake.desc = De grond schudt: vijanden rond de plek raken gewond en zijn twee seconden verdoofd. Je wezens blijven overeind.
tool.freeze.label = Vorst
tool.freeze.name = Vorst
tool.freeze.desc = IJzige kou: lava rond de plek koelt 40 seconden af tot begaanbaar obsidiaan, vijanden worden onderkoeld en vertraagd.
tile.unexplored = Onverkend duister tile.unexplored = Onverkend duister
# personality # personality
+20
View File
@@ -398,6 +398,9 @@ help.start_touch = Trykk for å starte
tool.bridge.label = Bro tool.bridge.label = Bro
tool.bridge.name = Bygg bro tool.bridge.name = Bygg bro
tool.bridge.desc = Bygger en bro over vann eller lava. Dra fra din egen grunn over elven; broen vokser rute for rute fra området ditt. tool.bridge.desc = Bygger en bro over vann eller lava. Dra fra din egen grunn over elven; broen vokser rute for rute fra området ditt.
tool.drawbridge.label = Vindebro
tool.drawbridge.name = Bygg vindebro
tool.drawbridge.desc = En bro du kan heise opp: dra over elva for å bygge den, klikk for å bytte: nede, oppe, automatisk (heises når fiender nærmer seg). Tre over vann brenner, stein over lava gjør ikke.
cost.bridge = {0} gull/rute over vann, {1} over lava cost.bridge = {0} gull/rute over vann, {1} over lava
hint.bridge_where = Broer må starte på din egen grunn: dra fra området ditt over elven. hint.bridge_where = Broer må starte på din egen grunn: dra fra området ditt over elven.
hint.bridge_fire = Trebroer brenner: hold ildfeller, ildpust og lyn unna dem – steinbroer over lava er brannsikre. hint.bridge_fire = Trebroer brenner: hold ildfeller, ildpust og lyn unna dem – steinbroer over lava er brannsikre.
@@ -410,6 +413,15 @@ tile.lava = Lava
tile.lava_info = Det som faller i, brenner. Steinbroer fører over. tile.lava_info = Det som faller i, brenner. Steinbroer fører over.
tile.bridge = Trebro tile.bridge = Trebro
tile.lavabridge = Steinbro tile.lavabridge = Steinbro
tile.drawbridge = Vindebro
tile.drawbridge_up = Heist opp
tile.drawbridge_down = Senket
tile.drawbridge_auto = Automatisk (nede)
tile.drawbridge_auto_up = Automatisk (oppe)
tile.obsidian = Obsidian
tile.obsidian_info = Avkjølt lava – smelter om {0} s
tile.bridge_burning = Brenner!
tile.bridge_worn = Skadet {0}%
tile.shard = Skår av sjelekjernen din tile.shard = Skår av sjelekjernen din
tile.shard_info = Innta dette kammeret for å ta skåret tilbake. tile.shard_info = Innta dette kammeret for å ta skåret tilbake.
@@ -432,6 +444,10 @@ msg.vault_taken = Riddernes hvelv inntatt: skatter verdt {0} er dine.
msg.shard_taken = Et skår av sjelekjernen din er tilbake i hendene dine! msg.shard_taken = Et skår av sjelekjernen din er tilbake i hendene dine!
msg.bridge_torn = Ridderne har revet ned en av broene dine! msg.bridge_torn = Ridderne har revet ned en av broene dine!
msg.bridge_fire = En av broene dine brenner! msg.bridge_fire = En av broene dine brenner!
msg.drawbridge_up = Vindebroen er heist opp.
msg.drawbridge_down = Vindebroen er senket.
msg.drawbridge_auto = Vindebroen heises av seg selv når fiender nærmer seg.
msg.drawbridge_rises = Fiender nærmer seg: en vindebro heises!
job.tear_bridge = River ned en bro job.tear_bridge = River ned en bro
job.patrol = På patrulje job.patrol = På patrulje
job.guard = På vakt job.guard = På vakt
@@ -803,6 +819,7 @@ best.b.torture.text = Fangede helter havner her. Med tid og en fangevokter bytte
best.b.temple.text = Bønner leger sjelekjernen og holder humøret oppe. Flammeprestinnen kommer for et tempel. best.b.temple.text = Bønner leger sjelekjernen og holder humøret oppe. Flammeprestinnen kommer for et tempel.
best.b.aerie.text = Sittepinner og reder for flygende skapninger. Flaggermus, gargoyler, ugler og til og med glødlindormen trenger plass her. best.b.aerie.text = Sittepinner og reder for flygende skapninger. Flaggermus, gargoyler, ugler og til og med glødlindormen trenger plass her.
best.b.bridge.text = Tre over vann, stein over lava. Ridderne river ned broene dine - innta deres. best.b.bridge.text = Tre over vann, stein over lava. Ridderne river ned broene dine - innta deres.
best.b.drawbridge.text = Heist opp er elva en mur igjen. På automatisk heises den når fiender nærmer seg – og senkes for dine egne skapninger.
best.b.steel.text = Naglede jernplater på en forsterket vegg. Ingen graver seg raskt gjennom, ikke engang dverger. best.b.steel.text = Naglede jernplater på en forsterket vegg. Ingen graver seg raskt gjennom, ikke engang dverger.
best.b.arrow.text = Pilen gjennomborer opptil to fiender til bak målet. Billig og pålitelig. best.b.arrow.text = Pilen gjennomborer opptil to fiender til bak målet. Billig og pålitelig.
best.b.cannon.text = Områdeskade og tilbakeslag - dytt ridderne i lavaen. best.b.cannon.text = Områdeskade og tilbakeslag - dytt ridderne i lavaen.
@@ -928,6 +945,9 @@ tool.plague.desc = En sykdom som tærer på fiendene rundt stedet og hopper fra
tool.quake.label = Skjelv tool.quake.label = Skjelv
tool.quake.name = Jordskjelv tool.quake.name = Jordskjelv
tool.quake.desc = Bakken rister: fiender rundt stedet skades og lammes i to sekunder. Skapningene dine holder balansen. tool.quake.desc = Bakken rister: fiender rundt stedet skades og lammes i to sekunder. Skapningene dine holder balansen.
tool.freeze.label = Frost
tool.freeze.name = Frost
tool.freeze.desc = Isende kulde: lava rundt stedet kjøles til gangbar obsidian i 40 sekunder, fiender blir nedkjølt og trege.
tile.unexplored = Uutforsket mørke tile.unexplored = Uutforsket mørke
# personality # personality
+20
View File
@@ -399,6 +399,9 @@ help.start_touch = Toca para começar
tool.bridge.label = Ponte tool.bridge.label = Ponte
tool.bridge.name = Construir Ponte tool.bridge.name = Construir Ponte
tool.bridge.desc = Constrói uma ponte sobre água ou lava. Arrasta a partir do teu chão através do rio; a ponte cresce casa a casa a partir do teu território. tool.bridge.desc = Constrói uma ponte sobre água ou lava. Arrasta a partir do teu chão através do rio; a ponte cresce casa a casa a partir do teu território.
tool.drawbridge.label = Levadiça
tool.drawbridge.name = Construir ponte levadiça
tool.drawbridge.desc = Uma ponte que podes levantar: arrasta sobre o rio para a construir, clica para mudar: em baixo, em cima, automática (sobe quando os inimigos se aproximam). Madeira sobre água arde, pedra sobre lava não.
cost.bridge = {0} de ouro/casa sobre água, {1} sobre lava cost.bridge = {0} de ouro/casa sobre água, {1} sobre lava
hint.bridge_where = As pontes têm de começar no teu chão: arrasta a partir do teu território através do rio. hint.bridge_where = As pontes têm de começar no teu chão: arrasta a partir do teu território através do rio.
hint.bridge_fire = As pontes de madeira ardem: mantém armadilhas de fogo, sopro de fogo e relâmpagos longe delas – as pontes de pedra sobre lava não ardem. hint.bridge_fire = As pontes de madeira ardem: mantém armadilhas de fogo, sopro de fogo e relâmpagos longe delas – as pontes de pedra sobre lava não ardem.
@@ -411,6 +414,15 @@ tile.lava = Lava
tile.lava_info = O que cai lá dentro arde. As pontes de pedra atravessam-na. tile.lava_info = O que cai lá dentro arde. As pontes de pedra atravessam-na.
tile.bridge = Ponte de madeira tile.bridge = Ponte de madeira
tile.lavabridge = Ponte de pedra tile.lavabridge = Ponte de pedra
tile.drawbridge = Ponte levadiça
tile.drawbridge_up = Levantada
tile.drawbridge_down = Baixada
tile.drawbridge_auto = Automática (em baixo)
tile.drawbridge_auto_up = Automática (em cima)
tile.obsidian = Obsidiana
tile.obsidian_info = Lava arrefecida – derrete em {0} s
tile.bridge_burning = A arder!
tile.bridge_worn = Danificada {0}%
tile.shard = Fragmento do teu núcleo de alma tile.shard = Fragmento do teu núcleo de alma
tile.shard_info = Reclama esta câmara para recuperar o fragmento. tile.shard_info = Reclama esta câmara para recuperar o fragmento.
@@ -433,6 +445,10 @@ msg.vault_taken = Cofre dos cavaleiros tomado: {0} em tesouros são teus.
msg.shard_taken = Um fragmento do teu núcleo de alma está de novo nas tuas mãos! msg.shard_taken = Um fragmento do teu núcleo de alma está de novo nas tuas mãos!
msg.bridge_torn = Os cavaleiros destruíram uma das tuas pontes! msg.bridge_torn = Os cavaleiros destruíram uma das tuas pontes!
msg.bridge_fire = Uma das tuas pontes está a arder! msg.bridge_fire = Uma das tuas pontes está a arder!
msg.drawbridge_up = A ponte levadiça está levantada.
msg.drawbridge_down = A ponte levadiça está baixada.
msg.drawbridge_auto = A ponte levadiça sobe sozinha quando os inimigos se aproximam.
msg.drawbridge_rises = Inimigos perto: uma ponte levadiça sobe!
job.tear_bridge = A destruir uma ponte job.tear_bridge = A destruir uma ponte
job.patrol = De patrulha job.patrol = De patrulha
job.guard = De guarda job.guard = De guarda
@@ -804,6 +820,7 @@ best.b.torture.text = Os heróis capturados acabam aqui. Com tempo e um carcerei
best.b.temple.text = As orações curam o núcleo de alma e mantêm o moral alto. A sacerdotisa das chamas vem por um templo. best.b.temple.text = As orações curam o núcleo de alma e mantêm o moral alto. A sacerdotisa das chamas vem por um templo.
best.b.aerie.text = Poleiros e ninhos para criaturas voadoras. Morcegos, gárgulas, corujas e até a serpe de brasa precisam de espaço aqui. best.b.aerie.text = Poleiros e ninhos para criaturas voadoras. Morcegos, gárgulas, corujas e até a serpe de brasa precisam de espaço aqui.
best.b.bridge.text = Madeira sobre água, pedra sobre lava. Os cavaleiros destroem as tuas pontes - reclama as deles. best.b.bridge.text = Madeira sobre água, pedra sobre lava. Os cavaleiros destroem as tuas pontes - reclama as deles.
best.b.drawbridge.text = Levantada, o rio volta a ser uma muralha. Em automático sobe quando os inimigos se aproximam e desce para as tuas criaturas.
best.b.steel.text = Placas de ferro rebitadas numa parede reforçada. Ninguém a escava depressa, nem sequer os anões. best.b.steel.text = Placas de ferro rebitadas numa parede reforçada. Ninguém a escava depressa, nem sequer os anões.
best.b.arrow.text = A flecha trespassa até mais dois inimigos atrás do alvo. Barata e fiável. best.b.arrow.text = A flecha trespassa até mais dois inimigos atrás do alvo. Barata e fiável.
best.b.cannon.text = Dano em área e repulsão - empurra os cavaleiros para a lava. best.b.cannon.text = Dano em área e repulsão - empurra os cavaleiros para a lava.
@@ -929,6 +946,9 @@ tool.plague.desc = Uma doença que corrói os inimigos à volta do ponto e salta
tool.quake.label = Sismo tool.quake.label = Sismo
tool.quake.name = Sismo tool.quake.name = Sismo
tool.quake.desc = O chão treme: os inimigos à volta do ponto são feridos e atordoados durante dois segundos. As tuas criaturas mantêm-se de pé. tool.quake.desc = O chão treme: os inimigos à volta do ponto são feridos e atordoados durante dois segundos. As tuas criaturas mantêm-se de pé.
tool.freeze.label = Gelo
tool.freeze.name = Gelo
tool.freeze.desc = Frio gélido: a lava à volta arrefece em obsidiana transitável durante 40 segundos, os inimigos ficam gelados e lentos.
tile.unexplored = Escuridão inexplorada tile.unexplored = Escuridão inexplorada
# personality # personality
+20
View File
@@ -399,6 +399,9 @@ help.start_touch = Atinge pentru a începe
tool.bridge.label = Pod tool.bridge.label = Pod
tool.bridge.name = Construiește Pod tool.bridge.name = Construiește Pod
tool.bridge.desc = Construiește un pod peste apă sau lavă. Trage de pe terenul tău peste râu; podul crește dală cu dală dinspre teritoriul tău. tool.bridge.desc = Construiește un pod peste apă sau lavă. Trage de pe terenul tău peste râu; podul crește dală cu dală dinspre teritoriul tău.
tool.drawbridge.label = Pod mobil
tool.drawbridge.name = Construiește pod mobil
tool.drawbridge.desc = Un pod pe care îl poți ridica: trage peste râu ca să-l construiești, dă clic pentru a schimba: jos, sus, automat (se ridică atunci când se apropie dușmanii). Lemnul peste apă arde, piatra peste lavă nu.
cost.bridge = {0} aur/dală peste apă, {1} peste lavă cost.bridge = {0} aur/dală peste apă, {1} peste lavă
hint.bridge_where = Podurile trebuie să pornească de pe terenul tău: trage de pe teritoriul tău peste râu. hint.bridge_where = Podurile trebuie să pornească de pe terenul tău: trage de pe teritoriul tău peste râu.
hint.bridge_fire = Podurile de lemn ard: ține capcanele de foc, suflarea de foc și fulgerele departe de ele – podurile de piatră peste lavă nu ard. hint.bridge_fire = Podurile de lemn ard: ține capcanele de foc, suflarea de foc și fulgerele departe de ele – podurile de piatră peste lavă nu ard.
@@ -411,6 +414,15 @@ tile.lava = Lavă
tile.lava_info = Ce cade înăuntru arde. Podurile de piatră o traversează. tile.lava_info = Ce cade înăuntru arde. Podurile de piatră o traversează.
tile.bridge = Pod de lemn tile.bridge = Pod de lemn
tile.lavabridge = Pod de piatră tile.lavabridge = Pod de piatră
tile.drawbridge = Pod mobil
tile.drawbridge_up = Ridicat
tile.drawbridge_down = Coborât
tile.drawbridge_auto = Automat (jos)
tile.drawbridge_auto_up = Automat (sus)
tile.obsidian = Obsidian
tile.obsidian_info = Lavă răcită – se topește în {0} s
tile.bridge_burning = Arde!
tile.bridge_worn = Deteriorat {0}%
tile.shard = Ciob din miezul sufletului tău tile.shard = Ciob din miezul sufletului tău
tile.shard_info = Cucerește această cameră ca să iei ciobul înapoi. tile.shard_info = Cucerește această cameră ca să iei ciobul înapoi.
@@ -433,6 +445,10 @@ msg.vault_taken = Seif al cavalerilor cucerit: o comoară în valoare de {0} e a
msg.shard_taken = Un ciob din miezul sufletului tău e din nou în mâinile tale! msg.shard_taken = Un ciob din miezul sufletului tău e din nou în mâinile tale!
msg.bridge_torn = Cavalerii ți-au dărâmat unul dintre poduri! msg.bridge_torn = Cavalerii ți-au dărâmat unul dintre poduri!
msg.bridge_fire = Unul dintre podurile tale arde! msg.bridge_fire = Unul dintre podurile tale arde!
msg.drawbridge_up = Podul mobil este ridicat.
msg.drawbridge_down = Podul mobil este coborât.
msg.drawbridge_auto = Podul mobil se ridică singur când se apropie dușmanii.
msg.drawbridge_rises = Se apropie dușmani: un pod mobil se ridică!
job.tear_bridge = Dărâmă un pod job.tear_bridge = Dărâmă un pod
job.patrol = În patrulă job.patrol = În patrulă
job.guard = De pază job.guard = De pază
@@ -804,6 +820,7 @@ best.b.torture.text = Eroii capturați ajung aici. Cu timp și un temnicer, unii
best.b.temple.text = Rugăciunile vindecă miezul sufletului și țin moralul sus. Preoteasa flăcării vine pentru un templu. best.b.temple.text = Rugăciunile vindecă miezul sufletului și țin moralul sus. Preoteasa flăcării vine pentru un templu.
best.b.aerie.text = Stinghii și cuiburi pentru creaturile zburătoare. Liliecii, gargujii, bufnițele și chiar balaurul de jar au nevoie de loc aici. best.b.aerie.text = Stinghii și cuiburi pentru creaturile zburătoare. Liliecii, gargujii, bufnițele și chiar balaurul de jar au nevoie de loc aici.
best.b.bridge.text = Lemn peste apă, piatră peste lavă. Cavalerii îți dărâmă podurile - cucerește-le pe ale lor. best.b.bridge.text = Lemn peste apă, piatră peste lavă. Cavalerii îți dărâmă podurile - cucerește-le pe ale lor.
best.b.drawbridge.text = Ridicat, râul devine din nou zid. Pe automat se ridică atunci când se apropie dușmanii – și coboară pentru creaturile tale.
best.b.steel.text = Plăci de fier nituite pe un zid întărit. Nimeni nu sapă repede prin el, nici măcar piticii. best.b.steel.text = Plăci de fier nituite pe un zid întărit. Nimeni nu sapă repede prin el, nici măcar piticii.
best.b.arrow.text = Săgeata străpunge până la doi dușmani din spatele țintei. Ieftin și de încredere. best.b.arrow.text = Săgeata străpunge până la doi dușmani din spatele țintei. Ieftin și de încredere.
best.b.cannon.text = Daune în zonă și recul - împinge cavalerii în lavă. best.b.cannon.text = Daune în zonă și recul - împinge cavalerii în lavă.
@@ -929,6 +946,9 @@ tool.plague.desc = O boală care roade dușmanii din jurul locului și sare de l
tool.quake.label = Cutremur tool.quake.label = Cutremur
tool.quake.name = Cutremur tool.quake.name = Cutremur
tool.quake.desc = Pământul se cutremură: dușmanii din jurul locului sunt răniți și amețiți două secunde. Creaturile tale rămân în picioare. tool.quake.desc = Pământul se cutremură: dușmanii din jurul locului sunt răniți și amețiți două secunde. Creaturile tale rămân în picioare.
tool.freeze.label = Ger
tool.freeze.name = Ger
tool.freeze.desc = Frig cumplit: lava din jur se răcește în obsidian pe care se poate merge timp de 40 de secunde, dușmanii sunt înghețați și încetiniți.
tile.unexplored = Întuneric neexplorat tile.unexplored = Întuneric neexplorat
# personality # personality
+20
View File
@@ -399,6 +399,9 @@ help.start_touch = Коснись, чтобы начать
tool.bridge.label = Мост tool.bridge.label = Мост
tool.bridge.name = Построить мост tool.bridge.name = Построить мост
tool.bridge.desc = Строит мост через воду или лаву. Тяни от своей земли через реку; мост растёт клетка за клеткой от твоей территории. tool.bridge.desc = Строит мост через воду или лаву. Тяни от своей земли через реку; мост растёт клетка за клеткой от твоей территории.
tool.drawbridge.label = Подъёмный
tool.drawbridge.name = Построить подъёмный мост
tool.drawbridge.desc = Мост, который можно поднять: протяните через реку, чтобы построить, щёлкните, чтобы переключить: опущен, поднят, автоматически (поднимается при приближении врагов). Дерево над водой горит, камень над лавой — нет.
cost.bridge = {0} золота/клетка над водой, {1} над лавой cost.bridge = {0} золота/клетка над водой, {1} над лавой
hint.bridge_where = Мост должен начинаться у твоей земли: тяни от своей территории через реку. hint.bridge_where = Мост должен начинаться у твоей земли: тяни от своей территории через реку.
hint.bridge_fire = Деревянные мосты горят: держите огненные ловушки, огненное дыхание и молнии подальше; каменные мосты над лавой не горят. hint.bridge_fire = Деревянные мосты горят: держите огненные ловушки, огненное дыхание и молнии подальше; каменные мосты над лавой не горят.
@@ -411,6 +414,15 @@ tile.lava = Лава
tile.lava_info = Всё, что туда падает, сгорает. Её пересекают каменные мосты. tile.lava_info = Всё, что туда падает, сгорает. Её пересекают каменные мосты.
tile.bridge = Деревянный мост tile.bridge = Деревянный мост
tile.lavabridge = Каменный мост tile.lavabridge = Каменный мост
tile.drawbridge = Подъёмный мост
tile.drawbridge_up = Поднят
tile.drawbridge_down = Опущен
tile.drawbridge_auto = Автоматически (опущен)
tile.drawbridge_auto_up = Автоматически (поднят)
tile.obsidian = Обсидиан
tile.obsidian_info = Застывшая лава — растает через {0} с
tile.bridge_burning = Горит!
tile.bridge_worn = Повреждён на {0}%
tile.shard = Осколок твоего ядра души tile.shard = Осколок твоего ядра души
tile.shard_info = Захвати этот зал, чтобы вернуть осколок. tile.shard_info = Захвати этот зал, чтобы вернуть осколок.
@@ -433,6 +445,10 @@ msg.vault_taken = Рыцарское хранилище взято: сокров
msg.shard_taken = Осколок твоего ядра души снова в твоих руках! msg.shard_taken = Осколок твоего ядра души снова в твоих руках!
msg.bridge_torn = Рыцари разрушили один из твоих мостов! msg.bridge_torn = Рыцари разрушили один из твоих мостов!
msg.bridge_fire = Один из ваших мостов горит! msg.bridge_fire = Один из ваших мостов горит!
msg.drawbridge_up = Подъёмный мост поднят.
msg.drawbridge_down = Подъёмный мост опущен.
msg.drawbridge_auto = Подъёмный мост сам поднимается при приближении врагов.
msg.drawbridge_rises = Враги близко: подъёмный мост поднимается!
job.tear_bridge = Ломает мост job.tear_bridge = Ломает мост
job.patrol = В дозоре job.patrol = В дозоре
job.guard = На страже job.guard = На страже
@@ -796,6 +812,7 @@ best.b.torture.text = Сюда попадают пленные герои. Со
best.b.temple.text = Молитвы лечат ядро души и поднимают дух. Жрица пламени приходит на храм. best.b.temple.text = Молитвы лечат ядро души и поднимают дух. Жрица пламени приходит на храм.
best.b.aerie.text = Насесты и гнёзда для летунов. Нетопырям, горгульям, совам и даже огненному змию нужно здесь место. best.b.aerie.text = Насесты и гнёзда для летунов. Нетопырям, горгульям, совам и даже огненному змию нужно здесь место.
best.b.bridge.text = Дерево над водой, камень над лавой. Рыцари ломают твои мосты - захватывай их мосты. best.b.bridge.text = Дерево над водой, камень над лавой. Рыцари ломают твои мосты - захватывай их мосты.
best.b.drawbridge.text = Поднимите его — и река снова стена. В автоматическом режиме он поднимается при приближении врагов и опускается для ваших существ.
best.b.steel.text = Клёпаные железные листы на укреплённой стене. Быстро никто не прокопает, даже гномы. best.b.steel.text = Клёпаные железные листы на укреплённой стене. Быстро никто не прокопает, даже гномы.
best.b.arrow.text = Стрела пробивает ещё до двух врагов за целью. Дёшево и надёжно. best.b.arrow.text = Стрела пробивает ещё до двух врагов за целью. Дёшево и надёжно.
best.b.cannon.text = Урон по площади и отбрасывание - столкни рыцарей в лаву. best.b.cannon.text = Урон по площади и отбрасывание - столкни рыцарей в лаву.
@@ -921,6 +938,9 @@ tool.plague.desc = Хворь, которая гложет врагов вокр
tool.quake.label = Толчок tool.quake.label = Толчок
tool.quake.name = Землетрясение tool.quake.name = Землетрясение
tool.quake.desc = Земля дрожит: враги вокруг точки ранены и оглушены на две секунды. Твои существа стоят на ногах. tool.quake.desc = Земля дрожит: враги вокруг точки ранены и оглушены на две секунды. Твои существа стоят на ногах.
tool.freeze.label = Мороз
tool.freeze.name = Мороз
tool.freeze.desc = Ледяной холод: лава вокруг на 40 секунд застывает в проходимый обсидиан, враги замерзают и замедляются.
tile.unexplored = Неизведанная тьма tile.unexplored = Неизведанная тьма
# personality # personality
+20
View File
@@ -399,6 +399,9 @@ help.start_touch = Ťukni pre štart
tool.bridge.label = Most tool.bridge.label = Most
tool.bridge.name = Postaviť most tool.bridge.name = Postaviť most
tool.bridge.desc = Postaví most cez vodu alebo lávu. Ťahaj z vlastnej zeme cez rieku; most rastie políčko po políčku od tvojho územia. tool.bridge.desc = Postaví most cez vodu alebo lávu. Ťahaj z vlastnej zeme cez rieku; most rastie políčko po políčku od tvojho územia.
tool.drawbridge.label = Padací most
tool.drawbridge.name = Postaviť padací most
tool.drawbridge.desc = Most, ktorý môžeš vytiahnuť: potiahni cez rieku a postav ho, kliknutím prepínaš: dole, hore, automaticky (zdvihne sa, keď sa blížia nepriatelia). Drevo nad vodou horí, kameň nad lávou nie.
cost.bridge = {0} zlata/políčko cez vodu, {1} cez lávu cost.bridge = {0} zlata/políčko cez vodu, {1} cez lávu
hint.bridge_where = Mosty musia začínať na tvojej zemi: ťahaj zo svojho územia cez rieku. hint.bridge_where = Mosty musia začínať na tvojej zemi: ťahaj zo svojho územia cez rieku.
hint.bridge_fire = Drevené mosty horia: drž ohnivé pasce, ohnivý dych a blesky ďalej od nich – kamenné mosty nad lávou nehoria. hint.bridge_fire = Drevené mosty horia: drž ohnivé pasce, ohnivý dych a blesky ďalej od nich – kamenné mosty nad lávou nehoria.
@@ -411,6 +414,15 @@ tile.lava = Láva
tile.lava_info = Čo do nej spadne, zhorí. Prechádzajú ju kamenné mosty. tile.lava_info = Čo do nej spadne, zhorí. Prechádzajú ju kamenné mosty.
tile.bridge = Drevený most tile.bridge = Drevený most
tile.lavabridge = Kamenný most tile.lavabridge = Kamenný most
tile.drawbridge = Padací most
tile.drawbridge_up = Vytiahnutý
tile.drawbridge_down = Spustený
tile.drawbridge_auto = Automaticky (dole)
tile.drawbridge_auto_up = Automaticky (hore)
tile.obsidian = Obsidián
tile.obsidian_info = Stuhnutá láva – roztopí sa o {0} s
tile.bridge_burning = Horí!
tile.bridge_worn = Poškodený {0}%
tile.shard = Črep tvojho jadra duše tile.shard = Črep tvojho jadra duše
tile.shard_info = Zaber túto komnatu a získaš črep späť. tile.shard_info = Zaber túto komnatu a získaš črep späť.
@@ -433,6 +445,10 @@ msg.vault_taken = Rytiersky trezor dobytý: poklad v hodnote {0} je tvoj.
msg.shard_taken = Črep tvojho jadra duše je späť v tvojich rukách! msg.shard_taken = Črep tvojho jadra duše je späť v tvojich rukách!
msg.bridge_torn = Rytieri strhli jeden z tvojich mostov! msg.bridge_torn = Rytieri strhli jeden z tvojich mostov!
msg.bridge_fire = Jeden z tvojich mostov horí! msg.bridge_fire = Jeden z tvojich mostov horí!
msg.drawbridge_up = Padací most je vytiahnutý.
msg.drawbridge_down = Padací most je spustený.
msg.drawbridge_auto = Padací most sa sám zdvihne, keď sa blížia nepriatelia.
msg.drawbridge_rises = Blížia sa nepriatelia: padací most sa zdvíha!
job.tear_bridge = Strháva most job.tear_bridge = Strháva most
job.patrol = Na hliadke job.patrol = Na hliadke
job.guard = Na stráži job.guard = Na stráži
@@ -804,6 +820,7 @@ best.b.torture.text = Sem končia zajatí hrdinovia. S časom a žalárnikom nie
best.b.temple.text = Modlitby liečia jadro duše a držia dobrú náladu. Kvôli chrámu prichádza plamenná kňažka. best.b.temple.text = Modlitby liečia jadro duše a držia dobrú náladu. Kvôli chrámu prichádza plamenná kňažka.
best.b.aerie.text = Bidlá a hniezda pre lietajúce tvory. Netopiere, chrliče, sovy aj žeravý šarkan tu potrebujú miesto. best.b.aerie.text = Bidlá a hniezda pre lietajúce tvory. Netopiere, chrliče, sovy aj žeravý šarkan tu potrebujú miesto.
best.b.bridge.text = Drevo cez vodu, kameň cez lávu. Rytieri tvoje mosty strhávajú - zaber tie ich. best.b.bridge.text = Drevo cez vodu, kameň cez lávu. Rytieri tvoje mosty strhávajú - zaber tie ich.
best.b.drawbridge.text = Vytiahnutý most robí z rieky opäť múr. V automatickom režime sa zdvihne, keď sa blížia nepriatelia – a spustí sa pre tvoje bytosti.
best.b.steel.text = Nitované železné pláty na spevnenej stene. Nikto sa rýchlo neprekope, ani trpaslíci. best.b.steel.text = Nitované železné pláty na spevnenej stene. Nikto sa rýchlo neprekope, ani trpaslíci.
best.b.arrow.text = Šíp preletí až dvoma ďalšími nepriateľmi za cieľom. Lacná a spoľahlivá. best.b.arrow.text = Šíp preletí až dvoma ďalšími nepriateľmi za cieľom. Lacná a spoľahlivá.
best.b.cannon.text = Plošné poškodenie a odhodenie - natlač rytierov do lávy. best.b.cannon.text = Plošné poškodenie a odhodenie - natlač rytierov do lávy.
@@ -929,6 +946,9 @@ tool.plague.desc = Choroba, ktorá zožiera nepriateľov okolo miesta a preskaku
tool.quake.label = Otras tool.quake.label = Otras
tool.quake.name = Zemetrasenie tool.quake.name = Zemetrasenie
tool.quake.desc = Zem sa otrasie: nepriatelia okolo miesta sú zranení a na dve sekundy omráčení. Tvoje tvory sa udržia na nohách. tool.quake.desc = Zem sa otrasie: nepriatelia okolo miesta sú zranení a na dve sekundy omráčení. Tvoje tvory sa udržia na nohách.
tool.freeze.label = Mráz
tool.freeze.name = Mráz
tool.freeze.desc = Ľadová zima: láva okolo miesta na 40 sekúnd stuhne na priechodný obsidián, nepriatelia sú podchladení a spomalení.
tile.unexplored = Nepreskúmaná temnota tile.unexplored = Nepreskúmaná temnota
# personality # personality
+20
View File
@@ -399,6 +399,9 @@ help.start_touch = Додирни за почетак
tool.bridge.label = Мост tool.bridge.label = Мост
tool.bridge.name = Градња моста tool.bridge.name = Градња моста
tool.bridge.desc = Гради мост преко воде или лаве. Превуци са свог тла преко реке; мост расте поље по поље од твоје територије. tool.bridge.desc = Гради мост преко воде или лаве. Превуци са свог тла преко реке; мост расте поље по поље од твоје територије.
tool.drawbridge.label = Покретни мост
tool.drawbridge.name = Изгради покретни мост
tool.drawbridge.desc = Мост који можеш подићи: повуци преко реке да га изградиш, кликни за промену: доле, горе, аутоматски (диже се кад се непријатељи приближе). Дрво над водом гори, камен над лавом не.
cost.bridge = {0} злата/поље преко воде, {1} преко лаве cost.bridge = {0} злата/поље преко воде, {1} преко лаве
hint.bridge_where = Мостови морају да почну на твом тлу: превуци са своје територије преко реке. hint.bridge_where = Мостови морају да почну на твом тлу: превуци са своје територије преко реке.
hint.bridge_fire = Дрвени мостови горе: држи ватрене замке, ватрени дах и муње подаље – камени мостови над лавом не горе. hint.bridge_fire = Дрвени мостови горе: држи ватрене замке, ватрени дах и муње подаље – камени мостови над лавом не горе.
@@ -411,6 +414,15 @@ tile.lava = Лава
tile.lava_info = Шта год упадне, изгори. Камени мостови је премошћују. tile.lava_info = Шта год упадне, изгори. Камени мостови је премошћују.
tile.bridge = Дрвени мост tile.bridge = Дрвени мост
tile.lavabridge = Камени мост tile.lavabridge = Камени мост
tile.drawbridge = Покретни мост
tile.drawbridge_up = Подигнут
tile.drawbridge_down = Спуштен
tile.drawbridge_auto = Аутоматски (доле)
tile.drawbridge_auto_up = Аутоматски (горе)
tile.obsidian = Опсидијан
tile.obsidian_info = Охлађена лава – топи се за {0} s
tile.bridge_burning = Гори!
tile.bridge_worn = Оштећен {0}%
tile.shard = Крхотина твог језгра душе tile.shard = Крхотина твог језгра душе
tile.shard_info = Освоји ову одају да вратиш крхотину. tile.shard_info = Освоји ову одају да вратиш крхотину.
@@ -433,6 +445,10 @@ msg.vault_taken = Витешки трезор освојен: благо вре
msg.shard_taken = Крхотина твог језгра душе поново је у твојим рукама! msg.shard_taken = Крхотина твог језгра душе поново је у твојим рукама!
msg.bridge_torn = Витезови су срушили један од твојих мостова! msg.bridge_torn = Витезови су срушили један од твојих мостова!
msg.bridge_fire = Један од твојих мостова гори! msg.bridge_fire = Један од твојих мостова гори!
msg.drawbridge_up = Покретни мост је подигнут.
msg.drawbridge_down = Покретни мост је спуштен.
msg.drawbridge_auto = Покретни мост се сам диже кад се непријатељи приближе.
msg.drawbridge_rises = Непријатељи близу: покретни мост се диже!
job.tear_bridge = Руши мост job.tear_bridge = Руши мост
job.patrol = У патроли job.patrol = У патроли
job.guard = На стражи job.guard = На стражи
@@ -804,6 +820,7 @@ best.b.torture.text = Заробљени хероји заврше овде. С
best.b.temple.text = Молитве лече језгро душе и држе дух високо. Свештеница пламена долази због храма. best.b.temple.text = Молитве лече језгро душе и држе дух високо. Свештеница пламена долази због храма.
best.b.aerie.text = Пречке и гнезда за летећа створења. Шишмишима, гаргојлима, совама, па и жарком змају овде треба места. best.b.aerie.text = Пречке и гнезда за летећа створења. Шишмишима, гаргојлима, совама, па и жарком змају овде треба места.
best.b.bridge.text = Дрво преко воде, камен преко лаве. Витезови руше твоје мостове - освоји њихове. best.b.bridge.text = Дрво преко воде, камен преко лаве. Витезови руше твоје мостове - освоји њихове.
best.b.drawbridge.text = Подигнут, река је опет зид. На аутоматском се диже кад се непријатељи приближе – и спушта за твоја створења.
best.b.steel.text = Заковане гвоздене плоче на ојачаном зиду. Нико се не прокопа брзо, чак ни патуљци. best.b.steel.text = Заковане гвоздене плоче на ојачаном зиду. Нико се не прокопа брзо, чак ни патуљци.
best.b.arrow.text = Стрела пробија до два непријатеља иза мете. Јефтино и поуздано. best.b.arrow.text = Стрела пробија до два непријатеља иза мете. Јефтино и поуздано.
best.b.cannon.text = Штета у подручју и одбацивање - гурни витезове у лаву. best.b.cannon.text = Штета у подручју и одбацивање - гурни витезове у лаву.
@@ -929,6 +946,9 @@ tool.plague.desc = Болест која изједа непријатеље о
tool.quake.label = Потрес tool.quake.label = Потрес
tool.quake.name = Земљотрес tool.quake.name = Земљотрес
tool.quake.desc = Тло се тресе: непријатељи око места су повређени и ошамућени две секунде. Твоја створења остају на ногама. tool.quake.desc = Тло се тресе: непријатељи око места су повређени и ошамућени две секунде. Твоја створења остају на ногама.
tool.freeze.label = Мраз
tool.freeze.name = Мраз
tool.freeze.desc = Ледена хладноћа: лава око места се на 40 секунди хлади у проходни опсидијан, непријатељи се смрзавају и успоравају.
tile.unexplored = Неистражена тама tile.unexplored = Неистражена тама
# personality # personality
+20
View File
@@ -399,6 +399,9 @@ help.start_touch = Tryck för att börja
tool.bridge.label = Bro tool.bridge.label = Bro
tool.bridge.name = Bygg bro tool.bridge.name = Bygg bro
tool.bridge.desc = Bygger en bro över vatten eller lava. Dra från din egen mark över floden; bron växer ruta för ruta från ditt territorium. tool.bridge.desc = Bygger en bro över vatten eller lava. Dra från din egen mark över floden; bron växer ruta för ruta från ditt territorium.
tool.drawbridge.label = Vindbrygga
tool.drawbridge.name = Bygg vindbrygga
tool.drawbridge.desc = En bro du kan hissa upp: dra över floden för att bygga den, klicka för att växla: nere, uppe, automatisk (hissas när fiender närmar sig). Trä över vatten brinner, sten över lava gör det inte.
cost.bridge = {0} guld/ruta över vatten, {1} över lava cost.bridge = {0} guld/ruta över vatten, {1} över lava
hint.bridge_where = Broar måste börja vid din egen mark: dra från ditt territorium över floden. hint.bridge_where = Broar måste börja vid din egen mark: dra från ditt territorium över floden.
hint.bridge_fire = Träbroar brinner: håll eldfällor, eldande och blixtar borta från dem – stenbroar över lava är brandsäkra. hint.bridge_fire = Träbroar brinner: håll eldfällor, eldande och blixtar borta från dem – stenbroar över lava är brandsäkra.
@@ -411,6 +414,15 @@ tile.lava = Lava
tile.lava_info = Det som faller i brinner upp. Stenbroar korsar den. tile.lava_info = Det som faller i brinner upp. Stenbroar korsar den.
tile.bridge = Träbro tile.bridge = Träbro
tile.lavabridge = Stenbro tile.lavabridge = Stenbro
tile.drawbridge = Vindbrygga
tile.drawbridge_up = Uppdragen
tile.drawbridge_down = Nedsänkt
tile.drawbridge_auto = Automatisk (nere)
tile.drawbridge_auto_up = Automatisk (uppe)
tile.obsidian = Obsidian
tile.obsidian_info = Avsvalnad lava – smälter om {0} s
tile.bridge_burning = Brinner!
tile.bridge_worn = Skadad {0}%
tile.shard = Skärva av din själskärna tile.shard = Skärva av din själskärna
tile.shard_info = Erövra den här kammaren för att ta tillbaka skärvan. tile.shard_info = Erövra den här kammaren för att ta tillbaka skärvan.
@@ -433,6 +445,10 @@ msg.vault_taken = Riddarvalv erövrat: skatter värda {0} är dina.
msg.shard_taken = En skärva av din själskärna är tillbaka i dina händer! msg.shard_taken = En skärva av din själskärna är tillbaka i dina händer!
msg.bridge_torn = Riddarna har rivit en av dina broar! msg.bridge_torn = Riddarna har rivit en av dina broar!
msg.bridge_fire = En av dina broar brinner! msg.bridge_fire = En av dina broar brinner!
msg.drawbridge_up = Vindbryggan är uppdragen.
msg.drawbridge_down = Vindbryggan är nedsänkt.
msg.drawbridge_auto = Vindbryggan hissas av sig själv när fiender närmar sig.
msg.drawbridge_rises = Fiender närmar sig: en vindbrygga hissas!
job.tear_bridge = River en bro job.tear_bridge = River en bro
job.patrol = På patrull job.patrol = På patrull
job.guard = På vakt job.guard = På vakt
@@ -804,6 +820,7 @@ best.b.torture.text = Tillfångatagna hjältar hamnar här. Med tid och en fång
best.b.temple.text = Böner läker själskärnan och håller humöret uppe. Flamprästinnan kommer för ett tempel. best.b.temple.text = Böner läker själskärnan och håller humöret uppe. Flamprästinnan kommer för ett tempel.
best.b.aerie.text = Sittpinnar och bon för flygande varelser. Fladdermöss, gargoyler, ugglor och till och med glödlindormen behöver plats här. best.b.aerie.text = Sittpinnar och bon för flygande varelser. Fladdermöss, gargoyler, ugglor och till och med glödlindormen behöver plats här.
best.b.bridge.text = Trä över vatten, sten över lava. Riddarna river dina broar - erövra deras. best.b.bridge.text = Trä över vatten, sten över lava. Riddarna river dina broar - erövra deras.
best.b.drawbridge.text = Uppdragen är floden en mur igen. På automatik hissas den när fiender närmar sig – och sänks för dina egna varelser.
best.b.steel.text = Nitade järnplåtar på en förstärkt vägg. Ingen gräver sig snabbt igenom, inte ens dvärgar. best.b.steel.text = Nitade järnplåtar på en förstärkt vägg. Ingen gräver sig snabbt igenom, inte ens dvärgar.
best.b.arrow.text = Pilen genomborrar upp till två fiender till bakom målet. Billigt och pålitligt. best.b.arrow.text = Pilen genomborrar upp till två fiender till bakom målet. Billigt och pålitligt.
best.b.cannon.text = Områdesskada och tillbakaslag - knuffa ner riddarna i lavan. best.b.cannon.text = Områdesskada och tillbakaslag - knuffa ner riddarna i lavan.
@@ -929,6 +946,9 @@ tool.plague.desc = En sjukdom som fräter på fienderna runt platsen och hoppar
tool.quake.label = Skalv tool.quake.label = Skalv
tool.quake.name = Jordskalv tool.quake.name = Jordskalv
tool.quake.desc = Marken skakar: fiender runt platsen skadas och bedövas i två sekunder. Dina varelser står kvar på fötterna. tool.quake.desc = Marken skakar: fiender runt platsen skadas och bedövas i två sekunder. Dina varelser står kvar på fötterna.
tool.freeze.label = Frost
tool.freeze.name = Frost
tool.freeze.desc = Isande kyla: lava runt platsen kyls till gångbar obsidian i 40 sekunder, fiender blir nedkylda och långsamma.
tile.unexplored = Outforskat mörker tile.unexplored = Outforskat mörker
# personality # personality
+234 -2
View File
@@ -1,6 +1,8 @@
// Bridges under strain: wooden bridges catch fire (fire traps, fire breath, fireballs, lightning), // Bridges under strain: wooden bridges catch fire (fire traps, fire breath, fireballs, lightning),
// the fire spreads along the planks and the bridge collapses into the river; knights wear bridges // the fire spreads along the planks and the bridge collapses into the river; knights wear bridges
// down step by step, pit imps mend them again. Stone bridges over lava never burn. // down step by step, pit imps mend them again. Stone bridges over lava never burn.
// Drawbridges are raised and lowered by hand or rise by themselves when enemies come near.
// Frost (the frost glow trap, the frost spell) cools lava into walkable obsidian for a while.
use crate::game::*; use crate::game::*;
use crate::map::*; use crate::map::*;
@@ -17,17 +19,26 @@ pub const BURN_DPS: f32 = 6.0;
pub const TEAR_RATE: f32 = 0.12; pub const TEAR_RATE: f32 = 0.12;
// wear an imp mends per second // wear an imp mends per second
pub const MEND_RATE: f32 = 0.25; pub const MEND_RATE: f32 = 0.25;
// an automatic drawbridge rises when an enemy comes this close (tiles)
pub const DRAWBRIDGE_WATCH: f32 = 6.0;
// seconds the frost spell keeps lava cooled; the last seconds it steams
pub const FREEZE_TIME: f32 = 40.0;
pub const MELT_WARN: f32 = 5.0;
#[derive(Clone, Debug, Default, Serialize, Deserialize)] #[derive(Clone, Debug, Default, Serialize, Deserialize)]
pub struct BridgeWork { pub struct BridgeWork {
pub burning: Vec<(usize, f32)>, // tile, seconds it burns already pub burning: Vec<(usize, f32)>, // tile, seconds it burns already
pub wear: Vec<(usize, f32)>, // tile, damage 0..1 pub wear: Vec<(usize, f32)>, // tile, damage 0..1
#[serde(default)]
pub cooled: Vec<(usize, f32)>, // obsidian tile, seconds until it melts
#[serde(default)]
pub watch_t: f32, // automatic drawbridges look around twice a second
} }
impl Game { impl Game {
// a wooden bridge (or wooden drawbridge) that can burn // a wooden bridge (or wooden drawbridge) that can burn
pub fn wooden_bridge(&self, i: usize) -> bool { pub fn wooden_bridge(&self, i: usize) -> bool {
self.map.t.get(i).map_or(false, |t| t.kind == Kind::Bridge) self.map.t.get(i).map_or(false, |t| t.kind == Kind::Bridge || (t.kind == Kind::Drawbridge && t.res & DB_LAVA == 0))
} }
pub fn burning(&self, i: usize) -> bool { pub fn burning(&self, i: usize) -> bool {
@@ -65,8 +76,10 @@ impl Game {
} }
} }
// the shared part of every step: fire, collapse // the shared part of every step: fire, collapse, drawbridges, melting obsidian
pub(crate) fn update_bridges(&mut self, dt: f32) { pub(crate) fn update_bridges(&mut self, dt: f32) {
self.update_drawbridges(dt);
self.update_obsidian(dt);
if self.bridgework.burning.is_empty() { if self.bridgework.burning.is_empty() {
return; return;
} }
@@ -135,6 +148,7 @@ impl Game {
tl.reserved = 0; tl.reserved = 0;
tl.res = 0; tl.res = 0;
self.bridgework.wear.retain(|w| w.0 != i); self.bridgework.wear.retain(|w| w.0 != i);
self.bridgework.burning.retain(|w| w.0 != i);
self.ground_lost(i); self.ground_lost(i);
let (x, y) = xy(i); let (x, y) = xy(i);
self.fx(6, x as f32 + 0.5, y as f32 + 0.5, 0.0, 0.0, 0.6, 0xff3a5a7a); self.fx(6, x as f32 + 0.5, y as f32 + 0.5, 0.0, 0.0, 0.6, 0xff3a5a7a);
@@ -187,6 +201,181 @@ impl Game {
} }
} }
// ------------------------------------------------------------------ drawbridges and frost
impl Game {
// the drawbridge tiles connected to tile i (same owner)
pub fn drawbridge_group(&self, i: usize) -> Vec<usize> {
let owner = self.map.t[i].owner;
let mut group = vec![i];
let mut k = 0;
while k < group.len() {
let (x, y) = xy(group[k]);
for &(dx, dy) in DIR4.iter() {
if !inb(x + dx, y + dy) {
continue;
}
let n = idx(x + dx, y + dy);
let t = &self.map.t[n];
if t.kind == Kind::Drawbridge && t.owner == owner && !group.contains(&n) {
group.push(n);
}
}
k += 1;
}
group
}
// the drawbridge tool: a click on an own drawbridge switches it (down -> up -> automatic -> down),
// anything else builds drawbridges like bridges
pub fn drawbridge_order(&mut self, x0: i32, y0: i32, x1: i32, y1: i32) {
if x0 == x1 && y0 == y1 && inb(x0, y0) {
let i = idx(x0, y0);
let t = self.map.t[i];
if t.kind == Kind::Drawbridge && t.owner == self.me {
let state = t.res & (DB_RAISED | DB_AUTO);
let next = match state {
0 => DB_RAISED,
s if s & DB_AUTO != 0 => 0,
_ => DB_AUTO,
};
self.set_drawbridge(i, next);
let key = match next {
DB_RAISED => "msg.drawbridge_up",
DB_AUTO => "msg.drawbridge_auto",
_ => "msg.drawbridge_down",
};
self.msg(key, vec![]);
self.sfx_ui(Sfx::Click);
return;
}
}
self.build_bridges_of(x0, y0, x1, y1, true);
}
// sets the state bits (DB_RAISED, DB_AUTO) of the whole drawbridge at tile i
pub fn set_drawbridge(&mut self, i: usize, state: u8) {
let group = self.drawbridge_group(i);
let raise = state & DB_RAISED != 0 && !self.map.t[i].raised();
let lower = state & DB_RAISED == 0 && self.map.t[i].raised();
for &g in &group {
let t = &mut self.map.t[g];
t.res = (t.res & DB_LAVA) | state;
}
if raise {
// whoever stands on it jumps to the bank (or falls)
for &g in &group {
self.ground_lost(g);
}
}
if raise || lower {
let (x, y) = xy(i);
self.sfx(Sfx::Build, x as f32 + 0.5, y as f32 + 0.5);
for &g in &group {
let (gx, gy) = xy(g);
self.fx(6, gx as f32 + 0.5, gy as f32 + 0.5, 0.0, 0.0, 0.3, 0xff506070);
}
}
}
// automatic drawbridges rise while an enemy of their master is near, and come down again
fn update_drawbridges(&mut self, dt: f32) {
self.bridgework.watch_t -= dt;
if self.bridgework.watch_t > 0.0 {
return;
}
self.bridgework.watch_t = 0.5;
let mut seen: Vec<usize> = Vec::new();
for i in 0..self.map.t.len() {
let t = self.map.t[i];
if t.kind != Kind::Drawbridge || t.res & DB_AUTO == 0 || seen.contains(&i) {
continue;
}
let group = self.drawbridge_group(i);
seen.extend(group.iter().copied());
let side = t.owner.side();
let r2 = DRAWBRIDGE_WATCH * DRAWBRIDGE_WATCH;
let enemy = self.ents.iter().any(|e| {
e.alive
&& !e.held
&& e.captive == 0
&& !e.chained
&& e.side() != side
&& !self.allied(side, e.side())
&& group.iter().any(|&g| {
let (gx, gy) = xy(g);
(e.x - gx as f32 - 0.5).powi(2) + (e.y - gy as f32 - 0.5).powi(2) < r2
})
});
if enemy != t.raised() {
self.set_drawbridge(i, DB_AUTO | if enemy { DB_RAISED } else { 0 });
if enemy && t.owner == self.me {
self.msg("msg.drawbridge_rises", vec![]);
}
}
}
}
// frost on tile i: lava turns to obsidian (or stays it) for at least `secs`
pub fn cool_lava(&mut self, i: usize, secs: f32) {
let t = &mut self.map.t[i];
match t.kind {
Kind::Lava => {
t.kind = Kind::Obsidian;
t.owner = Owner::None;
self.bridgework.cooled.push((i, secs));
let (x, y) = xy(i);
for _ in 0..3 {
self.parts.push(Part { kind: SMOKE, x: x as f32 + self.vrng.f(), y: y as f32 + self.vrng.f(), h: 0.1, vx: 0.0, vy: 0.0, vh: 0.5, t: 0.0, max: 1.6, col: abgr(200, 210, 220), size: 0.16 });
}
}
Kind::Obsidian => {
if let Some(c) = self.bridgework.cooled.iter_mut().find(|c| c.0 == i) {
c.1 = c.1.max(secs);
}
}
_ => {}
}
}
// frost in a circle around (x, y)
pub fn cool_lava_around(&mut self, x: f32, y: f32, r: f32, secs: f32) {
let ri = r.ceil() as i32;
let (cx, cy) = (x.floor() as i32, y.floor() as i32);
for ty in cy - ri..=cy + ri {
for tx in cx - ri..=cx + ri {
if inb(tx, ty) && (tx as f32 + 0.5 - x).powi(2) + (ty as f32 + 0.5 - y).powi(2) <= r * r {
self.cool_lava(idx(tx, ty), secs);
}
}
}
}
// obsidian melts again: it steams before, and whoever still stands there is burnt
fn update_obsidian(&mut self, dt: f32) {
let mut k = 0;
while k < self.bridgework.cooled.len() {
let (i, left) = self.bridgework.cooled[k];
if self.map.t[i].kind != Kind::Obsidian {
self.bridgework.cooled.swap_remove(k);
continue;
}
let left = left - dt;
self.bridgework.cooled[k].1 = left;
let (x, y) = xy(i);
if left < MELT_WARN && self.vrng.f() < dt * 4.0 {
self.parts.push(Part { kind: SMOKE, x: x as f32 + self.vrng.f(), y: y as f32 + self.vrng.f(), h: 0.05, vx: 0.0, vy: 0.0, vh: 0.4, t: 0.0, max: 1.4, col: abgr(150, 150, 160), size: 0.14 });
}
if left <= 0.0 {
self.bridgework.cooled.swap_remove(k);
self.map.t[i].kind = Kind::Lava;
self.ground_lost(i);
continue;
}
k += 1;
}
}
}
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use super::*; use super::*;
@@ -245,4 +434,47 @@ mod tests {
while g.wear_bridge(tiles[1], 1.0) {} while g.wear_bridge(tiles[1], 1.0) {}
assert_eq!(g.map.t[tiles[1]].kind, Kind::Water); assert_eq!(g.map.t[tiles[1]].kind, Kind::Water);
} }
#[test]
fn drawbridges_switch_and_rise_by_themselves() {
let (mut g, tiles) = bridge_game();
for &i in &tiles {
g.map.t[i].kind = Kind::Drawbridge;
g.map.t[i].res = 0;
}
let (x, y) = xy(tiles[2]);
g.drawbridge_order(x, y, x, y);
assert!(tiles.iter().all(|&i| g.map.t[i].raised()), "the whole bridge goes up");
assert!(!g.map.walk(x, y));
g.drawbridge_order(x, y, x, y);
assert!(tiles.iter().all(|&i| g.map.t[i].res & DB_AUTO != 0 && !g.map.t[i].raised()), "automatic");
// a knight comes near: it rises
let id = g.spawn(EK::Knight, true, x as f32 + 0.5, y as f32 + 3.5, 1);
for _ in 0..20 {
g.update(0.05);
}
assert!(g.map.t[tiles[2]].raised(), "risen for the knight");
g.ents.retain(|e| e.id != id);
for _ in 0..20 {
g.update(0.05);
}
assert!(!g.map.t[tiles[2]].raised(), "down again");
g.drawbridge_order(x, y, x, y);
assert_eq!(g.map.t[tiles[2]].res & (DB_RAISED | DB_AUTO), 0, "back to manual, down");
}
#[test]
fn frost_cools_lava_for_a_while() {
let mut g = Game::new(5, 64, 64);
let (cx, cy) = g.map.core;
let i = idx(cx + 6, cy + 6);
g.map.t[i].kind = Kind::Lava;
g.cool_lava(i, 2.0);
assert_eq!(g.map.t[i].kind, Kind::Obsidian);
assert!(g.map.t[i].walkable());
for _ in 0..(3 * 20) {
g.update(0.05);
}
assert_eq!(g.map.t[i].kind, Kind::Lava, "melted again");
}
} }
+3 -1
View File
@@ -34,6 +34,7 @@ pub enum Act {
Sell(Rect), Sell(Rect),
Bridge(Rect), Bridge(Rect),
Steel(Rect), Steel(Rect),
Drawbridge(Rect), // build drawbridges, or (one tile on an own drawbridge) switch it: down, up, automatic
Tower { Tower {
kind: TowerKind, kind: TowerKind,
x: i32, x: i32,
@@ -141,7 +142,7 @@ impl Game {
Act::Dig(r) => (rect_center(r), MARK_DIG, 4.0), Act::Dig(r) => (rect_center(r), MARK_DIG, 4.0),
Act::Room { r, .. } => (rect_center(r), MARK_ROOM, 5.0), Act::Room { r, .. } => (rect_center(r), MARK_ROOM, 5.0),
Act::Sell(r) => (rect_center(r), MARK_SELL, 4.0), Act::Sell(r) => (rect_center(r), MARK_SELL, 4.0),
Act::Bridge(r) => (rect_center(r), MARK_BRIDGE, 4.0), Act::Bridge(r) | Act::Drawbridge(r) => (rect_center(r), MARK_BRIDGE, 4.0),
Act::Steel(r) => (rect_center(r), MARK_STEEL, 4.0), Act::Steel(r) => (rect_center(r), MARK_STEEL, 4.0),
Act::Tower { x, y, .. } => (point(x as f32, y as f32), MARK_TOWER, 6.0), Act::Tower { x, y, .. } => (point(x as f32, y as f32), MARK_TOWER, 6.0),
Act::Trap { x, y, .. } => (point(x as f32, y as f32), MARK_TRAP, 6.0), Act::Trap { x, y, .. } => (point(x as f32, y as f32), MARK_TRAP, 6.0),
@@ -185,6 +186,7 @@ impl Game {
Act::Room { room, r } => self.build_rect(room as usize, r.x0, r.y0, r.x1, r.y1), Act::Room { room, r } => self.build_rect(room as usize, r.x0, r.y0, r.x1, r.y1),
Act::Sell(r) => self.sell_rect(r.x0, r.y0, r.x1, r.y1), Act::Sell(r) => self.sell_rect(r.x0, r.y0, r.x1, r.y1),
Act::Bridge(r) => self.build_bridges(r.x0, r.y0, r.x1, r.y1), Act::Bridge(r) => self.build_bridges(r.x0, r.y0, r.x1, r.y1),
Act::Drawbridge(r) => self.drawbridge_order(r.x0, r.y0, r.x1, r.y1),
Act::Steel(r) => self.build_steel(r.x0, r.y0, r.x1, r.y1), Act::Steel(r) => self.build_steel(r.x0, r.y0, r.x1, r.y1),
Act::Tower { kind, x, y } => self.build_tower(kind, x, y), Act::Tower { kind, x, y } => self.build_tower(kind, x, y),
Act::Trap { kind, x, y } => self.place_trap(kind, x, y), Act::Trap { kind, x, y } => self.place_trap(kind, x, y),
+22 -7
View File
@@ -750,6 +750,8 @@ pub const ROOM_NAMES: [&str; N_ROOMS] = [
// bridge cost per tile: over water, over lava // bridge cost per tile: over water, over lava
pub const BRIDGE_COST: [i32; 2] = [30, 75]; pub const BRIDGE_COST: [i32; 2] = [30, 75];
// a drawbridge tile (over water or lava)
pub const DRAWBRIDGE_COST: i32 = 150;
// steel wall cost per tile: from earth, from a reinforced wall // steel wall cost per tile: from earth, from a reinforced wall
pub const STEEL_COST: [i32; 2] = [80, 40]; pub const STEEL_COST: [i32; 2] = [80, 40];
pub const STEEL_HP: f32 = 40.0; pub const STEEL_HP: f32 = 40.0;
@@ -2820,7 +2822,7 @@ impl Game {
// the ground of tile i turned into river (bridge removed): units on it fall in // the ground of tile i turned into river (bridge removed): units on it fall in
pub(crate) fn ground_lost(&mut self, i: usize) { pub(crate) fn ground_lost(&mut self, i: usize) {
let lava = self.map.t[i].kind == Kind::Lava; let lava = self.map.t[i].river() == Some(Kind::Lava);
let (x, y) = xy(i); let (x, y) = xy(i);
for j in 0..self.ents.len() { for j in 0..self.ents.len() {
let e = &self.ents[j]; let e = &self.ents[j];
@@ -2890,6 +2892,10 @@ impl Game {
} }
pub fn build_bridges(&mut self, x0: i32, y0: i32, x1: i32, y1: i32) { pub fn build_bridges(&mut self, x0: i32, y0: i32, x1: i32, y1: i32) {
self.build_bridges_of(x0, y0, x1, y1, false);
}
pub fn build_bridges_of(&mut self, x0: i32, y0: i32, x1: i32, y1: i32, draw: bool) {
let (mut built, mut broke, mut any_river) = (0, false, false); let (mut built, mut broke, mut any_river) = (0, false, false);
loop { loop {
let mut add = Vec::new(); let mut add = Vec::new();
@@ -2911,14 +2917,21 @@ impl Game {
let mut progress = false; let mut progress = false;
for i in add { for i in add {
let lava = self.map.t[i].kind == Kind::Lava; let lava = self.map.t[i].kind == Kind::Lava;
let cost = BRIDGE_COST[lava as usize] as f32; let cost = if draw { DRAWBRIDGE_COST } else { BRIDGE_COST[lava as usize] } as f32;
if self.gold < cost { if self.gold < cost {
broke = true; broke = true;
continue; continue;
} }
self.gold -= cost; self.gold -= cost;
let t = &mut self.map.t[i]; let t = &mut self.map.t[i];
t.kind = if lava { Kind::LavaBridge } else { Kind::Bridge }; t.kind = if draw {
Kind::Drawbridge
} else if lava {
Kind::LavaBridge
} else {
Kind::Bridge
};
t.res = if draw && lava { DB_LAVA } else { 0 };
t.owner = self.me; t.owner = self.me;
built += 1; built += 1;
progress = true; progress = true;
@@ -3060,7 +3073,7 @@ impl Game {
continue; continue;
} }
if let Some(t) = self.map.get(cx + dx, cy + dy) { if let Some(t) = self.map.get(cx + dx, cy + dy) {
if t.bridge() && t.owner == self.me { if t.bridge() && !t.raised() && t.owner == self.me {
return Some(idx(cx + dx, cy + dy)); return Some(idx(cx + dx, cy + dy));
} }
} }
@@ -3073,7 +3086,7 @@ impl Game {
// a knight walks next to the bridge tile and tears it down // a knight walks next to the bridge tile and tears it down
fn tear_bridge(&mut self, e: &mut Ent, i: usize, dt: f32) -> bool { fn tear_bridge(&mut self, e: &mut Ent, i: usize, dt: f32) -> bool {
let t = self.map.t[i]; let t = self.map.t[i];
if !t.bridge() || t.owner != self.me { if !t.bridge() || t.raised() || t.owner != self.me {
return false; return false;
} }
let (bx, by) = xy(i); let (bx, by) = xy(i);
@@ -4714,11 +4727,13 @@ impl Game {
continue; continue;
} }
if t.owner == self.me && t.bridge() { if t.owner == self.me && t.bridge() {
let lava = t.kind == Kind::LavaBridge; let lava = t.river() == Some(Kind::Lava);
let cost = if t.kind == Kind::Drawbridge { DRAWBRIDGE_COST } else { BRIDGE_COST[lava as usize] };
t.kind = if lava { Kind::Lava } else { Kind::Water }; t.kind = if lava { Kind::Lava } else { Kind::Water };
t.owner = Owner::None; t.owner = Owner::None;
t.reserved = 0; t.reserved = 0;
refund += BRIDGE_COST[lava as usize] as f32 * 0.5; t.res = 0;
refund += cost as f32 * 0.5;
self.ground_lost(i); self.ground_lost(i);
continue; continue;
} }
+51 -3
View File
@@ -80,6 +80,9 @@ pub const T_ARENA: u32 = 178;
pub const T_ALTAR: u32 = 182; pub const T_ALTAR: u32 = 182;
pub const I_ORDERS: u32 = 186; // attack, guard pub const I_ORDERS: u32 = 186; // attack, guard
pub const T_RIVAL3: u32 = 189; // 4 variants: floor of the yellow master pub const T_RIVAL3: u32 = 189; // 4 variants: floor of the yellow master
pub const I_DRAWBRIDGE: u32 = 193; // drawbridge tool: a raised flap on chains
pub const I_FREEZE: u32 = 194; // frost spell: a snowflake
pub const T_OBSIDIAN: u32 = 195; // 4 variants: cooled lava, dark glass with glowing seams
pub struct Gfx { pub struct Gfx {
pub atlas: Texture2D, pub atlas: Texture2D,
@@ -803,6 +806,50 @@ fn gen_atlas() -> Image {
None None
} }
}); });
// drawbridge tool icon: a raised flap with its chains above a river
cv.cell(I_DRAWBRIDGE, |x, y| {
if (3..=5).contains(&x) && (2..=12).contains(&y) {
Some(if y % 3 == 0 { c(70, 46, 26) } else { c(150, 106, 60) })
} else if y == 12 && (5..=13).contains(&x) {
Some(c(110, 76, 44))
} else if (x - 5) * 2 == (y - 2) * 1 + 2 && (6..=12).contains(&x) {
Some(c(170, 170, 180)) // chain
} else if x == 13 && (3..=12).contains(&y) {
Some(c(90, 90, 100)) // post
} else if y >= 13 && (1..=14).contains(&x) {
Some(c(60, 110, 170))
} else {
None
}
});
// frost spell icon: a snowflake
cv.cell(I_FREEZE, |x, y| {
let (dx, dy) = (x - 8, y - 8);
let arm = dx == 0 || dy == 0 || dx == dy || dx == -dy;
let r = dx.abs().max(dy.abs());
if arm && r <= 6 {
Some(if r <= 1 { c(240, 250, 255) } else { c(150, 210, 255) })
} else if r == 4 && (dx.abs() == 1 || dy.abs() == 1) && (dx == 0 || dy == 0 || dx.abs() == dy.abs() + 1 || dy.abs() == dx.abs() + 1) {
Some(c(200, 235, 255))
} else {
None
}
});
// obsidian: cooled lava, dark glass with a few glowing seams
for v in 0..4u32 {
cv.cell(T_OBSIDIAN + v, |x, y| {
let r = hash(x, y, v + 400);
if (x * 5 + y * 3 + v as i32 * 7) % 29 == 0 || ((x + 2 * y + v as i32) % 23 == 0 && r % 2 == 0) {
Some(c(230, 90, 30))
} else if r % 11 == 0 {
Some(c(70, 60, 90))
} else if (x + y) % 7 == 0 {
Some(c(34, 26, 40))
} else {
Some(c(22, 16, 26))
}
});
}
// ---- more treasures: veins (earth with embedded pieces) and treasury piles // ---- more treasures: veins (earth with embedded pieces) and treasury piles
let vein = |x: i32, y: i32, v: u32, seed: u32, hi: Color, mid: Color, lo: Color, size: f32| -> Color { let vein = |x: i32, y: i32, v: u32, seed: u32, hi: Color, mid: Color, lo: Color, size: f32| -> Color {
let mut best = 99.0f32; let mut best = 99.0f32;
@@ -1927,7 +1974,8 @@ impl Gfx {
Kind::Tower => T_CLAIM + v, Kind::Tower => T_CLAIM + v,
Kind::Water => T_WATER + v, Kind::Water => T_WATER + v,
Kind::Lava => T_LAVA + v, Kind::Lava => T_LAVA + v,
Kind::Bridge => T_BRIDGE + (v & 1), Kind::Bridge | Kind::Drawbridge => T_BRIDGE + (v & 1),
Kind::Obsidian => T_OBSIDIAN + v,
Kind::LavaBridge => T_STONEBRIDGE + (v & 1), Kind::LavaBridge => T_STONEBRIDGE + (v & 1),
Kind::Shard => T_HEROFLOOR + v, Kind::Shard => T_HEROFLOOR + v,
Kind::Aerie => T_AERIE + v, Kind::Aerie => T_AERIE + v,
@@ -2137,8 +2185,8 @@ mod doc_images {
for (k, t) in crate::traps::TRAP_KINDS.iter().enumerate() { for (k, t) in crate::traps::TRAP_KINDS.iter().enumerate() {
save(&atlas, Gfx::cell(I_TRAPS + k as u32), 4, &format!("docs/img/icons/{}.png", t.id())); save(&atlas, Gfx::cell(I_TRAPS + k as u32), 4, &format!("docs/img/icons/{}.png", t.id()));
} }
for (k, s) in crate::spells::SPELLS.iter().enumerate() { for s in crate::spells::SPELLS.iter() {
save(&atlas, Gfx::cell(I_SPELLS + k as u32), 4, &format!("docs/img/icons/{}.png", s.id())); save(&atlas, Gfx::cell(crate::spells::spell_icon(*s)), 4, &format!("docs/img/icons/{}.png", s.id()));
} }
for (id, cell) in [("lightning", I_BOLT), ("heal", I_HEAL), ("summon", I_SUMMON), ("arrow", I_ARROW), ("cannon", I_CANNON), ("magic", I_MAGIC), ("rune", I_RUNE)] { for (id, cell) in [("lightning", I_BOLT), ("heal", I_HEAL), ("summon", I_SUMMON), ("arrow", I_ARROW), ("cannon", I_CANNON), ("magic", I_MAGIC), ("rune", I_RUNE)] {
save(&atlas, Gfx::cell(cell), 4, &format!("docs/img/icons/{}.png", id)); save(&atlas, Gfx::cell(cell), 4, &format!("docs/img/icons/{}.png", id));
+4 -3
View File
@@ -107,7 +107,7 @@ fn tool_tile(cam: &Cam, map: &map::Map, tool: Tool, mx: f32, my: f32) -> Option<
} }
fn area_tool(t: Tool) -> bool { fn area_tool(t: Tool) -> bool {
matches!(t, Tool::Dig | Tool::Room(_) | Tool::Sell | Tool::Bridge | Tool::Steel) matches!(t, Tool::Dig | Tool::Room(_) | Tool::Sell | Tool::Bridge | Tool::Steel | Tool::Drawbridge)
} }
// Use the active tool on the world at (mx, my) (CSS pixels): a click, or a tap on touch screens // Use the active tool on the world at (mx, my) (CSS pixels): a click, or a tap on touch screens
@@ -120,7 +120,7 @@ fn world_action(app: &mut App, ui: &mut Ui, r3d: &R3d, inp: &mut Input, mx: f32,
let ground = app.cam.ground_point(mx, my); let ground = app.cam.ground_point(mx, my);
let (wx, wy) = (ground.x, ground.y); let (wx, wy) = (ground.x, ground.y);
match (ui.tool, tile) { match (ui.tool, tile) {
(Tool::Dig | Tool::Room(_) | Tool::Sell | Tool::Bridge | Tool::Steel, Some(t)) => inp.ldown = Some(t), (Tool::Dig | Tool::Room(_) | Tool::Sell | Tool::Bridge | Tool::Steel | Tool::Drawbridge, Some(t)) => inp.ldown = Some(t),
(Tool::Hand, _) => { (Tool::Hand, _) => {
let j = r3d.pick_ent(&app.game, &app.cam, mx, my, false); let j = r3d.pick_ent(&app.game, &app.cam, mx, my, false);
let Some(j) = j else { return }; let Some(j) = j else { return };
@@ -163,6 +163,7 @@ fn finish_rect(app: &mut App, tool: Tool, start: (i32, i32), mx: f32, my: f32) {
Tool::Room(room) => app.game.queue(Act::Room { room: room as u8, r }), Tool::Room(room) => app.game.queue(Act::Room { room: room as u8, r }),
Tool::Sell => app.game.queue(Act::Sell(r)), Tool::Sell => app.game.queue(Act::Sell(r)),
Tool::Bridge => app.game.queue(Act::Bridge(r)), Tool::Bridge => app.game.queue(Act::Bridge(r)),
Tool::Drawbridge => app.game.queue(Act::Drawbridge(r)),
Tool::Steel => app.game.queue(Act::Steel(r)), Tool::Steel => app.game.queue(Act::Steel(r)),
_ => {} _ => {}
} }
@@ -1946,7 +1947,7 @@ fn draw_frame(app: &mut App, gfx: &Gfx, r3d: &mut R3d, ui: &mut Ui, menu: &mut M
Tool::Lightning => (Color::new(1.0, 1.0, 0.6, 1.0), Some((ground.x, ground.y, 1.6))), Tool::Lightning => (Color::new(1.0, 1.0, 0.6, 1.0), Some((ground.x, ground.y, 1.6))),
Tool::Heal => (Color::new(0.4, 1.0, 0.5, 1.0), Some((ground.x, ground.y, 2.55))), Tool::Heal => (Color::new(0.4, 1.0, 0.5, 1.0), Some((ground.x, ground.y, 2.55))),
Tool::Summon => (Color::new(0.8, 0.5, 1.0, 1.0), None), Tool::Summon => (Color::new(0.8, 0.5, 1.0, 1.0), None),
Tool::Bridge => (Color::new(0.9, 0.7, 0.4, 1.0), None), Tool::Bridge | Tool::Drawbridge => (Color::new(0.9, 0.7, 0.4, 1.0), None),
Tool::Steel => (Color::new(0.75, 0.8, 0.9, 1.0), None), Tool::Steel => (Color::new(0.75, 0.8, 0.9, 1.0), None),
Tool::Tower(_) => (Color::new(1.0, 0.6, 0.25, 1.0), None), Tool::Tower(_) => (Color::new(1.0, 0.6, 0.25, 1.0), None),
Tool::Trap(_) => (Color::new(1.0, 0.4, 0.3, 1.0), None), Tool::Trap(_) => (Color::new(1.0, 0.4, 0.3, 1.0), None),
+32 -5
View File
@@ -68,8 +68,15 @@ pub enum Kind {
GuardPost, // room: creatures hold the position GuardPost, // room: creatures hold the position
Arena, // room: sparring Arena, // room: sparring
Altar, // room: sacrifices Altar, // room: sacrifices
Drawbridge, // bridge that can be raised (res: see DB_RAISED, DB_AUTO, DB_LAVA)
Obsidian, // lava cooled by frost: walkable until it melts again
} }
// drawbridge state in Tile::res
pub const DB_RAISED: u8 = 1; // raised: nobody can cross
pub const DB_AUTO: u8 = 2; // rises by itself when enemies come near
pub const DB_LAVA: u8 = 4; // spans lava (stone), else water (wood)
// options for the map generator (campaign missions) // options for the map generator (campaign missions)
#[derive(Clone, Debug)] #[derive(Clone, Debug)]
pub struct GenOpts { pub struct GenOpts {
@@ -96,7 +103,7 @@ pub struct River {
} }
// order matters for the packed savegame codec: only append new kinds // order matters for the packed savegame codec: only append new kinds
const KINDS: [Kind; 34] = [ const KINDS: [Kind; 36] = [
Kind::Rock, Kind::Rock,
Kind::Earth, Kind::Earth,
Kind::Gold, Kind::Gold,
@@ -131,6 +138,8 @@ const KINDS: [Kind; 34] = [
Kind::GuardPost, Kind::GuardPost,
Kind::Arena, Kind::Arena,
Kind::Altar, Kind::Altar,
Kind::Drawbridge,
Kind::Obsidian,
]; ];
// treasures (veins, treasury content, imp loads): 0 gold, 1 silver, 2 ruby, 3 diamond // treasures (veins, treasury content, imp loads): 0 gold, 1 silver, 2 ruby, 3 diamond
@@ -151,6 +160,18 @@ pub enum Owner {
const OWNERS: [Owner; 6] = [Owner::None, Owner::Player, Owner::Hero, Owner::Rival1, Owner::Rival2, Owner::Rival3]; const OWNERS: [Owner; 6] = [Owner::None, Owner::Player, Owner::Hero, Owner::Rival1, Owner::Rival2, Owner::Rival3];
impl Owner { impl Owner {
// the side of a ground owner (255: nobody)
pub fn side(self) -> u8 {
match self {
Owner::Player => 0,
Owner::Hero => 1,
Owner::Rival1 => 2,
Owner::Rival2 => 3,
Owner::Rival3 => 4,
Owner::None => 255,
}
}
pub fn of_side(side: u8) -> Owner { pub fn of_side(side: u8) -> Owner {
match side { match side {
0 => Owner::Player, 0 => Owner::Player,
@@ -240,20 +261,26 @@ impl Tile {
| Kind::GuardPost | Kind::GuardPost
| Kind::Arena | Kind::Arena
| Kind::Altar | Kind::Altar
) | Kind::Obsidian
) || (self.kind == Kind::Drawbridge && self.res & DB_RAISED == 0)
} }
// river tiles (open, but nobody can walk there) // river tiles (open, but nobody can walk there)
pub fn liquid(&self) -> bool { pub fn liquid(&self) -> bool {
matches!(self.kind, Kind::Water | Kind::Lava) matches!(self.kind, Kind::Water | Kind::Lava)
} }
pub fn bridge(&self) -> bool { pub fn bridge(&self) -> bool {
matches!(self.kind, Kind::Bridge | Kind::LavaBridge) matches!(self.kind, Kind::Bridge | Kind::LavaBridge | Kind::Drawbridge)
} }
// the river below a bridge or river tile pub fn raised(&self) -> bool {
self.kind == Kind::Drawbridge && self.res & DB_RAISED != 0
}
// the river below a bridge or river tile (obsidian: the lava under the crust)
pub fn river(&self) -> Option<Kind> { pub fn river(&self) -> Option<Kind> {
match self.kind { match self.kind {
Kind::Water | Kind::Bridge => Some(Kind::Water), Kind::Water | Kind::Bridge => Some(Kind::Water),
Kind::Lava | Kind::LavaBridge => Some(Kind::Lava), Kind::Lava | Kind::LavaBridge | Kind::Obsidian => Some(Kind::Lava),
Kind::Drawbridge if self.res & DB_LAVA != 0 => Some(Kind::Lava),
Kind::Drawbridge => Some(Kind::Water),
_ => None, _ => None,
} }
} }
+2 -1
View File
@@ -10,7 +10,7 @@ pub const TABS: [&str; 4] = ["best.tab.creatures", "best.tab.humans", "best.tab.
const CREATURES: [EK; 14] = [EK::Worker, EK::Kobold, EK::Spider, EK::Mage, EK::Ogre, EK::Jailer, EK::Priestess, EK::Chainbreaker, EK::Cogling, EK::Revenant, EK::Bat, EK::Gargoyle, EK::Owl, EK::Wyrm]; const CREATURES: [EK; 14] = [EK::Worker, EK::Kobold, EK::Spider, EK::Mage, EK::Ogre, EK::Jailer, EK::Priestess, EK::Chainbreaker, EK::Cogling, EK::Revenant, EK::Bat, EK::Gargoyle, EK::Owl, EK::Wyrm];
const HUMANS: [EK; 8] = [EK::Knight, EK::Archer, EK::Priest, EK::Dwarf, EK::Fairy, EK::BattleMage, EK::Giant, EK::Paladin]; const HUMANS: [EK; 8] = [EK::Knight, EK::Archer, EK::Priest, EK::Dwarf, EK::Fairy, EK::BattleMage, EK::Giant, EK::Paladin];
// buildings: indices into ui::TOOLS // buildings: indices into ui::TOOLS
const BUILDINGS: [usize; 30] = [2, 3, 4, 5, 6, 12, 40, 13, 18, 21, 41, 42, 43, 44, 17, 19, 14, 15, 16, 20, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31]; const BUILDINGS: [usize; 31] = [2, 3, 4, 5, 6, 12, 40, 13, 18, 21, 41, 42, 43, 44, 17, 47, 19, 14, 15, 16, 20, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31];
#[derive(Clone, Copy)] #[derive(Clone, Copy)]
enum Entry { enum Entry {
@@ -266,6 +266,7 @@ impl Menu {
crate::ui::Tool::Room(r) => crate::game::ROOM_NAMES[r].trim_start_matches("room.").to_string(), crate::ui::Tool::Room(r) => crate::game::ROOM_NAMES[r].trim_start_matches("room.").to_string(),
crate::ui::Tool::Tower(k) => crate::game::tower_name(k).trim_start_matches("tower.").to_string(), crate::ui::Tool::Tower(k) => crate::game::tower_name(k).trim_start_matches("tower.").to_string(),
crate::ui::Tool::Bridge => "bridge".into(), crate::ui::Tool::Bridge => "bridge".into(),
crate::ui::Tool::Drawbridge => "drawbridge".into(),
crate::ui::Tool::Trap(k) => k.id().into(), crate::ui::Tool::Trap(k) => k.id().into(),
_ => "steel".into(), _ => "steel".into(),
}; };
+54 -1
View File
@@ -722,12 +722,54 @@ fn build_chunk(map: &Map, amb: &[f32], glow: &[f32], cx: i32, cz: i32, atlas: &T
[inward; 4], [inward; 4],
); );
} }
if t.kind == Kind::Obsidian {
// a crust of cooled lava just above the glowing river
let (oa, ob) = cell_uv(T_OBSIDIAN + (t.var as u32 & 3));
let oc = col(lava_lit(Vec3::splat(amb_at(amb, xf + 0.5, zf + 0.5).max(0.45)), lg), 1.0);
let y = -0.02;
mb.quad([vec3(xf, y, zf), vec3(xf + 1.0, y, zf), vec3(xf + 1.0, y, zf + 1.0), vec3(xf, y, zf + 1.0)], [vec2(oa.x, oa.y), vec2(ob.x, oa.y), vec2(ob.x, ob.y), vec2(oa.x, ob.y)], [oc; 4], [Vec3::Y; 4]);
continue;
}
if t.raised() {
// a raised drawbridge: the flap stands upright at the bank it is hinged on
let tex = if lava { T_STONEBRIDGE } else { T_BRIDGE };
let (ba, bb) = cell_uv(tex);
let fc = col(lava_lit(Vec3::splat(amb_at(amb, xf + 0.5, zf + 0.5).max(if lava { 0.6 } else { 0.0 }) * 0.85), lg), 1.0);
for (d, &(dx, dz)) in DIR4.iter().enumerate() {
if !map.get(x + dx, z + dz).map_or(false, |o| o.walkable() && !o.bridge()) {
continue;
}
// the hinge edge, from p to q
let (p, q) = match d {
0 => (vec3(xf, 0.0, zf), vec3(xf + 1.0, 0.0, zf)),
1 => (vec3(xf + 1.0, 0.0, zf), vec3(xf + 1.0, 0.0, zf + 1.0)),
2 => (vec3(xf + 1.0, 0.0, zf + 1.0), vec3(xf, 0.0, zf + 1.0)),
_ => (vec3(xf, 0.0, zf + 1.0), vec3(xf, 0.0, zf)),
};
let inward = vec3(-dx as f32, 0.0, -dz as f32);
let off = inward * 0.12;
let up = Vec3::Y * 1.0;
// both faces of the flap, a little in front of the bank
mb.quad([p + off, q + off, q + off + up, p + off + up], [vec2(ba.x, bb.y), vec2(bb.x, bb.y), vec2(bb.x, ba.y), vec2(ba.x, ba.y)], [fc; 4], [inward; 4]);
mb.quad([q + off, p + off, p + off + up, q + off + up], [vec2(ba.x, bb.y), vec2(bb.x, bb.y), vec2(bb.x, ba.y), vec2(ba.x, ba.y)], [fc; 4], [-inward; 4]);
ln.strip(p + off + up, q + off + up, inward, OUTLINE_W, OUTLINE_C);
// the chains from the top of the flap down to the bank
let chain = col(Vec3::splat(0.55), 1.0);
for e in [p, q] {
let a = e + off + up + (if e == p { (q - p) * 0.1 } else { (p - q) * 0.1 });
let b = e - inward * 0.6 + Vec3::Y * 1.3;
ln.strip(a, b, inward, OUTLINE_W * 0.7, chain);
}
}
continue;
}
if t.bridge() { if t.bridge() {
// deck: planks across the direction of the bridge, rails along it // deck: planks across the direction of the bridge, rails along it
let run_x = |dx: i32| map.get(x + dx, z).map_or(false, |o| o.bridge() || (o.walkable() && !o.bridge())); let run_x = |dx: i32| map.get(x + dx, z).map_or(false, |o| o.bridge() || (o.walkable() && !o.bridge()));
let run_z = |dz: i32| map.get(x, z + dz).map_or(false, |o| o.bridge() || (o.walkable() && !o.bridge())); let run_z = |dz: i32| map.get(x, z + dz).map_or(false, |o| o.bridge() || (o.walkable() && !o.bridge()));
let along_x = (run_x(-1) as i32 + run_x(1) as i32) > (run_z(-1) as i32 + run_z(1) as i32); let along_x = (run_x(-1) as i32 + run_x(1) as i32) > (run_z(-1) as i32 + run_z(1) as i32);
let (ba, bb) = cell_uv(tex); // a drawbridge over lava is made of stone
let (ba, bb) = cell_uv(if t.kind == Kind::Drawbridge && lava { T_STONEBRIDGE + (t.var as u32 & 1) } else { tex });
let dc = col(lava_lit(Vec3::splat(amb_at(amb, xf + 0.5, zf + 0.5).max(if lava { 0.6 } else { 0.0 })), lg), 1.0); let dc = col(lava_lit(Vec3::splat(amb_at(amb, xf + 0.5, zf + 0.5).max(if lava { 0.6 } else { 0.0 })), lg), 1.0);
let uv = if along_x { let uv = if along_x {
[vec2(ba.x, ba.y), vec2(ba.x, bb.y), vec2(bb.x, bb.y), vec2(bb.x, ba.y)] [vec2(ba.x, ba.y), vec2(ba.x, bb.y), vec2(bb.x, bb.y), vec2(bb.x, ba.y)]
@@ -735,6 +777,14 @@ fn build_chunk(map: &Map, amb: &[f32], glow: &[f32], cx: i32, cz: i32, atlas: &T
[vec2(ba.x, ba.y), vec2(bb.x, ba.y), vec2(bb.x, bb.y), vec2(ba.x, bb.y)] [vec2(ba.x, ba.y), vec2(bb.x, ba.y), vec2(bb.x, bb.y), vec2(ba.x, bb.y)]
}; };
mb.quad([vec3(xf, DECK_Y, zf), vec3(xf + 1.0, DECK_Y, zf), vec3(xf + 1.0, DECK_Y, zf + 1.0), vec3(xf, DECK_Y, zf + 1.0)], uv, [dc; 4], [Vec3::Y; 4]); mb.quad([vec3(xf, DECK_Y, zf), vec3(xf + 1.0, DECK_Y, zf), vec3(xf + 1.0, DECK_Y, zf + 1.0), vec3(xf, DECK_Y, zf + 1.0)], uv, [dc; 4], [Vec3::Y; 4]);
if t.kind == Kind::Drawbridge {
// iron bands across the planks mark a drawbridge
let iron = col(Vec3::splat(0.32), 1.0);
for f in [0.18, 0.82] {
let (a, b) = if along_x { (vec3(xf + f, DECK_Y + 0.005, zf), vec3(xf + f, DECK_Y + 0.005, zf + 1.0)) } else { (vec3(xf, DECK_Y + 0.005, zf + f), vec3(xf + 1.0, DECK_Y + 0.005, zf + f)) };
ln.strip(a, b, Vec3::Y, OUTLINE_W * 1.6, iron);
}
}
// deck edges above open river // deck edges above open river
for (d, &(dx, dz)) in DIR4.iter().enumerate() { for (d, &(dx, dz)) in DIR4.iter().enumerate() {
if !map.get(x + dx, z + dz).map_or(false, |o| o.liquid()) { if !map.get(x + dx, z + dz).map_or(false, |o| o.liquid()) {
@@ -994,6 +1044,7 @@ fn chunk_sig(map: &Map, cx: i32, cz: i32) -> u64 {
let extra = match t.kind { let extra = match t.kind {
Kind::Farm => t.food as u64, Kind::Farm => t.food as u64,
Kind::Treasury => (t.gold / 50) as u64 | (t.res as u64) << 5, Kind::Treasury => (t.gold / 50) as u64 | (t.res as u64) << 5,
Kind::Drawbridge => t.res as u64,
_ => 0, _ => 0,
}; };
let shown = map.shown(idx(x, z)) as u64; let shown = map.shown(idx(x, z)) as u64;
@@ -3030,6 +3081,8 @@ pub fn minimap_color(tile: &Tile) -> [u8; 4] {
Kind::Lava => [250, 110, 30, 255], Kind::Lava => [250, 110, 30, 255],
Kind::Bridge => [150, 110, 60, 255], Kind::Bridge => [150, 110, 60, 255],
Kind::LavaBridge => [130, 120, 115, 255], Kind::LavaBridge => [130, 120, 115, 255],
Kind::Drawbridge => [120, 80, 50, 255],
Kind::Obsidian => [60, 40, 70, 255],
Kind::Shard => [255, 60, 120, 255], Kind::Shard => [255, 60, 120, 255],
Kind::Aerie => [170, 140, 90, 255], Kind::Aerie => [170, 140, 90, 255],
Kind::Steel => [150, 160, 180, 255], Kind::Steel => [150, 160, 180, 255],
+2
View File
@@ -34,7 +34,9 @@ pub const RESEARCH: &[(usize, f32)] = &[
(25, 650.0), // stone roller (25, 650.0), // stone roller
(37, 700.0), // invisibility (37, 700.0), // invisibility
(19, 700.0), // steel walls (19, 700.0), // steel walls
(47, 700.0), // drawbridge
(28, 800.0), // frost glow (28, 800.0), // frost glow
(48, 800.0), // frost spell
(38, 850.0), // plague (38, 850.0), // plague
(27, 900.0), // rune mine (27, 900.0), // rune mine
(39, 950.0), // quake (39, 950.0), // quake
+27
View File
@@ -162,4 +162,31 @@ fn export_scenes() {
g.place_all_torches(); g.place_all_torches();
run(&mut g, 4.0); run(&mut g, 4.0);
save("lava-light", &mut g, cx as f32 + 5.0, cy as f32, 22.0, 0.0, false); save("lava-light", &mut g, cx as f32 + 5.0, cy as f32, 22.0, 0.0, false);
// bridges: a raised and a lowered drawbridge over water, a burning bridge, obsidian on lava
let mut g = Game::new(17, 80, 64);
let (cx, cy) = g.map.core;
g.gold = 50000.0;
open(&mut g, cx - 6, cy - 9, cx + 18, cy + 9);
for y in cy - 9..=cy + 9 {
for x in cx + 6..cx + 9 {
let t = &mut g.map.t[idx(x, y)];
t.kind = Kind::Water;
t.owner = Owner::None;
}
for x in cx + 12..cx + 15 {
let t = &mut g.map.t[idx(x, y)];
t.kind = Kind::Lava;
t.owner = Owner::None;
}
}
g.drawbridge_order(cx + 5, cy - 5, cx + 9, cy - 5);
g.drawbridge_order(cx + 5, cy - 1, cx + 9, cy - 1);
g.drawbridge_order(cx + 6, cy - 1, cx + 6, cy - 1); // raised
g.build_bridges(cx + 5, cy + 4, cx + 9, cy + 4);
g.ignite_at(cx as f32 + 7.5, cy as f32 + 4.5);
g.cool_lava_around(cx as f32 + 13.5, cy as f32 + 1.5, 2.5, 60.0);
g.place_all_torches();
run(&mut g, 2.5);
save("bridges", &mut g, cx as f32 + 9.0, cy as f32, 18.0, 0.0, false);
} }
+30 -1
View File
@@ -16,9 +16,18 @@ pub enum Spell {
Invisible, Invisible,
Plague, Plague,
Quake, Quake,
Freeze, // frost: cools lava into obsidian, chills enemies
} }
pub const SPELLS: [Spell; 8] = [Spell::Eye, Spell::CaveIn, Spell::Haste, Spell::Stoneskin, Spell::GoldRain, Spell::Invisible, Spell::Plague, Spell::Quake]; pub const SPELLS: [Spell; 9] = [Spell::Eye, Spell::CaveIn, Spell::Haste, Spell::Stoneskin, Spell::GoldRain, Spell::Invisible, Spell::Plague, Spell::Quake, Spell::Freeze];
// the icon of a spell (the first eight share one row of the atlas)
pub fn spell_icon(sp: Spell) -> u32 {
match SPELLS.iter().position(|&t| t == sp).unwrap_or(0) {
k if k < 8 => crate::gfx::I_SPELLS + k as u32,
_ => crate::gfx::I_FREEZE,
}
}
pub const EYE_TIME: f32 = 20.0; pub const EYE_TIME: f32 = 20.0;
pub const EYE_RADIUS: f32 = 8.0; pub const EYE_RADIUS: f32 = 8.0;
@@ -34,6 +43,7 @@ impl Spell {
Spell::Invisible => 50.0, Spell::Invisible => 50.0,
Spell::Plague => 80.0, Spell::Plague => 80.0,
Spell::Quake => 90.0, Spell::Quake => 90.0,
Spell::Freeze => 80.0,
} }
} }
// radius shown under the pointer // radius shown under the pointer
@@ -43,6 +53,7 @@ impl Spell {
Spell::CaveIn => 1.5, Spell::CaveIn => 1.5,
Spell::Plague => 2.0, Spell::Plague => 2.0,
Spell::Quake => 3.0, Spell::Quake => 3.0,
Spell::Freeze => 2.5,
Spell::GoldRain => 0.0, Spell::GoldRain => 0.0,
_ => 1.6, _ => 1.6,
} }
@@ -57,6 +68,7 @@ impl Spell {
Spell::Invisible => "invisible", Spell::Invisible => "invisible",
Spell::Plague => "plague", Spell::Plague => "plague",
Spell::Quake => "quake", Spell::Quake => "quake",
Spell::Freeze => "freeze",
} }
} }
} }
@@ -232,6 +244,23 @@ impl Game {
} }
self.sfx(Sfx::Cannon, wx, wy); self.sfx(Sfx::Cannon, wx, wy);
} }
Spell::Freeze => {
// lava turns to obsidian for a while; enemies are chilled and slowed
self.cool_lava_around(wx, wy, 2.5, crate::bridges::FREEZE_TIME);
let hit: Vec<usize> = (0..self.ents.len()).filter(|&j| foe(&self.ents[j]) && near(&self.ents[j])).collect();
for j in hit {
let e = &mut self.ents[j];
e.hp -= 20.0;
e.slow = e.slow.max(4.0);
e.flash = 0.15;
if e.hp <= 0.0 {
self.kill(j);
}
}
self.part(RING, (wx, wy, 0.05), (0.0, 0.0, 0.0), 0.6, abgr(170, 230, 255), 2.5);
self.sparkle(wx, wy, 24, abgr(200, 240, 255));
self.sfx(Sfx::Magic, wx, wy);
}
} }
self.mana -= cost; self.mana -= cost;
} }
+2 -1
View File
@@ -485,7 +485,8 @@ impl Game {
let near = |r: f32, ents: &Vec<Ent>| -> Vec<usize> { (0..ents.len()).filter(|&j| enemy(&ents[j]) && (ents[j].x - cx).powi(2) + (ents[j].y - cy).powi(2) < r * r).collect() }; let near = |r: f32, ents: &Vec<Ent>| -> Vec<usize> { (0..ents.len()).filter(|&j| enemy(&ents[j]) && (ents[j].x - cx).powi(2) + (ents[j].y - cy).powi(2) < r * r).collect() };
match t.kind { match t.kind {
TrapKind::Frost => { TrapKind::Frost => {
// always on: cold around it slows and bites // always on: cold around it slows and bites, and keeps lava next to it cooled
self.cool_lava_around(cx, cy, 2.5, 3.0);
for j in near(2.5, &self.ents) { for j in near(2.5, &self.ents) {
self.ents[j].slow = self.ents[j].slow.max(0.5); self.ents[j].slow = self.ents[j].slow.max(0.5);
self.damage_unit(j, 2.0 * dt); self.damage_unit(j, 2.0 * dt);
+41 -4
View File
@@ -174,13 +174,14 @@ pub enum Tool {
Tower(TowerKind), Tower(TowerKind),
Bridge, Bridge,
Steel, Steel,
Drawbridge,
Trap(crate::traps::TrapKind), Trap(crate::traps::TrapKind),
Spell(crate::spells::Spell), Spell(crate::spells::Spell),
Order(u8), // 0 attack, 1 guard Order(u8), // 0 attack, 1 guard
} }
// New tools are appended so that existing key bindings ("tool<i>") keep their meaning // New tools are appended so that existing key bindings ("tool<i>") keep their meaning
pub const TOOLS: [Tool; 47] = [ pub const TOOLS: [Tool; 49] = [
Tool::Dig, Tool::Dig,
Tool::Hand, Tool::Hand,
Tool::Room(0), Tool::Room(0),
@@ -228,6 +229,8 @@ pub const TOOLS: [Tool; 47] = [
Tool::Room(13), Tool::Room(13),
Tool::Order(0), Tool::Order(0),
Tool::Order(1), Tool::Order(1),
Tool::Drawbridge,
Tool::Spell(crate::spells::Spell::Freeze),
]; ];
@@ -259,7 +262,7 @@ pub fn tool_info(t: Tool) -> ToolInfo {
Tool::Trap(k) => (k.id(), I_TRAPS + crate::traps::TRAP_KINDS.iter().position(|&t| t == k).unwrap_or(0) as u32, None), Tool::Trap(k) => (k.id(), I_TRAPS + crate::traps::TRAP_KINDS.iter().position(|&t| t == k).unwrap_or(0) as u32, None),
Tool::Order(0) => ("order_attack", I_ORDERS, None), Tool::Order(0) => ("order_attack", I_ORDERS, None),
Tool::Order(_) => ("order_guard", I_ORDERS + 1, None), Tool::Order(_) => ("order_guard", I_ORDERS + 1, None),
Tool::Spell(sp) => (sp.id(), I_SPELLS + crate::spells::SPELLS.iter().position(|&t| t == sp).unwrap_or(0) as u32, None), Tool::Spell(sp) => (sp.id(), crate::spells::spell_icon(sp), None),
Tool::Tower(TowerKind::Arrow) => ("arrow", I_ARROW, None), Tool::Tower(TowerKind::Arrow) => ("arrow", I_ARROW, None),
Tool::Tower(TowerKind::Cannon) => ("cannon", I_CANNON, None), Tool::Tower(TowerKind::Cannon) => ("cannon", I_CANNON, None),
Tool::Tower(TowerKind::Magic) => ("magic", I_MAGIC, None), Tool::Tower(TowerKind::Magic) => ("magic", I_MAGIC, None),
@@ -270,6 +273,7 @@ pub fn tool_info(t: Tool) -> ToolInfo {
Tool::Heal => ("heal", I_HEAL, None), Tool::Heal => ("heal", I_HEAL, None),
Tool::Summon => ("summon", I_SUMMON, None), Tool::Summon => ("summon", I_SUMMON, None),
Tool::Bridge => ("bridge", I_BRIDGE, None), Tool::Bridge => ("bridge", I_BRIDGE, None),
Tool::Drawbridge => ("drawbridge", I_DRAWBRIDGE, None),
Tool::Steel => ("steel", I_STEEL, None), Tool::Steel => ("steel", I_STEEL, None),
}; };
let name = match room { let name = match room {
@@ -285,6 +289,7 @@ pub fn tool_cost_static(t: Tool) -> String {
Tool::Spell(sp) => trf("cost.mana", &[(sp.cost() as i32).to_string()]), Tool::Spell(sp) => trf("cost.mana", &[(sp.cost() as i32).to_string()]),
Tool::Trap(k) => trf("cost.work", &[(k.work() as i32).to_string()]), Tool::Trap(k) => trf("cost.work", &[(k.work() as i32).to_string()]),
Tool::Bridge => trf("cost.bridge", &[BRIDGE_COST[0].to_string(), BRIDGE_COST[1].to_string()]), Tool::Bridge => trf("cost.bridge", &[BRIDGE_COST[0].to_string(), BRIDGE_COST[1].to_string()]),
Tool::Drawbridge => trf("cost.gold_tile", &[DRAWBRIDGE_COST.to_string()]),
Tool::Steel => trf("cost.steel", &[STEEL_COST[0].to_string(), STEEL_COST[1].to_string()]), Tool::Steel => trf("cost.steel", &[STEEL_COST[0].to_string(), STEEL_COST[1].to_string()]),
Tool::Tower(TowerKind::Rune) => { Tool::Tower(TowerKind::Rune) => {
let s = tower_stats(TowerKind::Rune); let s = tower_stats(TowerKind::Rune);
@@ -310,6 +315,7 @@ pub fn tool_cost(t: Tool, g: &Game) -> String {
Tool::Heal => trf("cost.mana", &["60".into()]), Tool::Heal => trf("cost.mana", &["60".into()]),
Tool::Summon => trf("cost.mana", &[(g.summon_cost() as i32).to_string()]), Tool::Summon => trf("cost.mana", &[(g.summon_cost() as i32).to_string()]),
Tool::Bridge => trf("cost.bridge", &[BRIDGE_COST[0].to_string(), BRIDGE_COST[1].to_string()]), Tool::Bridge => trf("cost.bridge", &[BRIDGE_COST[0].to_string(), BRIDGE_COST[1].to_string()]),
Tool::Drawbridge => trf("cost.gold_tile", &[DRAWBRIDGE_COST.to_string()]),
Tool::Steel => trf("cost.steel", &[STEEL_COST[0].to_string(), STEEL_COST[1].to_string()]), Tool::Steel => trf("cost.steel", &[STEEL_COST[0].to_string(), STEEL_COST[1].to_string()]),
Tool::Tower(TowerKind::Rune) => { Tool::Tower(TowerKind::Rune) => {
let s = tower_stats(TowerKind::Rune); let s = tower_stats(TowerKind::Rune);
@@ -331,10 +337,10 @@ pub fn tool_cost(t: Tool, g: &Game) -> String {
pub const CATS: [(&str, &[usize]); 7] = [ pub const CATS: [(&str, &[usize]); 7] = [
("cat.dig", &[0]), ("cat.dig", &[0]),
("cat.hand", &[1]), ("cat.hand", &[1]),
("cat.rooms", &[2, 3, 4, 5, 6, 12, 40, 13, 18, 21, 41, 42, 43, 44, 17]), ("cat.rooms", &[2, 3, 4, 5, 6, 12, 40, 13, 18, 21, 41, 42, 43, 44, 17, 47]),
("cat.towers", &[14, 15, 16, 20]), ("cat.towers", &[14, 15, 16, 20]),
("cat.traps", &[22, 23, 24, 25, 26, 27, 28, 29, 30, 31]), ("cat.traps", &[22, 23, 24, 25, 26, 27, 28, 29, 30, 31]),
("cat.spells", &[9, 10, 11, 32, 33, 34, 35, 36, 37, 38, 39]), ("cat.spells", &[9, 10, 11, 32, 33, 34, 35, 36, 37, 38, 39, 48]),
("cat.orders", &[8, 45, 46, 7, 19]), ("cat.orders", &[8, 45, 46, 7, 19]),
]; ];
@@ -1412,6 +1418,17 @@ impl Ui {
} }
// Info text for the unit or tile under the mouse (first line = title) // Info text for the unit or tile under the mouse (first line = title)
// fire and wear of a bridge tile
fn bridge_state(g: &Game, i: usize, out: &mut Vec<(String, Color)>) {
if g.burning(i) {
out.push((tr("tile.bridge_burning"), RED));
}
let w = g.wear_of(i);
if w > 0.0 {
out.push((trf("tile.bridge_worn", &[((w * 100.0) as i32).to_string()]), GOLD));
}
}
pub fn hover_info(g: &Game, ent: Option<usize>, tile: Option<(i32, i32)>) -> Vec<(String, Color)> { pub fn hover_info(g: &Game, ent: Option<usize>, tile: Option<(i32, i32)>) -> Vec<(String, Color)> {
let mut out = Vec::new(); let mut out = Vec::new();
if let Some(j) = ent { if let Some(j) = ent {
@@ -1475,6 +1492,7 @@ pub fn hover_info(g: &Game, ent: Option<usize>, tile: Option<(i32, i32)>) -> Vec
return out; return out;
} }
let Some(t) = g.map.get(x, y) else { return out }; let Some(t) = g.map.get(x, y) else { return out };
let i = idx(x, y);
let owner = match t.owner { let owner = match t.owner {
Owner::Player => "owner.player", Owner::Player => "owner.player",
Owner::Hero => "owner.hero", Owner::Hero => "owner.hero",
@@ -1532,6 +1550,25 @@ pub fn hover_info(g: &Game, ent: Option<usize>, tile: Option<(i32, i32)>) -> Vec
Kind::Bridge | Kind::LavaBridge => { Kind::Bridge | Kind::LavaBridge => {
out.push((tr(if t.kind == Kind::Bridge { "tile.bridge" } else { "tile.lavabridge" }), FRAME_HI)); out.push((tr(if t.kind == Kind::Bridge { "tile.bridge" } else { "tile.lavabridge" }), FRAME_HI));
out.push((tr(owner), DIM)); out.push((tr(owner), DIM));
bridge_state(g, i, &mut out);
}
Kind::Drawbridge => {
out.push((tr("tile.drawbridge"), FRAME_HI));
out.push((tr(owner), DIM));
let state = if t.res & DB_AUTO != 0 {
if t.raised() { "tile.drawbridge_auto_up" } else { "tile.drawbridge_auto" }
} else if t.raised() {
"tile.drawbridge_up"
} else {
"tile.drawbridge_down"
};
out.push((tr(state), BLUE));
bridge_state(g, i, &mut out);
}
Kind::Obsidian => {
out.push((tr("tile.obsidian"), FRAME_HI));
let left = g.bridgework.cooled.iter().find(|c| c.0 == i).map_or(0.0, |c| c.1);
out.push((trf("tile.obsidian_info", &[(left.ceil() as i32).to_string()]), if left < crate::bridges::MELT_WARN { RED } else { DIM }));
} }
Kind::Shard => { Kind::Shard => {
out.push((tr("tile.shard"), RED)); out.push((tr("tile.shard"), RED));