Example #1
0
bool Creature::canSeeCreature(const Creature* creature) const
{
	if (!canSeeInvisibility() && creature->isInvisible()) {
		return false;
	}
	return true;
}
Example #2
0
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;
}
Example #3
0
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;
}
Example #4
0
bool Creature::canSeeCreature(const Creature* creature) const
{
	return creature == this || (!creature->isGhost() && (!creature->isInvisible() || canSeeInvisibility()));
}