diff --git a/src/faction.c b/src/faction.c index 9c6d061..ffa4414 100644 --- a/src/faction.c +++ b/src/faction.c @@ -156,6 +156,7 @@ static void faction_sanitizePlayer(Faction* faction) { void faction_modPlayer(int f, double mod) { int i; Faction* faction, *ally, *enemy; + double m; if(!faction_isFaction(f)) { WARN("%d is an invalid faction.", f); @@ -172,7 +173,12 @@ void faction_modPlayer(int f, double mod) { for(i = 0; i < faction->nallies; i++) { ally = &faction_stack[faction->allies[i]]; - ally->player += RNGF() * (mod*3/4); + /* Enemies are made faster. */ + m = RNGF(); + if(mod > 0.) + m *= 3./4.; + + ally->player += m; faction_sanitizePlayer(ally); } @@ -180,7 +186,12 @@ void faction_modPlayer(int f, double mod) { for(i = 0; i < faction->nenemies; i++) { enemy = &faction_stack[faction->enemies[i]]; - enemy->player -= RNGF() * mod; /* Enemies are made faster. */ + /* Enemies are made faster. */ + m = RNGF(); + if(mod < 0.) + m *= 3./4.; + + enemy->player -= m; faction_sanitizePlayer(enemy); } } diff --git a/src/pilot.c b/src/pilot.c index 96315f1..eb40ca0 100644 --- a/src/pilot.c +++ b/src/pilot.c @@ -458,8 +458,8 @@ void pilot_hit(Pilot* p, const Solid* w, const unsigned int shooter, /* Adjust the combat rating based on pilot mass and ditto faction. */ pshooter = pilot_get(shooter); if(pshooter->faction == FACTION_PLAYER) { - mod = pow(p->ship->mass, 1./3.); - player_crating += 2*mod; + mod = sqrt(p->ship->mass) / 5; + player_crating += 2*mod; /* Crating chanes faster. */ faction_modPlayer(p->faction, -mod); } }