mirror of
https://github.com/zenorogue/hyperrogue.git
synced 2024-11-27 14:37:16 +00:00
Merge branch 'master' of https://github.com/zenorogue/hyperrogue
This commit is contained in:
commit
43fed4adac
18
README.md
18
README.md
@ -51,18 +51,28 @@ OK, now lots of the above can be changed. You can change the geometry and topolo
|
||||
various in-game quests, and even try some other game genres in non-Euclidean spaces (roguelite aka shmup, racing, peaceful puzzles). Or use the engine for non-Euclidean computations
|
||||
and visualizations (see [RogueViz](http://roguetemple.com/z/hyper/rogueviz.php)). Have fun!
|
||||
|
||||
## Technical information ##
|
||||
## Development ##
|
||||
|
||||
You should be able to compile on Linux, OSX, or MinGW with something like this (you need SDL, SDL_ttf, and SDL_gfx):
|
||||
### Build prerequisites ###
|
||||
|
||||
On Linux with apt-get:
|
||||
|
||||
```sudo apt-get install make g++ libsdl1.2-dev libsdl-ttf2.0-dev libsdl-gfx1.2-dev libsdl-mixer1.2-dev libglew-dev```
|
||||
|
||||
On macOS with Homebrew:
|
||||
|
||||
```brew install sdl sdl_ttf sdl_gfx sdl_mixer glew```
|
||||
|
||||
macOS users might also have to edit /usr/local/include/SDL/SDL_gfxPrimitives.h at line 38 to use quote include.
|
||||
|
||||
### Building HyperRogue from source ###
|
||||
```
|
||||
sudo apt-get install gcc libsdl1.2-dev libsdl-ttf2.0-dev libsdl-gfx1.2-dev
|
||||
git clone https://github.com/zenorogue/hyperrogue.git hyperrogue
|
||||
cd hyperrogue
|
||||
make
|
||||
```
|
||||
|
||||
The `mymake` program builds HyperRogue in parts. It takes longer than the method shown above, but when you change something, `mymake` will only recompile the changed file.
|
||||
The `mymake` program builds HyperRogue in parts. It takes longer than the method shown above, but it uses significantly less memory during compilation, and when you change something, `mymake` will only recompile the changed file.
|
||||
Additionally, it can be easily configured, e.g., to produce an optimized build, or to include addons (see `mymake.cpp` for some example invocations, and `devmods` for some example addons).
|
||||
|
||||
```
|
||||
|
@ -1099,6 +1099,7 @@ EX bool flashWouldKill(cell *c, flagtype extra) {
|
||||
for(int u=0; u<c2->type; u++) {
|
||||
cell *c3 = c2->move(u);
|
||||
if(isWorm(c3)) continue; // immune to Flash
|
||||
if(isFriendly(c3)) continue; // player's allies and mounts don't count
|
||||
if(c3->monst == moEvilGolem) continue; // evil golems don't count
|
||||
if(c3 != c && (c3->monst || isPlayerOn(c3))) {
|
||||
bool b = canAttack(NULL, moWitchFlash, c3, c3->monst, AF_MAGIC | extra);
|
||||
|
2
cell.cpp
2
cell.cpp
@ -16,7 +16,7 @@ extern int default_levs();
|
||||
struct hrmap {
|
||||
virtual heptagon *getOrigin() { return NULL; }
|
||||
virtual cell *gamestart() { return getOrigin()->c7; }
|
||||
virtual ~hrmap() { };
|
||||
virtual ~hrmap() { }
|
||||
virtual vector<cell*>& allcells();
|
||||
virtual void verify() { }
|
||||
virtual void on_dim_change() { }
|
||||
|
@ -411,7 +411,7 @@ const char *twdesc = "This structure will disappear after some time.";
|
||||
const char *jellydesc =
|
||||
"Some of the Slime Beasts have decided to revolt against the color rules in the "
|
||||
"Alchemist Lab. They have changed their shape and consistency, declared independence, and established their own Kingdom.\n\n"
|
||||
"Jellies switch between being a wall and being a monster after every treasure you pick.";
|
||||
"Jellies switch between being a wall and being a monster after every treasure you collect.";
|
||||
|
||||
const char *ruindesc =
|
||||
"Once a beautiful city... but now overrun by the mighty Raiders of unknown origin.\n\n"
|
||||
|
@ -27,7 +27,7 @@ struct supersaver {
|
||||
virtual void load(const string& s) = 0;
|
||||
virtual bool dosave() = 0;
|
||||
virtual void reset() = 0;
|
||||
virtual ~supersaver() {};
|
||||
virtual ~supersaver() {}
|
||||
virtual bool affects(void* v) { return false; }
|
||||
virtual void set_default() = 0;
|
||||
};
|
||||
|
@ -107,7 +107,7 @@ MONSTER( 'N', 0x404040, "Necromancer", moNecromancer, CF_FACE_UP | CF_HIGH_THREA
|
||||
"Necromancers can raise ghosts and zombies from fresh graves."
|
||||
)
|
||||
MONSTER( 'S', 0x404040, "Shadow", moShadow, CF_FACE_UP | CF_NOBLOW | CF_NONLIVING | CF_SPAM, RESERVED, moNone,
|
||||
"A creepy monster who follows you everywhere in the Graveyard."
|
||||
"A creepy monster who follows you everywhere in the Graveyard and the Cursed Canyon."
|
||||
)
|
||||
MONSTER( 'T', 0x40E040, "Tentacle", moTentacle, ZERO | CF_NOGHOST | CF_NOBLOW | CF_MOUNTABLE | CF_MULTITILE | CF_WORM, RESERVED, moNone, tentdes )
|
||||
MONSTER( 't', 0x008000, "Tentacle Tail", moTentacletail, ZERO | CF_NOGHOST | CF_NOBLOW | CF_MOUNTABLE | CF_MULTITILE | CF_WORM | CF_INACTIVE | CF_SPAM, RESERVED, moNone, tentdes )
|
||||
@ -1523,7 +1523,7 @@ LAND( 0x804000, "Brown Island", laBrownian, ZERO | LF_PURESEA, itBrownian, RESER
|
||||
REQAS(laOcean,)
|
||||
|
||||
LAND( 0x211F6F, "Free Fall", laWestWall, ZERO | LF_GRAVITY | LF_EQUI, itWest, RESERVED,
|
||||
"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"
|
||||
"What on one side looks to be a normal (well, infinite) horizontal wall, on 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..."
|
||||
)
|
||||
NATIVE(among(m, moWestHawk, moFallingDog) ? 2 : 0)
|
||||
|
@ -30,7 +30,7 @@ namespace util {
|
||||
|
||||
template <std::size_t I, typename T> struct nth {
|
||||
inline static typename std::tuple_element<I, T>::type
|
||||
get(const T& t) { return std::get<I>(t); };
|
||||
get(const T& t) { return std::get<I>(t); }
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -20,7 +20,7 @@ string euchelp =
|
||||
"You can try many different geometries here. We start by gluing "
|
||||
"n-gons in such a way that k of them meet in every vertex. "
|
||||
"Depending on n and k, this either folds into a sphere, unfolds into a plane, "
|
||||
"or requires a hyperbolic space. The result may be then 'bitrunc' by "
|
||||
"or requires a hyperbolic space. The result may be then 'bitruncated' by "
|
||||
"replacing each vertex by a 2k-gon. Furthermore, you can play "
|
||||
"with quotient geometries. For example, the elliptic geometry is "
|
||||
"obtained from the sphere by making the antipodes be the same point, "
|
||||
@ -28,7 +28,7 @@ string euchelp =
|
||||
"Have fun experimenting! "
|
||||
"Achievements and leaderboards do not work in geometry experiments, "
|
||||
"except some specific ones.\n\n"
|
||||
"In standard geometry (bitrunc or not), you can play the full game, but in other geometries "
|
||||
"In standard geometry (bitruncated or not), you can play the full game, but in other geometries "
|
||||
"you select a particular land. Lands are unlocked by visiting them in this "
|
||||
"session, or permanently by collecting 25 treasure. Try Crossroads in Euclidean "
|
||||
"or chaos mode in non-standard non-quotient hyperbolic to visit many lands. "
|
||||
|
10
help.cpp
10
help.cpp
@ -495,11 +495,13 @@ EX string generateHelpForItem(eItem it) {
|
||||
for(auto& oi: orbinfos) {
|
||||
if(treasureType(oi.l) == it) {
|
||||
if(oi.gchance > 0) {
|
||||
help += "\n\n";
|
||||
help += XLAT("\n\nOrb unlocked: %1", oi.orb);
|
||||
describeOrb(help, oi);
|
||||
}
|
||||
else if(oi.l == cwt.at->land || inv::on) {
|
||||
help += XLAT("\n\nSecondary orb: %1", oi.orb);
|
||||
help += "\n\n";
|
||||
help += XLAT("Secondary orb: %1", oi.orb);
|
||||
describeOrb(help, oi);
|
||||
}
|
||||
}
|
||||
@ -1177,8 +1179,12 @@ EX void gotoHelpFor(eLand l) {
|
||||
else listbeasts();
|
||||
|
||||
if(l == laTortoise)
|
||||
help_extensions.push_back(help_extension{'t', XLAT("Galápagos shading"), [] () {
|
||||
help_extensions.push_back(help_extension{'s', XLAT("Galápagos shading"), [] () {
|
||||
tortoise::shading_enabled = !tortoise::shading_enabled;
|
||||
}});
|
||||
|
||||
help_extensions.push_back(help_extension{'w', XLAT("wiki"), [l] () {
|
||||
open_wiki(linf[l].name);
|
||||
}});
|
||||
}
|
||||
}
|
||||
|
9
hud.cpp
9
hud.cpp
@ -173,10 +173,10 @@ int glyphflags(int gid) {
|
||||
return f;
|
||||
}
|
||||
|
||||
EX bool graphglyph() {
|
||||
EX bool graphglyph(bool isMonster) {
|
||||
// if(GDIM == 3) return false;
|
||||
if(vrhr::active()) return false;
|
||||
return vid.graphglyph == 2 || (vid.graphglyph == 1 && vid.monmode);
|
||||
return vid.graphglyph == 2 || (vid.graphglyph == 1 && (isMonster ? mmmon : mmitem));
|
||||
}
|
||||
|
||||
bool displayglyph(int cx, int cy, int buttonsize, char glyph, color_t color, int qty, int flags, int id) {
|
||||
@ -190,10 +190,11 @@ bool displayglyph(int cx, int cy, int buttonsize, char glyph, color_t color, int
|
||||
int d = ticks - glasttime[id];
|
||||
double zoom = (d <= 250 && d >= 0) ? 1.25 - .001 * d : 1;
|
||||
glsize = int(glsize * zoom);
|
||||
bool isMonster = (id >= ittypes);
|
||||
|
||||
if(graphglyph()) {
|
||||
if(graphglyph(isMonster)) {
|
||||
initquickqueue();
|
||||
if(id >= ittypes) {
|
||||
if(isMonster) {
|
||||
eMonster m = eMonster(id - ittypes);
|
||||
double bsize = buttonsize * 2/3;
|
||||
if(m == moKrakenH) bsize /= 3;
|
||||
|
4
hyper.h
4
hyper.h
@ -26,8 +26,8 @@ namespace hr {
|
||||
|
||||
/** \brief A helper structure that acts as a boolean which is always false. Helpful when disabling stuff with compiler flags. */
|
||||
struct always_false {
|
||||
operator bool() const { return false; };
|
||||
bool operator = (bool b) const { return b; };
|
||||
operator bool() const { return false; }
|
||||
bool operator = (bool b) const { return b; }
|
||||
};
|
||||
|
||||
/** \brief placate GCC's overzealous -Wunused-result */
|
||||
|
@ -534,7 +534,7 @@ EX namespace inv {
|
||||
ld py = current_display->ycenter + pos.second * rad3;
|
||||
int icol = iinf[o].color;
|
||||
if(!remaining[i]) icol = gradient(icol, 0, 0, .5, 1);
|
||||
bool gg = graphglyph();
|
||||
bool gg = graphglyph(false);
|
||||
|
||||
if(!hiliteclick) {
|
||||
if(gg) {
|
||||
|
@ -106,7 +106,7 @@ EX bool collectItem(cell *c2, bool telekinesis IS(false)) {
|
||||
string s0 = "";
|
||||
|
||||
if(c2->item == itPalace && items[c2->item] == 12)
|
||||
princess::forceVizier = true;
|
||||
changes.value_set(princess::forceVizier, true);
|
||||
|
||||
if(!cantGetGrimoire(c2, false)) collectMessage(c2, c2->item);
|
||||
if(c2->item == itDodeca && peace::on) peace::simon::extend();
|
||||
|
10
landgen.cpp
10
landgen.cpp
@ -2192,11 +2192,11 @@ EX void giantLandSwitch(cell *c, int d, cell *from) {
|
||||
|
||||
case laMountain:
|
||||
if(d == 7) {
|
||||
if(hrand_monster(50000) < 100)
|
||||
if(hrand_monster(50000) < 100 && !safety)
|
||||
buildIvy(c, 0, 3);
|
||||
else if(hrand_monster(125000) < 100 - celldistAlt(c))
|
||||
else if(hrand_monster(125000) < 100 - celldistAlt(c) && !safety)
|
||||
c->monst = moMonkey;
|
||||
else if(hrand_monster(200000) < min(100, -10*celldistAlt(c)) - celldistAlt(c))
|
||||
else if(hrand_monster(200000) < min(100, -10*celldistAlt(c)) - celldistAlt(c) && !safety)
|
||||
c->monst = moEagle;
|
||||
else if(hrand(100) < 5)
|
||||
c->wall = waPlatform;
|
||||
@ -2333,7 +2333,7 @@ EX void giantLandSwitch(cell *c, int d, cell *from) {
|
||||
c->wall = waRuinWall, c->landparam = 1;
|
||||
}
|
||||
}
|
||||
if(hrand_monster(40000) < kf && !c->monst && !c->wall && !shmup::on) {
|
||||
if(hrand_monster(40000) < kf && !c->monst && !c->wall && !shmup::on && !safety) {
|
||||
cell *c1 = c;
|
||||
cell *c2 = createMov(c1, hrand(c1->type));
|
||||
if(c2->monst || c2->wall) return;
|
||||
@ -2758,7 +2758,7 @@ EX void giantLandSwitch(cell *c, int d, cell *from) {
|
||||
}
|
||||
}
|
||||
|
||||
if(d == 7) {
|
||||
if(d == 7 && !safety) {
|
||||
if(c->wall == waNone) {
|
||||
if(hrand_monster(2000) < ((cwt.at->land == laFrog || items[itFrog]) ? 20 : 0) + (items[itFrog] + yendor::hardness()))
|
||||
c->monst = pick(moFrog, moPhaser, moVaulter);
|
||||
|
@ -715,8 +715,8 @@ S("A typical monster from the Graveyard, who moves through walls.\n\n"
|
||||
S("Necromancers can raise ghosts and zombies from fresh graves.",
|
||||
"Nekromanceři dokážou probouzet duchy a zombie z čerstvých hrobů.")
|
||||
|
||||
S("A creepy monster who follows you everywhere in the Graveyard.",
|
||||
"Děsivý netvor, který tě sleduje po celém Hřbitově.")
|
||||
S("A creepy monster who follows you everywhere in the Graveyard and the Cursed Canyon.",
|
||||
"Děsivý netvor, který tě sleduje po celém Hřbitově.") //TODO UPDATE
|
||||
|
||||
S("People worshipping Cthulhu. They are very dangerous.",
|
||||
"Lidé uctívající Cthulhua. Jsou velmi nebezpeční.")
|
||||
@ -3440,9 +3440,6 @@ S( "This Orb makes you stunningly beautiful. "
|
||||
|
||||
S( "A big, beautiful, magical flower.", "Velká, krásná, magická květina.")
|
||||
|
||||
S("Don't be fooled by beauty, or you will be stabbed if you come too close!",
|
||||
"Nenech se oklamat krásou -- když se moc přiblížíš, můžeš dostat ránu nožem!")
|
||||
|
||||
S("You just cannot stand in place, those roses smell too nicely.",
|
||||
"Nemůžeš zůstat na místě, ty růže příliš krásně voní.")
|
||||
S("Those roses smell too nicely. You have to come towards them.",
|
||||
@ -5758,9 +5755,8 @@ S("see how it ended", "podívej se, jak to skonèilo")
|
||||
// other missing/new things
|
||||
// ------------------------
|
||||
|
||||
S("\n\nOrb unlocked: %1", "\n\nByla odemèena Sféra: %1")
|
||||
S("Orb unlocked: %1", "Byla odemèena Sféra: %1")
|
||||
S("\n\nSecondary orb: %1", "\n\nSekundární Sféra: %1")
|
||||
S("Secondary orb: %1", "Sekundární Sféra: %1")
|
||||
S(" to submerge", " do ponoøení")
|
||||
S(" to surface", " do vynoøení")
|
||||
S("%The1 says, \"not this place, it looks even worse...\"",
|
||||
@ -6727,7 +6723,7 @@ N("Jelly Kingdom", GEN_N, "Království rosolu", "Království rosolu", "Králov
|
||||
|
||||
S("Some of the Slime Beasts have decided to revolt against the color rules in the "
|
||||
"Alchemist Lab. They have changed their shape and consistency, declared independence, and established their own Kingdom.\n\n"
|
||||
"Jellies switch between being a wall and being a monster after every treasure you pick.",
|
||||
"Jellies switch between being a wall and being a monster after every treasure you collect.",
|
||||
|
||||
"Nìkteøí Slizoví netvoøi se rozhodli vzbouøit proti barevným pravidlùm v Alchymistické laboratoøi. Zmìnili svùj tvar a konzistencim vyhlásili nezávislost a založili si své vlastní Království.\n\n"
|
||||
"Kdykoli sebereš nìjaký poklad, rosoly se zmìní ze zdí na netvory a opaènì."
|
||||
@ -7488,15 +7484,11 @@ S("animate parameters", "animace parametrù")
|
||||
S(
|
||||
"Most parameters can be animated simply by using '..' in their editing dialog. "
|
||||
"For example, the value of a parameter set to 0..1 will grow linearly from 0 to 1. "
|
||||
"You can also use functions (e.g. cos(0..2*pi)) and refer to other parameters; "
|
||||
"parameters 'a' and 'b' exist for this purpose. "
|
||||
"See the list below for parameters which are currently animated (or changed).",
|
||||
"You can also use functions (e.g. cos(0..2*pi)) and refer to other parameters.",
|
||||
|
||||
"Vìtšinu parametrù lze animovat jen tím, že v jejich editaèním dialogu napíšeš '..'. "
|
||||
"Tak napøíklad hodnota parametru nastaveného na 0..1 poroste lineárnì od 0 do 1. "
|
||||
"Lze také použít funkce (napø. cos(0..2*pi) a odkazovat na jiné parametry; "
|
||||
"za tímto úèelem existují parametry 'a' a 'b'. "
|
||||
"Viz níže uvedený seznam parametrù, které jsou v souèasné dobì animovány (nebo zmìnìny).")
|
||||
"Lze také použít funkce (napø. cos(0..2*pi) a odkazovat na jiné parametry.")
|
||||
|
||||
// color edit dialog
|
||||
|
||||
@ -7700,7 +7692,7 @@ S("Did you know that it is possible to break a magical sphere into finitely many
|
||||
|
||||
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"
|
||||
S("What on one side looks to be a normal (well, infinite) horizontal wall, on 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á "
|
||||
@ -8160,7 +8152,6 @@ S(
|
||||
S("use the full 3D models", "používej úplné 3D modely")
|
||||
|
||||
S("Z shift", "Z-posuv")
|
||||
S("Eye level", "úroveň očí")
|
||||
S("fixed Y/Z rotation", "stálá Y/Z rotace")
|
||||
|
||||
S("configure FPP automatically", "automatická konfigurace FPP")
|
||||
@ -8948,7 +8939,7 @@ S(
|
||||
"If the pointer length is 0.5m, the object pointed to is 0.5 meter from the controller. "
|
||||
"This is used in situations where the controller is used as a 3D mouse, e.g., "
|
||||
"the drawing tool in three-dimensional geometries. When pointing at two-dimensional surfaces, "
|
||||
"this is not relevant (the pointer is as long as needed to hit the surface.)",
|
||||
"this is not relevant (the pointer is as long as needed to hit the surface).",
|
||||
|
||||
"Pokud je délka ukazatele 0,5 m, je objekt, na který ukazuje, 0,5 metru od ovladače. "
|
||||
"To se používá v situacích, kdy se ovladač používá jako 3D myš, např. "
|
||||
@ -9050,11 +9041,7 @@ S(
|
||||
"x, y, z (hyperboloid/sphere/plane coordinates in non-crystal geometries)\n"
|
||||
"ex, ey, ez (in Euclidean geometries)\n"
|
||||
"x0, x1, x2... (crystal geometry only)\n"
|
||||
"0 is black, 1 is white, rgb(1,0,0) is red, ifp(p-2,1,0) is blue (p=1 for red, 2 for green, 3 for blue)."
|
||||
|
||||
"w (fourth coordinate)\n"
|
||||
"wallif(condition, color)\n"
|
||||
,
|
||||
"0 is black, 1 is white, rgb(1,0,0) is red, ifp(p-2,1,0) is blue (p=1 for red, 2 for green, 3 for blue).",
|
||||
|
||||
"Zde můžeš specifikovat barevný vzor jako funkci políčka. "
|
||||
"Dostupné parametry:\n\n"
|
||||
@ -9062,6 +9049,12 @@ S(
|
||||
"ex, ey, ez (v eukleidovských geometriích)\n"
|
||||
"x0, x1, x2... (pouze v krystalové geometrii)\n"
|
||||
"0 je černá, 1 bílá, rbg(1,0,0) červená, ifp(p-2,1,0) modrá (p=1 pro červenou, 2 pro zelenou, 3 pro modrou)."
|
||||
)
|
||||
|
||||
S(
|
||||
"w (fourth coordinate)\n"
|
||||
"wallif(condition, color)\n",
|
||||
|
||||
"w (čtvrtá souřadnice)\n"
|
||||
"wallif(podmínka, barva)\n"
|
||||
)
|
||||
|
@ -680,8 +680,8 @@ S("A typical monster from the Graveyard, who moves through walls.\n\n"
|
||||
S("Necromancers can raise ghosts and zombies from fresh graves.",
|
||||
"Totenbeschwörer können Geister und Zombies aus frischen Gräbern auferwecken.")
|
||||
|
||||
S("A creepy monster who follows you everywhere in the Graveyard.",
|
||||
"Ein gruseliges Monster das dir über den ganzen Friedhof folgt!")
|
||||
S("A creepy monster who follows you everywhere in the Graveyard and the Cursed Canyon.",
|
||||
"Ein gruseliges Monster das dir über den ganzen Friedhof folgt!") //TODO UPDATE
|
||||
|
||||
S("People worshipping Cthulhu. They are very dangerous.",
|
||||
"Verehrer Cthulhus. Sie sind sehr gefährlich.")
|
||||
@ -2407,7 +2407,7 @@ S("Variants of %the1 are available in the Random Pattern Mode after "
|
||||
S(" kills: %1", " Kills: %1")
|
||||
S(" $$$: %1", " $$$: %1")
|
||||
S(" Hyperstone: %1/%2", " Hypersteine: %1/%2")
|
||||
S(" Hell: %1/9", " Hölle: %1/9")
|
||||
S(" Hell: %1/%2", " Hölle: %1/%2")
|
||||
|
||||
// improved editor
|
||||
// ---------------
|
||||
@ -3228,9 +3228,6 @@ S("This Orb makes you stunningly beautiful. "
|
||||
|
||||
S("A big, beautiful, magical flower.", "Eine große, schöne, magische Blume.")
|
||||
|
||||
S("Don't be fooled by beauty, or you will be stabbed if you come too close!",
|
||||
"Lass dich von Schönheit nicht täuschen - oder du wirst erstochen, wenn du zu nah kommst!")
|
||||
|
||||
S("Each eight turns, each rosebush at distance at most 5 from you will "
|
||||
"release a wave of alluring scent. Creatures on the frontwave "
|
||||
"will move towards where the scent came from. Even if it causes them "
|
||||
|
@ -340,7 +340,7 @@ S("Your score: %1", "Twój wynik: %1")
|
||||
S("Enemies killed: %1", "Potwory pokonane: %1")
|
||||
S("Orbs of Yendor found: %1", "Znalezione Sfery Yendoru: %1")
|
||||
S("Collect %1 $$$ to access more worlds", "Znajdź %1 $$$, by iść do nowych krain")
|
||||
S("Collect at least %1 treasures in each of 9 types to access Hell", "Znajdź po %1 skarbów w %2 typach, by się dostać do Piekła")
|
||||
S("Collect at least %1 treasures in each of %2 types to access Hell", "Znajdź po %1 skarbów w %2 typach, by się dostać do Piekła")
|
||||
S("Collect at least %1 Demon Daisies to find the Orbs of Yendor", "Znajdź %1 Czarciego Ziela, by znaleźć Sfery Yendoru")
|
||||
S("Hyperstone Quest: collect at least %3 %1 in %the2", "Misja alternatywna: znajdź co najmniej %3 skarbów %abl2")
|
||||
S("Hyperstone Quest completed!", "Misja alternatywna zakończona!")
|
||||
@ -693,8 +693,8 @@ S("A typical monster from the Graveyard, who moves through walls.\n\n"
|
||||
S("Necromancers can raise ghosts and zombies from fresh graves.",
|
||||
"Nekromanci wzbudzają duchy i zombie ze świeżych grobów.")
|
||||
|
||||
S("A creepy monster who follows you everywhere in the Graveyard.",
|
||||
"Ten odrażający potwór chodzi za Tobą po cmentarzu!")
|
||||
S("A creepy monster who follows you everywhere in the Graveyard and the Cursed Canyon.",
|
||||
"Ten odrażający potwór chodzi za Tobą po cmentarzu!") //TODO UPDATE
|
||||
|
||||
S("People worshipping Cthulhu. They are very dangerous.",
|
||||
"Wyznawcy Cthulhu, bardzo niebiezpieczni.")
|
||||
@ -1693,7 +1693,7 @@ S("Hell has these lakes everywhere... They are shaped like evil stars, and fille
|
||||
|
||||
S("hardcore mode", "tryb hardcore")
|
||||
|
||||
S("One wrong move, and it is game over!", "Jeden fałszywy ruch i koniec gry!")
|
||||
S("One wrong move and it is game over!", "Jeden fałszywy ruch i koniec gry!")
|
||||
S("Not so hardcore?", "Hardkor to nie to?")
|
||||
|
||||
// Shoot'em up Mode
|
||||
@ -3376,10 +3376,6 @@ S( "This Orb makes you stunningly beautiful. "
|
||||
|
||||
S( "A big, beautiful, magical flower.", "Duży, piękny, magiczny kwiat.")
|
||||
|
||||
S("Don't be fooled by beauty, or you will be stabbed if you come too close!",
|
||||
"Nie daj się zwieść urodzie, bo jak się za bardzo zbliżysz, możesz zostać ugodzon%y0 nożem!")
|
||||
|
||||
|
||||
S(
|
||||
"Each eight turns, each rosebush at distance at most 5 from you will "
|
||||
"release a wave of alluring scent. Creatures on the frontwave "
|
||||
@ -5694,9 +5690,8 @@ S(" (%1 more digits)", " (jeszcze cyfr: %1)")
|
||||
S("see how it ended", "jak się skończyło")
|
||||
|
||||
// other missing/new things
|
||||
S("\n\nOrb unlocked: %1", "\n\nOdblokowana Sfera: %1")
|
||||
S("Orb unlocked: %1", "Odblokowana Sfera: %1")
|
||||
S("\n\nSecondary orb: %1", "\n\nDodatkowa Sfera: %1")
|
||||
S("Secondary orb: %1", "Dodatkowa Sfera: %1")
|
||||
S(" to submerge", " do zanurzenia")
|
||||
S(" to surface", " do wynurzenia")
|
||||
S("%The1 says, \"not this place, it looks even worse...\"",
|
||||
@ -6566,7 +6561,7 @@ N("Jelly Kingdom", GEN_N, "Królestwo Galarety", "Królestwa Galarety", "Króles
|
||||
|
||||
S("Some of the Slime Beasts have decided to revolt against the color rules in the "
|
||||
"Alchemist Lab. They have changed their shape and consistency, declared independence, and established their own Kingdom.\n\n"
|
||||
"Jellies switch between being a wall and being a monster after every treasure you pick.",
|
||||
"Jellies switch between being a wall and being a monster after every treasure you collect.",
|
||||
|
||||
"Część Mazistych Stworów z Laboratorium postanowiło zbuntować się przeciwko regułom koloru w "
|
||||
"Laboratorium. Zmieniły kształt i konsystencję, ogłosiły niepodległość i stworzyły własne Królestwo.\n\n"
|
||||
@ -7237,15 +7232,11 @@ S("animate parameters", "animacja parametrów")
|
||||
S(
|
||||
"Most parameters can be animated simply by using '..' in their editing dialog. "
|
||||
"For example, the value of a parameter set to 0..1 will grow linearly from 0 to 1. "
|
||||
"You can also use functions (e.g. cos(0..2*pi)) and refer to other parameters; "
|
||||
"parameters 'a' and 'b' exist for this purpose. "
|
||||
"See the list below for parameters which are currently animated (or changed).",
|
||||
"You can also use functions (e.g. cos(0..2*pi)) and refer to other parameters.",
|
||||
|
||||
"Większość parametrów może być animowana w prosty sposób, przez wpisanie '..' w ich pole edycji. "
|
||||
"Przykładowo, wartość parametru ustawiona na 0..1 będzie rosła liniowa od 0 do 1. "
|
||||
"Możesz też używać funkcji (np. cos(0..2*pi)) lub odnosić się do innych parametrów; "
|
||||
"parametry 'a' i 'b' istnieją w tym celu. Poniżej lista parametrów obecnie "
|
||||
"animowanych (lub zmienionych).")
|
||||
"Możesz też używać funkcji (np. cos(0..2*pi)) lub odnosić się do innych parametrów.")
|
||||
|
||||
// color edit dialog
|
||||
|
||||
@ -7443,7 +7434,7 @@ S("Did you know that it is possible to break a magical sphere into finitely many
|
||||
|
||||
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"
|
||||
S("What on one side looks to be a normal (well, infinite) horizontal wall, on 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 "
|
||||
@ -7878,7 +7869,6 @@ S(
|
||||
S("use the full 3D models", "użyj pełnych modeli 3D")
|
||||
|
||||
S("Z shift", "przesunięcie Z")
|
||||
S("Eye level", "poziom oka")
|
||||
S("fixed Y/Z rotation", "ustalona rotacja Y/Z")
|
||||
|
||||
S("configure FPP automatically", "automatycznie skonfiguruj FPP")
|
||||
@ -8667,7 +8657,7 @@ S(
|
||||
"If the pointer length is 0.5m, the object pointed to is 0.5 meter from the controller. "
|
||||
"This is used in situations where the controller is used as a 3D mouse, e.g., "
|
||||
"the drawing tool in three-dimensional geometries. When pointing at two-dimensional surfaces, "
|
||||
"this is not relevant (the pointer is as long as needed to hit the surface.).",
|
||||
"this is not relevant (the pointer is as long as needed to hit the surface).",
|
||||
|
||||
"Jeśli długość wskaźnika to 0.5m, wskazywany punkt jest 0.5 metra od kontrolera. "
|
||||
"Ma to znaczenie, gdy kontroler jest używany jako mysz 3D, np. narzędzie do rysowania w "
|
||||
@ -8781,8 +8771,7 @@ S(
|
||||
|
||||
S(
|
||||
"w (fourth coordinate)\n"
|
||||
"wallif(condition, color)\n"
|
||||
,
|
||||
"wallif(condition, color)\n",
|
||||
|
||||
"w (czwarta współrzędna)\n"
|
||||
"wallif(warunek, kolor)\n"
|
||||
|
@ -343,8 +343,8 @@ S("Your score: %1", "Sua pontuação: %1")
|
||||
S("Enemies killed: %1", "Inimigos mortos: %1")
|
||||
S("Orbs of Yendor found: %1", "Orbes de Yendor encontrados: %1")
|
||||
S("Collect %1 $$$ to access more worlds", "Colete %1 $$$, para acessar novos mundos")
|
||||
S("Collect at least %1 treasures in each of 9 types to access Hell", "Colete pelo menos %1 tesouros de cada um dos 9 tipos para acessar o Inferno")
|
||||
S("Collect at least 10 Demon Daisies to find the Orbs of Yendor", "Colete pelo menos 10 Margaridas Demônio para encontrar os Orbes de Yendor")
|
||||
S("Collect at least %1 treasures in each of %2 types to access Hell", "Colete pelo menos %1 tesouros de cada um dos %2 tipos para acessar o Inferno")
|
||||
S("Collect at least %1 Demon Daisies to find the Orbs of Yendor", "Colete pelo menos %1 Margaridas Demônio para encontrar os Orbes de Yendor")
|
||||
S("Hyperstone Quest: collect at least %3 %1 in %the2", "Missão da Pedra do Ímpeto: colete pelo menos %3 %1 no-a %abl1")
|
||||
S("Hyperstone Quest completed!", "Missão da Pedra do Ímpeto completa!")
|
||||
S("Look for the Orbs of Yendor in Hell or in the Crossroads!", "Procure pelos Orbes de Yendor no Inferno e nas Encruzilhadas!")
|
||||
@ -483,10 +483,10 @@ S(
|
||||
"números mostrados para saber seus significados.\n")
|
||||
|
||||
S(
|
||||
"Move with mouse, num pad, qweadzxc, or hjklyubn. Wait by pressing 's' or '.'. Spin the world with arrows, PageUp/Down, and Home/Space. "
|
||||
"Move with mouse, num pad, qweadzxc, or hjklyubn. Wait by pressing 's' or '.'. Spin the world with arrows, PageUp/Down, and Space. "
|
||||
"To save the game you need an Orb of Safety. Press 'v' for the main menu (configuration, special modes, etc.), ESC for the quest status.\n\n",
|
||||
|
||||
"Mova-se com o mouse, teclado numérico, qweadzxc, ou hjklyubn. Espere apertando 's' ou '.'. Gire o mundo com as setas, PageUp/Down, ou Home/Espaço."
|
||||
"Mova-se com o mouse, teclado numérico, qweadzxc, ou hjklyubn. Espere apertando 's' ou '.'. Gire o mundo com as setas, PageUp/Down, ou Espaço."
|
||||
"Para salvar o jogo você precisa de um Orbe da Segurança. Pressione 'v' para ir ao menu principal (configurações, modos especiais, etc.), ESC para o estado da missão.\n\n")
|
||||
|
||||
S("See more on the website: ", "Veja mais no site: ")
|
||||
@ -721,8 +721,8 @@ S(
|
||||
"Nekromanci wzbudzają duchy i zombie ze świeżych grobów.")
|
||||
|
||||
S(
|
||||
"A creepy monster who follows you everywhere in the Graveyard.",
|
||||
"Ten odrażający potwór chodzi za Tobą po cmentarzu!")
|
||||
"A creepy monster who follows you everywhere in the Graveyard and the Cursed Canyon.",
|
||||
"Ten odrażający potwór chodzi za Tobą po cmentarzu!") //TODO UPDATE
|
||||
|
||||
S(
|
||||
"People worshipping Cthulhu. They are very dangerous.",
|
||||
@ -2610,7 +2610,7 @@ S("Variants of %the1 are available in the Random Pattern Mode after "
|
||||
S(" kills: %1", " zabicia: %1")
|
||||
S(" $$$: %1", " $$$: %1")
|
||||
S(" Hyperstone: %1/%2", " Hiperkamienie: %1/%2")
|
||||
S(" Hell: %1/9", " Piekło: %1/9")
|
||||
S(" Hell: %1/%2", " Piekło: %1/%2")
|
||||
|
||||
// improved editor
|
||||
|
||||
@ -3465,10 +3465,6 @@ S( "This Orb makes you stunningly beautiful. "
|
||||
|
||||
S( "A big, beautiful, magical flower.", "Duży, piękny, magiczny kwiat.")
|
||||
|
||||
S("Don't be fooled by beauty, or you will be stabbed if you come too close!",
|
||||
"Nie daj się zwieść urodzie, bo jak się za bardzo zbliżysz, możesz zostać ugodzon%y0 nożem!")
|
||||
|
||||
|
||||
S(
|
||||
"Each eight turns, each rosebush at distance at most 5 from you will "
|
||||
"release a wave of alluring scent. Creatures on the frontwave "
|
||||
@ -5779,9 +5775,8 @@ S(" (%1 more digits)", " (jeszcze cyfr: %1)")
|
||||
S("see how it ended", "jak się skończyło")
|
||||
|
||||
// other missing/new things
|
||||
S("\n\nOrb unlocked: %1", "\n\nOdblokowana Sfera: %1")
|
||||
S("Orb unlocked: %1", "Odblokowana Sfera: %1")
|
||||
S("\n\nSecondary orb: %1", "\n\nDodatkowa Sfera: %1")
|
||||
S("Secondary orb: %1", "Dodatkowa Sfera: %1")
|
||||
S(" to submerge", " do zanurzenia")
|
||||
S(" to surface", " do wynurzenia")
|
||||
S("%The1 says, \"not this place, it looks even worse...\"",
|
||||
|
@ -342,7 +342,7 @@ S("Your score: %1", "Ваш счёт: %1")
|
||||
S("Enemies killed: %1", "Врагов убито: %1")
|
||||
S("Orbs of Yendor found: %1", "Собрано сфер Йендора: %1")
|
||||
S("Collect %1 $$$ to access more worlds", "Соберите %1 $$$, чтобы открыть новые земли")
|
||||
S("Collect at least %1 treasures in each of 9 types to access Hell", "Соберите хотя бы по %1 сокровищ %2 разных типов, чтобы попасть в Ад")
|
||||
S("Collect at least %1 treasures in each of %2 types to access Hell", "Соберите хотя бы по %1 сокровищ %2 разных типов, чтобы попасть в Ад")
|
||||
S("Collect at least %1 Demon Daisies to find the Orbs of Yendor", "Соберите %1 адских ромашек, чтобы найти сферу Йендора")
|
||||
S("Hyperstone Quest: collect at least %3 %1 in %the2", "Миссия Гиперкамня: соберите %3 драгоценностей в %abl2")
|
||||
S("Hyperstone Quest completed!", "Миссия Гиперкамня закончена!")
|
||||
@ -688,8 +688,8 @@ S("A typical monster from the Graveyard, who moves through walls.\n\n"
|
||||
S("Necromancers can raise ghosts and zombies from fresh graves.",
|
||||
"Некромант может призывать призраков и зомби из свежих могил.")
|
||||
|
||||
S("A creepy monster who follows you everywhere in the Graveyard.",
|
||||
"Пугающий монстр, вечно преследующий Вас на Кладбище.")
|
||||
S("A creepy monster who follows you everywhere in the Graveyard and the Cursed Canyon.",
|
||||
"Пугающий монстр, вечно преследующий Вас на Кладбище.") //TODO UPDATE
|
||||
|
||||
S("People worshipping Cthulhu. They are very dangerous.",
|
||||
"Люди, поклоняющиеся Ктулху. Они довольно опасны.")
|
||||
@ -1263,7 +1263,7 @@ S("You trick %the1.", "Вы победили %a1.")
|
||||
S( "A Witch with a Flash spell. Very dangerous!\n\nLuckily, she never uses the spell if it "
|
||||
"would kill her friends. She could destroy an Evil Golem, though.",
|
||||
"Ведьма с заклинанием вспышки. Очень опасна!\n\nК счастью, она никогда не использует "
|
||||
"заклинание, ели оно убьёт других ведьм. Но големов она может и уничтожить.")
|
||||
"заклинание, если оно убьёт других ведьм. Но големов она может и уничтожить.")
|
||||
|
||||
S("Your Aether powers are drained by %the1!", "Твоя эфирная сила была уменьшена %abl1!")
|
||||
S("As you leave, your powers are drained!", "Покидая землю силы, Вы теряете магию сфер!")
|
||||
@ -1355,7 +1355,7 @@ S("The Grimoires contain many secrets of the Great Old Ones. "
|
||||
"You hope to read them when you return home, and to learn many things. "
|
||||
"The knowledge is valuable to you, but it is rather pointless to try to get "
|
||||
"several copies of the same Grimoire...",
|
||||
"Гримуары содержат много секретов Великих предков Каждый новый круг Храма Ктулху содержит "
|
||||
"Гримуары содержат много секретов Великих предков. Каждый новый круг Храма Ктулху содержит "
|
||||
"новые тома с новыми секретами. Вы можете принести их домой, прочитать и узнать много вещей."
|
||||
"Знание ценно для Вас, но Вам не нужны копии одного Гримуара... "
|
||||
)
|
||||
@ -1420,12 +1420,6 @@ S("Cannot teleport on a monster!", "Нельзя телепортировать
|
||||
S("Cannot teleport on an item!", "Нельзя телепортироваться на предмет!")
|
||||
S("Cannot teleport here!", "Нельзя телепортироваться сюда!")
|
||||
//S("You cannot teleport that far away!", "Вы не можететелепортироваться так далеко!")
|
||||
S("You cannot target that far away!", "Nie możesz celować tak daleko!")
|
||||
S("You cannot target that close!", "Nie możesz celować tak blisko!")
|
||||
S("Cannot cast illusion on an item!", "Nie możesz rzucić iluzji na przedmiot!")
|
||||
S("Cannot cast illusion here!", "Nie możesz rzucić ilzuji tutaj!")
|
||||
S("Cannot cast illusion on a monster!", "Nie możesz rzucić ilzuji na potwora!")
|
||||
S("Cannot throw fire there!", "Nie możesz tego podpalić!")
|
||||
|
||||
Orb("the Dragon", "Дракона")
|
||||
|
||||
@ -1542,7 +1536,7 @@ S(
|
||||
"The forests of Caribbean are too dense to be traversed by humans, "
|
||||
"and they are hard to burn. Many colorful parrots can be found there.",
|
||||
"Карибские леса слишком плотны, чтобы сквозь них мог пройти человек, "
|
||||
"и их трудно поджечь. Много разноуветных попугаев живёт здесь.")
|
||||
"и их трудно поджечь. Много разноцветных попугаев живёт здесь.")
|
||||
|
||||
S("Ye wonder where did th' Pirates find all these riches...",
|
||||
"Интересно, где Пираты нашли эти богатства...")
|
||||
@ -1813,14 +1807,14 @@ S(
|
||||
"Perhaps there used to be a forest here?",
|
||||
|
||||
"Во время отлива на гиперболических берегах можно найти прекрасный Янтарь. "
|
||||
"Може, здесь когда-то был лес?"
|
||||
"Может, здесь когда-то был лес?"
|
||||
)
|
||||
|
||||
Orb("Air", "Воздуха")
|
||||
|
||||
S("This Orb allows you to blow your enemies away.\n\n"
|
||||
"Click a monster to blow it one cell away. It cannot be used against mimics, ghosts, sharks and other monsters restricted to a specific terrain, and multi-tile monsters.",
|
||||
"Эта сфера позволяет Вам сдуват врагов вдаль.\n\n"
|
||||
"Эта сфера позволяет Вам сдувать врагов вдаль.\n\n"
|
||||
"Нажми на монстра, чтобы сдуть его на 1 клетку. Невозможно сдуть мимиков, духов, акул и других монстров, живущих на определённой территории, и монстров из нескольких частей."
|
||||
)
|
||||
|
||||
@ -2097,13 +2091,13 @@ S("Wherever this powerful being goes, the living fjord "
|
||||
|
||||
N("Garnet", GEN_O, "Гранат", "Гранаты", "Гранат", "Гранатом")
|
||||
S("Vikings believe that garnets improve their strength.",
|
||||
"Викинги верятЮ что гранаты дают им силу.")
|
||||
"Викинги верят, что гранаты дают им силу.")
|
||||
|
||||
Orb("the Fish", "Рыбы")
|
||||
S("This Orb lets you dive into the water. While diving, you are able to see and collect underwater treasures, "
|
||||
"while being invisible to monsters yourself. You are afraid of jumping into the water straight from a boat, so usually you won't do it.",
|
||||
"Эта сфера позволяет нырять. Когда Вы ныряете, Вы видите и можете собирать подводные ценности, "
|
||||
"а враги Вас не видят. Но Вы боитесь прягать из лодки прямо в воду.")
|
||||
"а враги Вас не видят. Но Вы боитесь прыгать из лодки прямо в воду.")
|
||||
|
||||
S("%The1 is washed away!", "%a1 смыло водой!")
|
||||
S("%The1 is extinguished!", "%1 гаснет!")
|
||||
@ -2396,7 +2390,7 @@ S("This is the biggest Hypersian Rug you have ever seen! "
|
||||
N("Prince", GEN_M, "Принц", "Принцы", "Принца", "Принцем")
|
||||
N("Princess", GEN_F, "Принцесса", "Принцессы", "Принцессу", "Принцессой")
|
||||
|
||||
S("%1 takes %his1 revenge on %the2!", "%1 будет мстить!")
|
||||
S("%The1 takes %his1 revenge on %the2!", "%1 будет мстить!")
|
||||
S("\"That should teach you to take me seriously!\"",
|
||||
"\"Относись ко мне серьёзно! Будет тебе наука!\"")
|
||||
|
||||
@ -2651,7 +2645,7 @@ S(
|
||||
"эксперименты в покое и уединении. Они изменили направление силы тяжести, "
|
||||
"чтобы сделать попадание сюда труднее.\n\n"
|
||||
"Гравитация работает так: клетка нестабильна, если она пуста, и "
|
||||
"поле под ним не содердит стены. Нельзя перейти с одного нестабильного поля "
|
||||
"поле под ним не содержит стены. Нельзя перейти с одного нестабильного поля "
|
||||
"на другое, иначе как вниз."
|
||||
)
|
||||
|
||||
@ -3465,10 +3459,6 @@ S( "This Orb makes you stunningly beautiful. "
|
||||
|
||||
S( "A big, beautiful, magical flower.", "Большой прекрасный магический цветок.")
|
||||
|
||||
S("Don't be fooled by beauty, or you will be stabbed if you come too close!",
|
||||
"Не будьте обмануты красотой, если не хотите получить удар в спину!")
|
||||
|
||||
|
||||
S(
|
||||
"Each eight turns, each rosebush at distance at most 5 from you will "
|
||||
"release a wave of alluring scent. Creatures on the frontwave "
|
||||
@ -3481,7 +3471,7 @@ S(
|
||||
"волну манящего аромата. Все монстры на пути двигаются к кусту, даже если "
|
||||
"им приходится атаковать союзника или прекрасное существо, пойти в воду, огонь, пропасть "
|
||||
"или в шипы куста. Это не действует на призраков, плющи, каменных змей и "
|
||||
"и монстров, ограниченных своей землёй.")
|
||||
"монстров, ограниченных своей землёй.")
|
||||
|
||||
S(
|
||||
"This land is filled with beautiful, but dangerous, creatures and plants.",
|
||||
@ -3555,7 +3545,7 @@ S("\n\nA Ghost never moves to a cell which is adjacent to another Ghost of the s
|
||||
|
||||
S("You cannot attack diagonally!", "Вы не можете атаковать по-диагонали!")
|
||||
|
||||
Orb("Energy", "Energii")
|
||||
Orb("Energy", "Энергии")
|
||||
|
||||
S( "This Orb halves the power usage of orbs which cost some "
|
||||
"charges with each activation. It even affects the "
|
||||
@ -3606,7 +3596,7 @@ S("key Orb power", "клавиша для силы сферы")
|
||||
|
||||
S("Orb power (target: mouse)", "активировать сферу")
|
||||
S("Orb power (target: facing)", "клавиша для силы сферы")
|
||||
S("You cannot go against the wind!", "Nie możesz iść pod wiatr!")
|
||||
S("You cannot go against the wind!", "Нельзя ходить против ветра!")
|
||||
|
||||
N("warp gate", GEN_F, "врата искривления", "врата искривления", "врата искривления", "вратами искривления")
|
||||
|
||||
@ -3741,7 +3731,7 @@ S("Branches here could bear your weight easily.",
|
||||
N("weak branch", GEN_F, "тонкая ветка", "тонкие ветки", "тонкую ветку", "тонкой веткой")
|
||||
|
||||
S("Branches here will bear you weight, but if you use them to move (not fall) to an unstable place, they will break.",
|
||||
"Эти ветви выдерживают ваш вес, но если из использовать, чтобы пойти (не упасть) на что-то неустойчивое, они сломаются.")
|
||||
"Эти ветви выдерживают ваш вес, но если их использовать, чтобы пойти (не упасть) на что-то неустойчивое, они сломаются.")
|
||||
|
||||
N("canopy", GEN_F, "листва", "листва", "листву", "листвой")
|
||||
|
||||
@ -5844,9 +5834,8 @@ S(" (%1 more digits)", " (ещё цифр: %1)")
|
||||
S("see how it ended", "смотри, как всё закончилось")
|
||||
|
||||
// other missing/new things
|
||||
S("\n\nOrb unlocked: %1", "\n\nОткрыта сфера: %1")
|
||||
S("Orb unlocked: %1", "Открыта сфера: %1")
|
||||
S("\n\nSecondary orb: %1", "\n\nДополнительная сфера: %1")
|
||||
S("Secondary orb: %1", "Дополнительная сфера: %1")
|
||||
S(" to submerge", " на погружение")
|
||||
S(" to surface", " на поверхность")
|
||||
S("%The1 says, \"not this place, it looks even worse...\"",
|
||||
@ -6793,7 +6782,7 @@ N("Jelly Kingdom", GEN_N, "Желейное Королевство", "Желей
|
||||
|
||||
S("Some of the Slime Beasts have decided to revolt against the color rules in the "
|
||||
"Alchemist Lab. They have changed their shape and consistency, declared independence, and established their own Kingdom.\n\n"
|
||||
"Jellies switch between being a wall and being a monster after every treasure you pick.",
|
||||
"Jellies switch between being a wall and being a monster after every treasure you collect.",
|
||||
|
||||
"Часть Живой Слизи выступила против правил цветов в Лаборатории. "
|
||||
"Они изменили свою форму и густоту, провозгласили независимость и образовали свое Королевство.\n\n"
|
||||
|
@ -322,7 +322,7 @@ S("Enemies killed: %1", "Öldürülen Düşmanlar: %1")
|
||||
S("Orbs of Yendor found: %1", "Bulunan Yendor Küresi sayısı: %1")
|
||||
S("Collect %1 $$$ to access more worlds", "%1 $$$ toplayarak başka dünyalara eriş")
|
||||
// S("Collect %1 $$$ to access R'Lyeh and Dry Forest", "60 $$$ toplayarak R'Lyeh ve Kara Ormana eriş.")
|
||||
S("Collect at least %1 treasures in each of 9 types to access Hell", "%2 hazine çeşidinin hepsinden %1'ar tane toplayarak Cehenneme erişebilirsin.")
|
||||
S("Collect at least %1 treasures in each of %2 types to access Hell", "%2 hazine çeşidinin hepsinden %1'ar tane toplayarak Cehenneme erişebilirsin.")
|
||||
S("Collect at least %1 Demon Daisies to find the Orbs of Yendor", "%1 Şeytan Papatyası toplayarak Yendorun Kürelerini bulabilirsin.")
|
||||
S("Hyperstone Quest: collect at least %3 %1 in %the2", "Aşkıntaş Görevi: %2'de en az %3 hazine topla.")
|
||||
S("Hyperstone Quest completed!", "Aşkıntaş görevi tamamlandı.")
|
||||
@ -645,8 +645,8 @@ S("A typical monster from the Graveyard, who moves through walls.\n\n"
|
||||
S("Necromancers can raise ghosts and zombies from fresh graves.",
|
||||
"Ölüçağıranlar mezarlardan hayaletler ve hortlaklar çağırabilirler.")
|
||||
|
||||
S("A creepy monster who follows you everywhere in the Graveyard.",
|
||||
"Seni Mezarlık boyunca takip eden ürpertici bir canavar.")
|
||||
S("A creepy monster who follows you everywhere in the Graveyard and the Cursed Canyon.",
|
||||
"Seni Mezarlık boyunca takip eden ürpertici bir canavar.") //TODO UPDATE
|
||||
|
||||
S("People worshipping Cthulhu. They are very dangerous.",
|
||||
"Cthulhu'ya tapan insanlar. Çok tehlikeliler.")
|
||||
|
@ -186,6 +186,7 @@ EX void showOverview() {
|
||||
else checkmove();
|
||||
cheater++;
|
||||
};
|
||||
dialog::bound_low(0);
|
||||
}
|
||||
}
|
||||
else if(udiv == 3 && umod < walltypes) gotoHelp(generateHelpForWall(eWall(umod)));
|
||||
@ -398,7 +399,7 @@ EX void switchHardcore() {
|
||||
else if(hardcore && canmove) { hardcore = false; }
|
||||
else { hardcore = true; canmove = true; hardcoreAt = turncount; }
|
||||
if(hardcore)
|
||||
addMessage(XLAT("One wrong move, and it is game over!"));
|
||||
addMessage(XLAT("One wrong move and it is game over!"));
|
||||
else
|
||||
addMessage(XLAT("Not so hardcore?"));
|
||||
if(pureHardcore()) popScreenAll();
|
||||
|
@ -593,8 +593,12 @@ EX void wandering() {
|
||||
else if(c->land == laDragon && (items[itDragon] >= 8 || items[itOrbYendor]) && wchance(items[itDragon], 20))
|
||||
c->monst = moFireElemental;
|
||||
|
||||
else if(c->land == laRedRock && wchance(items[itRedGem], 10))
|
||||
c->monst = (hrand(10) || peace::on) ? moRedTroll : moHexSnake;
|
||||
else if(c->land == laRedRock && wchance(items[itRedGem], 10)) {
|
||||
if (hrand(10) || peace::on)
|
||||
c->monst = moRedTroll;
|
||||
else if (!pseudohept(c))
|
||||
c->monst = moHexSnake;
|
||||
}
|
||||
|
||||
else if(c->land == laCaves && wchance(items[itGold], 5))
|
||||
c->monst = hrand(3) ? moTroll : moGoblin;
|
||||
|
25
orbgen.cpp
25
orbgen.cpp
@ -116,7 +116,7 @@ EX vector<orbinfo> orbinfos = {
|
||||
{orbgenflags::S_NAT_NT, laElementalWall, 1500, 4000, itOrbSummon},
|
||||
{orbgenflags::S_NATIVE, laStorms, 1000, 2500, itOrbStunning},
|
||||
{orbgenflags::S_NATIVE, laOvergrown, 1000, 800, itOrbWoods},
|
||||
{orbgenflags::S_GUEST, laOvergrown, 1000, 800, itOrbLuck},
|
||||
{orbgenflags::S_GUEST, laOvergrown, 1000, 0, itOrbLuck},
|
||||
{orbgenflags::S_NATIVE, laWhirlwind, 1250, 3000, itOrbAir},
|
||||
{orbgenflags::S_NATIVE, laHaunted, 1000, 5000, itOrbUndeath},
|
||||
{orbgenflags::S_NATIVE, laClearing, 5000, 5000, itOrbFreedom},
|
||||
@ -240,11 +240,6 @@ EX eOrbLandRelation getOLR(eItem it, eLand l) {
|
||||
if(it == itOrbDigging && l == laKraken) return olrUseless;
|
||||
if(it == itOrbIllusion && l == laKraken) return olrUseless;
|
||||
|
||||
if(it == itOrbSlaying && !among(l,
|
||||
laMirror, laHell, laEmerald, laDryForest, laCamelot, laPalace, laStorms, laRose, laTortoise, laBurial, laDungeon, laReptile,
|
||||
laPrairie, laBull, laVolcano, laTerracotta, laRuins, laVariant, laEclectic, laBrownian))
|
||||
return olrUseless;
|
||||
|
||||
if(it == itOrbYendor && among(l, laWhirlwind, laWestWall)) return olrUseless;
|
||||
|
||||
if(it == itOrbLife && (l == laKraken)) return olrUseless;
|
||||
@ -276,6 +271,8 @@ EX eOrbLandRelation getOLR(eItem it, eLand l) {
|
||||
return olrUseless;
|
||||
if(it == itOrbLuck && l == laMountain)
|
||||
return olrUseless;
|
||||
if(it == itOrbLuck && l == laWestWall)
|
||||
return olrUseless;
|
||||
if(it == itOrbLuck && l == laCamelot)
|
||||
return olrUseless;
|
||||
if(it == itOrbLuck && l == laHaunted)
|
||||
@ -298,6 +295,11 @@ EX eOrbLandRelation getOLR(eItem it, eLand l) {
|
||||
if(isCrossroads(l) || l == laOcean)
|
||||
return olrHub;
|
||||
|
||||
if(it == itOrbSlaying && !among(l,
|
||||
laMirror, laHell, laEmerald, laDryForest, laCamelot, laPalace, laStorms, laRose, laTortoise, laBurial, laDungeon, laReptile,
|
||||
laPrairie, laBull, laVolcano, laTerracotta, laRuins, laVariant, laEclectic, laBrownian))
|
||||
return olrUseless;
|
||||
|
||||
if(l == laCocytus)
|
||||
if(it == itOrbDragon || it == itOrbFire || it == itOrbFlash || it == itOrbLightning)
|
||||
return olrDangerous;
|
||||
@ -326,6 +328,14 @@ EX eOrbLandRelation getOLR(eItem it, eLand l) {
|
||||
return olrUseless;
|
||||
}
|
||||
|
||||
if(it == itOrbWoods && (l == laWarpSea || l == laWarpCoast))
|
||||
return olrDangerous;
|
||||
|
||||
if(it == itOrbWoods && !among(l,
|
||||
laDryForest, laWineyard, laCaribbean, laOvergrown, laHaunted, laHauntedWall, laHauntedBorder, laTortoise, laFrog, laEclectic,
|
||||
laVariant))
|
||||
return olrUseless;
|
||||
|
||||
if(it == itShard) {
|
||||
if(l == laDesert || l == laIce || l == laJungle || l == laGraveyard ||
|
||||
l == laRlyeh || l == laHell || l == laDryForest || l == laWineyard ||
|
||||
@ -395,6 +405,9 @@ EX eOrbLandRelation getOLR(eItem it, eLand l) {
|
||||
return olrForbidden;
|
||||
}
|
||||
|
||||
if(l == laTerracotta && it == itOrbFriend)
|
||||
return olrDangerous;
|
||||
|
||||
return olrPrize25;
|
||||
}
|
||||
|
||||
|
9
orbs.cpp
9
orbs.cpp
@ -1039,10 +1039,10 @@ void poly_attack(cell *dest) {
|
||||
eMonster orig = dest->monst;
|
||||
auto polymonsters = {
|
||||
moYeti, moRunDog, moRanger,
|
||||
moDesertman, moMonkey, moCultist,
|
||||
moMonkey, moCultist,
|
||||
moFallingDog, moVariantWarrior, moFamiliar, moOrangeDog,
|
||||
moRedFox, moFalsePrincess, moResearcher,
|
||||
moNarciss, moJiangshi,
|
||||
moNarciss,
|
||||
};
|
||||
int ssf = 0;
|
||||
eMonster target = *(polymonsters.begin() + hrand(isize(polymonsters)));
|
||||
@ -1189,7 +1189,7 @@ EX int check_phase(cell *cf, cell *ct, flagtype flags, cell*& jumpthru) {
|
||||
forCellCM(c2, cf) {
|
||||
if(isNeighbor(c2, ct) && !nonAdjacent(cf, c2) && !nonAdjacent(c2, ct)) {
|
||||
jumpthru = c2;
|
||||
if(passable(ct, cf, P_ISPLAYER | P_PHASE)) {
|
||||
if(passable(ct, cf, flags | P_PHASE)) {
|
||||
partial = 2;
|
||||
if(c2->monst || (isWall(c2) && c2->wall != waShrub)) {
|
||||
return 3;
|
||||
@ -1246,7 +1246,7 @@ EX eItem targetRangedOrb(cell *c, orbAction a) {
|
||||
if(rosedist(cwt.at) == 1) {
|
||||
int r = rosemap[cwt.at];
|
||||
int r2 = rosemap[c];
|
||||
if(r2 <= r) {
|
||||
if(r2 <= r && !markOrb(itOrbBeauty)) {
|
||||
if(a == roKeyboard || a == roMouseForce )
|
||||
addMessage(XLAT("Those roses smell too nicely. You can only target cells closer to them!"));
|
||||
return itNone;
|
||||
@ -1574,7 +1574,6 @@ EX int orbcharges(eItem it) {
|
||||
return inv::on ? 150 : 50;
|
||||
case itOrbWinter: // "pickup-winter"
|
||||
return inv::on ? 45 : 30;
|
||||
break;
|
||||
case itOrbBeauty:
|
||||
case itOrbEmpathy:
|
||||
case itOrbFreedom:
|
||||
|
@ -1744,7 +1744,7 @@ EX namespace patterns {
|
||||
try {
|
||||
return ep.parse();
|
||||
}
|
||||
catch(hr_parse_exception& ex) {
|
||||
catch(hr_parse_exception&) {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
@ -1497,7 +1497,8 @@ EX void swordAttackStatic() {
|
||||
EX int plague_kills;
|
||||
|
||||
EX void spread_plague(cell *mf, cell *mt, int dir, eMonster who) {
|
||||
if(!(who == moPlayer ? markOrb(itOrbPlague) : markEmpathy(itOrbPlague))) return;
|
||||
if(!items[itOrbPlague]) return;
|
||||
if(who != moPlayer && !items[itOrbEmpathy]) return;
|
||||
forCellEx(mx, mt) if(celldistance(mx, mf) > celldistance(mx, mf->modmove(dir)) && celldistance(mx, mf) <= 4) {
|
||||
sideAttackAt(mf, dir, mx, who, itOrbPlague, mt);
|
||||
}
|
||||
|
@ -183,6 +183,7 @@ EX void initgame() {
|
||||
|
||||
if(firstland == laOceanWall) firstland = laOcean;
|
||||
if(firstland == laHauntedWall) firstland = laGraveyard;
|
||||
if(firstland == laHaunted && !tactic::on) firstland = laGraveyard;
|
||||
if(firstland == laMercuryRiver) firstland = laTerracotta;
|
||||
if(firstland == laMountain && !tactic::on) firstland = laJungle;
|
||||
if(firstland == laPrincessQuest) firstland = laPalace;
|
||||
|
2
tour.cpp
2
tour.cpp
@ -840,7 +840,7 @@ EX slide default_slides[] = {
|
||||
QUICKFIND {
|
||||
return (l == laBurial && !items[itOrbSword]);
|
||||
};
|
||||
SHOWLAND ( l == laCrossroads || l == laBurial );
|
||||
SHOWLAND ( l == laRlyeh || l == laCrossroads || l == laBurial );
|
||||
}
|
||||
},
|
||||
{pcg+"Periodic patterns", 30, LEGAL::UNLIMITED | USE_SLIDE_NAME,
|
||||
|
15
util.cpp
15
util.cpp
@ -724,4 +724,19 @@ EX void open_url(string s) {
|
||||
#endif
|
||||
}
|
||||
|
||||
const char *urlhex = "0123456789ABCDEF";
|
||||
EX void open_wiki(const char *title) {
|
||||
string url = "https://hyperrogue.miraheze.org/wiki/";
|
||||
unsigned char c;
|
||||
for (size_t i = 0; (c = title[i]); ++i) {
|
||||
if (('0' <= c && c <= '9') || ('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z') || c == '_' || c == '-')
|
||||
url += c;
|
||||
else if (c == ' ')
|
||||
url += "_";
|
||||
else
|
||||
url += string("%") + urlhex[c/16] + urlhex[c%16];
|
||||
}
|
||||
open_url(url);
|
||||
}
|
||||
|
||||
}
|
||||
|
2
vr.cpp
2
vr.cpp
@ -1336,7 +1336,7 @@ EX void show_vr_settings() {
|
||||
"If the pointer length is 0.5m, the object pointed to is 0.5 meter from the controller. "
|
||||
"This is used in situations where the controller is used as a 3D mouse, e.g., "
|
||||
"the drawing tool in three-dimensional geometries. When pointing at two-dimensional surfaces, "
|
||||
"this is not relevant (the pointer is as long as needed to hit the surface.)."
|
||||
"this is not relevant (the pointer is as long as needed to hit the surface)."
|
||||
));
|
||||
});
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user