mirror of
https://github.com/AquariaOSE/Aquaria.git
synced 2025-02-25 15:33:57 +00:00
Merge branch 'master' of file:///Users/User/code/coding/Aquaria_fg_clean
This commit is contained in:
commit
78e35ca5c9
48 changed files with 1793 additions and 342 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;
|
||||
|
@ -1200,11 +1209,11 @@ void Continuity::loadSongBank()
|
|||
songSlotNames.clear();
|
||||
songBank.clear();
|
||||
|
||||
loadIntoSongBank(dsq->user.localisePath("data/songs.xml"));
|
||||
loadIntoSongBank(localisePath("data/songs.xml"));
|
||||
|
||||
if (dsq->mod.isActive())
|
||||
{
|
||||
loadIntoSongBank(dsq->user.localisePath(dsq->mod.getPath() + "scripts/songs.xml", dsq->mod.getPath()));
|
||||
loadIntoSongBank(localisePath(dsq->mod.getPath() + "scripts/songs.xml", dsq->mod.getPath()));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2534,6 +2543,7 @@ void Continuity::loadFile(int slot)
|
|||
{
|
||||
dsq->user.save();
|
||||
this->reset();
|
||||
knowsSong.clear(); // Adds shield song by default, which interferes with mods that don't start with it
|
||||
|
||||
TiXmlDocument doc;
|
||||
loadFileData(slot, doc);
|
||||
|
@ -2897,7 +2907,9 @@ void Continuity::loadFile(int slot)
|
|||
//dsq->game->transitionToScene();
|
||||
}
|
||||
|
||||
// Possibly mod-specific data the the continuity reset didn't catch
|
||||
loadSongBank();
|
||||
this->worldMap.load();
|
||||
}
|
||||
|
||||
void Continuity::setNaijaModel(std::string model)
|
||||
|
@ -3231,23 +3243,32 @@ void Continuity::reset()
|
|||
|
||||
//load ingredients
|
||||
|
||||
ingredientDisplayNames.clear();
|
||||
|
||||
loadIngredientDisplayNames("data/ingredientnames.txt");
|
||||
|
||||
std::string fname = localisePath("data/ingredientnames.txt");
|
||||
loadIngredientDisplayNames(fname);
|
||||
|
||||
if(dsq->mod.isActive())
|
||||
{
|
||||
fname = 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
|
||||
fname = dsq->user.localisePath(dsq->mod.getPath() + "ingredients.txt", dsq->mod.getPath());
|
||||
loadIngredientData(fname);
|
||||
loadIngredientData(dsq->mod.getPath() + "ingredients.txt");
|
||||
}
|
||||
|
||||
//load ingredients for the main game
|
||||
if(ingredientData.empty() && recipes.empty()) {
|
||||
fname = dsq->user.localisePath("data/ingredients.txt");
|
||||
loadIngredientData(fname);
|
||||
loadIngredientData("data/ingredients.txt");
|
||||
}
|
||||
|
||||
loadPetData();
|
||||
|
|
|
@ -485,33 +485,38 @@ void DSQ::loadFonts()
|
|||
|
||||
destroyFonts();
|
||||
|
||||
font.load("data/font-small.glf", 1, false);
|
||||
std::string file = 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 = 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);
|
||||
|
@ -2162,9 +2167,7 @@ void DSQ::applyPatches()
|
|||
vfs.MountExternalPath(mod.getBaseModPath().c_str(), "_mods");
|
||||
}
|
||||
|
||||
// user wants mods, but not yet loaded
|
||||
if(activePatches.size() && modEntries.empty())
|
||||
loadMods();
|
||||
loadMods();
|
||||
|
||||
for (std::set<std::string>::iterator it = activePatches.begin(); it != activePatches.end(); ++it)
|
||||
for(int i = 0; i < modEntries.size(); ++i)
|
||||
|
|
|
@ -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));
|
||||
|
@ -1971,30 +1971,13 @@ void Game::fillGridFromQuad(Quad *q, ObsType obsType, bool trim)
|
|||
h2/=TILE_SIZE;
|
||||
tpos.x -= w2;
|
||||
tpos.y -= h2;
|
||||
GLuint id = q->texture->textures[0];
|
||||
|
||||
int w = 0, h = 0;
|
||||
glBindTexture(GL_TEXTURE_2D, id);
|
||||
glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_WIDTH, &w);
|
||||
glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_HEIGHT, &h);
|
||||
//glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_COMPONENTS, &c);// assume 4
|
||||
unsigned int size = w*h*4;
|
||||
if (!size || w <= 0 || h <= 0)
|
||||
return;
|
||||
unsigned char *data = (unsigned char*)malloc(size + 6);
|
||||
memcpy(data + size, "SAFE", 5);
|
||||
unsigned int size = 0;
|
||||
unsigned char *data = q->texture->getBufferAndSize(&w, &h, &size);
|
||||
if (!data)
|
||||
{
|
||||
errorLog("Game::fillGridFromQuad allocation failure");
|
||||
return;
|
||||
}
|
||||
glGetTexImage(GL_TEXTURE_2D, 0, GL_RGBA, GL_UNSIGNED_BYTE, data);
|
||||
glBindTexture(GL_TEXTURE_2D, 0);
|
||||
|
||||
// Not sure but this might be the case with nouveau drivers on linux... still investigating. -- fg
|
||||
if(memcmp(data + size, "SAFE", 5))
|
||||
{
|
||||
errorLog("Game::fillGridFromQuad(): Broken graphics driver! Wrote past end of buffer!");
|
||||
free(data); // in case we are here, this will most likely cause a crash.
|
||||
debugLog("Failed to get buffer in Game::fillGridFromQuad()");
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -2041,16 +2024,13 @@ void Game::fillGridFromQuad(Quad *q, ObsType obsType, bool trim)
|
|||
}
|
||||
}
|
||||
|
||||
if (data)
|
||||
{
|
||||
free(data);
|
||||
data = 0;
|
||||
}
|
||||
free(data);
|
||||
|
||||
if (trim)
|
||||
{
|
||||
std::vector<TileVector> obsCopy = obs;
|
||||
obs.clear();
|
||||
std::vector<TileVector> obsCopy;
|
||||
obsCopy.swap(obs);
|
||||
// obs now empty
|
||||
|
||||
int sides = 0;
|
||||
for (int i = 0; i < obsCopy.size(); i++)
|
||||
|
@ -2803,25 +2783,15 @@ void Game::generateCollisionMask(Quad *q, int overrideCollideRadius)
|
|||
h2/=TILE_SIZE;
|
||||
tpos.x -= w2;
|
||||
tpos.y -= h2;
|
||||
GLuint id = q->texture->textures[0];
|
||||
|
||||
int w = 0, h = 0;
|
||||
glBindTexture(GL_TEXTURE_2D, id);
|
||||
glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_WIDTH, &w);
|
||||
glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_HEIGHT, &h);
|
||||
//glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_COMPONENTS, &c);// assume 4
|
||||
|
||||
unsigned int size = w*h*4;
|
||||
if (!size || w <= 0 || h <= 0)
|
||||
return;
|
||||
|
||||
unsigned char *data = (unsigned char*)malloc(size);
|
||||
|
||||
unsigned int size = 0;
|
||||
unsigned char *data = q->texture->getBufferAndSize(&w, &h, &size);
|
||||
if (!data)
|
||||
{
|
||||
debugLog("Could not malloc in Game::generateCollisionMask");
|
||||
debugLog("Failed to get buffer in Game::generateCollisionMask()");
|
||||
return;
|
||||
}
|
||||
glGetTexImage(GL_TEXTURE_2D, 0, GL_RGBA, GL_UNSIGNED_BYTE, data);
|
||||
|
||||
q->collisionMaskRadius = 0;
|
||||
|
||||
|
@ -2865,6 +2835,10 @@ void Game::generateCollisionMask(Quad *q, int overrideCollideRadius)
|
|||
}
|
||||
}
|
||||
|
||||
q->collisionMaskRadius = 512;
|
||||
|
||||
free(data);
|
||||
|
||||
|
||||
/*
|
||||
for (int i = 0; i < q->collisionMask.size(); i++)
|
||||
|
@ -2887,10 +2861,7 @@ void Game::generateCollisionMask(Quad *q, int overrideCollideRadius)
|
|||
q->collisionMaskRadius = h2*2;
|
||||
*/
|
||||
//q->collisionMaskRadius = sqrtf(sqr(w2)+sqr(h2));
|
||||
q->collisionMaskRadius = 512;
|
||||
|
||||
glBindTexture(GL_TEXTURE_2D, 0);
|
||||
free(data);
|
||||
/*
|
||||
int rot = rotation.z;
|
||||
while (rot > 360)
|
||||
|
@ -7948,34 +7919,34 @@ void Game::toggleHelpScreen(bool on, const std::string &label)
|
|||
|
||||
// These say "Mac" but we use them on Linux, too.
|
||||
#if defined(BBGE_BUILD_UNIX)
|
||||
std::string fname = dsq->user.localisePath("data/help_header_mac.txt");
|
||||
std::string fname = localisePath("data/help_header_mac.txt");
|
||||
appendFileToString(data, fname);
|
||||
#else
|
||||
std::string fname = dsq->user.localisePath("data/help_header.txt");
|
||||
std::string fname = localisePath("data/help_header.txt");
|
||||
appendFileToString(data, fname);
|
||||
#endif
|
||||
if (dsq->continuity.hasSong(SONG_BIND)) {
|
||||
fname = dsq->user.localisePath("data/help_bindsong.txt");
|
||||
fname = localisePath("data/help_bindsong.txt");
|
||||
appendFileToString(data, fname);
|
||||
}
|
||||
if (dsq->continuity.hasSong(SONG_ENERGYFORM)) {
|
||||
fname = dsq->user.localisePath("data/help_energyform.txt");
|
||||
fname = localisePath("data/help_energyform.txt");
|
||||
appendFileToString(data, fname);
|
||||
}
|
||||
fname = dsq->user.localisePath("data/help_start.txt");
|
||||
fname = localisePath("data/help_start.txt");
|
||||
appendFileToString(data, fname);
|
||||
|
||||
// These say "Mac" but we use them on Linux, too.
|
||||
#if defined(BBGE_BUILD_UNIX)
|
||||
fname = dsq->user.localisePath("data/help_end_mac.txt");
|
||||
fname = localisePath("data/help_end_mac.txt");
|
||||
appendFileToString(data, fname);
|
||||
#else
|
||||
fname = dsq->user.localisePath("data/help_end.txt");
|
||||
fname = localisePath("data/help_end.txt");
|
||||
appendFileToString(data, fname);
|
||||
#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;
|
||||
|
@ -11211,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)
|
||||
|
@ -130,17 +129,10 @@ RecipeMenuEntry::RecipeMenuEntry(Recipe *recipe) : RenderObject(), recipe(recipe
|
|||
text->scale = Vector(0.8, 0.8);
|
||||
text->position = Vector(100*c, 0); //-20
|
||||
|
||||
std::string typeName = recipe->types[i].typeName;
|
||||
std::string typeName = dsq->continuity.getIngredientDisplayName(recipe->types[i].typeName);
|
||||
|
||||
int loc = typeName.find("Type");
|
||||
if (loc != std::string::npos)
|
||||
{
|
||||
typeName = typeName.substr(0, loc) + typeName.substr(loc+4, typeName.size());
|
||||
}
|
||||
|
||||
|
||||
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;
|
||||
|
||||
|
|
|
@ -988,6 +988,14 @@ luaFunc(obj_setTexture)
|
|||
luaReturnNil();
|
||||
}
|
||||
|
||||
luaFunc(obj_getTexture)
|
||||
{
|
||||
RenderObject *r = robj(L);
|
||||
if (r && r->texture)
|
||||
luaReturnStr(r->texture->name.c_str());
|
||||
luaReturnStr("");
|
||||
}
|
||||
|
||||
luaFunc(obj_delete)
|
||||
{
|
||||
RenderObject *r = robj(L);
|
||||
|
@ -1490,6 +1498,7 @@ luaFunc(quad_setHeight)
|
|||
RO_FUNC(getter, prefix, internalOffset ) \
|
||||
RO_FUNC(getter, prefix, getInternalOffset) \
|
||||
RO_FUNC(getter, prefix, getPosition ) \
|
||||
RO_FUNC(getter, prefix, getTexture ) \
|
||||
RO_FUNC(getter, prefix, x ) \
|
||||
RO_FUNC(getter, prefix, y ) \
|
||||
RO_FUNC(getter, prefix, setBlendType ) \
|
||||
|
@ -5755,6 +5764,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);
|
||||
|
@ -8047,6 +8083,7 @@ static const struct {
|
|||
// -- overrides / special cases--
|
||||
|
||||
{"bone_getPosition", l_bone_getWorldPosition},
|
||||
{ "entity_delete", l_entity_delete_override },
|
||||
|
||||
// -- deprecated/compatibility related functions below here --
|
||||
|
||||
|
|
|
@ -174,7 +174,7 @@ void StatsAndAchievements::RunFrame()
|
|||
VFILE *io = NULL;
|
||||
|
||||
// Get generic achievement data...
|
||||
std::string fname = dsq->user.localisePath("data/achievements.txt");
|
||||
std::string fname = localisePath("data/achievements.txt");
|
||||
io = vfopen(fname.c_str(), "r");
|
||||
char line[1024];
|
||||
for (size_t i = 0; i < max_achievements; i++)
|
||||
|
|
|
@ -28,11 +28,17 @@ void StringBank::load()
|
|||
{
|
||||
stringMap.clear();
|
||||
|
||||
std::string fname = dsq->user.localisePath("data/stringbank.txt");
|
||||
// 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 = localisePath("data/stringbank.txt");
|
||||
_load(fname);
|
||||
|
||||
if (dsq->mod.isActive()) {
|
||||
fname = dsq->user.localisePath(dsq->mod.getPath() + "stringbank.txt", dsq->mod.getPath());
|
||||
fname = localisePath(dsq->mod.getPath() + "stringbank.txt", dsq->mod.getPath());
|
||||
_load(fname);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -46,7 +46,7 @@ void SubtitlePlayer::go(const std::string &subs)
|
|||
if (dsq->mod.isActive())
|
||||
{
|
||||
f = dsq->mod.getPath() + "audio/" + subs + ".txt";
|
||||
f = dsq->user.localisePath(f, dsq->mod.getPath());
|
||||
f = localisePath(f, dsq->mod.getPath());
|
||||
f = core->adjustFilenameCase(f);
|
||||
if (exists(f))
|
||||
checkAfter = false;
|
||||
|
@ -55,7 +55,7 @@ void SubtitlePlayer::go(const std::string &subs)
|
|||
if (checkAfter)
|
||||
{
|
||||
f = "scripts/vox/" + subs + ".txt";
|
||||
f = dsq->user.localisePath(f);
|
||||
f = localisePath(f);
|
||||
f = core->adjustFilenameCase(f);
|
||||
if (!exists(f))
|
||||
{
|
||||
|
|
|
@ -28,31 +28,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|||
#include "../ExternalLibs/tinyxml.h"
|
||||
#endif
|
||||
|
||||
#ifdef BBGE_BUILD_WINDOWS
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
#include <windows.h>
|
||||
#endif
|
||||
|
||||
#ifdef BBGE_BUILD_UNIX
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <unistd.h>
|
||||
#endif
|
||||
|
||||
#ifdef BBGE_BUILD_MACOSX
|
||||
#include <Carbon/Carbon.h>
|
||||
#include <CoreFoundation/CFLocale.h>
|
||||
#include <CoreFoundation/CFString.h>
|
||||
|
||||
// veeery clunky.
|
||||
static std::string _CFToStdString(CFStringRef cs)
|
||||
{
|
||||
char buf[1024];
|
||||
CFStringGetCString(cs, &buf[0], 2048, kCFStringEncodingUTF8);
|
||||
return &buf[0];
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
void UserSettings::save()
|
||||
{
|
||||
|
@ -74,13 +49,11 @@ void UserSettings::save()
|
|||
}
|
||||
xml_system.InsertEndChild(xml_debugLog);
|
||||
|
||||
if (!system.isSystemLocale) {
|
||||
TiXmlElement xml_locale("Locale");
|
||||
{
|
||||
xml_locale.SetAttribute("name", system.locale);
|
||||
}
|
||||
xml_system.InsertEndChild(xml_locale);
|
||||
TiXmlElement xml_locale("Locale");
|
||||
{
|
||||
xml_locale.SetAttribute("name", system.locale);
|
||||
}
|
||||
xml_system.InsertEndChild(xml_locale);
|
||||
}
|
||||
doc.InsertEndChild(xml_system);
|
||||
|
||||
|
@ -555,14 +528,11 @@ void UserSettings::load(bool doApply, const std::string &overrideFile)
|
|||
TiXmlElement *xml_net = doc.FirstChildElement("Network");
|
||||
if (xml_net)
|
||||
{
|
||||
network.masterServer = xml_net->Attribute("masterServer");
|
||||
const char *serv = xml_net->Attribute("masterServer");
|
||||
if (serv)
|
||||
network.masterServer = serv;
|
||||
}
|
||||
|
||||
if (system.locale.empty())
|
||||
getSystemLocale();
|
||||
else
|
||||
debugLog("use user config locale: " + system.locale);
|
||||
|
||||
//clearInputCodeMap();
|
||||
|
||||
if (doApply)
|
||||
|
@ -603,93 +573,19 @@ void UserSettings::apply()
|
|||
dsq->bindInput();
|
||||
|
||||
core->settings.prebufferSounds = audio.prebuffer;
|
||||
#endif
|
||||
}
|
||||
|
||||
std::string UserSettings::localisePath(const std::string &path, const std::string &modpath)
|
||||
{
|
||||
if (system.locale.empty())
|
||||
return path;
|
||||
|
||||
const std::string fname = path.substr(modpath.length());
|
||||
|
||||
/* we first try with complete locale name, i.e "locales/en_US/" */
|
||||
std::string localisedPath = modpath + "locales/" + system.locale + "/" + fname;
|
||||
|
||||
if (exists(localisedPath.c_str()))
|
||||
return localisedPath;
|
||||
|
||||
/* ok didn't work, let's retry with only language part of locale name, i.e "locales/en/" */
|
||||
const size_t found = system.locale.find('_');
|
||||
|
||||
/* hmm, seems like we didn't have a full locale name anyway, use original path */
|
||||
if (found == string::npos)
|
||||
return path;
|
||||
|
||||
localisedPath = modpath + "locales/" + system.locale.substr(0,found) + "/" + fname;
|
||||
|
||||
/* hooray we found a file! */
|
||||
if (exists(localisedPath.c_str()))
|
||||
return localisedPath;
|
||||
|
||||
/* seems like we don't have a localized version of the file available, use original path */
|
||||
return path;
|
||||
}
|
||||
|
||||
void UserSettings::getSystemLocale()
|
||||
{
|
||||
system.isSystemLocale = true;
|
||||
|
||||
#ifdef BBGE_BUILD_WINDOWS
|
||||
LCID lcid = GetThreadLocale();
|
||||
|
||||
char buf[100];
|
||||
char ctry[100];
|
||||
|
||||
if (GetLocaleInfo(lcid, LOCALE_SISO639LANGNAME, buf, sizeof buf) != 0)
|
||||
{
|
||||
system.locale = buf;
|
||||
|
||||
if (GetLocaleInfo(lcid, LOCALE_SISO3166CTRYNAME, ctry, sizeof ctry) != 0)
|
||||
{
|
||||
system.locale += "_";
|
||||
system.locale += ctry;
|
||||
}
|
||||
std::string loc = getSystemLocale();
|
||||
debugLog("Using autodetected system locale: " + loc);
|
||||
setUsedLocale(loc);
|
||||
}
|
||||
#elif BBGE_BUILD_MACOSX
|
||||
CFLocaleRef locale = CFLocaleCopyCurrent();
|
||||
CFStringRef buf;
|
||||
|
||||
if ((buf = (CFStringRef)CFLocaleGetValue(locale, kCFLocaleLanguageCode)) != NULL)
|
||||
{
|
||||
system.locale = _CFToStdString(buf);
|
||||
CFRelease(buf);
|
||||
|
||||
if ((buf = (CFStringRef)CFLocaleGetValue(locale, kCFLocaleCountryCode)) != NULL)
|
||||
{
|
||||
system.locale += "_";
|
||||
system.locale += _CFToStdString(buf);
|
||||
CFRelease(buf);
|
||||
}
|
||||
}
|
||||
|
||||
CFRelease(locale);
|
||||
|
||||
#else
|
||||
const char *lang = (const char *)getenv("LANG");
|
||||
|
||||
if (lang && *lang)
|
||||
{
|
||||
system.locale = lang;
|
||||
|
||||
size_t found = system.locale.find('.');
|
||||
|
||||
if (found != string::npos)
|
||||
system.locale.resize(found);
|
||||
}
|
||||
#endif
|
||||
if (system.locale.empty())
|
||||
debugLog("could not establish system locale");
|
||||
else
|
||||
debugLog("use system locale: " + system.locale);
|
||||
{
|
||||
debugLog("Using user config locale: " + system.locale);
|
||||
setUsedLocale(system.locale);
|
||||
}
|
||||
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
|
@ -77,9 +77,8 @@ class UserSettings
|
|||
public:
|
||||
struct System
|
||||
{
|
||||
System() { debugLogOn = 0; isSystemLocale = false; }
|
||||
System() { debugLogOn = 0; }
|
||||
int debugLogOn;
|
||||
bool isSystemLocale;
|
||||
std::string locale;
|
||||
} system;
|
||||
|
||||
|
@ -182,8 +181,4 @@ public:
|
|||
void load(bool doApply=true, const std::string &overrideFile="");
|
||||
void save();
|
||||
void apply();
|
||||
std::string localisePath(const std::string &path, const std::string &modpath="");
|
||||
|
||||
private:
|
||||
void getSystemLocale();
|
||||
};
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -1903,6 +1903,7 @@ bool Core::initGraphicsLibrary(int width, int height, bool fullscreen, int vsync
|
|||
// putenv(), which takes a (char *), and freaks out newer GCC releases
|
||||
// when you try to pass a (const!) string literal here... --ryan.
|
||||
SDL_putenv((char *) "SDL_VIDEO_CENTERED=1");
|
||||
SDL_putenv((char *) "LIBGL_DEBUG=verbose"); // temp, to track errors on linux with nouveau drivers.
|
||||
|
||||
if (recreate)
|
||||
{
|
||||
|
|
|
@ -39,6 +39,7 @@ BUILD_LINUX
|
|||
#include "Flags.h"
|
||||
//#include "Scripting.h"
|
||||
#include "Effects.h"
|
||||
#include "Localization.h"
|
||||
|
||||
#include "DarkLayer.h"
|
||||
|
||||
|
|
|
@ -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>
|
||||
|
|
120
BBGE/Localization.cpp
Normal file
120
BBGE/Localization.cpp
Normal file
|
@ -0,0 +1,120 @@
|
|||
#include "Localization.h"
|
||||
|
||||
#ifdef BBGE_BUILD_WINDOWS
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
#include <windows.h>
|
||||
#endif
|
||||
|
||||
#ifdef BBGE_BUILD_UNIX
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <unistd.h>
|
||||
#endif
|
||||
|
||||
#ifdef BBGE_BUILD_MACOSX
|
||||
#include <Carbon/Carbon.h>
|
||||
#include <CoreFoundation/CFLocale.h>
|
||||
#include <CoreFoundation/CFString.h>
|
||||
|
||||
// veeery clunky.
|
||||
static std::string _CFToStdString(CFStringRef cs)
|
||||
{
|
||||
char buf[1024];
|
||||
CFStringGetCString(cs, &buf[0], 1024, kCFStringEncodingUTF8);
|
||||
return &buf[0];
|
||||
}
|
||||
#endif
|
||||
|
||||
static std::string s_locale;
|
||||
|
||||
void setUsedLocale(const std::string& s)
|
||||
{
|
||||
s_locale = s;
|
||||
}
|
||||
|
||||
std::string localisePath(const std::string &path, const std::string &modpath /* = "" */)
|
||||
{
|
||||
if (s_locale.empty())
|
||||
return path;
|
||||
|
||||
const std::string fname = path.substr(modpath.length());
|
||||
|
||||
/* we first try with complete locale name, i.e "locales/en_US/" */
|
||||
std::string localisedPath = modpath + "locales/" + s_locale + "/" + fname;
|
||||
|
||||
if (exists(localisedPath.c_str()))
|
||||
return localisedPath;
|
||||
|
||||
/* ok didn't work, let's retry with only language part of locale name, i.e "locales/en/" */
|
||||
const size_t found = s_locale.find('_');
|
||||
|
||||
/* hmm, seems like we didn't have a full locale name anyway, use original path */
|
||||
if (found == std::string::npos)
|
||||
return path;
|
||||
|
||||
localisedPath = modpath + "locales/" + s_locale.substr(0,found) + "/" + fname;
|
||||
|
||||
/* hooray we found a file! */
|
||||
if (exists(localisedPath.c_str()))
|
||||
return localisedPath;
|
||||
|
||||
/* seems like we don't have a localized version of the file available, use original path */
|
||||
return path;
|
||||
}
|
||||
|
||||
std::string getSystemLocale()
|
||||
{
|
||||
std::string localeStr;
|
||||
|
||||
#ifdef BBGE_BUILD_WINDOWS
|
||||
LCID lcid = GetThreadLocale();
|
||||
|
||||
char buf[100];
|
||||
char ctry[100];
|
||||
|
||||
if (GetLocaleInfo(lcid, LOCALE_SISO639LANGNAME, buf, sizeof buf) != 0)
|
||||
{
|
||||
localeStr = buf;
|
||||
|
||||
if (GetLocaleInfo(lcid, LOCALE_SISO3166CTRYNAME, ctry, sizeof ctry) != 0)
|
||||
{
|
||||
localeStr += "_";
|
||||
localeStr += ctry;
|
||||
}
|
||||
}
|
||||
#elif BBGE_BUILD_MACOSX
|
||||
CFLocaleRef locale = CFLocaleCopyCurrent();
|
||||
CFStringRef buf;
|
||||
|
||||
if ((buf = (CFStringRef)CFLocaleGetValue(locale, kCFLocaleLanguageCode)) != NULL)
|
||||
{
|
||||
localeStr = _CFToStdString(buf);
|
||||
CFRelease(buf);
|
||||
|
||||
if ((buf = (CFStringRef)CFLocaleGetValue(locale, kCFLocaleCountryCode)) != NULL)
|
||||
{
|
||||
localeStr += "_";
|
||||
localeStr += _CFToStdString(buf);
|
||||
CFRelease(buf);
|
||||
}
|
||||
}
|
||||
|
||||
CFRelease(locale);
|
||||
|
||||
#else
|
||||
const char *lang = (const char *)getenv("LANG");
|
||||
|
||||
if (lang && *lang)
|
||||
{
|
||||
localeStr = lang;
|
||||
|
||||
size_t found = localeStr.find('.');
|
||||
|
||||
if (found != string::npos)
|
||||
localeStr.resize(found);
|
||||
}
|
||||
#endif
|
||||
|
||||
return localeStr;
|
||||
}
|
||||
|
10
BBGE/Localization.h
Normal file
10
BBGE/Localization.h
Normal file
|
@ -0,0 +1,10 @@
|
|||
#ifndef LOCALIZATION_H
|
||||
#define LOCALIZATION_H
|
||||
|
||||
#include "Base.h"
|
||||
|
||||
void setUsedLocale(const std::string& s);
|
||||
std::string localisePath(const std::string &path, const std::string &modpath = "");
|
||||
std::string getSystemLocale();
|
||||
|
||||
#endif
|
|
@ -18,8 +18,9 @@ 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 "SoundManager.h"
|
||||
|
||||
#include "Core.h"
|
||||
#include "SoundManager.h"
|
||||
#include "Base.h"
|
||||
#include "PackRead.h"
|
||||
|
||||
|
|
143
BBGE/Texture.cpp
143
BBGE/Texture.cpp
|
@ -195,22 +195,10 @@ int Texture::getPixelWidth()
|
|||
{
|
||||
#ifdef BBGE_BUILD_OPENGL
|
||||
int w = 0, h = 0;
|
||||
glBindTexture(GL_TEXTURE_2D, textures[0]);
|
||||
glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_WIDTH, &w);
|
||||
glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_HEIGHT, &h);
|
||||
//glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_COMPONENTS, &c);// assume 4
|
||||
unsigned int size = w*h*4;
|
||||
if (!size || w <= 0 || h <= 0)
|
||||
return 0;
|
||||
|
||||
unsigned char *data = (unsigned char*)malloc(size*sizeof(char));
|
||||
unsigned int size = 0;
|
||||
unsigned char *data = getBufferAndSize(&w, &h, &size);
|
||||
if (!data)
|
||||
{
|
||||
debugLog("Texture::getPixelWidth() malloc failed");
|
||||
return 0;
|
||||
}
|
||||
|
||||
glGetTexImage(GL_TEXTURE_2D, 0, GL_RGBA, GL_UNSIGNED_BYTE, data);
|
||||
|
||||
int smallestx = -1, largestx = -1;
|
||||
for (unsigned int x = 0; x < unsigned(w); x++)
|
||||
|
@ -227,7 +215,6 @@ int Texture::getPixelWidth()
|
|||
}
|
||||
}
|
||||
}
|
||||
glBindTexture(GL_TEXTURE_2D, 0);
|
||||
free(data);
|
||||
return largestx - smallestx;
|
||||
#elif defined(BBGE_BUILD_DIRECTX)
|
||||
|
@ -239,20 +226,11 @@ int Texture::getPixelHeight()
|
|||
{
|
||||
#ifdef BBGE_BUILD_OPENGL
|
||||
int w = 0, h = 0;
|
||||
glBindTexture(GL_TEXTURE_2D, textures[0]);
|
||||
glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_WIDTH, &w);
|
||||
glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_HEIGHT, &h);
|
||||
//glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_COMPONENTS, &c);// assume 4
|
||||
unsigned int size = w*h*4;
|
||||
if (!size || w <= 0 || h <= 0)
|
||||
return 0;
|
||||
unsigned char *data = (unsigned char*)malloc(size*sizeof(char));
|
||||
unsigned int size = 0;
|
||||
unsigned char *data = getBufferAndSize(&w, &h, &size);
|
||||
if (!data)
|
||||
{
|
||||
debugLog("Texture::getPixelHeight() malloc failed");
|
||||
return 0;
|
||||
}
|
||||
glGetTexImage(GL_TEXTURE_2D, 0, GL_RGBA, GL_UNSIGNED_BYTE, data);
|
||||
|
||||
int smallesty = -1, largesty = -1;
|
||||
for (unsigned int x = 0; x < unsigned(w); x++)
|
||||
{
|
||||
|
@ -268,7 +246,6 @@ int Texture::getPixelHeight()
|
|||
}
|
||||
}
|
||||
}
|
||||
glBindTexture(GL_TEXTURE_2D, 0);
|
||||
free(data);
|
||||
return largesty - smallesty;
|
||||
#elif defined(BBGE_BUILD_DIRECTX)
|
||||
|
@ -304,9 +281,6 @@ void Texture::load(std::string file)
|
|||
return;
|
||||
}
|
||||
|
||||
stringToLowerUserData(file);
|
||||
file = core->adjustFilenameCase(file);
|
||||
|
||||
loadName = file;
|
||||
repeating = false;
|
||||
|
||||
|
@ -321,26 +295,28 @@ void Texture::load(std::string file)
|
|||
pos = std::string::npos;
|
||||
}
|
||||
|
||||
if (core->debugLogTextures)
|
||||
/*if (core->debugLogTextures)
|
||||
{
|
||||
std::ostringstream os;
|
||||
os << "pos [" << pos << "], file :" << file;
|
||||
debugLog(os.str());
|
||||
}*/
|
||||
|
||||
bool found = exists(file);
|
||||
|
||||
if(!found && exists(file + ".png"))
|
||||
{
|
||||
found = true;
|
||||
file += ".png";
|
||||
}
|
||||
|
||||
bool found = exists(file);
|
||||
|
||||
if(!found && exists(file + ".png"))
|
||||
{
|
||||
found = true;
|
||||
file += ".png";
|
||||
}
|
||||
|
||||
// .tga/.zga are never used as game graphics anywhere except save slot thumbnails.
|
||||
// if so, their file names are passed exact, not with a missing extension
|
||||
// .tga/.zga are never used as game graphics anywhere except save slot thumbnails.
|
||||
// if so, their file names are passed exact, not with a missing extension
|
||||
|
||||
if (found)
|
||||
{
|
||||
file = localisePath(file);
|
||||
|
||||
/*
|
||||
std::ostringstream os;
|
||||
os << "Loading texture [" << file << "]";
|
||||
|
@ -827,3 +803,86 @@ ImageTGA *Texture::TGAloadMem(void *mem, int size)
|
|||
return pImageData;
|
||||
}
|
||||
|
||||
// ceil to next power of 2
|
||||
static unsigned int clp2(unsigned int x)
|
||||
{
|
||||
--x;
|
||||
x |= (x >> 1);
|
||||
x |= (x >> 2);
|
||||
x |= (x >> 4);
|
||||
x |= (x >> 8);
|
||||
x |= (x >> 16);
|
||||
return x + 1;
|
||||
}
|
||||
|
||||
unsigned char * Texture::getBufferAndSize(int *wparam, int *hparam, unsigned int *sizeparam)
|
||||
{
|
||||
unsigned char *data = NULL;
|
||||
unsigned int size = 0;
|
||||
int tw = 0, th = 0;
|
||||
int w = 0, h = 0;
|
||||
|
||||
// This can't happen. If it does we're doomed.
|
||||
if(width <= 0 || height <= 0)
|
||||
goto fail;
|
||||
|
||||
glBindTexture(GL_TEXTURE_2D, textures[0]);
|
||||
|
||||
// As returned by graphics driver
|
||||
|
||||
glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_WIDTH, &w);
|
||||
glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_HEIGHT, &h);
|
||||
|
||||
// As we know it - but round to nearest power of 2 - OpenGL does this internally anyways.
|
||||
tw = clp2(width); // known to be > 0.
|
||||
th = clp2(height);
|
||||
|
||||
if (w != tw || h != th)
|
||||
{
|
||||
std::ostringstream os;
|
||||
os << "Texture::getBufferAndSize() WARNING: width/height disagree: ";
|
||||
os << "Driver says (" << w << ", " << h << "); ";
|
||||
os << "Texture says (" << width << ", " << height << "); ";
|
||||
os << "Rounded to (" << tw << ", " << th << ")";
|
||||
debugLog(os.str());
|
||||
// choose max. for size calculation
|
||||
w = w > tw ? w : tw;
|
||||
h = h > th ? h : th;
|
||||
}
|
||||
|
||||
size = w * h * 4;
|
||||
if (!size)
|
||||
goto fail;
|
||||
|
||||
data = (unsigned char*)malloc(size + 32);
|
||||
if (!data)
|
||||
{
|
||||
std::ostringstream os;
|
||||
os << "Game::fillGridFromQuad allocation failure, size = " << size;
|
||||
errorLog(os.str());
|
||||
goto fail;
|
||||
}
|
||||
memcpy(data + size, "SAFE", 5);
|
||||
glGetTexImage(GL_TEXTURE_2D, 0, GL_RGBA, GL_UNSIGNED_BYTE, data);
|
||||
glBindTexture(GL_TEXTURE_2D, 0);
|
||||
|
||||
// Not sure but this might be the case with nouveau drivers on linux... still investigating. -- fg
|
||||
if(memcmp(data + size, "SAFE", 5))
|
||||
{
|
||||
errorLog("Texture::getBufferAndSize(): Broken graphics driver! Wrote past end of buffer!");
|
||||
free(data); // in case we are here, this will most likely cause a crash.
|
||||
goto fail;
|
||||
}
|
||||
|
||||
*wparam = w;
|
||||
*hparam = h;
|
||||
*sizeparam = size;
|
||||
return data;
|
||||
|
||||
|
||||
fail:
|
||||
*wparam = 0;
|
||||
*hparam = 0;
|
||||
*sizeparam = 0;
|
||||
return NULL;
|
||||
}
|
||||
|
|
|
@ -80,6 +80,9 @@ public:
|
|||
|
||||
void write(int tx, int ty, int w, int h, const unsigned char *pixels);
|
||||
void read(int tx, int ty, int w, int h, unsigned char *pixels);
|
||||
|
||||
unsigned char *getBufferAndSize(int *w, int *h, unsigned int *size); // returned memory must be free()'d
|
||||
|
||||
protected:
|
||||
std::string loadName;
|
||||
|
||||
|
|
|
@ -386,6 +386,7 @@ SET(BBGE_SRCS
|
|||
${BBGEDIR}/Interpolator.cpp
|
||||
${BBGEDIR}/Joystick.cpp
|
||||
${BBGEDIR}/LensFlare.cpp
|
||||
${BBGEDIR}/Localization.cpp
|
||||
${BBGEDIR}/Math.cpp
|
||||
${BBGEDIR}/MT.cpp
|
||||
${BBGEDIR}/ParticleEffect.cpp
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -47,7 +47,7 @@ GLFont::~GLFont ()
|
|||
//*******************************************************************
|
||||
bool GLFont::Create (const char *file_name, int tex, bool loadTexture)
|
||||
{
|
||||
int num_chars, num_tex_bytes;
|
||||
ByteBuffer::uint32 num_chars, num_tex_bytes;
|
||||
char *tex_bytes;
|
||||
|
||||
//Destroy the old font if there was one, just to be safe
|
||||
|
@ -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;
|
||||
|
@ -91,7 +89,7 @@ bool GLFont::Create (const char *file_name, int tex, bool loadTexture)
|
|||
return false;
|
||||
|
||||
//Read character array
|
||||
for (int i = 0; i < num_chars; i++)
|
||||
for (unsigned int i = 0; i < num_chars; i++)
|
||||
{
|
||||
bb >> header.chars[i].dx;
|
||||
bb >> header.chars[i].dy;
|
||||
|
@ -104,8 +102,8 @@ bool GLFont::Create (const char *file_name, int tex, bool loadTexture)
|
|||
//Read texture pixel data
|
||||
num_tex_bytes = header.tex_width * header.tex_height * 2;
|
||||
tex_bytes = new char[num_tex_bytes];
|
||||
//input.read(tex_bytes, num_tex_bytes);
|
||||
bb.read(tex_bytes, num_tex_bytes);
|
||||
// HACK: Aquaria uses override textures, so we can live with the truncation.
|
||||
bb.read(tex_bytes, std::min(num_tex_bytes, bb.readable()));
|
||||
|
||||
//Build2DMipmaps(3, header.tex_width, header.tex_height, GL_UNSIGNED_BYTE, tex_bytes, 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
|
||||
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]
|
BIN
files/locales/ru/data/font-small.glf
Normal file
BIN
files/locales/ru/data/font-small.glf
Normal file
Binary file not shown.
BIN
files/locales/ru/data/font.ttf
Normal file
BIN
files/locales/ru/data/font.ttf
Normal file
Binary file not shown.
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 Пирог Зууны
|
207
files/locales/ru/data/stringbank.txt
Normal file
207
files/locales/ru/data/stringbank.txt
Normal file
|
@ -0,0 +1,207 @@
|
|||
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 Загрузить игру
|
||||
2002 Слот
|
||||
2003 Пусто
|
||||
2004 ~Пауза~
|
||||
2005 'S' - пропустить
|
||||
2006 Стр.
|
||||
2007 Рецепты
|
||||
2008 error
|
||||
2009 No Description
|
||||
2010 Stopped Recording
|
||||
2011 Stopped Playback
|
||||
2013 health
|
||||
2014 Enter Flag to Set
|
||||
2015 Enter Value to Set Flag To
|
||||
2016 Entity data not found! Aborting...
|
||||
2017 Variables data not found! Aborting...
|
||||
2018 Particle Name:
|
||||
2019 Saved worldmap data to
|
||||
2020 Unable to save worldmap to
|
||||
2021 Unable to retrieve online mod list.|Check your connection and try again.
|
||||
2022 Server error!|Bad XML, please contact server admin.|URL:
|
||||
2023 Finished downloading mod
|
||||
2024 Download update?
|
||||
2025 Mod already exists. Re-download?
|
||||
2026 This mod was installed manually,|not messing with it.
|
||||
2027 |Browse installed mods
|
||||
2028 |Browse & enable/disable installed patches
|
||||
2029 |Browse mods online
|
||||
2030 |Return to title
|
||||
2031 Что
|
||||
2032 [Achievements]
|
BIN
files/locales/ru/gfx/font.png
Normal file
BIN
files/locales/ru/gfx/font.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 34 KiB |
431
game_scripts/scripts/entities/entities.txt
Normal file
431
game_scripts/scripts/entities/entities.txt
Normal file
|
@ -0,0 +1,431 @@
|
|||
0 Crotoid Crotoid 1
|
||||
86 Seal-King Seal-King
|
||||
87 Seal-Queen Seal-Queen
|
||||
88 Seal-Prince Seal-Prince
|
||||
90 HealthUpgrade0 HealthUpgrade/Whole
|
||||
91 HealthUpgrade1 HealthUpgrade/Whole
|
||||
92 HealthUpgrade2 HealthUpgrade/Whole
|
||||
93 HealthUpgrade3 HealthUpgrade/Whole
|
||||
94 HealthUpgrade4 HealthUpgrade/Whole
|
||||
110 SporeChildFlowerRed SporeChildFlower/Red1
|
||||
120 Ekkrit Ekkrit/Head
|
||||
121 Flea Flea
|
||||
122 GreenSeaDragon GreenSeaDragon/Head
|
||||
123 Blazer Blazer
|
||||
124 Seahorse SeaHorse/Seahorse-0001
|
||||
125 Moloch moloch
|
||||
126 Loper Loper
|
||||
127 Splitter1 Splitter1/Core
|
||||
128 Splitter2 Splitter2/Core
|
||||
129 Rotfish-blob Rotfish-blob
|
||||
130 Rotfish Rotfish
|
||||
131 Rotworm Rotworm/Head
|
||||
132 Gear Gear/Gear
|
||||
133 CrystalHolder LightCrystal/Holder
|
||||
134 LightCrystal LightCrystal/Crystal
|
||||
135 Shark Shark/Body
|
||||
136 Monkey Monkey/Head
|
||||
137 Simon Simon/Body
|
||||
138 TransTurtle TransTurtle/Head
|
||||
139 FormUpgradeEnergy1 EnergyOrb
|
||||
140 FormUpgradeEnergy2 FormUpgrades/EnergyIdol
|
||||
141 FormUpgradeBeast EnergyOrb
|
||||
142 EvilJelly EvilJelly
|
||||
143 KingJelly KingJelly/Core
|
||||
144 SunkenDad SunkenDad/Head
|
||||
145 SunkenMom SunkenMom/Head
|
||||
146 DeepUrchin DeepUrchin/Body
|
||||
147 AnglerFish AnglerFish/Body
|
||||
148 Plasmaworm Plasmaworm/Body
|
||||
149 PredatoryTunicate PredatoryTunicate/Body
|
||||
150 Octomun Octomun/Body
|
||||
151 ClockworkFish ClockworkFish/Head
|
||||
152 ClockworkCrab ClockworkCrab/Shell
|
||||
153 CrawPappy CrawPappy/Body
|
||||
156 LightCrystalCharged LightCrystal/Crystal
|
||||
157 SpikeyEggDown SpikeyEgg
|
||||
158 Scavenger Scavenger/Head
|
||||
159 CC_LostInCave CC/Body
|
||||
160 CC_Mother CC_Mother/Body
|
||||
161 CC_MissingMom CC/Body
|
||||
162 CC_GF CC_GF/Body
|
||||
163 SporeSeed Seed
|
||||
164 Vine Vine
|
||||
165 CC_WantGF CC/Body
|
||||
166 CC_Cat CC_Cat/Body
|
||||
167 CC_Kid CC_Kid/Body
|
||||
168 CC_GetRocked CC/Body
|
||||
169 13_MainArea 13/Face
|
||||
170 SpiderCrab SpiderCrab/Body
|
||||
171 SpikyBall SpikyBall/Body
|
||||
172 CC_StatueHead MissingImage
|
||||
173 MossHead MossHead/Head
|
||||
174 NatureFormFlowers Naija/Flowers
|
||||
175 NudiBranch0 NudiBranch/NudiBranch0
|
||||
176 NudiBranch1 NudiBranch/NudiBranch1
|
||||
177 NudiBranch2 NudiBranch/NudiBranch2
|
||||
178 NudiBranch3 NudiBranch/NudiBranch3
|
||||
180 Dandelion Dandelion/Head
|
||||
181 UberVine Naija/Ubervine-Stalk
|
||||
182 SporeChildFlowerPortal TubeFlower/Body1
|
||||
183 Zygote Zygote/Head
|
||||
184 MomEyes SunkenMom/MomEyes
|
||||
185 CreatorShadow creator-shadow
|
||||
186 CathedralDoor CathedralDoor/Body
|
||||
187 SunkenDoor SunkenDoor/Body
|
||||
188 LiHelmet Li/Helmet
|
||||
189 Parrot Parrot/Head
|
||||
190 CaveFish1 CaveFish
|
||||
191 CaveFish2 CaveFish
|
||||
192 CaveFish3 CaveFish
|
||||
193 CaveFish4 CaveFish
|
||||
194 OriginalRaspberry OriginalRaspberry
|
||||
195 Skeeter Skeeter/Body
|
||||
196 Wisker Wisker/Wisker
|
||||
197 RedNautilus RedNautilus
|
||||
198 Toad Toad/Head
|
||||
199 SpikeyEggUp SpikeyEgg
|
||||
201 CC_EndDemo CC/Body
|
||||
202 BigMouth BigMouth/Body
|
||||
203 BigMouthParasite BigMouth/Parasite
|
||||
204 FlatFish FlatFish/Body
|
||||
205 MetaRay MetaRay/Body
|
||||
206 Clam Clam/Top
|
||||
207 Tabar Tabar/Body
|
||||
208 HorseShoe HorseShoe/Body
|
||||
209 PufferFish PufferFish/PufferSmall
|
||||
210 Tabar Tabar/Body
|
||||
211 Swordfish Swordfish/Body
|
||||
212 SpinyCrab SpinyCrab/Body
|
||||
213 DeepEel DeepEel/Tail
|
||||
214 AbyssSpikes Abyss-Spikes
|
||||
215 Wisp Wisp
|
||||
216 Triffle Triffle/Body
|
||||
217 BabyDeepShrimp BabyDeepShrimp
|
||||
218 ThermalVent thermalvent
|
||||
219 SlenderEel SlenderEel
|
||||
220 DeepJelly DeepJelly/Bulb
|
||||
221 Mermog Mermog/Body
|
||||
222 RotBaby-Form1 RotBaby/Form1
|
||||
223 RotBaby-Form2 RotBaby/Form2
|
||||
224 RotBaby-Form3 RotBaby/Form3-Body
|
||||
225 Orbiter Orbiter/Body
|
||||
226 Piranha Piranha
|
||||
227 UpsideDownJelly UpsideDownJelly/Body
|
||||
228 Kappa Kappa/Head
|
||||
229 Seahorse2 Seahorse/Seahorse-0002
|
||||
230 Seahorse3 Seahorse/Seahorse-0003
|
||||
231 Seahorse4 Seahorse/Seahorse-0004
|
||||
232 DarkJelly DarkJelly/Front
|
||||
233 SnailGear SnailGear/Shell
|
||||
234 Seahorse5 Seahorse/Seahorse-0005
|
||||
235 CC_SunkenCity CC/Body
|
||||
236 AbyssOctopus AbyssOctopus/Head
|
||||
237 Mutilus Mutilus/Mutilus
|
||||
238 Horror Horror/Body
|
||||
239 StressTest missingImage
|
||||
240 Abaddon Abaddon/Face
|
||||
241 Bevy Bevy/Body
|
||||
242 Huggy Huggy/Head
|
||||
243 Krill Krill/Krill
|
||||
244 KrillEggs Krill/KrillEggs
|
||||
245 Starmie1 Starmie/Body
|
||||
246 Chomper Chomper/Head
|
||||
247 Armapillar Armapillar/Body
|
||||
248 Duoeye Duoeye-head
|
||||
249 ekko ekko/Body
|
||||
250 SeaTurtleBig SeaTurtle/Head
|
||||
251 Rukh Rukh/Head
|
||||
252 Starmie2 Starmie2/Body
|
||||
253 JellyNew Jelly
|
||||
254 SeedFlower SeedFlower
|
||||
255 SeedUberVine SeedUberVine
|
||||
256 GroundShocker GroundShocker/Core
|
||||
257 GroundShockerShell GroundShocker/Shell
|
||||
258 Spookfish Spookfish/Body
|
||||
259 Mutileye Mutileye/Head
|
||||
260 GroundShockerAttackL GroundShocker/Shell
|
||||
261 GroundShockerAttackR GroundShocker/Shell
|
||||
262 SeaTurtleSmall SeaTurtle/Head
|
||||
263 JellyZap JellyZap/Head
|
||||
264 BiteyMouth BiteyMouth/Teeth
|
||||
265 SeaTurtleBaby BabyTurtle/Head
|
||||
266 IceChunkLarge IceChunk/Large
|
||||
267 IceChunkMedium IceChunk/Medium
|
||||
268 IceChunkSmall IceChunk/Small
|
||||
269 GrabbyArm GrabbyArm/Front
|
||||
270 IceCrab IceCrab/Body
|
||||
271 Walker Walker/Head
|
||||
272 CreepyFace CreepyFace/Face
|
||||
273 cc_father cc_father/body
|
||||
274 SeaTurtleBaby-Special1 babyturtle-special/shell
|
||||
275 SeaTurtleBaby-Special2 babyturtle-special/shell2
|
||||
276 SeaTurtleBaby-Special3 babyturtle-special/shell3
|
||||
277 ancient-plant ancient-plant/stem
|
||||
278 ancient-bulb ancient-plant/bulb
|
||||
75 CurrentSwitchOff CurrentSwitch
|
||||
76 CurrentSwitchOn CurrentSwitch
|
||||
81 SacrificeButton SacrificeButton-bg
|
||||
82 ForestGod ForestGod/bg
|
||||
83 SunWorm SunWorm/Head
|
||||
84 ForestGodSeed SporeChildSeed
|
||||
85 ForestGodCrab KingCrab-Head 1
|
||||
77 Altar Altar/Grate-Front
|
||||
78 RotCore RotCore/Body
|
||||
79 SacrificeVictim EnergyOrb
|
||||
70 MermanThin MermanThin/Head
|
||||
71 SporeFungus0001 SporeFungus0001
|
||||
72 Fan Fan
|
||||
73 Priest Priest/Head
|
||||
74 Li Li/Head
|
||||
80 HellBeast HellBeast/Head
|
||||
57 RockHead Fish-RockHead 1
|
||||
1 Raspberry wallshooter 0.75
|
||||
2 Squiddy squiddy 1.0
|
||||
3 Nautilus nautilus 0.7
|
||||
4 Moneye moneye-head 0.4
|
||||
5 Anemone Anemone 1
|
||||
60 Anemone2 Anemone-0002 1
|
||||
61 Anemone3 Anemone-0003 1
|
||||
62 Anemone4 Anemone-0004 1
|
||||
6 Blaster Blaster/Core 1
|
||||
7 Leach Leach 1
|
||||
8 JellySmall JellySmallShell 1
|
||||
9 MoneyeBreeder MoneyeBreeder 1
|
||||
10 KingCrab KingCrab-Head 1
|
||||
11 SeaSlug missingImage 1
|
||||
12 Trillious trillious-head 1
|
||||
13 Scooter Scooter 1
|
||||
14 Lumite missingImage 1
|
||||
15 Empty missingImage 1
|
||||
16 RoodShrimp RoodShrimp 1
|
||||
17 Shocker Shocker-Body 1
|
||||
18 Turret Turret-Body 1
|
||||
19 Jelly Jelly 1
|
||||
20 NewtBlaster NewtBlasterHead 1
|
||||
21 Maul maul 1
|
||||
22 SpikeBall spikeball 1
|
||||
23 AggroHopper AggroHopper-Head 0.5
|
||||
24 Froog Froog-Head 0.5
|
||||
25 LesserWurm LesserWurm-Head 1.0
|
||||
26 Squeezer Squeezer-Head 1.0
|
||||
30 OrbHolder OrbHolder 1
|
||||
31 EnergyOrb EnergyOrb 1
|
||||
32 EnergyDoor EnergyDoor 1
|
||||
33 EnergyBarrierFlicker EnergyBarrier 1
|
||||
34 MetalObject MetalObject 1
|
||||
35 EnergyBarrierSolid EnergyBarrier 1
|
||||
36 Tromulo Tromulo 1
|
||||
37 Eel eel-0001 1
|
||||
38 EnergyOrbCracked EnergyOrbCracked 1
|
||||
39 EnergyBarrierOff EnergyBarrier 1
|
||||
40 HydraWurm Wurm-Head 1
|
||||
41 Turtle Turtle-Body 1
|
||||
42 Nudi Nudi-Shell 1
|
||||
43 Shrimp Shrimp 1
|
||||
50 Rock0001 rock0001 1
|
||||
63 Rock0002 rock0002 1
|
||||
64 Rock0003 rock0003 1
|
||||
65 Rock0004 rock0004 1
|
||||
66 Rock0005 rock0005 1
|
||||
67 Rock0006 rock0006 1
|
||||
52 SongSpore SongSpore-Shell 1
|
||||
53 SongStalk SongStalk-Body 1
|
||||
54 Phonograph Phonograph 1
|
||||
55 JellyShock JellyShock 1
|
||||
56 HealthPlant HealthPlant 1
|
||||
102 ErulianGhost ErulianGhost-Body 1
|
||||
103 TempleStatue temple-statue-0001 1
|
||||
300 TurtleNoShell EnergyOrb 1
|
||||
301 NudiNoShell Nudi-Body 1
|
||||
302 ClayStatue Clay/Head
|
||||
303 Clay Clay/Clay
|
||||
304 CreatorForm1SunkenCity Creator/Form1/Head
|
||||
305 CC_Final CC/Head
|
||||
306 CC_EndOfGame CC/Head
|
||||
307 Drask-Final Drask/Head
|
||||
308 Krotite-Final Krotite/Head
|
||||
309 Erulian-Final Erulian/Head
|
||||
310 Druniad-Final Druniad/Head
|
||||
311 FinalDoor Final-Door
|
||||
312 FinalTongue Final-Tongue
|
||||
313 Moray Moray
|
||||
314 BigBlaster BigBlaster/Core
|
||||
315 DarkJellyFG DarkJelly/Front
|
||||
316 GearSlow Gear/Gear
|
||||
317 GearMed Gear/Gear
|
||||
318 GearFast Gear/Gear
|
||||
319 YoungLi YoungLi/Head
|
||||
320 NaijaChild NaijaChild/Head
|
||||
321 StrangeCreature StrangeCreature/Head
|
||||
322 SongLamp3 Particles/Glow
|
||||
323 SongLamp4 Particles/Glow
|
||||
324 SongLamp5 Particles/Glow
|
||||
325 SongLamp6 Particles/Glow
|
||||
326 SongLamp7 Particles/Glow
|
||||
327 SongLamp0 Particles/Glow
|
||||
328 SongLamp1 Particles/Glow
|
||||
329 SongLamp2 Particles/Glow
|
||||
330 MithalasUrn Breakable/Urn
|
||||
331 BrokenPiece Breakable/Urn-0001
|
||||
332 NaijaBabyGhost NaijaBabyGhost/naija-baby-ghost
|
||||
333 MiaGhost MiaGhost/Head
|
||||
334 NaijaChildGhost NaijaChildGhost/Head
|
||||
335 Mia Mia/Head
|
||||
336 ForestGodVine ForestGod/Vine
|
||||
337 ForestGodVineHead ForestGod/Vine-Head
|
||||
338 MutantNaija Naija/Mutant-Head
|
||||
339 DeepWhale DeepWhale/Eye
|
||||
340 LiCage LiCage/Glass-0001
|
||||
341 TitleTextLeft Title/TextLeft
|
||||
342 TitleTextCenter Title/TextCenter
|
||||
343 CursorSwarmer MissingImage
|
||||
344 KrotiteWorshipper Krotite/Head
|
||||
345 KrotiteErulianBattle01 Krotite/Head
|
||||
346 KrotiteOnTheWay Krotite/Head
|
||||
347 KrotiteVsKrotite Krotite/Head
|
||||
348 Guardian Guardian/Head
|
||||
349 ForestSprite ForestSprite/Head
|
||||
350 Fatso Test/Kurtz
|
||||
351 Druniad Druniad/Head
|
||||
352 Drask Drask/Head
|
||||
353 PriestNormal PriestNormal/Head
|
||||
354 DraskPriestBattle PriestNormal/Head
|
||||
355 PullPlantNormal Ingredients/plant-leaf
|
||||
356 Ompo Ompo/Body
|
||||
357 Architect Lumerean/Head
|
||||
358 cf6-shot missingimage
|
||||
359 SunDoor sun-door-0001
|
||||
360 EnergyGodSpirit particles/lines
|
||||
361 Minnow title/minnow
|
||||
362 camopus camopus/head
|
||||
363 singbulb singbulb/base-0001
|
||||
364 seawolf seawolf/head
|
||||
365 grouper grouper/body
|
||||
366 poisonberry wallshooter
|
||||
367 bloodcell-red cell/red-cell
|
||||
368 bloodcell-white cell/white-cell
|
||||
369 crawlvirus crawlvirus/body
|
||||
370 roundvirus roundvirus/body
|
||||
371 floating-city intro/floating-city
|
||||
372 eric_13 missingImage
|
||||
373 eric_energyboss missingImage
|
||||
374 eric_mithala missingImage
|
||||
375 eric_sunkenmom missingImage
|
||||
376 eric_mutantnaija missingImage
|
||||
377 eric_forestgod missingImage
|
||||
378 eric_erulian missingImage
|
||||
379 lucien lucien/lucien-head
|
||||
380 airship airship/airship-body
|
||||
381 lucien-baby lucien-baby/head
|
||||
382 gateway gateway/body
|
||||
383 final-mutant final-mutant-0001
|
||||
384 dark-li-shot creator/darklishot/darkli-ball
|
||||
385 suncontainer breakable/suncontainer
|
||||
386 falsebg falsebg/bg
|
||||
387 upgrade-wok gui/wok
|
||||
388 beluga beluga/body
|
||||
389 beluga-bubble bubble
|
||||
390 merchild merchild/head
|
||||
391 merwoman merwoman/head
|
||||
392 merman merman/head
|
||||
393 luciengf luciengf/head
|
||||
394 otter otter/body
|
||||
395 fishcaveglow particles/spiralglow
|
||||
396 timerock missingImage
|
||||
397 arnassi-spirit missingImage
|
||||
200 SongDoor1 SongDoor-Body 1
|
||||
403 CrabBoss CrabBoss-body 1
|
||||
404 EnergyBoss EnergyBoss/Body 1
|
||||
405 EnergyGod EnergyGod-Torso 1
|
||||
406 EnergyBossClimb EnergyBoss-Torso 1
|
||||
407 NautilusPrime NautilusPrime-Body 1
|
||||
408 Mergog Mergog/Mergog 1
|
||||
409 CreatorForm1 Creator/Form1/Mask
|
||||
410 CreatorForm2 Creator/Form1/Head
|
||||
411 CreatorForm3 Creator/Form3/Head
|
||||
412 CreatorForm4 Creator/Form4/Body
|
||||
413 CreatorForm5 Creator/Form5/Head-Down
|
||||
414 CreatorForm6 Creator/Form6/Head
|
||||
415 VineDoor VineDoor
|
||||
500 CollectibleSongCave Collectibles/SongCave 1
|
||||
501 CollectibleNautilusPrime Collectibles/NautilusPrime 1
|
||||
502 CollectibleNaijaCave Collectibles/NaijaCave 1
|
||||
503 CollectibleEnergyBoss Collectibles/EnergyBoss 1
|
||||
504 CollectibleEnergyTemple Collectibles/EnergyTemple 1
|
||||
505 CollectibleCrabCostume Collectibles/CrabCostume 1
|
||||
506 CollectibleDumboEgg Collectibles/Egg-Dumbo 1
|
||||
507 CollectibleBlasterEgg Collectibles/Egg-Blaster 1
|
||||
508 CollectiblePiranhaEgg Collectibles/Egg-Piranha 1
|
||||
509 CollectibleChest Collectibles/treasure-chest 1
|
||||
510 CollectibleBanner Collectibles/mithalas-banner 1
|
||||
511 CollectibleMithalaDoll Collectibles/mithala-doll 1
|
||||
512 CollectibleWalkerBaby Collectibles/walker-baby 1
|
||||
513 CollectibleSeedBag Collectibles/seed-bag 1
|
||||
514 CollectibleArnassiStatue Collectibles/arnassi-statue 1
|
||||
515 CollectibleGear Collectibles/golden-gear 1
|
||||
516 CollectibleSunKey Collectibles/sun-key 1
|
||||
517 CollectibleJellyCostume collectibles/jelly-costume 1
|
||||
518 CollectibleAnemoneSeed collectibles/anemone-seed 1
|
||||
519 CollectibleBioSeed collectibles/bio-seed 1
|
||||
520 CollectibleUrchinCostume collectibles/urchin-costume 1
|
||||
521 CollectibleMithalanCostume collectibles/mithalan-costume 1
|
||||
522 CollectibleTeenCostume collectibles/teen-costume 1
|
||||
523 CollectibleTurtleEgg collectibles/turtle-egg 1
|
||||
524 CollectibleSkull collectibles/skull 1
|
||||
525 CollectibleTridentHead collectibles/trident-head 1
|
||||
526 CollectibleSporeSeed collectibles/sporeseed 1
|
||||
527 CollectibleUpsideDownSeed collectibles/upsidedownseed 1
|
||||
528 CollectibleEnergyStatue collectibles/energystatue 1
|
||||
529 CollectibleJellyPlant collectibles/jellyplant 1
|
||||
530 CollectibleMithalasPot collectibles/mithalaspot 1
|
||||
531 CollectibleSeahorseCostume collectibles/seahorse-costume 1
|
||||
532 CollectibleStoneHead collectibles/stonehead 1
|
||||
533 CollectibleStarfish collectibles/goldstar 1
|
||||
534 CollectibleBlackPearl collectibles/blackpearl 1
|
||||
535 CollectibleBabyCrib collectibles/babycrib 1
|
||||
536 CollectibleMutantCostume collectibles/mutant-costume 1
|
||||
600 SporeChild SporeChildSeed 1
|
||||
700 SongLeaf songleaf
|
||||
701 EnergyLamp breakable/energylamp
|
||||
702 Oarfish oarfish
|
||||
703 Nauplius nauplius
|
||||
704 CastleCrab castlecrab/body
|
||||
705 HardBeetle hardbeetle
|
||||
706 DeepCrawley deepcrawley
|
||||
707 PlasmawormBG plasmaworm/body-bg
|
||||
708 Hatchetfish hatchetfish/body
|
||||
709 IceJelly icejelly/head
|
||||
710 Spooter spooter
|
||||
711 MamaTurtle mamaturtle/head
|
||||
712 IceShrimp iceshrimp/body
|
||||
713 Mantis mantis/body
|
||||
714 Coward coward/body
|
||||
715 Lionfish lionfish/body
|
||||
716 LeopardShark leopardshark/body
|
||||
717 TigerShark tigershark/body
|
||||
718 Mermoth mermoth/body
|
||||
719 cellgenerator red-cell
|
||||
720 roundvirus-bg roundvirus-bg
|
||||
721 pistolshrimp pistolshrimp/body
|
||||
722 electriceel eel-0002
|
||||
723 whelk whelk
|
||||
724 whelknoshell whelk
|
||||
725 aggroeggs aggro-eggs
|
||||
726 aggrobaby aggrobaby
|
||||
727 rotcrab rotcrab/head
|
||||
728 sporeplant songspore-plant
|
||||
729 bioplant abyss-plant-0001
|
||||
730 statuehead creatorstatue-0004
|
||||
731 weird-derek weirdfish/derek-body
|
||||
732 weird-alec weirdfish/alec-body
|
||||
733 sunkencrate Breakable/crate
|
||||
734 Rock0007 rock0007 1
|
||||
1000 SeaHorse6 Seahorse/Seahorse-0006
|
||||
1001 SeaHorseBaby Seahorse/seahorse-baby
|
||||
1002 GlobeCrab GlobeCrab/Body
|
||||
1003 BigMaul bigmaul-body
|
||||
1004 SlipperLobster SlipperLobster/Body
|
||||
1005 SlipperGenerator SlipperLobster/Body
|
||||
1006 drask-statue drask/statue-head
|
||||
1007 queen-statue queen-statue/head
|
417
game_scripts/scripts/entities/entitygroups.txt
Normal file
417
game_scripts/scripts/entities/entitygroups.txt
Normal file
|
@ -0,0 +1,417 @@
|
|||
GROUP:OpenWaters
|
||||
Nautilus
|
||||
RedNautilus
|
||||
Tromulo
|
||||
Seahorse
|
||||
Seahorse2
|
||||
Seahorse3
|
||||
Seahorse4
|
||||
Seahorse5
|
||||
SeaHorseBaby
|
||||
TransTurtle
|
||||
Phonograph
|
||||
JellySmall
|
||||
Jelly
|
||||
JellyShock
|
||||
Nauplius
|
||||
Squiddy
|
||||
RockHead
|
||||
Raspberry
|
||||
Moneye
|
||||
MoneyeBreeder
|
||||
Anemone
|
||||
Anemone2
|
||||
Anemone3
|
||||
Anemone4
|
||||
Leach
|
||||
KingCrab
|
||||
GlobeCrab
|
||||
CastleCrab
|
||||
Trillious
|
||||
Scooter
|
||||
HardBeetle
|
||||
AggroHopper
|
||||
aggrobaby
|
||||
aggroeggs
|
||||
Eel
|
||||
Oarfish
|
||||
HydraWurm
|
||||
Turtle
|
||||
Nudi
|
||||
TurtleNoShell
|
||||
NudiNoShell
|
||||
whelk
|
||||
TurtleNoShell
|
||||
Shrimp
|
||||
SongSpore
|
||||
SongStalk
|
||||
SongLeaf
|
||||
sporeplant
|
||||
HealthPlant
|
||||
Ekkrit
|
||||
Crotoid
|
||||
13_MainArea
|
||||
OriginalRaspberry
|
||||
Moloch
|
||||
Tabar
|
||||
Swordfish
|
||||
Kappa
|
||||
Bevy
|
||||
Huggy
|
||||
Krill
|
||||
KrillEggs
|
||||
Chomper
|
||||
Duoeye
|
||||
Armapillar
|
||||
StressTest
|
||||
Minnow
|
||||
Grouper
|
||||
poisonberry
|
||||
|
||||
GROUP:SongCave
|
||||
ErulianGhost
|
||||
SongDoor1
|
||||
|
||||
GROUP:EnergyTemple
|
||||
Blaster
|
||||
MoneyeBreeder
|
||||
Shocker
|
||||
Turret
|
||||
NewtBlaster
|
||||
Froog
|
||||
EnergyLamp
|
||||
OrbHolder
|
||||
EnergyOrb
|
||||
EnergyDoor
|
||||
EnergyBarrierFlicker
|
||||
EnergyBarrierSolid
|
||||
EnergyOrbCracked
|
||||
EnergyBarrierOff
|
||||
TempleStatue
|
||||
BigBlaster
|
||||
VineDoor
|
||||
|
||||
GROUP:Mithalas
|
||||
Splitter1
|
||||
Splitter2
|
||||
Rotworm
|
||||
rotcrab
|
||||
Blazer
|
||||
Flea
|
||||
RotCore
|
||||
SporeFungus0001
|
||||
Priest
|
||||
Loper
|
||||
SacrificeButton
|
||||
Seal-King
|
||||
Seal-Queen
|
||||
Seal-Prince
|
||||
Altar
|
||||
MermanThin
|
||||
CathedralDoor
|
||||
Toad
|
||||
RotBaby-Form1
|
||||
DarkJelly
|
||||
Seahorse5
|
||||
Moray
|
||||
DarkJellyFG
|
||||
MithalasUrn
|
||||
drask-statue
|
||||
queen-statue
|
||||
|
||||
GROUP:Forest
|
||||
GreenSeaDragon
|
||||
Simon
|
||||
CrawPappy
|
||||
SpikyBall
|
||||
SpiderCrab
|
||||
MossHead
|
||||
NudiBranch0
|
||||
NudiBranch1
|
||||
NudiBranch2
|
||||
NudiBranch3
|
||||
Dandelion
|
||||
electriceel
|
||||
pistolshrimp
|
||||
Wisker
|
||||
Squeezer
|
||||
BigMaul
|
||||
Mermog
|
||||
Mermoth
|
||||
Maul
|
||||
SeaWolf
|
||||
Coward
|
||||
Piranha
|
||||
UpsideDownJelly
|
||||
Orbiter
|
||||
Walker
|
||||
ForestSprite
|
||||
SporeChildFlowerRed
|
||||
SporeChildFlowerPortal
|
||||
|
||||
GROUP:Veil
|
||||
Shark
|
||||
LeopardShark
|
||||
TigerShark
|
||||
Monkey
|
||||
Parrot
|
||||
BigMouth
|
||||
BigMouthParasite
|
||||
HorseShoe
|
||||
PufferFish
|
||||
FlatFish
|
||||
Lionfish
|
||||
MetaRay
|
||||
Camopus
|
||||
Clam
|
||||
Rukh
|
||||
Starmie1
|
||||
Starmie2
|
||||
SeaTurtleBig
|
||||
SeaTurtleSmall
|
||||
SeaTurtleBaby
|
||||
MamaTurtle
|
||||
SeaTurtleBaby-Special1
|
||||
SeaTurtleBaby-Special2
|
||||
SeaTurtleBaby-Special3
|
||||
ancient-plant
|
||||
ancient-bulb
|
||||
|
||||
GROUP:SunTemple
|
||||
CrystalHolder
|
||||
LightCrystal
|
||||
LightCrystalCharged
|
||||
ClockworkFish
|
||||
ClockworkCrab
|
||||
Gear
|
||||
SpikeyEggDown
|
||||
SpikeyEggUp
|
||||
Skeeter
|
||||
SnailGear
|
||||
SlipperLobster
|
||||
SlipperGenerator
|
||||
GearSlow
|
||||
GearMed
|
||||
GearFast
|
||||
SunDoor
|
||||
|
||||
GROUP:Abyss
|
||||
Rock0007
|
||||
EvilJelly
|
||||
DeepUrchin
|
||||
AnglerFish
|
||||
Plasmaworm
|
||||
PlasmawormBG
|
||||
PredatoryTunicate
|
||||
DeepCrawley
|
||||
SpinyCrab
|
||||
DeepEel
|
||||
AbyssSpikes
|
||||
Wisp
|
||||
Hatchetfish
|
||||
Triffle
|
||||
BabyDeepShrimp
|
||||
ThermalVent
|
||||
SlenderEel
|
||||
DeepJelly
|
||||
DeepWhale
|
||||
|
||||
GROUP:IceCave
|
||||
IceChunkLarge
|
||||
IceChunkMedium
|
||||
IceChunkSmall
|
||||
Ekko
|
||||
IceCrab
|
||||
SeaHorse6
|
||||
IceJelly
|
||||
Spooter
|
||||
IceShrimp
|
||||
Mantis
|
||||
|
||||
GROUP:SunkenCity
|
||||
Scavenger
|
||||
CC_LostInCave
|
||||
CC_Mother
|
||||
CC_MissingMom
|
||||
CC_GF
|
||||
CC_Kid
|
||||
CC_Cat
|
||||
SunkenDoor
|
||||
CC_EndDemo
|
||||
CC_SunkenCity
|
||||
sunkencrate
|
||||
Spookfish
|
||||
ClayStatue
|
||||
Clay
|
||||
cc_father
|
||||
|
||||
GROUP:FinalDungeon
|
||||
AbyssOctopus
|
||||
Mutilus
|
||||
Horror
|
||||
Abaddon
|
||||
GroundShocker
|
||||
Mutileye
|
||||
JellyZap
|
||||
BiteyMouth
|
||||
Drask-Final
|
||||
Erulian-Final
|
||||
Krotite-Final
|
||||
Druniad-Final
|
||||
FinalDoor
|
||||
FinalTongue
|
||||
GrabbyArm
|
||||
MutantNaija
|
||||
LiCage
|
||||
Guardian
|
||||
bloodcell-red
|
||||
bloodcell-white
|
||||
cellgenerator
|
||||
crawlvirus
|
||||
roundvirus
|
||||
roundvirus-bg
|
||||
|
||||
GROUP:Bosses
|
||||
EnergyBoss
|
||||
HellBeast
|
||||
SunWorm
|
||||
ForestGod
|
||||
SunkenDad
|
||||
SunkenMom
|
||||
Zygote
|
||||
MomEyes
|
||||
NautilusPrime
|
||||
CrabBoss
|
||||
KingJelly
|
||||
Octomun
|
||||
Mergog
|
||||
CreatorForm1
|
||||
CreatorForm2
|
||||
CreatorForm3
|
||||
CreatorForm4
|
||||
CreatorForm5
|
||||
CreatorForm6
|
||||
CC_EndOfGame
|
||||
|
||||
GROUP:Secrets
|
||||
YoungLi
|
||||
Mia
|
||||
MiaGhost
|
||||
NaijaBabyGhost
|
||||
NaijaChild
|
||||
NaijaChildGhost
|
||||
StrangeCreature
|
||||
SongLamp0
|
||||
SongLamp1
|
||||
SongLamp2
|
||||
SongLamp3
|
||||
SongLamp4
|
||||
SongLamp5
|
||||
SongLamp6
|
||||
SongLamp7
|
||||
weird-derek
|
||||
weird-alec
|
||||
|
||||
GROUP:Items
|
||||
HealthUpgrade0
|
||||
HealthUpgrade1
|
||||
HealthUpgrade2
|
||||
HealthUpgrade3
|
||||
HealthUpgrade4
|
||||
FormUpgradeEnergy1
|
||||
FormUpgradeEnergy2
|
||||
FormUpgradeBeast
|
||||
CollectibleSongCave
|
||||
CollectibleNautilusPrime
|
||||
CollectibleNaijaCave
|
||||
CollectibleEnergyBoss
|
||||
CollectibleEnergyTemple
|
||||
CollectibleCrabCostume
|
||||
CollectibleChest
|
||||
CollectibleBanner
|
||||
CollectibleMithalaDoll
|
||||
CollectibleWalkerBaby
|
||||
CollectibleSeedBag
|
||||
CollectibleArnassiStatue
|
||||
CollectibleGear
|
||||
CollectibleSunKey
|
||||
CollectibleSkull
|
||||
CollectibleTridentHead
|
||||
CollectibleSporeSeed
|
||||
CollectibleUpsideDownSeed
|
||||
CollectibleEnergyStatue
|
||||
CollectibleJellyPlant
|
||||
CollectibleMithalasPot
|
||||
CollectibleSeahorseCostume
|
||||
CollectibleStoneHead
|
||||
CollectibleStarfish
|
||||
CollectibleBlackPearl
|
||||
CollectibleMutantCostume
|
||||
LiHelmet
|
||||
CaveFish1
|
||||
CaveFish2
|
||||
CaveFish3
|
||||
CaveFish4
|
||||
CollectibleDumboEgg
|
||||
CollectibleBlasterEgg
|
||||
CollectiblePiranhaEgg
|
||||
CollectibleJellyCostume
|
||||
CollectibleAnemoneSeed
|
||||
CollectibleBioSeed
|
||||
CollectibleUrchinCostume
|
||||
CollectibleMithalanCostume
|
||||
CollectibleTeenCostume
|
||||
CollectibleTurtleEgg
|
||||
|
||||
GROUP:Unsorted
|
||||
Fatso
|
||||
ForestGodVine
|
||||
ForestGodVineHead
|
||||
TitleTextLeft
|
||||
TitleTextCenter
|
||||
CursorSwarmer
|
||||
KrotiteWorshipper
|
||||
KrotiteErulianBattle01
|
||||
KrotiteOnTheWay
|
||||
KrotiteVsKrotite
|
||||
Druniad
|
||||
Drask
|
||||
PriestNormal
|
||||
DraskPriestBattle
|
||||
PullPlantNormal
|
||||
Ompo
|
||||
Architect
|
||||
EnergyGodSpirit
|
||||
SingBulb
|
||||
floating-city
|
||||
eric_13
|
||||
eric_energyboss
|
||||
eric_mithala
|
||||
eric_sunkenmom
|
||||
eric_mutantnaija
|
||||
eric_forestgod
|
||||
eric_erulian
|
||||
lucien
|
||||
airship
|
||||
gateway
|
||||
final-mutant
|
||||
dark-li-shot
|
||||
suncontainer
|
||||
falsebg
|
||||
upgrade-wok
|
||||
beluga
|
||||
merchild
|
||||
merwoman
|
||||
merman
|
||||
luciengf
|
||||
Rock0001
|
||||
Rock0002
|
||||
Rock0003
|
||||
Rock0004
|
||||
Rock0005
|
||||
Rock0006
|
||||
statuehead
|
||||
otter
|
||||
fishcaveglow
|
||||
timerock
|
||||
arnassi-spirit
|
|
@ -55,7 +55,7 @@ function v.commonInit(me, size)
|
|||
512, -- sprite height
|
||||
1, -- particle "explosion" type, maps to particleEffects.txt -1 = none
|
||||
1, -- 0/1 hit other entities off/on (uses collideRadius)
|
||||
4000, -- updateCull -1: disabled, default: 4000
|
||||
4000 -- updateCull -1: disabled, default: 4000
|
||||
)
|
||||
|
||||
loadSound("IceChunkBreak")
|
||||
|
|
|
@ -131,6 +131,7 @@
|
|||
BufferSecurityCheck="false"
|
||||
EnableFunctionLevelLinking="false"
|
||||
EnableEnhancedInstructionSet="2"
|
||||
FloatingPointModel="2"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="3"
|
||||
|
|
|
@ -123,6 +123,7 @@
|
|||
BufferSecurityCheck="false"
|
||||
EnableFunctionLevelLinking="false"
|
||||
EnableEnhancedInstructionSet="2"
|
||||
FloatingPointModel="2"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="3"
|
||||
|
@ -331,6 +332,14 @@
|
|||
RelativePath="..\..\BBGE\LensFlare.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\Localization.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\Localization.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\Math.cpp"
|
||||
>
|
||||
|
|
|
@ -123,6 +123,7 @@
|
|||
BufferSecurityCheck="false"
|
||||
EnableFunctionLevelLinking="false"
|
||||
EnableEnhancedInstructionSet="2"
|
||||
FloatingPointModel="2"
|
||||
RuntimeTypeInfo="false"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
|
|
Loading…
Add table
Reference in a new issue