void SpaceStation::takeDamage(float damage_amount, DamageInfo info) { shields -= damage_amount; if (shields < 0) { if (info.type != DT_EMP) { hull_strength -= damage_amount; if (hull_strength <= 0.0) { ExplosionEffect* e = new ExplosionEffect(); e->setSize(getRadius()); e->setPosition(getPosition()); if (info.instigator) { if (isEnemy(info.instigator)) info.instigator->addReputationPoints((hull_max + shields_max) * 0.1); else info.instigator->removeReputationPoints((hull_max + shields_max) * 0.1); } destroy(); } } shields = 0; }else{ shieldHitEffect = 1.0; } }
void SpaceStation::destroyedByDamage(DamageInfo& info) { ExplosionEffect* e = new ExplosionEffect(); e->setSize(getRadius()); e->setPosition(getPosition()); if (info.instigator) { float points = 0; if (shield_count > 0) { for(int n=0; n<shield_count; n++) { points += shield_max[n] * 0.1; } points /= shield_count; } points += hull_max * 0.1; if (isEnemy(info.instigator)) info.instigator->addReputationPoints(points); else info.instigator->removeReputationPoints(points); } }