void GiantSlimeEntity::collideWithEnemy(EnemyEntity* entity) { if (entity->getMovingStyle() == movWalking) { inflictsRecoilTo(entity); } }
void CauldronEntity::readCollidingEntity(CollidingSpriteEntity* entity) { if (!isDying && !isAgonising && collideWithEntity(entity)) { if (entity->getType() == ENTITY_PLAYER || entity->getType() == ENTITY_BOLT ) { PlayerEntity* playerEntity = dynamic_cast<PlayerEntity*>(entity); BoltEntity* boltEntity = dynamic_cast<BoltEntity*>(entity); if (playerEntity != NULL && !playerEntity->isDead()) { inflictsRecoilTo(playerEntity); } else if (boltEntity != NULL && !boltEntity->getDying() && boltEntity->getAge() > 0.05f) { collideWithBolt(boltEntity); } } else // collision with other enemy ? { if (entity->getType() >= ENTITY_ENEMY && entity->getType() <= ENTITY_ENEMY_MAX) { if (this != entity) { EnemyEntity* enemyEntity = static_cast<EnemyEntity*>(entity); if (enemyEntity->canCollide()) collideWithEnemy(enemyEntity); } } } } }
void SnakeEntity::readCollidingEntity(CollidingSpriteEntity* entity) { if (!isDying && !isAgonising && collideWithEntity(entity)) { if (entity->getType() == ENTITY_PLAYER || entity->getType() == ENTITY_BOLT ) { PlayerEntity* playerEntity = dynamic_cast<PlayerEntity*>(entity); BoltEntity* boltEntity = dynamic_cast<BoltEntity*>(entity); if (playerEntity != NULL && !playerEntity->isDead()) { int meleeLevel = 0; if (snakeType == SnakeTypeBlood) { if (rand() % 3 == 0) { meleeType = ShotTypePoison; meleeDamages = 4; meleeLevel = 1; } else { meleeType = ShotTypeStandard; meleeDamages = 8; } } if (playerEntity->hurt(getHurtParams(meleeDamages, meleeType, meleeLevel, false, SourceTypeMelee, enemyType, false))) { float xs = (x + playerEntity->getX()) / 2; float ys = (y + playerEntity->getY()) / 2; SpriteEntity* star = new SpriteEntity(ImageManager::getInstance().getImage(IMAGE_HURT_IMPACT), xs, ys); star->setFading(true); star->setZ(y+ 100); star->setLifetime(0.7f); star->setType(ENTITY_EFFECT); star->setSpin(400.0f); } inflictsRecoilTo(playerEntity); } else if (boltEntity != NULL && !boltEntity->getDying() && boltEntity->getAge() > 0.05f) { collideWithBolt(boltEntity); } } else // collision with other enemy ? { if (entity->getType() >= ENTITY_ENEMY && entity->getType() <= ENTITY_ENEMY_MAX_COUNT) { if (this != entity) { EnemyEntity* enemyEntity = static_cast<EnemyEntity*>(entity); if (enemyEntity->canCollide()) collideWithEnemy(enemyEntity); } } } } }
void CyclopsEntity::collideWithEnemy(EnemyEntity* entity) { if (entity->getMovingStyle() == movWalking) inflictsRecoilTo(entity); }
void CauldronEntity::collideWithEnemy(EnemyEntity* entity) { if (entity->getMovingStyle() != movFlying) inflictsRecoilTo(entity); }