bool Creature::canSeeCreature(const Creature* creature) const { if (!canSeeInvisibility() && creature->isInvisible()) { return false; } return true; }
bool Monster::canAttack(const Creature& creature) const { if (!creature.isAlive()) { return false; } if (hasMaster()) { return _master->canAttack(creature); } // TODO name "isAttackable" is too broad if (!creature.isAttackable()) { return false; } // TODO merge with isAttackable? if (creature.getZone() == ZONE_PROTECTION) { return false; } if (creature.isInvisible() && !canSeeInvisibility()) { return false; } PlayerPC controller = creature.getController(); if (controller != nullptr) { if (controller->isGhost()) { return false; } } return true; }
bool Creature::canSeeCreature(const Creature* creature) const { if(creature == this){ return true; } if(creature->getPlayer() && creature->getPlayer()->hasFlag(PlayerFlag_CannotBeSeen)){ return false; } if(!canSeeInvisibility() && creature->isInvisible()){ return false; } return true; }
bool Creature::canSeeCreature(const Creature* creature) const { return creature == this || (!creature->isGhost() && (!creature->isInvisible() || canSeeInvisibility())); }