Factor out torpedo hit chance into shp_torp_hitchance()
This commit is contained in:
parent
4849600cd5
commit
504f035450
5 changed files with 24 additions and 17 deletions
|
@ -188,5 +188,6 @@ extern int shp_fire(struct shpstr *);
|
||||||
extern int shp_torp(struct shpstr *, int);
|
extern int shp_torp(struct shpstr *, int);
|
||||||
extern double shp_fire_range(struct shpstr *);
|
extern double shp_fire_range(struct shpstr *);
|
||||||
extern int shp_usable_guns(struct shpstr *);
|
extern int shp_usable_guns(struct shpstr *);
|
||||||
|
extern double shp_torp_hitchance(struct shpstr *, int);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -34,7 +34,6 @@
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
|
|
||||||
#include "commands.h"
|
#include "commands.h"
|
||||||
#include "damage.h"
|
|
||||||
#include "empobj.h"
|
#include "empobj.h"
|
||||||
#include "optlist.h"
|
#include "optlist.h"
|
||||||
#include "retreat.h"
|
#include "retreat.h"
|
||||||
|
@ -742,7 +741,7 @@ quiet_bigdef(int attacker, struct emp_qelem *list, natid own, natid aown,
|
||||||
fp->type = targ_ship;
|
fp->type = targ_ship;
|
||||||
fp->uid = ship.shp_uid;
|
fp->uid = ship.shp_uid;
|
||||||
add_to_fired_queue(&fp->queue, list);
|
add_to_fired_queue(&fp->queue, list);
|
||||||
if (!chance(DTORP_HITCHANCE(range, ship.shp_visib)))
|
if (!chance(shp_torp_hitchance(&ship, range)))
|
||||||
continue;
|
continue;
|
||||||
dam += dam2;
|
dam += dam2;
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -37,7 +37,6 @@
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
|
|
||||||
#include "commands.h"
|
#include "commands.h"
|
||||||
#include "damage.h"
|
|
||||||
#include "news.h"
|
#include "news.h"
|
||||||
#include "optlist.h"
|
#include "optlist.h"
|
||||||
#include "retreat.h"
|
#include "retreat.h"
|
||||||
|
@ -159,7 +158,7 @@ torp(void)
|
||||||
getship(victno, &vship);
|
getship(victno, &vship);
|
||||||
vshipown = vship.shp_own;
|
vshipown = vship.shp_own;
|
||||||
range = mapdist(sub.shp_x, sub.shp_y, vship.shp_x, vship.shp_y);
|
range = mapdist(sub.shp_x, sub.shp_y, vship.shp_x, vship.shp_y);
|
||||||
hitchance = DTORP_HITCHANCE(range, sub.shp_visib);
|
hitchance = shp_torp_hitchance(&sub, range);
|
||||||
if (range <= erange) {
|
if (range <= erange) {
|
||||||
pr("Hitchance = %d%%\n", (int)(hitchance * 100));
|
pr("Hitchance = %d%%\n", (int)(hitchance * 100));
|
||||||
}
|
}
|
||||||
|
@ -307,7 +306,7 @@ fire_torp(struct shpstr *sp, struct shpstr *targ, int ntargets)
|
||||||
|
|
||||||
pr("Captain! Torpedoes sighted!\n");
|
pr("Captain! Torpedoes sighted!\n");
|
||||||
|
|
||||||
if (chance(DTORP_HITCHANCE(range, sp->shp_visib))) {
|
if (chance(shp_torp_hitchance(sp, range))) {
|
||||||
pr("BOOM!...\n");
|
pr("BOOM!...\n");
|
||||||
if (sp->shp_own != 0)
|
if (sp->shp_own != 0)
|
||||||
wu(0, sp->shp_own, "%s @ %s torpedoed %s\n",
|
wu(0, sp->shp_own, "%s @ %s torpedoed %s\n",
|
||||||
|
|
|
@ -235,16 +235,6 @@ effrange(int rng, double tlev)
|
||||||
return techfact((int)tlev, rng / 2.0);
|
return techfact((int)tlev, rng / 2.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Return torpedo range for ship SP.
|
|
||||||
*/
|
|
||||||
double
|
|
||||||
torprange(struct shpstr *sp)
|
|
||||||
{
|
|
||||||
return effrange(sp->shp_frnge * 2, sp->shp_tech)
|
|
||||||
* sp->shp_effic / 100.0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Return firing range for sector SP.
|
* Return firing range for sector SP.
|
||||||
*/
|
*/
|
||||||
|
@ -272,6 +262,25 @@ shp_fire_range(struct shpstr *sp)
|
||||||
return effrange(sp->shp_frnge, sp->shp_tech);
|
return effrange(sp->shp_frnge, sp->shp_tech);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Return torpedo range for ship SP.
|
||||||
|
*/
|
||||||
|
double
|
||||||
|
torprange(struct shpstr *sp)
|
||||||
|
{
|
||||||
|
return effrange(sp->shp_frnge * 2, sp->shp_tech)
|
||||||
|
* sp->shp_effic / 100.0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Return hit chance for torpedo from ship SP at range RANGE.
|
||||||
|
*/
|
||||||
|
double
|
||||||
|
shp_torp_hitchance(struct shpstr *sp, int range)
|
||||||
|
{
|
||||||
|
return DTORP_HITCHANCE(range, sp->shp_visib);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Return firing range for land unit SP.
|
* Return firing range for land unit SP.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -35,7 +35,6 @@
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include "damage.h"
|
|
||||||
#include "empobj.h"
|
#include "empobj.h"
|
||||||
#include "file.h"
|
#include "file.h"
|
||||||
#include "item.h"
|
#include "item.h"
|
||||||
|
@ -501,7 +500,7 @@ perform_mission(coord x, coord y, natid victim, struct emp_qelem *list,
|
||||||
putship(sp->shp_uid, sp);
|
putship(sp->shp_uid, sp);
|
||||||
if (dam2 < 0)
|
if (dam2 < 0)
|
||||||
continue;
|
continue;
|
||||||
hitchance = DTORP_HITCHANCE(md, sp->shp_visib);
|
hitchance = shp_torp_hitchance(sp, md);
|
||||||
|
|
||||||
wu(0, sp->shp_own,
|
wu(0, sp->shp_own,
|
||||||
"%s locking on %s %s in %s\n",
|
"%s locking on %s %s in %s\n",
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue