mirror of
https://github.com/AquariaOSE/Aquaria.git
synced 2024-12-25 14:15:46 +00:00
Merge branch 'master' of /home/fg/fgone/Aquaria_fg_clean
This commit is contained in:
commit
e09a4c13ef
27 changed files with 598 additions and 94 deletions
|
@ -168,6 +168,15 @@ IngredientType Continuity::getIngredientTypeFromName(const std::string &name) co
|
|||
return IT_NONE;
|
||||
}
|
||||
|
||||
std::string Continuity::getIngredientDisplayName(const std::string& name) const
|
||||
{
|
||||
IngredientNameMap::const_iterator it = ingredientDisplayNames.find(name);
|
||||
if (it != ingredientDisplayNames.end())
|
||||
return it->second;
|
||||
|
||||
return splitCamelCase(name);
|
||||
}
|
||||
|
||||
IngredientData *Continuity::getIngredientHeldByIndex(int idx) const
|
||||
{
|
||||
if (idx < 0 || idx >= ingredients.size()) return 0;
|
||||
|
@ -191,6 +200,7 @@ void Recipe::clear()
|
|||
types.clear();
|
||||
names.clear();
|
||||
result = "";
|
||||
resultDisplayName = "";
|
||||
known = false;
|
||||
}
|
||||
|
||||
|
@ -857,13 +867,6 @@ std::string Continuity::getIngredientAffectsString(IngredientData *data)
|
|||
return getAllIEString(data);
|
||||
}
|
||||
|
||||
std::string Continuity::getIngredientDescription(IngredientEffectType type)
|
||||
{
|
||||
int t = (int)type;
|
||||
if (t < 0 || t >= ingredientDescriptions.size()) return "";
|
||||
return ingredientDescriptions[t].text;
|
||||
}
|
||||
|
||||
void Continuity::loadTreasureData()
|
||||
{
|
||||
treasureData.clear();
|
||||
|
@ -900,20 +903,6 @@ void Continuity::loadIngredientData(const std::string &file)
|
|||
{
|
||||
std::string line, name, gfx, type, effects;
|
||||
|
||||
ingredientDescriptions.clear();
|
||||
|
||||
/*
|
||||
int num;
|
||||
InStream in2("data/ingredientdescriptions.txt");
|
||||
while (std::getline(in2, line))
|
||||
{
|
||||
IngredientDescription desc;
|
||||
std::istringstream inLine(line);
|
||||
inLine >> num >> desc.text;
|
||||
ingredientDescriptions.push_back(desc);
|
||||
}
|
||||
*/
|
||||
|
||||
clearIngredientData();
|
||||
recipes.clear();
|
||||
|
||||
|
@ -1060,7 +1049,6 @@ void Continuity::loadIngredientData(const std::string &file)
|
|||
Recipe r;
|
||||
while (in >> name)
|
||||
{
|
||||
r.result = name;
|
||||
if (name == "+")
|
||||
{
|
||||
continue;
|
||||
|
@ -1073,10 +1061,13 @@ void Continuity::loadIngredientData(const std::string &file)
|
|||
else
|
||||
{
|
||||
if (quitNext)
|
||||
{
|
||||
r.result = name;
|
||||
r.resultDisplayName = getIngredientDisplayName(name);
|
||||
}
|
||||
else
|
||||
{
|
||||
IngredientType it = dsq->continuity.getIngredientTypeFromName(name);
|
||||
IngredientType it = getIngredientTypeFromName(name);
|
||||
if (it == IT_NONE)
|
||||
{
|
||||
r.addName(name);
|
||||
|
@ -1101,6 +1092,24 @@ void Continuity::loadIngredientData(const std::string &file)
|
|||
in.close();
|
||||
}
|
||||
|
||||
void Continuity::loadIngredientDisplayNames(const std::string& file)
|
||||
{
|
||||
InStream in(file);
|
||||
if (!in)
|
||||
return;
|
||||
|
||||
std::string line, name, text;
|
||||
while (std::getline(in, line))
|
||||
{
|
||||
size_t pos = line.find(' ');
|
||||
if (pos == std::string::npos)
|
||||
continue;
|
||||
name = line.substr(0, pos);
|
||||
text = line.substr(pos + 1);
|
||||
ingredientDisplayNames[name] = text;
|
||||
}
|
||||
}
|
||||
|
||||
void Continuity::learnFormUpgrade(FormUpgradeType form)
|
||||
{
|
||||
formUpgrades[form] = true;
|
||||
|
@ -3231,12 +3240,23 @@ void Continuity::reset()
|
|||
|
||||
//load ingredients
|
||||
|
||||
ingredientDisplayNames.clear();
|
||||
|
||||
loadIngredientDisplayNames("data/ingredientnames.txt");
|
||||
|
||||
std::string fname = dsq->user.localisePath("data/ingredientnames.txt");
|
||||
loadIngredientDisplayNames(fname);
|
||||
|
||||
if(dsq->mod.isActive())
|
||||
{
|
||||
fname = dsq->user.localisePath(dsq->mod.getPath() + "ingredientnames.txt", dsq->mod.getPath());
|
||||
loadIngredientDisplayNames(fname);
|
||||
}
|
||||
|
||||
ingredientDescriptions.clear();
|
||||
ingredientData.clear();
|
||||
recipes.clear();
|
||||
|
||||
std::string fname;
|
||||
|
||||
if(dsq->mod.isActive())
|
||||
{
|
||||
//load mod ingredients
|
||||
|
|
|
@ -485,33 +485,38 @@ void DSQ::loadFonts()
|
|||
|
||||
destroyFonts();
|
||||
|
||||
font.load("data/font-small.glf", 1, false);
|
||||
std::string file = user.localisePath("data/font-small.glf");
|
||||
|
||||
font.load(file, 1, false);
|
||||
font.fontTopColor = Vector(0.9,0.9,1);
|
||||
font.fontBtmColor = Vector(0.5,0.8,1);
|
||||
font.overrideTexture = core->addTexture("font");
|
||||
|
||||
smallFont.load("data/font-small.glf", 0.6, false);
|
||||
smallFont.load(file, 0.6, false);
|
||||
smallFont.fontTopColor = Vector(0.9,0.9,1);
|
||||
smallFont.fontBtmColor = Vector(0.5,0.8,1);
|
||||
smallFont.overrideTexture = core->addTexture("font");
|
||||
|
||||
smallFontRed.load("data/font-small.glf", 0.6, false);
|
||||
smallFontRed.load(file, 0.6, false);
|
||||
smallFontRed.fontTopColor = Vector(1,0.9,0.9);
|
||||
smallFontRed.fontBtmColor = Vector(1,0.8,0.5);
|
||||
smallFontRed.overrideTexture = core->addTexture("font");
|
||||
|
||||
subsFont.load("data/font-small.glf", 0.5, false);
|
||||
subsFont.load(file, 0.5, false);
|
||||
subsFont.fontTopColor = Vector(1,1,1);
|
||||
subsFont.fontBtmColor = Vector(0.5,0.8,1);
|
||||
subsFont.overrideTexture = core->addTexture("font");
|
||||
|
||||
goldFont.load("data/font-small.glf", 1, false);
|
||||
goldFont.load(file, 1, false);
|
||||
goldFont.fontTopColor = Vector(1,0.9,0.5);
|
||||
goldFont.fontBtmColor = Vector(0.6,0.5,0.25);
|
||||
goldFont.overrideTexture = core->addTexture("font");
|
||||
|
||||
|
||||
file = user.localisePath("data/font.ttf");
|
||||
|
||||
debugLog("ttf...");
|
||||
arialFontData = (unsigned char *)readFile("data/font.ttf", &arialFontDataSize);
|
||||
arialFontData = (unsigned char *)readFile(file, &arialFontDataSize);
|
||||
if (arialFontData)
|
||||
{
|
||||
fontArialSmall .create(arialFontData, arialFontDataSize, 12);
|
||||
|
|
|
@ -696,10 +696,10 @@ struct IngredientEffect
|
|||
class IngredientData
|
||||
{
|
||||
public:
|
||||
IngredientData(const std::string &name, const std::string &gfx, IngredientType type)
|
||||
: name(name), gfx(gfx), amount(0), held(0), type(type), marked(0), sorted(false) {}
|
||||
IngredientData(const std::string &name, const std::string &gfx, IngredientType type);
|
||||
int getIndex() const;
|
||||
const std::string name, gfx;
|
||||
std::string displayName;
|
||||
const IngredientType type;
|
||||
int amount;
|
||||
int held;
|
||||
|
@ -747,6 +747,7 @@ public:
|
|||
std::vector<RecipeType> types;
|
||||
std::vector<RecipeName> names;
|
||||
std::string result;
|
||||
std::string resultDisplayName;
|
||||
|
||||
int index;
|
||||
|
||||
|
@ -1079,9 +1080,11 @@ public:
|
|||
void applyIngredientEffects(IngredientData *data);
|
||||
|
||||
void loadIngredientData(const std::string &file);
|
||||
void loadIngredientDisplayNames(const std::string& file);
|
||||
bool hasIngredients() const { return !ingredients.empty(); }
|
||||
IngredientDatas::size_type ingredientCount() const { return ingredients.size(); }
|
||||
IngredientType getIngredientTypeFromName(const std::string &name) const;
|
||||
std::string getIngredientDisplayName(const std::string& name) const;
|
||||
|
||||
void removeEmptyIngredients();
|
||||
void spawnAllIngredients(const Vector &position);
|
||||
|
@ -1130,7 +1133,6 @@ public:
|
|||
IngredientDescriptions ingredientDescriptions;
|
||||
|
||||
std::string getIngredientAffectsString(IngredientData *data);
|
||||
std::string getIngredientDescription(IngredientEffectType type);
|
||||
|
||||
WorldMap worldMap;
|
||||
|
||||
|
@ -1176,6 +1178,9 @@ private:
|
|||
|
||||
IngredientDatas ingredients; // held ingredients
|
||||
IngredientDatas ingredientData; // all possible ingredients
|
||||
|
||||
typedef std::map<std::string,std::string> IngredientNameMap;
|
||||
IngredientNameMap ingredientDisplayNames;
|
||||
};
|
||||
|
||||
class Profile
|
||||
|
|
|
@ -635,7 +635,7 @@ void FoodSlot::onUpdate(float dt)
|
|||
if ((core->mouse.position - getWorldPosition()).isLength2DIn(16))
|
||||
//if (isCursorIn())
|
||||
{
|
||||
dsq->game->foodLabel->setText(splitCamelCase(ingredient->name));
|
||||
dsq->game->foodLabel->setText(ingredient->displayName);
|
||||
dsq->game->foodLabel->alpha.interpolateTo(1, 0.2);
|
||||
|
||||
dsq->game->foodDescription->setText(dsq->continuity.getIngredientAffectsString(ingredient));
|
||||
|
@ -7946,7 +7946,7 @@ void Game::toggleHelpScreen(bool on, const std::string &label)
|
|||
#endif
|
||||
|
||||
// !!! FIXME: this is such a hack.
|
||||
data += "\n\n[Achievements]\n\n";
|
||||
data += "\n\n" + dsq->continuity.stringBank.get(2032) + "\n\n";
|
||||
dsq->continuity.statsAndAchievements->appendStringData(data);
|
||||
|
||||
helpBG = new Quad;
|
||||
|
@ -11182,7 +11182,7 @@ void Game::learnedRecipe(Recipe *r, bool effects)
|
|||
if (nocasecmp(dsq->getTopStateData()->name,"Game")==0 && !applyingState)
|
||||
{
|
||||
std::ostringstream os;
|
||||
os << dsq->continuity.stringBank.get(23) << " " << splitCamelCase(r->result) << " " << dsq->continuity.stringBank.get(24);
|
||||
os << dsq->continuity.stringBank.get(23) << " " << r->resultDisplayName << " " << dsq->continuity.stringBank.get(24);
|
||||
IngredientData *data = dsq->continuity.getIngredientDataByName(r->result);
|
||||
if (data)
|
||||
{
|
||||
|
|
|
@ -21,6 +21,11 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|||
#include "Game.h"
|
||||
#include "Avatar.h"
|
||||
|
||||
IngredientData::IngredientData(const std::string &name, const std::string &gfx, IngredientType type)
|
||||
: name(name), gfx(gfx), amount(0), held(0), type(type), marked(0), sorted(false)
|
||||
, displayName(dsq->continuity.getIngredientDisplayName(name))
|
||||
{
|
||||
}
|
||||
|
||||
int IngredientData::getIndex() const
|
||||
{
|
||||
|
|
|
@ -26,8 +26,7 @@ namespace RecipeMenuNamespace
|
|||
|
||||
std::string processFoodName(std::string name)
|
||||
{
|
||||
name = splitCamelCase(name);
|
||||
int p = name.find(' ');
|
||||
size_t p = name.find(' ');
|
||||
if (p != std::string::npos)
|
||||
{
|
||||
name[p] = '\n';
|
||||
|
@ -62,7 +61,7 @@ RecipeMenuEntry::RecipeMenuEntry(Recipe *recipe) : RenderObject(), recipe(recipe
|
|||
text->color = 0;
|
||||
text->position = result->position + Vector(0, 18);
|
||||
|
||||
text->setText(processFoodName(data->name));
|
||||
text->setText(processFoodName(data->displayName));
|
||||
addChild(text, PM_POINTER);
|
||||
}
|
||||
|
||||
|
@ -99,7 +98,7 @@ RecipeMenuEntry::RecipeMenuEntry(Recipe *recipe) : RenderObject(), recipe(recipe
|
|||
text->scale = Vector(0.7, 0.7);
|
||||
text->color = 0;
|
||||
text->position = ing[c]->position + Vector(0, 18);
|
||||
text->setText(processFoodName(data->name));
|
||||
text->setText(processFoodName(data->displayName));
|
||||
addChild(text, PM_POINTER);
|
||||
|
||||
if (c < size)
|
||||
|
@ -132,15 +131,16 @@ RecipeMenuEntry::RecipeMenuEntry(Recipe *recipe) : RenderObject(), recipe(recipe
|
|||
|
||||
std::string typeName = recipe->types[i].typeName;
|
||||
|
||||
int loc = typeName.find("Type");
|
||||
size_t loc = typeName.find("Type");
|
||||
if (loc != std::string::npos)
|
||||
{
|
||||
typeName = typeName.substr(0, loc) + typeName.substr(loc+4, typeName.size());
|
||||
}
|
||||
|
||||
typeName = dsq->continuity.getIngredientDisplayName(typeName);
|
||||
|
||||
if (typeName != "Anything")
|
||||
typeName = std::string("Any\n") + typeName;
|
||||
if (recipe->types[i].type != IT_ANYTHING)
|
||||
typeName = dsq->continuity.stringBank.get(2031) + "\n" + typeName;
|
||||
else
|
||||
typeName = std::string("\n") + typeName;
|
||||
|
||||
|
|
|
@ -5755,6 +5755,33 @@ luaFunc(entity_pullEntities)
|
|||
luaReturnNil();
|
||||
}
|
||||
|
||||
// Note that this overrides the generic obj_delete function for entities.
|
||||
// (It's registered as "entity_delete" to Lua)
|
||||
// There is at least one known case where this is necessary:
|
||||
// Avatar::pullTarget does a life check to drop the pointer;
|
||||
// If it's instantly deleted, this will cause a crash.
|
||||
luaFunc(entity_delete_override)
|
||||
{
|
||||
Entity *e = entity(L);
|
||||
if (e)
|
||||
{
|
||||
float time = lua_tonumber(L, 2);
|
||||
if (time == 0)
|
||||
{
|
||||
e->alpha = 0;
|
||||
e->setLife(0);
|
||||
e->setDecayRate(1);
|
||||
}
|
||||
else
|
||||
{
|
||||
e->fadeAlphaWithLife = true;
|
||||
e->setLife(1);
|
||||
e->setDecayRate(1.0f/time);
|
||||
}
|
||||
}
|
||||
luaReturnInt(0);
|
||||
}
|
||||
|
||||
luaFunc(entity_isRidingOnEntity)
|
||||
{
|
||||
Entity *e = entity(L);
|
||||
|
@ -7415,6 +7442,7 @@ static const struct {
|
|||
luaRegister(entity_getVectorToEntity),
|
||||
|
||||
luaRegister(entity_getDistanceToTarget),
|
||||
{ "entity_delete", l_entity_delete_override },
|
||||
luaRegister(entity_move),
|
||||
|
||||
luaRegister(entity_getID),
|
||||
|
|
|
@ -28,6 +28,12 @@ void StringBank::load()
|
|||
{
|
||||
stringMap.clear();
|
||||
|
||||
// First, load the default string banks
|
||||
_load("data/stringbank.txt");
|
||||
if (dsq->mod.isActive())
|
||||
_load(dsq->mod.getPath() + "stringbank.txt");
|
||||
|
||||
// Then, load localized ones. If some entries in these are missing, the default for each is taken.
|
||||
std::string fname = dsq->user.localisePath("data/stringbank.txt");
|
||||
_load(fname);
|
||||
|
||||
|
|
|
@ -141,7 +141,7 @@ unsigned hash(const std::string &string)
|
|||
unsigned hash = 5381;
|
||||
|
||||
for (int i = 0; i < string.size(); i++)
|
||||
hash = ((hash << 5) + hash) + string[i];
|
||||
hash = ((hash << 5) + hash) + (unsigned char)string[i];
|
||||
|
||||
return hash;
|
||||
}
|
||||
|
@ -197,26 +197,32 @@ bool isVectorInRect(const Vector &vec, const Vector &coord1, const Vector &coord
|
|||
return (vec.x > coord1.x && vec.x < coord2.x && vec.y > coord1.y && vec.y < coord2.y);
|
||||
}
|
||||
|
||||
static char charToUpper(char c)
|
||||
{
|
||||
if (c >= 'a' && c <= 'z') c = c - 'a' + 'A';
|
||||
if ((unsigned char)c >= 0xE0 && (unsigned char)c <= 0xFF)
|
||||
c = c - 0xE0 + 0xC0;
|
||||
return c;
|
||||
}
|
||||
|
||||
static char charToLower(char c)
|
||||
{
|
||||
if (c >= 'A' && c <= 'Z') c = c-'A' + 'a';
|
||||
if ((unsigned char)c >= 0xC0 && (unsigned char)c <= 0xDF)
|
||||
c = c-0xC0+0xE0;
|
||||
return c;
|
||||
}
|
||||
|
||||
void stringToUpper(std::string &s)
|
||||
{
|
||||
for (int i = 0; i < s.size(); i++)
|
||||
{
|
||||
if (s[i] >= 'a' && s[i] <= 'z')
|
||||
{
|
||||
s[i] = s[i]-'a' + 'A';
|
||||
}
|
||||
}
|
||||
s[i] = charToUpper(s[i]);
|
||||
}
|
||||
|
||||
void stringToLower(std::string &s)
|
||||
{
|
||||
for (int i = 0; i < s.size(); i++)
|
||||
{
|
||||
if (s[i] >= 'A' && s[i] <= 'Z')
|
||||
{
|
||||
s[i] = s[i]-'A' + 'a';
|
||||
}
|
||||
}
|
||||
s[i] = charToLower(s[i]);
|
||||
}
|
||||
|
||||
void stringToLowerUserData(std::string &s)
|
||||
|
@ -246,9 +252,9 @@ int nocasecmp(const std::string &s1, const std::string &s2)
|
|||
//stop when either string's end has been reached
|
||||
while ( (it1!=s1.end()) && (it2!=s2.end()) )
|
||||
{
|
||||
if(::toupper(*it1) != ::toupper(*it2)) //letters differ?
|
||||
if(charToUpper(*it1) != charToUpper(*it2)) //letters differ?
|
||||
// return -1 to indicate smaller than, 1 otherwise
|
||||
return (::toupper(*it1) < ::toupper(*it2)) ? -1 : 1;
|
||||
return (charToUpper(*it1) < charToUpper(*it2)) ? -1 : 1;
|
||||
//proceed to the next character in each string
|
||||
++it1;
|
||||
++it2;
|
||||
|
@ -261,18 +267,6 @@ int nocasecmp(const std::string &s1, const std::string &s2)
|
|||
}
|
||||
#endif // #if !HAVE_STRCASECMP
|
||||
|
||||
std::string upperCase(const std::string &s1)
|
||||
{
|
||||
std::string ret;
|
||||
std::string::const_iterator it1=s1.begin();
|
||||
while (it1 != s1.end())
|
||||
{
|
||||
ret += ::toupper(*it1);
|
||||
++it1;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
bool exists(const std::string &f, bool makeFatal, bool skipVFS)
|
||||
{
|
||||
bool e = false;
|
||||
|
|
|
@ -139,6 +139,11 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|||
#include "math.h"
|
||||
#include "FileAPI.h"
|
||||
|
||||
#ifdef BBGE_BUILD_LINUX
|
||||
# include <sys/types.h>
|
||||
# include <stdint.h>
|
||||
#endif
|
||||
|
||||
// dumb win32 includes/defines cleanup
|
||||
#undef GetCharWidth
|
||||
|
||||
|
@ -220,7 +225,6 @@ static inline int nocasecmp(const char *s1, const char *s2)
|
|||
#else
|
||||
int nocasecmp(const std::string &s1, const std::string &s2);
|
||||
#endif
|
||||
std::string upperCase(const std::string &s1);
|
||||
Vector getNearestPointOnLine(Vector start, Vector end, Vector point);
|
||||
bool isTouchingLine(Vector lineStart, Vector lineEnd, Vector point, int radius=1, Vector* closest=0);
|
||||
void sizePowerOf2Texture(int &v);
|
||||
|
|
|
@ -18,6 +18,7 @@ You should have received a copy of the GNU General Public License
|
|||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#include "Core.h"
|
||||
|
||||
#if defined(BBGE_BUILD_WINDOWS) && defined(BBGE_BUILD_XINPUT)
|
||||
|
@ -68,6 +69,8 @@ bool tryXInput()
|
|||
|
||||
#ifdef __LINUX__
|
||||
#include <sys/types.h>
|
||||
#include <stdint.h>
|
||||
#include <unistd.h>
|
||||
#include <fcntl.h>
|
||||
#include <linux/input.h>
|
||||
#include <errno.h>
|
||||
|
|
|
@ -240,7 +240,6 @@ public:
|
|||
BB_MAKE_WRITE_OP(uint64);
|
||||
BB_MAKE_WRITE_OP(float);
|
||||
BB_MAKE_WRITE_OP(double);
|
||||
BB_MAKE_WRITE_OP(int);
|
||||
|
||||
ByteBuffer &operator<<(bool value)
|
||||
{
|
||||
|
@ -271,7 +270,6 @@ public:
|
|||
BB_MAKE_READ_OP(uint64);
|
||||
BB_MAKE_READ_OP(float);
|
||||
BB_MAKE_READ_OP(double);
|
||||
BB_MAKE_READ_OP(int);
|
||||
|
||||
ByteBuffer &operator>>(bool &value)
|
||||
{
|
||||
|
|
|
@ -74,16 +74,14 @@ bool GLFont::Create (const char *file_name, int tex, bool loadTexture)
|
|||
vfclose(fh);
|
||||
#endif
|
||||
|
||||
int dummy;
|
||||
|
||||
// Read the header from file
|
||||
header.tex = tex;
|
||||
bb >> dummy; // skip tex field
|
||||
bb >> header.tex_width;
|
||||
bb >> header.tex_height;
|
||||
bb >> header.start_char;
|
||||
bb >> header.end_char;
|
||||
bb >> dummy; // skip chars field
|
||||
bb.skipRead(4); // skip tex field
|
||||
header.tex_width = bb.read<ByteBuffer::uint32>();
|
||||
header.tex_height = bb.read<ByteBuffer::uint32>();
|
||||
header.start_char = bb.read<ByteBuffer::uint32>();
|
||||
header.end_char = bb.read<ByteBuffer::uint32>();
|
||||
bb.skipRead(4); // skip chars field
|
||||
|
||||
//Allocate space for character array
|
||||
num_chars = header.end_char - header.start_char + 1;
|
||||
|
@ -197,7 +195,7 @@ int GLFont::GetEndChar (void)
|
|||
return header.end_char;
|
||||
}
|
||||
//*******************************************************************
|
||||
void GLFont::GetCharSize (int c, std::pair<int, int> *size)
|
||||
void GLFont::GetCharSize (unsigned int c, std::pair<int, int> *size)
|
||||
{
|
||||
//Make sure character is in range
|
||||
if (c < header.start_char || c > header.end_char)
|
||||
|
@ -218,7 +216,7 @@ void GLFont::GetCharSize (int c, std::pair<int, int> *size)
|
|||
}
|
||||
}
|
||||
//*******************************************************************
|
||||
int GLFont::GetCharWidth (int c)
|
||||
int GLFont::GetCharWidth (unsigned int c)
|
||||
{
|
||||
//Make sure in range
|
||||
if (c < header.start_char || c > header.end_char)
|
||||
|
@ -242,7 +240,7 @@ int GLFont::GetCharWidth (int c)
|
|||
}
|
||||
}
|
||||
//*******************************************************************
|
||||
int GLFont::GetCharHeight (int c)
|
||||
int GLFont::GetCharHeight (unsigned int c)
|
||||
{
|
||||
//Make sure in range
|
||||
if (c < header.start_char || c > header.end_char)
|
||||
|
@ -268,7 +266,7 @@ void GLFont::Begin (void)
|
|||
void GLFont::GetStringSize (const std::string &text, std::pair<int, int> *size)
|
||||
{
|
||||
unsigned int i;
|
||||
char c;
|
||||
unsigned char c;
|
||||
GLFontChar *glfont_char;
|
||||
float width;
|
||||
|
||||
|
@ -282,7 +280,7 @@ void GLFont::GetStringSize (const std::string &text, std::pair<int, int> *size)
|
|||
for (i = 0; i < text.size(); i++)
|
||||
{
|
||||
//Make sure character is in range
|
||||
c = (char)text[i];
|
||||
c = (unsigned char)text[i];
|
||||
|
||||
if (c < header.start_char || c > header.end_char)
|
||||
continue;
|
||||
|
|
|
@ -36,9 +36,9 @@ private:
|
|||
//glFont header structure
|
||||
struct
|
||||
{
|
||||
int tex;
|
||||
int tex_width, tex_height;
|
||||
int start_char, end_char;
|
||||
unsigned int tex;
|
||||
unsigned int tex_width, tex_height;
|
||||
unsigned int start_char, end_char;
|
||||
GLFontChar *chars;
|
||||
} header;
|
||||
|
||||
|
@ -70,9 +70,9 @@ public:
|
|||
int GetEndChar (void);
|
||||
|
||||
//Character size retrieval methods
|
||||
void GetCharSize (int c, std::pair<int, int> *size);
|
||||
int GetCharWidth (int c);
|
||||
int GetCharHeight (int c);
|
||||
void GetCharSize (unsigned int c, std::pair<int, int> *size);
|
||||
int GetCharWidth (unsigned int c);
|
||||
int GetCharHeight (unsigned int c);
|
||||
|
||||
void GetStringSize (const std::string &text, std::pair<int, int> *size);
|
||||
|
||||
|
|
|
@ -14,9 +14,12 @@
|
|||
// -------------------------
|
||||
|
||||
|
||||
|
||||
#include <string>
|
||||
|
||||
#ifndef _WIN32
|
||||
# include <stdint.h>
|
||||
#endif
|
||||
|
||||
namespace minihttp
|
||||
{
|
||||
|
||||
|
|
89
files/data/ingredientnames.txt
Normal file
89
files/data/ingredientnames.txt
Normal file
|
@ -0,0 +1,89 @@
|
|||
Anything Anything
|
||||
ArcanePoultice Arcane Poultice
|
||||
Berry Berry
|
||||
BerryIceCream Berry Ice Cream
|
||||
Bulb Bulb
|
||||
ButterySeaLoaf Buttery Sea Loaf
|
||||
Cake Cake
|
||||
ColdBorscht Cold Borscht
|
||||
ColdSoup Cold Soup
|
||||
CrabCake Crab Cake
|
||||
CrabMeat Crab Meat
|
||||
DivineSoup Divine Soup
|
||||
DumboIceCream Dumbo Ice Cream
|
||||
EelOil Eel Oil
|
||||
Egg Egg
|
||||
FishMeat Fish Meat
|
||||
FishOil Fish Oil
|
||||
GlowingEgg Glowing Egg
|
||||
HandRoll Hand Roll
|
||||
HealingPoultice Healing Poultice
|
||||
HeartySoup Hearty Soup
|
||||
HotBorscht Hot Borscht
|
||||
HotSoup Hot Soup
|
||||
IceChunk Ice Chunk
|
||||
IceCream Ice Cream
|
||||
JellyOil Jelly Oil
|
||||
LeadershipRoll Leadership Roll
|
||||
Leaf Leaf
|
||||
LeafPoultice Leaf Poultice
|
||||
LeechingPoultice Leeching Poultice
|
||||
LegendaryCake Legendary Cake
|
||||
Loaf Loaf
|
||||
LoafOfLife Loaf Of Life
|
||||
LongLifeSoup Long Life Soup
|
||||
MagicSoup Magic Soup
|
||||
Meat Meat
|
||||
Mushroom Mushroom
|
||||
Oil Oil
|
||||
Part Part
|
||||
Perogi Perogi
|
||||
PerogiType Perogi Type
|
||||
PlantBulb Plant Bulb
|
||||
PlantLeaf Plant Leaf
|
||||
PlumpPerogi Plump Perogi
|
||||
PoisonLoaf Poison Loaf
|
||||
PoisonSoup Poison Soup
|
||||
Poultice Poultice
|
||||
RainbowMushroom Rainbow Mushroom
|
||||
RainbowSoup Rainbow Soup
|
||||
RedBerry Red Berry
|
||||
RedBulb Red Bulb
|
||||
Roll Roll
|
||||
RottenCake Rotten Cake
|
||||
RottenLoaf Rotten Loaf
|
||||
RottenMeat Rotten Meat
|
||||
RoyalSoup Royal Soup
|
||||
RubberyMeat Rubbery Meat
|
||||
RukhEgg Rukh Egg
|
||||
SeaCake Sea Cake
|
||||
SeaLoaf Sea Loaf
|
||||
SharkFin Shark Fin
|
||||
SharkFinSoup Shark Fin Soup
|
||||
SightPoultice Sight Poultice
|
||||
SmallBone Small Bone
|
||||
SmallEgg Small Egg
|
||||
SmallEye Small Eye
|
||||
SmallTentacle Small Tentacle
|
||||
Soup Soup
|
||||
SpecialBulb Special Bulb
|
||||
SpecialCake Special Cake
|
||||
SpicyMeat Spicy Meat
|
||||
SpicyRoll Spicy Roll
|
||||
SpicySoup Spicy Soup
|
||||
SpiderEgg Spider Egg
|
||||
SpiderRoll Spider Roll
|
||||
SwampCake Swamp Cake
|
||||
SwordfishSteak Swordfish Steak
|
||||
TastyCake Tasty Cake
|
||||
TastyRoll Tasty Roll
|
||||
ToughCake Tough Cake
|
||||
TurtleMeat Turtle Meat
|
||||
TurtleSoup Turtle Soup
|
||||
Vedha'sCure-All Vedha's Cure- All
|
||||
VedhaSeaCrisp Vedha Sea Crisp
|
||||
VeggieCake Veggie Cake
|
||||
VeggieIceCream Veggie Ice Cream
|
||||
VeggieSoup Veggie Soup
|
||||
VolcanoRoll Volcano Roll
|
||||
Zuuna'sPerogi Zuuna's Perogi
|
|
@ -204,3 +204,5 @@
|
|||
2028 |Browse & enable/disable installed patches
|
||||
2029 |Browse mods online
|
||||
2030 |Return to title
|
||||
2031 Any
|
||||
2032 [Achievements]
|
2
files/locales/ru/data/help_bindsong.txt
Normal file
2
files/locales/ru/data/help_bindsong.txt
Normal file
|
@ -0,0 +1,2 @@
|
|||
[Связующая песня]
|
||||
Эта песня позволяет Найе поднимать и двигать округлые предметы, например камни. Спойте эту песню рядом с подходящим предметом, и он будет следовать за Найей, куда бы она ни отправилась.
|
4
files/locales/ru/data/help_end.txt
Normal file
4
files/locales/ru/data/help_end.txt
Normal file
|
@ -0,0 +1,4 @@
|
|||
[Дополнительная помощь]
|
||||
Если вы окончательно запутались и не знаете, что делать дальше, загляните на форум aquaria.su и попросите совета у других игроков. :-)
|
||||
|
||||
~ Это все советы, которые могут вам пригодиться на данный момент. Удачи! ~
|
4
files/locales/ru/data/help_end_mac.txt
Normal file
4
files/locales/ru/data/help_end_mac.txt
Normal file
|
@ -0,0 +1,4 @@
|
|||
[Дополнительная помощь]
|
||||
Если вы окончательно запутались и не знаете, что делать дальше, загляните на форум игры по адресу http://www.snowball.ru/forums/ или http://ambrosiasw.com/forums/ и попросите совета у других игроков. :-)
|
||||
|
||||
~ Это все советы, которые могут вам пригодиться на данный момент. Удачи! ~
|
5
files/locales/ru/data/help_energyform.txt
Normal file
5
files/locales/ru/data/help_energyform.txt
Normal file
|
@ -0,0 +1,5 @@
|
|||
[Форма силы]
|
||||
В форме силы Найя может атаковать своих врагов. Щелкните правой кнопки мыши, и Найя поразит врага разрядом молнии, но если нажать и держать правую кнопку мыши, Найя одновременно выпустит несколько очень мощных разрядов. Есть и другие формы для атаки, попробуйте их разыскать!
|
||||
|
||||
[Возвращение в естественный облик]
|
||||
Чтобы Найя приняла свое естественное обличье, нажмите левую и правую кнопки мыши одновременно - или нажмите клавишу X.
|
3
files/locales/ru/data/help_header.txt
Normal file
3
files/locales/ru/data/help_header.txt
Normal file
|
@ -0,0 +1,3 @@
|
|||
~ Аквария: руководство и помощь ~
|
||||
|
||||
Примечание: нажмите F1, чтобы вызвать этот экран. Вы можете воспользоваться помощью в любое время, когда вы можете управлять персонажем.
|
3
files/locales/ru/data/help_header_mac.txt
Normal file
3
files/locales/ru/data/help_header_mac.txt
Normal file
|
@ -0,0 +1,3 @@
|
|||
~ Аквария: руководство и помощь ~
|
||||
|
||||
Примечание: нажмите {ToggleHelp:k0}, чтобы вызвать этот экран. Вы можете воспользоваться помощью в любое время, когда вы можете управлять персонажем.
|
2
files/locales/ru/data/help_other.txt
Normal file
2
files/locales/ru/data/help_other.txt
Normal file
|
@ -0,0 +1,2 @@
|
|||
[Другие песни и обличья]
|
||||
В водах Акварии вы найдете множество песен и новых обличий. Вам придется узнавать об их возможностях самостоятельно.
|
56
files/locales/ru/data/help_start.txt
Normal file
56
files/locales/ru/data/help_start.txt
Normal file
|
@ -0,0 +1,56 @@
|
|||
[Управление]
|
||||
Все действия в игре "Аквария" можно выполнить при помощи мыши.
|
||||
|
||||
На клавиатуре левой кнопке мыши по умолчанию соответствует клавиша "Пробел", а правой - клавиша "Ctrl".
|
||||
|
||||
[Движение]
|
||||
Нажмите и держите левую кнопку мыши, чтобы плыть. Вы также можете использовать клавиши A-S-D-W или клавиши со стрелками.
|
||||
|
||||
Нажмите и задержите левую кнопку мыши, отведя курсор от Найи, чтобы она сделала рывок вперед. Так Найя сможет ускользнуть от любого преследователя. Если вы играете с клавиатуры, чтобы выполнить рывок, нажмите пробел.
|
||||
|
||||
Если вы нажмете кнопку мыши сразу после рывка, Найя сделает кувырок.
|
||||
|
||||
Если во время рывка на пути у Найи окажется стена, то Найя ухватится за нее. Делая рывок со стены, Найя разгоняется еще сильнее.
|
||||
|
||||
Зажмите левую кнопку мыши и проведите курсором вокруг Найи, и она закружится. Это не только притянет к ней легкие предметы, оказавшиеся рядом, но и создаст волну, которая тоже оказывает некоторое воздействие на окружающих. Чтобы кружиться, также можно нажать клавишу R.
|
||||
|
||||
[Пение]
|
||||
Нажмите и держите правую кнопку мыши или клавишу Ctrl, чтобы начать песню.
|
||||
|
||||
Когда Найя поет, вокруг нее появляются восемь нот. Наведите курсор на ноту, чтобы Найя ее спела. Разные существа Акварии реагируют на пение по-разному.
|
||||
|
||||
[Песни]
|
||||
Во время странствий Найя найдет несколько песен. Выученные песни можно послушать в любой момент в меню игры. Песня - это определенная последовательность нот, которую надо повторять каждый раз, чтобы получить желаемый эффект. Каждая песня по-своему влияет на Найю и окружающий ее мир.
|
||||
|
||||
[Взаимодействие]
|
||||
С некоторыми предметами в мире Акварии Найя может взаимодействовать. При наведении на такой предмет курсор начинает светиться. Нажмите правую кнопку мыши, чтобы с таким предметом что-нибудь сделать. Среди таких предметов кухонный стол Найи, ее постель, камни, на которых Найя может сидеть, а также кристаллы для сохранения игры.
|
||||
|
||||
[Сохранение игры]
|
||||
Щелкните правой кнопкой мыши по красному кристаллу, чтобы вызвать меню сохраненных игр. Выберите ячейку, в которой следует сохранить ваши достижения.
|
||||
|
||||
[Мини-карта]
|
||||
Мини-карта отображает мир, окружающий Найю. Золотым кружком отмечена пещера, в которой живет ваша героиня. Красные кружки показывают, где находятся кристаллы сохранения.
|
||||
|
||||
[Карта мира]
|
||||
Двойной щелчок по мини-карте откроет карту мира. Здесь отмечены все зоны, которые вам уже известны. Щелкнув по зоне, вы увидите, какие ее части вы уже исследовали, а в каких вам еще предстоит побывать.
|
||||
|
||||
Щелкнув по пирамидке в правой части экрана, вы можете поместить на карту собственную отметку. Чтобы убрать отметку, щелкните по ней правой кнопкой мыши.
|
||||
|
||||
Большие круги, которые появляются на карте мира, называются маяками. Они показывают Найе новые места, которые ей предстоит посетить. Если вы запутались и не знаете, куда вам плыть дальше, попытайтесь отыскать на карте мира значок маяка.
|
||||
|
||||
[Еда]
|
||||
Найя может создавать вкусные блюда из самых разных ингредиентов или из уже готовых блюд. Откройте экран кулинарии, перетащите по крайней мере два ингредиента на тарелочки в правой части экрана и щелкните по кнопке "Приготовить". Вы можете в любой момент посмотреть, из чего готовится то или иное блюдо, щелкнув по кнопке "Рецепты".
|
||||
|
||||
Маленькая кнопочка в верхнем левом углу экрана кулинарии позволит вам отсортировать найденные продукты.
|
||||
|
||||
Чтобы съесть блюдо, дважды щелкните по нему левой кнопкой мыши или поднесите его ко рту Найи. Перетащив еду на тарелку с крестиком, вы можете выбросить ее.
|
||||
|
||||
[Питомцы]
|
||||
Вы можете выбрать питомца, который будет сопровождать вас, щелкнув по его икринке на экране питомцев. Если вы хотите путешествовать в одиночестве, щелкните по икринке выбранного питомца еще раз. Каждый из питомцев обладает уникальными способностями.
|
||||
|
||||
[Сокровища]
|
||||
Редкие и необычные предметы, которые привлекают внимание Найи, она называет сокровищами. Отыскав такой предмет, просто прикоснитесь к нему, и он окажется в коллекции Найи. Полный список находок можно в любой момент просмотреть на экране сокровищ. Щелкните по стрелочкам над сокровищами, чтобы перейти к следующей странице.
|
||||
|
||||
Щелкнув по изображению сокровища, вы увидите его описание. Некоторые сокровища можно использовать. Для этого щелкните по соответствующей кнопке на этом же экране.
|
||||
|
||||
В мире Акварии спрятано немало сокровищ. Постарайтесь разыскать их все!
|
88
files/locales/ru/data/ingredientnames.txt
Normal file
88
files/locales/ru/data/ingredientnames.txt
Normal file
|
@ -0,0 +1,88 @@
|
|||
Anything Что угодно
|
||||
ArcanePoultice Тайная припарка
|
||||
Berry Ягода
|
||||
BerryIceCream Ягодное мороженое
|
||||
Bulb Клубень
|
||||
ButterySeaLoaf Масляный морской хлеб
|
||||
ColdBorscht Холодный борщ
|
||||
ColdSoup Холодный суп
|
||||
Cake Кекс
|
||||
CrabCake Крабовый кекс
|
||||
CrabMeat Крабовое мясо
|
||||
DivineSoup Божественный суп
|
||||
DumboIceCream Мороженое Дамбо
|
||||
EelOil Жир угря
|
||||
Egg Яйцо
|
||||
FishMeat Мясо рыбы
|
||||
FishOil Рыбий жир
|
||||
GlowingEgg Светящаяся икринка
|
||||
HandRoll Ручной рулет
|
||||
HealingPoultice Целебная припарка
|
||||
HeartySoup Суп здоровья
|
||||
HotBorscht Горячий борщ
|
||||
HotSoup Горячий суп
|
||||
IceChunk Осколок льда
|
||||
IceCream Мороженое
|
||||
JellyOil Желе медузы
|
||||
LeadershipRoll Рулет лидерства
|
||||
Leaf Лист
|
||||
LeafPoultice Припарка
|
||||
LeechingPoultice Припарка высасывания
|
||||
LegendaryCake Легендарный кекс
|
||||
Loaf Хлеб
|
||||
LoafOfLife Хлеб жизни
|
||||
LongLifeSoup Суп долголетия
|
||||
MagicSoup Волшебный суп
|
||||
Meat Мясо
|
||||
Mushroom Гриб
|
||||
Oil Жир
|
||||
Part Часть
|
||||
Perogi Пирог
|
||||
PlantBulb Клубень растения
|
||||
PlantLeaf Лист растения
|
||||
PlumpPerogi Пухлый пирог
|
||||
PoisonLoaf Ядовитый хлеб
|
||||
PoisonSoup Ядовитый суп
|
||||
Poultice Припарка
|
||||
RainbowMushroom Радужный гриб
|
||||
RainbowSoup Радужный суп
|
||||
RedBerry Красная ягода
|
||||
RedBulb Красный клубень
|
||||
Roll Рулет
|
||||
RottenCake Гнилой кекс
|
||||
RottenLoaf Гнилой хлеб
|
||||
RottenMeat Тухлое мясо
|
||||
RoyalSoup Королевский суп
|
||||
RubberyMeat Жесткое мясо
|
||||
RukhEgg Яйцо птицы Рух
|
||||
SeaCake Морской кекс
|
||||
SeaLoaf Морской хлеб
|
||||
SharkFin Акулий плавник
|
||||
SharkFinSoup Суп из акульего плавника
|
||||
SightPoultice Припарка зрения
|
||||
SmallBone Маленькая кость
|
||||
SmallEgg Икра
|
||||
SmallEye Маленький глаз
|
||||
SmallTentacle Маленькое щупальце
|
||||
Soup Суп
|
||||
SpecialBulb Особый клубень
|
||||
SpecialCake Особый кекс
|
||||
SpicyMeat Пряное мясо
|
||||
SpicyRoll Пряный рулет
|
||||
SpicySoup Пряный суп
|
||||
SpiderEgg Паучье яйцо
|
||||
SpiderRoll Паучий рулет
|
||||
SwampCake Болотный кекс
|
||||
SwordfishSteak Стейк рыбы-меч
|
||||
TastyCake Вкусный кекс
|
||||
TastyRoll Вкусный рулет
|
||||
ToughCake Черствый кекс
|
||||
TurtleMeat Черепашье мясо
|
||||
TurtleSoup Черепаший суп
|
||||
Vedha'sCure-All Всеисцеляющая припарка Веды
|
||||
VedhaSeaCrisp Морские чипсы Веды
|
||||
VeggieCake Овощной кекс
|
||||
VeggieIceCream Овощное мороженое
|
||||
VeggieSoup Овощной суп
|
||||
VolcanoRoll Вулканический рулет
|
||||
Zuuna'sPerogi Пирог Зууны
|
177
files/locales/ru/data/stringbank.txt
Normal file
177
files/locales/ru/data/stringbank.txt
Normal file
|
@ -0,0 +1,177 @@
|
|||
0 Дважды щелкните по блюду или поднесите его ко рту Найи, чтобы съесть.
|
||||
1 Перетащите два или три ингредиента на тарелки и нажмите кнопку "Приготовить", чтобы создать новое блюдо. Перетащите предмет на тарелку со знаком "Х", чтобы выбросить его. Если вы готовите на кухне, то можете использовать три ингредиента вместо двух.
|
||||
2 Используйте мини-карту в углу экрана, чтобы не заблудиться. Белые кружки отмечают новые зоны. Дом Найи отмечен на карте золотистым кружком.
|
||||
3 Приняв облик зверя и выполнив рывок в сторону противника, вы можете укусить его.
|
||||
4 Вы отыскали подсказку! Дважды щелкните по находящейся в углу экрана мини-карте, чтобы открыть карту мира.
|
||||
6 Теперь вы знаете песню Ли. Спойте ее, чтобы подозвать его, если он начнет отставать. Щелкните по его водолазному шлему, чтобы оставить его здесь.
|
||||
7 Спойте песню Ли, когда он находится рядом, чтобы попросить его атаковать врага.
|
||||
8 Поздравляем! Вы прошли демонстрационную версию игры "Аквария". Вы сможете продолжить игру, приобретя полную версию.
|
||||
9 Собирайте синие растения, чтобы восстановить здоровье Найи.
|
||||
11 Найя умеет готовить вкусные блюда из найденных на дне моря ингредиентов.
|
||||
12 Съев некоторых врагов, вы ненадолго получите их силу...
|
||||
13 Щелкните по Найе, чтобы разжать руки, щелкните на расстоянии от нее, чтобы отпрыгнуть.
|
||||
14 Здесь показаны все песни, которые выучила Найя. Наведите курсор на знак песни, чтобы увидеть, как она поется. Щелкните по знаку, чтобы услышать ее описание.
|
||||
15 Щелкните по этим значкам, чтобы перевернуть страницу.
|
||||
16 Сейчас на этой странице ничего нет. Может быть, позже?
|
||||
17 Здесь показаны питомцы Найи. Щелкните по любому из них, чтобы он сопровождал вас.
|
||||
19 НЕ ИСПОЛЬЗУЕТСЯ
|
||||
20 Примите форму силы, чтобы преодолеть это препятствие
|
||||
21 Чтобы открыть цветок, спойте ноту того же цвета
|
||||
22 Чтобы расколоть яйцо, спойте ноту того же цвета
|
||||
23 Вы выучили новый рецепт:
|
||||
24 !
|
||||
26 Теперь в любом месте вы можете готовить еду на трех тарелках
|
||||
27 Слишком много
|
||||
28 Обведите Найю курсором, чтобы сменить ее облик в дуальной форме
|
||||
29 Убивая врагов, Ли заряжает разрушительную атаку Найи
|
||||
30 Вы нашли икринку Бластера!
|
||||
31 Вы нашли икринку Пираньи!
|
||||
32 Вы нашли икринку осьминога Неуклюжки!
|
||||
33 Вы нашли икринку Наутилуса!
|
||||
34 Связующая песня может снимать панцири с морских обитателей
|
||||
35 Песня-щит - нажмите Esc, чтобы открыть экран песен
|
||||
36 Вы выучили связующую песню
|
||||
37 Вы выучили песню силы
|
||||
38 Вы выучили песню зверя
|
||||
39 Вы выучили песню рыбы
|
||||
40 Вы выучили древесную песню
|
||||
41 Вы выучили песню солнца
|
||||
42 Вы выучили песню Ли
|
||||
43 Вы выучили песню двойной формы
|
||||
44 Вы выучили песню духа
|
||||
50 Связующей песнью можно двигать камни и вытягивать растения
|
||||
51 Неподвижных тритонов можно убирать связующей песнью
|
||||
60 ===WINDOWS/LINUX HINTS START===
|
||||
61 Удерживайте левую кнопку мыши или нажмите пробел, чтобы плыть
|
||||
62 Щелкните по Найе правой кнопкой мыши и держите ее, чтобы запеть
|
||||
63 В форме силы щелкните правой кнопкой по врагу, чтобы прицелиться.
|
||||
64 Зажмите правую кнопку, чтобы создавать семена в древесном облике
|
||||
65 Для водоворота зажмите левую кнопку, вращая курсор вокруг Найи
|
||||
66 Щелкните левой и правой кнопками по Найе, чтобы пройти
|
||||
67 Зажмите среднюю кнопку мыши или кнопку E, чтобы осмотреться
|
||||
68 Чтобы что-то сделать с предметом, щелкните правой кнопкой мыши
|
||||
69 В форме силы зажмите правую кнопку, чтобы нанести мощный удар
|
||||
70 В форме силы щелкните правой кнопкой мыши, чтобы атаковать
|
||||
71 Щелкните левой кнопкой мыши вдалеке от Найи и удерживайте ее.
|
||||
80 ===MAC HINTS START===
|
||||
81 Удерживайте левую кнопку мыши или нажмите пробел, чтобы плыть
|
||||
82 Нажмите Ctrl, наведя курсор на Найю, чтобы запеть
|
||||
83 В форме силы нажмите Ctrl и щелкните по врагу, чтобы прицелиться
|
||||
84 Зажмите Ctrl, чтобы создавать семена в древесном облике
|
||||
85 Для водоворота зажмите левую кнопку и вращайте курсор вокруг Найи
|
||||
86 Щелкните обеими кнопками по Найе или нажмите X, чтобы пройти
|
||||
87 Зажмите среднюю кнопку мыши или левый Shft, чтобы осмотреться
|
||||
88 Нажмите Ctrl, чтобы взаимодействовать с предметами
|
||||
89 В форме силы нажмите и держите Ctrl, чтобы нанести сильный удар
|
||||
90 Нажмите Ctrl, чтобы атаковать врага в форме силы
|
||||
91 Щелкните левой кнопкой мыши вдали от Найи и удерживайте ее.
|
||||
100 +
|
||||
101 -
|
||||
200 Лечит
|
||||
201 Полностью вылечивает
|
||||
202 Защита +
|
||||
203 Секунд
|
||||
204 Скорость +
|
||||
205 в течение
|
||||
206 Регенерация x
|
||||
207 Радуга
|
||||
208 Атака в звериной форме
|
||||
209 Сильный укус
|
||||
210 Неуязвимость
|
||||
211 Выстрел +
|
||||
212 Лечит слепоту
|
||||
213 Лечит отравление
|
||||
214 Отравление
|
||||
215 Вкусно!
|
||||
216 Питомец становится сильнее
|
||||
217 Стрелять ядом в форме рыбы
|
||||
218 Лечит все болезни
|
||||
219 Паутина
|
||||
220 Сияние становится более ярким
|
||||
221 ???
|
||||
222 Вы нашли сокровище! В водах Акварии можно отыскать немало редких и удивительных предметов. Каждый из них украсит собой дом Найи, если вы сумеете их отыскать.
|
||||
223 Сокровище заняло свое место в вашей пещере.
|
||||
224 Вы нашли новый костюм! Чтобы надеть его, откройте экран сокровищ.
|
||||
225 Вам надо найти еще одну древнюю черепаху, чтобы путешествовать с их помощью.
|
||||
226 Древние черепахи помогут вам быстро перемещаться по Акварии.
|
||||
227 Ли съест
|
||||
500 [Медузий маяк] [Это странное растение так привлекало крошечных медуз, что они вились вокруг него стайками.]
|
||||
501 [Броня кротитов] [В одной из потайных комнат Храма силы я отыскала эту древнюю броню - когда-то ее надевали воины кротитов.]
|
||||
502 [Идол силы] [В этой небольшой статуэтке пылала неукротимая воля народа кротитов к жизни.]
|
||||
503 [Клык] [Опьяненная победой, я взяла один из клыков поверженного бога силы. Я решила оставить его на память...]
|
||||
504 [Большое семя] [Я нашла это огромное семя в моем убежище. Когда я посадила его у себя дома, оно проклюнулось и превратилось в чудесный сад.]
|
||||
505 [Броня краба] [Я смастерила эту броню из панциря гигантского краба. Она отлично защищала меня в путешествиях.]
|
||||
506 [Светящееся растение] [Его свет привлекал медуз из глубин моря.]
|
||||
507 [Амфора Миталаса] [В этой амфоре никогда не кончалось мясо для моей кухни.]
|
||||
508 [Броня Арнасси] [Я выиграла эту броню, пройдя все препятствия Арнасси за рекордно короткое время. В ней мне гораздо легче управляться с морскими коньками.]
|
||||
509 [Странный сосуд] [Меня позабавили воздушные пузырьки внутри этого странного сосуда.]
|
||||
510 [Штандарт Миталаса] [Я взяла с собой этот флаг, чтобы он напоминал мне о времени, которое я провела в стенах древнего города.]
|
||||
511 [Кукла из Миталаса] [Судя по всему, эта кукла принадлежала маленькой девочке, которая жила в Миталасе задолго до его гибели.]
|
||||
512 [Детеныш ходунца] [Быть может, когда-нибудь он вырастет таким же высоким и красивым, как и его родители в лесу водорослей?]
|
||||
513 [Мешочек с семенами] [Я посадила эти семена на песчаном дне моей пещеры. Очень скоро там проклюнулись первые листочки.]
|
||||
514 [Статуя Арнасси] [Эту статую я разыскала в руинах уничтоженной цивилизации.]
|
||||
515 [Шестерня] [Я подумала, что было бы забавно поставить у себя дома такую штуку.]
|
||||
516 [Солнечный ключ] [Странный блестящий предмет… Я не знаю, для чего он нужен, но пусть будет.]
|
||||
517 [Костюм морского ежа] [Этот шипастый костюм я смастерила из раковин морских ежей. Его иголки кололи любого, кто пытался приблизиться ко мне.]
|
||||
518 [Купальник-бикини] [Он очень мне идет.]
|
||||
519 [Костюм мутанта] [Почему они были так похожи на меня...]
|
||||
520 [Костюм медузы] [Этот костюм я получила после победы над королем медуз. Он смягчал боль и лечил мои раны, когда я чувствовала себя совсем плохо.]
|
||||
521 [Платье из Миталаса] [Церемониальное одеяние, которое носила принцесса Миталаса.]
|
||||
522 [Семечко анемоны] [Когда я посадила его в моей пещере, очень скоро в ней распустились яркие подводные цветы.]
|
||||
523 [Светящееся семечко] [Из этого семечка в моей пещере выросли чудесные светящиеся растения.]
|
||||
524 [Черепашье яйцо] [Я нашла это яйцо в Пещере черепах]
|
||||
525 [Череп короля] [Интересно, как он угодил в такое место?]
|
||||
526 [Трезубец принца] [Это оружие прежде принадлежало принцу Миталаса.]
|
||||
527 [Поющая спора] [Споры этого растения отзывались на музыку моей песни.]
|
||||
528 [Икринка медузы] [Икринка странной перевернутой медузы.]
|
||||
529 [Каменная голова] [Я не могла понять, было ли это лицо создано природой, или его высекли чьи-то руки?]
|
||||
530 [Золотая звезда] [Особенная морская звезда, наполненная теплыми лучами солнца.]
|
||||
531 [Черная жемчужина] [Прекрасная черная жемчужина, которую я нашла в глубокой пещере.]
|
||||
532 [Колыбелька] [Одного взгляда на этот предмет хватило, чтобы на меня накатила волна ярких воспоминаний.]
|
||||
600 Питомцы
|
||||
601 [Наутилус] [Изо всех сил врезается во врагов.]
|
||||
602 [Неуклюжка] [Светится и помогает не заблудиться в темноте]
|
||||
603 [Бластер] [Стреляет по ближайшим врагам]
|
||||
604 [Пиранья] [Больно кусает врагов, подплывших близко]
|
||||
799 Загадочная ошибка
|
||||
800 Найдено одно воспоминание Найи
|
||||
801 Найдены два воспоминания Найи
|
||||
802 Найдены все воспоминания Найи - новый эпилог
|
||||
850 Конец демонстрационной версии
|
||||
851 Неверный путь!
|
||||
852 Круг
|
||||
853 пройден!
|
||||
860 Введите описание метки:
|
||||
1000 Бойлерная
|
||||
1001 Кит
|
||||
1002 Замерзшая грань
|
||||
1003 Воздушная пещера
|
||||
1004 Храм силы
|
||||
1005 Дом Найи
|
||||
1006 Пещера Песни
|
||||
1007 Пещера песен
|
||||
1008 Знакомые воды
|
||||
1009 Открытые воды
|
||||
1010 Лес водорослей
|
||||
1011 Миталас
|
||||
1012 Собор Миталаса
|
||||
1013 Храм солнца
|
||||
1014 Грань
|
||||
1015 Бездна
|
||||
1016 Затонувший город
|
||||
1017 Пещера рыбок
|
||||
1018 Пещера осьминогов
|
||||
1019 Ледяная пещера
|
||||
1020 ???
|
||||
1021 Тело
|
||||
1022
|
||||
1023 Тайный ход
|
||||
1024 Пещера мермогов
|
||||
1025 Пещера лесных нимф
|
||||
1026 Пещера рыбок
|
||||
1027 Пещера черепах
|
||||
1028 Руины Арнасси
|
||||
1029 Пещера Ли
|
||||
1030 Пещера короля медуз
|
||||
2000 Сохранить игру
|
||||
2001 Загрузить игру
|
Loading…
Reference in a new issue