* Dave Pare, 1986
* Ken Stevens, 1995
* Steve McClure, 1998-2000
- * Markus Armbruster, 2004-2012
+ * Markus Armbruster, 2004-2015
*/
#include <config.h>
plp = (struct plist *)qp;
if (changed_plane_aborts(plp))
continue;
- dam += pln_damage(&plp->plane, 'p', 1);
+ dam += pln_damage(&plp->plane, 'p', "");
}
getsect(target->sct_x, target->sct_y, §);
target = §
pr("did %d%% damage to efficiency in %s\n",
oldeff - target->sct_effic,
xyas(target->sct_x, target->sct_y, player->cnum));
- if (target->sct_own)
- wu(0, target->sct_own,
- "%s bombing raid did %d%% damage in %s\n",
- cname(player->cnum), oldeff - target->sct_effic,
- xyas(target->sct_x, target->sct_y, target->sct_own));
+ if (target->sct_own != player->cnum)
+ mpr(target->sct_own,
+ "%s bombing raid did %d%% damage in %s\n",
+ cname(player->cnum), oldeff - target->sct_effic,
+ xyas(target->sct_x, target->sct_y, target->sct_own));
bridge_damaged(target);
putsect(§);
collateral_damage(target->sct_x, target->sct_y, dam);
plp = (struct plist *)qp;
if (changed_plane_aborts(plp))
continue;
- dam += pln_damage(&plp->plane, 'p', 1);
+ dam += pln_damage(&plp->plane, 'p', "");
}
getsect(target->sct_x, target->sct_y, §);
target = §
pr("did %.2f%% damage to %s in %s\n",
b, ip->i_name, xyas(target->sct_x, target->sct_y, player->cnum));
nreport(player->cnum, N_SCT_BOMB, target->sct_own, 1);
- if (target->sct_own != 0)
- wu(0, target->sct_own,
- "%s precision bombing raid did %.2f%% damage to %s in %s\n",
- cname(player->cnum), b, ip->i_name,
- xyas(target->sct_x, target->sct_y, target->sct_own));
+ if (target->sct_own != player->cnum)
+ mpr(target->sct_own,
+ "%s precision bombing raid did %.2f%% damage to %s in %s\n",
+ cname(player->cnum), b, ip->i_name,
+ xyas(target->sct_x, target->sct_y, target->sct_own));
putsect(§);
collateral_damage(target->sct_x, target->sct_y, dam);
}
}
if (pct_chance(hitchance)) {
/* pinbombing is more accurate than normal bombing */
- dam = 2 * pln_damage(&plp->plane, 'p', 1);
+ dam = 2 * pln_damage(&plp->plane, 'p', "");
} else {
pr("splash\n");
/* Bombs that miss have to land somewhere! */
nreport(player->cnum, N_SUB_BOMB, ship.shp_own, 1);
else
nreport(player->cnum, N_SHP_BOMB, ship.shp_own, 1);
- if (ship.shp_own) {
- wu(0, ship.shp_own, "%s bombs did %d damage to %s at %s\n",
- cname(player->cnum), dam,
- prship(&ship),
- xyas(target->sct_x, target->sct_y, ship.shp_own));
+ if (ship.shp_own != player->cnum) {
+ mpr(ship.shp_own, "%s bombs did %d damage to %s at %s\n",
+ cname(player->cnum), dam,
+ prship(&ship),
+ xyas(target->sct_x, target->sct_y, ship.shp_own));
}
- pr("\n");
- check_retreat_and_do_shipdamage(&ship, dam);
- if (ship.shp_rflags & RET_BOMBED)
- if (((ship.shp_rflags & RET_INJURED) == 0) || !dam)
- retreat_ship(&ship, 'b');
- putship(ship.shp_uid, &ship);
- getship(ship.shp_uid, &ship);
- if (!ship.shp_own) {
+ shipdamage(&ship, dam);
+ if (ship.shp_effic < SHIP_MINEFF)
pr("%s at %s sunk!\n",
prship(&ship),
xyas(target->sct_x, target->sct_y, player->cnum));
- }
+ if (dam && (ship.shp_rflags & RET_INJURED))
+ retreat_ship(&ship, 'i');
+ else if (ship.shp_rflags & RET_BOMBED)
+ retreat_ship(&ship, 'b');
+ putship(ship.shp_uid, &ship);
collateral_damage(target->sct_x, target->sct_y, dam / 2);
}
out:
n = atoi(q);
if (n < 0)
continue;
- if (getplane(n, &plane) &&
+ if (getplane(n, &plane) && plane.pln_own &&
plane.pln_x == target->sct_x &&
plane.pln_y == target->sct_y &&
plane.pln_ship < 0 && plane.pln_land < 0 &&
}
if (pct_chance(hitchance)) {
/* pinbombing is more accurate than normal bombing */
- dam = 2 * pln_damage(&plp->plane, 'p', 1);
+ dam = 2 * pln_damage(&plp->plane, 'p', "");
} else {
pr("thud\n");
/* Bombs that miss have to land somewhere! */
else
plane.pln_effic -= dam;
plane.pln_mobil = (dam * plane.pln_mobil / 100.0);
- if (own == player->cnum) {
- pr("%s reports %d%% damage\n", prplane(&plane), dam);
- } else {
- if (own != 0)
- wu(0, own,
- "%s pinpoint bombing raid did %d%% damage to %s\n",
- cname(player->cnum), dam, prplane(&plane));
- }
- nreport(player->cnum, N_DOWN_PLANE, own, 1);
- if (own != 0)
- wu(0, own, "%s bombs did %d%% damage to %s at %s\n",
+ mpr(own, "%s bombs did %d%% damage to %s at %s\n",
cname(player->cnum), dam, prplane(&plane),
xyas(target->sct_x, target->sct_y, own));
+ nreport(player->cnum, N_DOWN_PLANE, own, 1);
putplane(plane.pln_uid, &plane);
collateral_damage(target->sct_x, target->sct_y, dam);
}
pr("%d%% hitchance...", hitchance);
}
if (pct_chance(hitchance)) {
- dam = 2 * pln_damage(&plp->plane, 'p', 1);
+ dam = 2 * pln_damage(&plp->plane, 'p', "");
} else {
pr("thud\n");
/* Bombs that miss have to land somewhere! */
if (dam > 100)
dam = 100;
own = land.lnd_own;
- mpr(own, "%s pinpoint bombing raid did %d damage to %s\n",
- cname(player->cnum), dam, prland(&land));
- check_retreat_and_do_landdamage(&land, dam);
-
- if (land.lnd_rflags & RET_BOMBED)
- if (((land.lnd_rflags & RET_INJURED) == 0) || !dam)
- retreat_land(&land, 'b');
+ if (own != player->cnum)
+ mpr(own, "%s bombs did %d%% damage to %s at %s\n",
+ cname(player->cnum), dam, prland(&land),
+ xyas(target->sct_x, target->sct_y, own));
+ landdamage(&land, dam);
+ if (dam && (land.lnd_rflags & RET_INJURED))
+ retreat_land(&land, 'i');
+ else if (land.lnd_rflags & RET_BOMBED)
+ retreat_land(&land, 'b');
nreport(player->cnum, N_UNIT_BOMB, own, 1);
putland(land.lnd_uid, &land);
collateral_damage(target->sct_x, target->sct_y, dam);
detonate(&nuke, target->sct_x, target->sct_y,
plp->plane.pln_flags & PLN_AIRBURST);
else
- dam += pln_damage(&plp->plane, 's', 1);
+ dam += pln_damage(&plp->plane, 's', "");
}
if (dam <= 0)
return;
getsect(target->sct_x, target->sct_y, §);
target = §
- if (target->sct_own)
- wu(0, target->sct_own, "%s bombing raid did %d damage in %s\n",
- cname(player->cnum), PERCENT_DAMAGE(dam),
- xyas(target->sct_x, target->sct_y, target->sct_own));
+ if (target->sct_own != player->cnum)
+ mpr(target->sct_own, "%s bombing raid did %d damage in %s\n",
+ cname(player->cnum), PERCENT_DAMAGE(dam),
+ xyas(target->sct_x, target->sct_y, target->sct_own));
sectdamage(target, dam);