T
Tinkz
Guest
Hello!
i'm using TFS 1.2 and i'm having an issue with creature on top and creature on bottom. I'm interested in adding the feature uh trap which means that the last guy on a player stack should be on top of everyone. Right now it is reversed, meaning on my server the last person that enters a stack of player becomes the last.
I'm sure it is this piece of source code found in tile.cpp
i'm using TFS 1.2 and i'm having an issue with creature on top and creature on bottom. I'm interested in adding the feature uh trap which means that the last guy on a player stack should be on top of everyone. Right now it is reversed, meaning on my server the last person that enters a stack of player becomes the last.
I'm sure it is this piece of source code found in tile.cpp
C++:
Creature* Tile::getTopCreature() const
{
if (const CreatureVector* creatures = getCreatures()) {
if (!creatures->empty()) {
return *creatures->begin();
}
}
return nullptr;
}
const Creature* Tile::getBottomCreature() const
{
if (const CreatureVector* creatures = getCreatures()) {
if (!creatures->empty()) {
return *creatures->rbegin();
}
}
return nullptr;
}
Creature* Tile::getTopVisibleCreature(const Creature* creature) const
{
if (const CreatureVector* creatures = getCreatures()) {
if (creature) {
const Player* player = creature->getPlayer();
if (player && player->isAccessPlayer()) {
return getTopCreature();
}
for (Creature* tileCreature : *creatures) {
if (creature->canSeeCreature(tileCreature)) {
return tileCreature;
}
}
} else {
for (Creature* tileCreature : *creatures) {
if (!tileCreature->isInvisible()) {
const Player* player = tileCreature->getPlayer();
if (!player || !player->isInGhostMode()) {
return tileCreature;
}
}
}
}
}
return nullptr;
}
const Creature* Tile::getBottomVisibleCreature(const Creature* creature) const
{
if (const CreatureVector* creatures = getCreatures()) {
if (creature) {
const Player* player = creature->getPlayer();
if (player && player->isAccessPlayer()) {
return getBottomCreature();
}
for (auto it = creatures->rbegin(), end = creatures->rend(); it != end; ++it) {
if (creature->canSeeCreature(*it)) {
return *it;
}
}
} else {
for (auto it = creatures->rbegin(), end = creatures->rend(); it != end; ++it) {
if (!(*it)->isInvisible()) {
const Player* player = (*it)->getPlayer();
if (!player || !player->isInGhostMode()) {
return *it;
}
}
}
}
}
return nullptr;
}