fix: game crash
This commit is contained in:
@@ -63,18 +63,12 @@ void Mob::updateEffects(std::uint64_t delta) {
|
||||
}
|
||||
if(hasEffect(EffectType::Fire)){
|
||||
if(m_EffectFireTimer.update(delta)){
|
||||
damage(3);
|
||||
if(isDead()){
|
||||
setKillTower(getEffect(EffectType::Fire).tower);
|
||||
}
|
||||
damage(3, getEffect(EffectType::Fire).tower);
|
||||
}
|
||||
}
|
||||
if(hasEffect(EffectType::Poison)){
|
||||
if(m_EffectPoisonTimer.update(delta)){
|
||||
damage(1);
|
||||
if(isDead()){
|
||||
setKillTower(getEffect(EffectType::Poison).tower);
|
||||
}
|
||||
damage(3, getEffect(EffectType::Poison).tower);
|
||||
}
|
||||
}
|
||||
if(hasEffect(EffectType::Heal)){
|
||||
|
||||
@@ -233,7 +233,7 @@ void IceTower::tick(std::uint64_t delta, World* world) {
|
||||
for (MobPtr mob : world->getMobList()) {
|
||||
if (isMobInRange(mob)) {
|
||||
mob->addEffect(EffectType::Slowness, 1, this); // slowness for 1s every second
|
||||
mob->damage(damage);
|
||||
mob->damage(damage, this);
|
||||
wasTowerActive = true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -251,7 +251,7 @@ void World::cleanDeadMobs() {
|
||||
Player& sender = m_Game->getPlayerById(mob->getSender());
|
||||
sender.addExp(mob->getStats()->getExpReward());
|
||||
|
||||
Player& killer = m_Game->getPlayerById(mob->getKillTower()->getBuilder());
|
||||
Player& killer = m_Game->getPlayerById(mob->getLastDamageTower()->getBuilder());
|
||||
killer.addGold(mob->getStats()->getMoneyCost());
|
||||
|
||||
m_Mobs.erase(m_Mobs.begin() + i);
|
||||
@@ -287,9 +287,7 @@ void World::OnArrowShot(MobPtr target, Tower* shooter) {
|
||||
if (explosiveArrows) {
|
||||
// aoe damage
|
||||
} else {
|
||||
target->damage(shooter->getStats()->getDamage());
|
||||
if (target->isDead())
|
||||
target->setKillTower(shooter);
|
||||
target->damage(shooter->getStats()->getDamage(), shooter);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user