diff --git a/classes.cpp b/classes.cpp index 08fff218..a2903752 100644 --- a/classes.cpp +++ b/classes.cpp @@ -784,7 +784,7 @@ monstertype minf[motypes] = { }, { 'B', 0xE07060, "Acid Gull", "Where did this strange bird come from?...\n\n" - "Acid Gulls dissolve the land on which they fall. " + "Acid Gulls dissolve the land on which they fall when they die. " }, { 'W', 0xA04060, "Mutant", "These guys look a bit strange, but they have no special properties." @@ -1252,8 +1252,8 @@ itemtype iinf[ittypes] = { { 'o', 0x202020, "Orb of Slaying", "This Orb lets you defeat Raiders and other tough single-cell monsters in melee." }, - { '*', 0xFFA860, "Sphalerite", - "An orange gem." + { '*', 0xFFA860, "Tiger's Eye", + "A brown gem." }, { '$', 0xF0C0C0, "Meteorite", "These rocks falling from the sky have been captured to fall forever in the artificial gravity. Meteorite iron is believed to be a valuable material for magical weapons."}, @@ -1459,8 +1459,12 @@ walltype winf[walltypes] = { { '^', 0xFF8000, "burning dock", "A burning dock."}, { '#', 0xE04030, "ruin wall", ruindesc}, { '#', 0xA04060, "Brownian generator", NODESC}, - { '^', 0xC05000, "fire trap", NODESC}, - { '^', 0xFD692F, "Explosive Barrel", NODESC}, + { '^', 0xC05000, "fire trap", + "This trap will explode when stepped on, setting all the adjacent cells on fire. However, this happens on the next turn, " + "so you can safely escape if you are fast enough."}, + { '^', 0xFD692F, "Explosive Barrel", + "These barrels can be pushed, and they will explode if next to a fire, or under some attacks." + }, }; // --- land types --- diff --git a/complex.cpp b/complex.cpp index 1ebbc184..dade0873 100644 --- a/complex.cpp +++ b/complex.cpp @@ -712,6 +712,9 @@ namespace princess { else if(msgid == 73 && !inpalace) { addMessage(XLAT("\"Infinite trees are boring. I prefer other graphs.\"", m)); } + else if(msgid == 74 && !inpalace) { + addMessage(XLAT("\"Did you know that the Cultists are relatives of the Desert Men?\"", m)); + } else if(msgid == 80) { addMessage(XLAT("\"Are there Temples of Cthulhu in your world? Why not?\"", m)); } diff --git a/language-cz.cpp b/language-cz.cpp index 229297ad..bea87859 100644 --- a/language-cz.cpp +++ b/language-cz.cpp @@ -7051,8 +7051,6 @@ S( S("NEVER", "NIKDY") -#undef Orb - // Goldberg polyhedra S("cube/elliptic", "krychle/el") @@ -7641,3 +7639,173 @@ S("This will end your current game and start a new one. Are you sure?", S("This will enable the cheat mode, making this game ineligible for scoring. Are you sure?", "Tímto aktivuješ cheat mód a tuto hru nebude možné skórovat. Víš to jistě?") +S("octahedron", "osmistěn") + +// 11.0 +S("debug values", "debugové hodnoty") +S("internal details", "vnitřní detaily") +S("show debug data", "ukaž debugovací data") +S("click a cell to edit it", "klikni na políčko pro editaci") +S("click a cell to view its data", "klikni na políčko pro zobrazení jeho dat") + +S("(these lands are not in game)", "(tyto země ve hře nejsou)") + +// new lands + +N("Brown Island", GEN_F, "Hnědý ostrov", "Hnědé ostrovy", "Hnědý ostrov", "na Hnědém ostrově") + +S("The Brown Islands have been generated by ancient underground creatures, who moved randomly and raised lands in their path... " + "adults spawned larvae in each move, which also moved randomly and also raised lands in their path, and eventually became adults and spawned their own larvae. " + "The creatures spawned exponentially, but the space they lived in still grew faster, so there was enough space for the whole spawn...\n\n" + "That was a long time ago. Now, the mountainous Brown Islands are inhabited by strange monsters. Good luck adventuring!", + + "Hnědé ostrovy vytvořily prastaré podzemní bytosti, které se náhodně pohybovaly a " + "vyzdvihovaly půdu, která jim stála v cestě... Dospělci při každém pohybu plodili " + "larvy, které se také pohybovaly náhodně a vyzdvihovaly půdu, která jim stála v " + "cestě, až nakonec dospěly a začaly plodit své vlastní larvy. Tito tvorové se " + "množili exponenciální rychlostí, ale prostor, ve kterém žili, rostli ještě " + "rychleji, takže měly dost místa pro veškeré své potomstvo...\n\n" + "Tohle už bylo dávno. Dnes obývají hornaté Hnědé ostrovy podivní " + "netvoři. Hodně štěstí s dobrodružstvím!") + + +N("Bronze Beast", GEN_F, "Bronzová bestie", "Bronzové bestie", "Bronzovou bestii", "Bronzovou bestií") + +S("A large bug native to the Brown Islands. Cannot be killed easily due to their tough armor; still, they can be killed by pushing them into water or from great heights. " +"Bronze Beasts are very bad at descending slopes -- it takes them extra time to get down, and they are stunned for a longer time if you push them down.", + + "Velký brouk z Hnědých ostrovů. Díky jeho tvrdému pancíři se nedá " + "snadno zabít -- můžete to ale udělat tak, že ho strčíte do vody " + "nebo ho necháte spadnout z velké výšky.") + +N("Acid Gull", GEN_M, "Kyselinoracek", "Kyselinorackové", "Kyselinoracka", "Kyselinorackem") + +S("Where did this strange bird come from?...\n\n Acid Gulls dissolve the land on which they fall when they die. ", + + "Kde se tu vzal tenhle podivný pták...?\n\nKdyž Kyselinoracek zemře, rozpustí terén, na který dopadne.") + +N("Tiger's Eye", GEN_N, "Tygří oko", "Tygří oka", "Tygří oko", "Tygřím okem") +S("A brown gem.", "Hnědý drahokam.") + +Orb("Choice", "Volby") + +S("Did you know that it is possible to break a magical sphere into finitely many parts, and then, out of the parts obtained, to make two magical spheres, just like the original? " + "Hyperbolic geometry makes this even easier!\n\n" + "When you pick up another Orb, it will not disappear from the ground -- Orb of Choice will be drained instead.", + + "Vědě%l0 jsi, že je možné rozbít magickou sféru na konečný " + "počet částí a složit z nich dvě magické sféry, stejné jako " + "originál? V hyperbolické geometrii je to ještě jednodušší!\n\n" + "Když sebereš nějakou jinou Sféru, nezmizí ze země -- " + "místo toho přijdeš o Sféru volby.") + +N("Free Fall", GEN_O, "Volný pád", "Volné pády", "Volný pád", "ve Volném pádu") + +S("What on one side looks to be a normal (well, infinite) horizontal wall, on to the other side turns out to be the vertical wall" + " of an infinitely high tower. Jump from the window, and let the magical gravity carry you...", + + "To, co na jedné straně vypadá jako normální (no, nekonečná) vodorovná " + "stěna, se na druhé straně ukazuje být svislou zdí nekonečně vysoké věže. " + "Vyskoč z okna a nech magickou gravitaci, aby tě unášela...") + +N("Falling Dog", GEN_M, "Padající pes", "Padající psi", "Padajícího psa", "Padajícím psem") + +S("Distant relatives of the Running Dogs.", "Vzdálení příbuzní Běžících psů.") + +N("Western Hawk", GEN_M, "Západní jestřáb", "Západní jestřábi", "Západního jestřába", "Západním jestřábem") + +N("Meteorite", GEN_O, "Meteorit", "Meteority", "Meteorit", "Meteoritem") + +S("These rocks falling from the sky have been captured to fall forever in the artificial gravity. Meteorite iron is believed to be a valuable material for magical weapons.", + "Tyto z nebe spadlé kameny byly zachyceny, aby navěky padaly " + "v umělé gravitaci. Meteorické železo se pokládá za cenný " + "materiál pro magické zbraně.") + +Orb("Gravity", "Gravitace") + +S("This Orb lets you magically control gravity around you. In lands with unusual gravity, the options are: usual gravity (no change, except that it may disrupt birds), " + "anti-gravity (causes the direction of gravity to be reveresed), levitation (you can move in directions which are neither up nor down, " + "or between cells is one of them has a wall in a 'neutral' direction). In lands with standard gravity, levitation lets creatures to avoid traps, chasms, " + "and water, while anti-gravity makes it possible to move only when next to a wall (movement between cells without adjacent walls is not allowed). " + "For each move, the gravity is based on what you do, and all enemies in the effective range are affected (for example, if you move next to a wall in a non-gravity land, " + "anti-gravity kicks in and monsters will not be able to move in open space).", + + "Tato Sféra ti umožňuje magicky ovládat gravitaci kolem tebe. V zemích s neobvyklou " + "gravitací máš následující možnosti: obvyklá gravitace (beze změny, ale může rušit " + "ptáky), antigravitace (směr gravitace je obrácen), levitace (můžeš se pohybovat ve " + "směrech, které nevedou nahoru ani dolů, nebo mezi políčky, pokud má jedno z nich zeď " + "v 'neutrálním' směru. V zemích se standardní gravitací umožňuje levitace tvorům " + "vyhnout se pastím, propastem a vodě, zatímco antigravitace způsobí, že se mohou " + "pohybovat pouze tehdy, když jsou vedle zdi (pohyb mezi políčky bez sousedících " + "zdí není dovolen). Při každém pohybu je gravitace založená na tom, co uděláte, " + "a ovlivňuje všechny nepřátele v efektivním dosahu (pokud se například v " + "negravitační zemi pohneš vedle zdi, spustí se antigravitace a netvoři nebudou " + "schopní pohybovat se na otevřeném prostranství).") + +N("Irradiated Field", GEN_N, "Ozářené pole", "Ozářená pole", "Ozářené pole", "na Ozářeném poli") + +S("These fields are ravaged with many kinds of magical radiation, which not only make the ground glow nicely in various colors, " + "but also cause the inhabitants to protect the treasures of their land in various ways. In some areas of the Irradiated Fields, " + "you will meet powerful enemies; in other areas, you will find arrow traps, fire traps, or pools, which can kill you if you are " + "careless, or help you if you know how to use them to your advantage. Will you walk through the Irradiated Fields randomly, or " + "try to find areas where treasures are common but nasty monsters are not, and keep to them? It is your choice!\n\n", + + "Tato pole jsou zpustošená mnoha druhy magického záření, což nejenom způsobuje, že " + "zem pěkně různobarevně svítí, ale také to její obyvatele vede k tomu, že poklady " + "svého kraje chrání různými způsoby. V některých oblastech Ozářených polí se setkáš " + "s mocnými nepřáteli; v jiných najdeš šípové pasti, ohnivé pasti nebo jezírka, která " + "tě mohou zabít, pokud si nedáš pozor, nebo ti pomoci, pokud víš, jak je využít ve " + "tvůj prospěch. Budeš Ozářenými poli procházet náhodně, nebo se pokusíš najít " + "oblasti, kde je mnoho pokladů, ale málo ošklivých netvorů a držet se jich? Je to na tobě.") + +N("Mutant", GEN_M, "Mutant", "Mutanti", "Mutanta", "Mutantem") + +S("These guys look a bit strange, but they have no special properties.", + "Tihle chlapíci vypadají trošku podivně, ale nemají žádné speciální vlastnosti.") + +N("Shining Gem", GEN_O, "Zářící drahokam", "Zářící drahokamy", "Zářící drahokam", "Zářícím drahokamem") + +S("Gems emiting benevolent magical radiation.", "Drahokamy vyzařující prospěšnou magickou radiaci.") + +N("fire trap", GEN_F, "ohnivá past", "ohnivé pasti", "ohnivou past", "ohnivou pastí") + +S("This trap will explode when stepped on, setting all the adjacent cells on fire. However, this happens on the next turn, " + "so you can safely escape if you are fast enough.", + "Když na tuto past někdo šlápne, vybuchne a zapálí všechna okolní " + "políčka. To se však stane až v příštím kole, takže pokud jsi dostatečně " + "rychlý, můžeš bezpečně uniknout.") + +N("Explosive Barrel", GEN_O, "Sud s výbušninami", "Sudy s výbušninami", "Sud s výbušninami", "Sudem s výbušninami") +S("These barrels can be pushed, and they will explode if next to a fire, or under some attacks.", + "Tyto sudy je možné tlačit; vybuchnou, pokud se ocitnou vedle ohně nebo je zasáhnou určité útoky.") + +Orb("Intensity", "Intenzity") + +S("When you have this, initial and maximal charge amounts of all Orbs are increased by 20%.", + "Pokud máš tuto sféru, počáteční i maximální náboj všech Sfér se zvyšuje o 20%.") + +// new mode: Racing + +S("Racing available only in unbounded worlds.", "Závody jsou k dispozici pouze v neohraničených světech.") +S("select the track and start!", "vyber si dráhu a začni!") +S("configure the projection", "konfigurace projekce") +S("racing projections", "závodní projekce") +S("Poincaré disk model", "model Poincarého disku") +S("third-person perspective", "perspektiva třetí osoby") +S("point of view", "bod pohledu") +S("track", "dráha") +S("race angle", "úhel závodu") +S("show more in front", "ukazuj víc vpředu") +S("guiding line", "vedoucí linie") +S("track seed", "seed závodu") +S("play the official seed", "hraj oficiální seed") +S("play a random seed", "hraj náhodný seed") +S("best scores to show as ghosts", "ukaž nejlepší skóre jako duchy") +S("best scores to save", "nejlepší skóre k uložení") +S("disable the racing mode", "zruš závodní mód") +S("racing menu", "závodní menu") +S("Race did not generate correctly for some reason -- not ranked", + "Závod se z nějakého důvodu nevygeneroval správně -- není hodnocen") + +#undef Orb + diff --git a/language-pl.cpp b/language-pl.cpp index a3d965c0..7df73e45 100644 --- a/language-pl.cpp +++ b/language-pl.cpp @@ -6630,8 +6630,6 @@ S("advanced keyboard shortcuts", "zaawansowane skróty klawiaturowe") "shift + middle button = reset position" */ -#undef Orb - S("pics to save:", "obrazki do zapisu:") S("level to save:", "mapa do zapisu:") S("pics to load:", "obrazki do wczytania:") @@ -7394,3 +7392,163 @@ S("This will end your current game and start a new one. Are you sure?", "To zakończy Twoją obecną grę i zacznie nową. Czy na pewno?") S("This will enable the cheat mode, making this game ineligible for scoring. Are you sure?", "To uruchomi tryb oszusta. Wyniki przestaną się liczyć. Czy na pewno?") + +// 11.0 + +S("debug values", "dane do debugowania") +S("internal details", "szczegóły wewnętrzne") +S("show debug data", "pokaż dane do debugowania") +S("click a cell to edit it", "kliknij pole by je edytować") +S("click a cell to view its data", "kliknij pole by obejrzeć jego wartości") + +S("(these lands are not in game)", "(te krainy nie występują w tej grze)") + +// new lands + +N("Brown Island", GEN_F, "Brązowa Wyspa", "Brązowe Wyspy", "Brązową Wyspę", "na Brązowej Wyspie") + +S("The Brown Islands have been generated by ancient underground creatures, who moved randomly and raised lands in their path... " + "adults spawned larvae in each move, which also moved randomly and also raised lands in their path, and eventually became adults and spawned their own larvae. " + "The creatures spawned exponentially, but the space they lived in still grew faster, so there was enough space for the whole spawn...\n\n" + "That was a long time ago. Now, the mountainous Brown Islands are inhabited by strange monsters. Good luck adventuring!", + + "Brązowe Wyspy zostały stworzone przez starożytne, podziemne istoty, które poruszały się losowo i wznosiły ziemię na swojej drodze... " + "dorosłe istoty rozmnażały się po każdym ruchu, larwy również poruszały się losowo i wznosiły ziemię na swojej drodze, w końcu " + "dorastając i wytwarzając swoje własne larwy. Istoty rozmnażały się wykładniczo, ale żyły w przestrzeni rosnącej jeszcze szybciej, " + "także było dość miejsca dla całej rodziny...\n\n" + "To było dawno temu. W obecnych czasach Brązowe Wyspy są zamieszkane przez dziwne potwory. Powodzenia w poszukiwaniu przygód!") + + +N("Bronze Beast", GEN_O, "Brązowy Stwór", "Brązowe Stwory", "Brązowego Stwora", "Brązowym Stworem") + +S("A large bug native to the Brown Islands. Cannot be killed easily due to their tough armor; still, they can be killed by pushing them into water or from great heights. " +"Bronze Beasts are very bad at descending slopes -- it takes them extra time to get down, and they are stunned for a longer time if you push them down.", + + "Duży owad żyjący na Brązowych Wyspach. Ma twardą pokrywę, przez co nie można go łatwo pokonać; można go jednak pokonać spychając go do wody lub z dużej wysokości. " + "Brązowe Bestie słabo sobie radzą z chodzeniem w dół -- zajmuje im to więcej czasu, i kiedy zepchniesz je w dół, są ogłuszone przez dłuższy czas niż normalnie.") + +N("Acid Gull", GEN_F, "Kwaśna Mewa", "Kwaśne Mewy", "Kwaśną Mewę", "Kwaśną Mewą") + +S("Where did this strange bird come from?...\n\n Acid Gulls dissolve the land on which they fall when they die. ", + + "Skąd się wziął ten dziwny ptak?...\n\nKwaśne Mewy rozpuszczają ląd, na który spadają, gdy zostaną zabite. ") + +N("Tiger's Eye", GEN_N, "Tygrysie Oko", "Tygrysie Oka", "Tygrysie Oko", "Tygrysim Okiem") +S("A brown gem.", "Brązowy kamień.") + +Orb("Choice", "Wyboru") + +S("Did you know that it is possible to break a magical sphere into finitely many parts, and then, out of the parts obtained, to make two magical spheres, just like the original? " + "Hyperbolic geometry makes this even easier!\n\n" + "When you pick up another Orb, it will not disappear from the ground -- Orb of Choice will be drained instead.", + + "Czy wiedzia%łeś0, że można rozbić magiczną sferę na skończenie wiele części, by potem z uzyskanych części złożyć dwie magiczne sfery, dokładnie takie jak ta wyjściowa? " + "Geometria hiperboliczna powoduje, że staje się to łatwiejsze!\n\n" + "Kiedy podniesiesz inną Sferę, nie zniknie ona z ziemi -- zamiast tego stracisz Sferę Wyboru.") + +N("Free Fall", GEN_O, "Swobodny Spadek", "Swobodne Spadki", "Swobodny Spadek", "w Swobodnym Spadku") + +S("What on one side looks to be a normal (well, infinite) horizontal wall, on to the other side turns out to be the vertical wall" + " of an infinitely high tower. Jump from the window, and let the magical gravity carry you...", + + "Co wygląda z jednej strony na zwykłą (nieskończoną) poziomą ścianę, z drugiej strony okazuje się być pionową ścianą nieskończenie " + "wysokiej wieży. Wyskocz przez okno i daj się nieść magicznej grawitacji...") + +N("Falling Dog", GEN_O, "Spadający Pies", "Spadające Psy", "Spadajacego Psa", "Spadającym Psem") + +S("Distant relatives of the Running Dogs.", "Dalecy krewni Biegnących Psów.") + +N("Western Hawk", GEN_O, "Zachodni Jastrząb", "Zachodnie Jastrzębie", "Zachodniego Jastrzębia", "Zachodnim Jastrzębiem") + +N("Meteorite", GEN_O, "Meteoryt", "Meteoryty", "Meteoryt", "Meteorytem") + +S("These rocks falling from the sky have been captured to fall forever in the artificial gravity. Meteorite iron is believed to be a valuable material for magical weapons.", + "Te kamienie spadły z nieba, i zostały złapane przez sztuczną grawitację, w której będą spadać wiecznie. Żelazo pochodzące z meteorytów jest wartościowym materiałem, " + "z którego wyrabiane są magiczne bronie.") + +Orb("Gravity", "Grawitacji") + +S("This Orb lets you magically control gravity around you. In lands with unusual gravity, the options are: usual gravity (no change, except that it may disrupt birds), " + "anti-gravity (causes the direction of gravity to be reveresed), levitation (you can move in directions which are neither up nor down, " + "or between cells is one of them has a wall in a 'neutral' direction). In lands with standard gravity, levitation lets creatures to avoid traps, chasms, " + "and water, while anti-gravity makes it possible to move only when next to a wall (movement between cells without adjacent walls is not allowed). " + "For each move, the gravity is based on what you do, and all enemies in the effective range are affected (for example, if you move next to a wall in a non-gravity land, " + "anti-gravity kicks in and monsters will not be able to move in open space).", + + "Ta Sfera pozwala Ci sterować grawitacją w Twoim otoczeniu. W krainach z nietypową grawitacją opcje są następujące: zwykła grawitacja (bez zmian, oprócz tego, " + "że psuje lot ptaków), anty-grawitacja (odwraca kierunek grawitacji), lewitacja (można poruszać się w kierunkach nie będących ani w górę ani w dół, " + "oraz między takimi polami, że jedno z nich ma sąsiadującą ścianę w kierunku neutralnym). W krainach ze standardową grawitacją, lewitacja pozwala " + "na ignorowanie pułapek, przepaści i wody, podczas gdy antygrawitacja powoduje, że ruch jest możliwy tylko w sąsiedztwie ściany (nie można poruszać się " + "między polami bez sąsiadujących ścian). W każdym ruchu grawitacja w okolicy jest określana na podstawie tego co robisz, i ma to wpływ na wszystkie istoty w zasięgu " + "(przykładowo, gdy w krainie bez grawitacji ruszasz się koło ściany, uruchamiana jest anty-grawitacja i potwory nie mogą ruszać się w otwartej przestrzeni).") + +N("Irradiated Field", GEN_N, "Napromieniowane Pole", "Napromieniowane Pola", "Napromieniowane Pole", "na Napromieniowanym Polu") + +S("These fields are ravaged with many kinds of magical radiation, which not only make the ground glow nicely in various colors, " + "but also cause the inhabitants to protect the treasures of their land in various ways. In some areas of the Irradiated Fields, " + "you will meet powerful enemies; in other areas, you will find arrow traps, fire traps, or pools, which can kill you if you are " + "careless, or help you if you know how to use them to your advantage. Will you walk through the Irradiated Fields randomly, or " + "try to find areas where treasures are common but nasty monsters are not, and keep to them? It is your choice!\n\n", + + "Na tych polach działa wiele rodzajów promieniowania magicznego. Promieniowanie to nie tylko powoduje, że ziemia ładnie " + "się świeci w różnych kolorach, ale także powoduje, że mieszkańcy chronią skarbów tej ziemi na różne sposoby. " + "W niektórych rejonach spotkasz potężnych przeciwników; w innych, znajdziesz pułapki strzelające i wybuchające, albo stawy, " + "które mogą Cię zabić jeśli nie uważasz, albo mogą być pomocne, jeśli umiesz z nich korzystać. Czy będziesz poruszać się " + "przez Napromieniowane Pole przypadkowo, czy postarasz się trzymać miejsc, gdzie skarbów jest dużo, a niebezpiecznych " + "potworów mało? Twój wybór!") + +N("Mutant", GEN_M, "Mutant", "Mutanci", "Mutanta", "Mutantem") + +S("These guys look a bit strange, but they have no special properties.", + "Ci goście wyglądają trochę dziwnie, ale nie mają specjalnych własności.") + +N("Shining Gem", GEN_O, "Świecący Klejnot", "Świecące Klejnoty", "Święcący Klejnot", "Świecącym Klejnotem") + +S("Gems emiting benevolent magical radiation.", "Te klejnoty emitują dobroczynne, magiczne promieniowanie.") + +N("fire trap", GEN_F, "ognista pułapka", "ogniste pułapki", "ognistą pułapkę", "ognistą pułapką") + +S("This trap will explode when stepped on, setting all the adjacent cells on fire. However, this happens on the next turn, " + "so you can safely escape if you are fast enough.", + "Ta pułapka wybucha, gdy się na nią nastąpi, wytwarzając ogień na wszystkich sąsiednich polach. Dzieje się to jednak " + "w kolejnej turze, zatem zdążysz bezpiecznie uciec, jak się będziesz szybko poruszać.") + +N("Explosive Barrel", GEN_F, "Wybuchowa Beczka", "Wybuchowe Beczki", "Wybuchową Beczkę", "Wybuchową Beczką") +S("These barrels can be pushed, and they will explode if next to a fire, or under some attacks.", + "Te beczki można pchać, i wybuchają, gdy znajdą się w pobliżu ognia, lub pod wpływem pewnych ataków.") + +Orb("Intensity", "Intensywności") + +S("When you have this, initial and maximal charge amounts of all Orbs are increased by 20%.", + "Kiedy to masz, początkowe i maksymalne ilości ładunków dla wszyszkich Sfer rosną o 20%.") + +// new mode: Racing + +S("Racing available only in unbounded worlds.", "Wyścigi są dostępne jedynie w światach nieograniczonych") +S("select the track and start!", "wybierz tor i zaczynaj!") +S("configure the projection", "skonfiguruj projekcję") +S("racing projections", "projekcje wyścigów") +S("Poincaré disk model", "model dysku Poincaré") +S("third-person perspective", "perspektywa trzeciej osoby") +S("point of view", "punkt widzenia") +S("track", "tor") +S("race angle", "kt wycigu") +S("show more in front", "pokazuj wicej z przodu") +S("guiding line", "linia prowadząca") +S("track seed", "ziarno toru") +S("play the official seed", "graj na torach oficjalnych") +S("play a random seed", "graj na torach losowych") +S("best scores to show as ghosts", "najlepsze wyniki pokazywane jako duchy") +S("best scores to save", "najlepsze wyniki zapisywane") +S("disable the racing mode", "wyłącz tryb wyścigu") +S("racing menu", "menu wyścigów") +S("Race did not generate correctly for some reason -- not ranked", + "Wyścig z jakiegoś powodu nie został wygenerowany prawidłowo -- niepunktowany") + +S("octahedron", "ośmiościan") + +S("\"Did you know that the Cultists are relatives of the Desert Men?\"", + "\"Czy wiedzia%łeś0, że Kultyści są krewnymi Ludzi Pustyni?\"") + +#undef Orb + diff --git a/racing.cpp b/racing.cpp index 0ce0c808..07c1f0f4 100644 --- a/racing.cpp +++ b/racing.cpp @@ -882,6 +882,90 @@ void track_chooser(string new_track) { }); } + dialog::addBack(); + dialog::display(); + + if(landmap.count(getcstat) && new_track == "OFFICIAL" && modecode() == 2) + displayScore(landmap[getcstat]); + } + +void race_projection() { + cmode = sm::SIDE | sm::MAYDARK; + gamescreen(1); + + dialog::init(XLAT("racing projections")); + + dialog::addBoolItem(XLAT("Poincaré disk model"), pmodel == mdDisk && !vid.camera_angle, '1'); + dialog::add_action([] () { + pmodel = mdDisk; + race_advance = 0; + vid.yshift = 0; + vid.camera_angle = 0; + vid.xposition = 0; + vid.yposition = 0; + vid.scale = 1; + }); + + dialog::addBoolItem(XLAT("band"), pmodel == mdBand, '2'); + dialog::add_action([] () { + pmodel = mdBand; + conformal::model_orientation = race_angle; + race_advance = 1; + vid.yshift = 0; + vid.camera_angle = 0; + vid.xposition = 0; + vid.yposition = 0; + vid.scale = 1; + }); + + dialog::addBoolItem(XLAT("half-plane"), pmodel == mdHalfplane, '3'); + dialog::add_action([] () { + pmodel = mdHalfplane; + conformal::model_orientation = race_angle + 90; + race_advance = 0.5; + vid.yshift = 0; + vid.camera_angle = 0; + vid.xposition = 0; + vid.yposition = 0; + vid.scale = 1; + }); + + dialog::addBoolItem(XLAT("third-person perspective"), pmodel == mdDisk && vid.camera_angle, '4'); + dialog::add_action([] () { + pmodel = mdDisk; + race_advance = 0; + vid.yshift = -0.3; + vid.camera_angle = -45; + vid.scale = 2; + vid.xposition = 0; + vid.yposition = -1.2; + }); + + if(pmodel == mdDisk) { + dialog::addSelItem(XLAT("point of view"), player_relative ? "player" : "track", 'p'); + if(quotient) + dialog::lastItem().value = XLAT("N/A"); + dialog::add_action([] () { + player_relative = !player_relative; + if(pmodel == mdBand || pmodel == mdHalfplane) + pmodel = mdDisk; + set_view(); + }); + } + else dialog::addBreak(100); + + dialog::addSelItem(XLAT("race angle"), fts(race_angle), 'a'); + dialog::add_action([] () { + dialog::editNumber(race_angle, 0, 360, 15, 0, XLAT("race angle"), ""); + int q = conformal::model_orientation - race_angle; + dialog::reaction = [q] () { conformal::model_orientation = race_angle + q; }; + }); + + dialog::addSelItem(XLAT("show more in front"), fts(race_advance), 'A'); + dialog::add_action([] () { + dialog::editNumber(race_advance, 0, 360, 0.1, 1, XLAT("show more in front"), ""); + }); + dialog::addBack(); dialog::display(); } @@ -920,7 +1004,7 @@ struct race_configurer { dialog::init(XLAT("Racing")); if(bounded) - dialog::addInfo("Racing available only in unbounded worlds.", 0xFF0000); + dialog::addInfo(XLAT("Racing available only in unbounded worlds."), 0xFF0000); else { dialog::addItem(XLAT("select the track and start!"), 's'); dialog::add_action([this] () { @@ -934,46 +1018,9 @@ struct race_configurer { dialog::addBreak(100); - dialog::addBoolItem(XLAT("player relative"), player_relative, 'p'); - dialog::add_action([] () { - player_relative = !player_relative; - if(pmodel == mdBand || pmodel == mdHalfplane) - pmodel = mdDisk; - }); - if(quotient) - dialog::lastItem().value = XLAT("N/A"); + dialog::addItem(XLAT("configure the projection"), 'p'); + dialog::add_action([] () { pushScreen(race_projection); }); - dialog::addSelItem(XLAT("projection"), conformal::get_model_name(pmodel), 'm'); - dialog::add_action([] () { - switch(pmodel) { - case mdDisk: - pmodel = mdBand; - conformal::model_orientation = race_angle; - race_advance = 1; - break; - case mdBand: - pmodel = mdHalfplane; - conformal::model_orientation = race_angle + 90; - race_advance = 0.5; - break; - default: - pmodel = mdDisk; - race_advance = 0; - } - }); - - dialog::addSelItem(XLAT("race angle"), fts(race_angle), 'a'); - dialog::add_action([] () { - dialog::editNumber(race_angle, 0, 360, 15, 0, XLAT("race angle"), ""); - int q = conformal::model_orientation - race_angle; - dialog::reaction = [q] () { conformal::model_orientation = race_angle + q; }; - }); - - dialog::addSelItem(XLAT("race advance"), fts(race_advance), 'A'); - dialog::add_action([] () { - dialog::editNumber(race_advance, 0, 360, 0.1, 1, XLAT("race advance"), ""); - }); - dialog::addBoolItem(XLAT("guiding line"), guiding, 'g'); dialog::add_action([] () { guiding = !guiding; });