add fire arrow and fix world events

This commit is contained in:
2021-12-03 18:30:45 +01:00
parent 657fe761ab
commit 7a6fdc30b6
7 changed files with 17 additions and 21 deletions

View File

@@ -399,15 +399,20 @@ TowerPtr World::getTowerById(TowerID towerID) {
}
void World::OnArcherTowerShot(MobPtr target, ArcherTower* shooter) {
bool explosiveArrows = shooter->getLevel().getPath() == TowerPath::Bottom;
notifyListeners(&WorldListener::OnArrowShot, target, shooter);
bool fireArrows = shooter->getLevel().getPath() == TowerPath::Bottom;
bool explosiveArrows = shooter->getLevel().getLevel() == 4 && fireArrows;
notifyListeners(&WorldListener::OnArrowShot, target, fireArrows, shooter);
if (explosiveArrows) {
notifyListeners(&WorldListener::OnExplosion, utils::shape::Circle{ target->getCenterX(), target->getCenterY(), ArcherTower::ExplosionRadius }, shooter->getStats()->getDamage(), shooter);
}
}
void World::OnArrowShot(MobPtr target, Tower* shooter) {
void World::OnArrowShot(MobPtr target, bool fireArrow, Tower* shooter) {
notifyListeners(&WorldListener::OnMobDamage, target, shooter->getStats()->getDamage(), shooter);
if (fireArrow) {
target->addEffect(EffectType::Fire, ArcherTower::FireDurationSec, shooter);
}
}
void World::OnExplosion(utils::shape::Circle explosion, float centerDamage, Tower* shooter) {