From 15fab1c9a5eca9f77603508f1e05bc4abfb6f0ce Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Mon, 24 Mar 2008 16:23:03 +0100 Subject: [PATCH] Fix launch to require petrol for launching satellites launch_sat() failed to call msl_equip(). Change msl_equip() to take the mission character as argument, because the old hardcoded 'p' isn't appropriate for satellites. Best fit for satellites is 'r' for reconnaissance, but mission_pln_equip() doesn't accept that (pln_equip() does). Fix that as well. --- include/prototypes.h | 2 +- src/lib/commands/laun.c | 8 ++++++-- src/lib/subs/mission.c | 1 + src/lib/subs/mslsub.c | 4 ++-- 4 files changed, 10 insertions(+), 5 deletions(-) diff --git a/include/prototypes.h b/include/prototypes.h index 1a127da7..9921189e 100644 --- a/include/prototypes.h +++ b/include/prototypes.h @@ -504,7 +504,7 @@ extern int move_ground(struct sctstr *, struct sctstr *, extern int fly_map(coord, coord); /* mslsub.c */ extern int msl_intercept(coord, coord, natid, int, int, int, int); -extern int msl_equip(struct plnstr *); +extern int msl_equip(struct plnstr *, char); extern int msl_hit(struct plnstr *, int, int, int, int, char *, coord, coord, int); extern void msl_sel(struct emp_qelem *, coord, coord, natid, int, diff --git a/src/lib/commands/laun.c b/src/lib/commands/laun.c index 996188b8..7e3198f7 100644 --- a/src/lib/commands/laun.c +++ b/src/lib/commands/laun.c @@ -171,7 +171,7 @@ launch_as(struct plnstr *pp) int dam, nukedam; natid oldown; - if (msl_equip(pp) < 0) { + if (msl_equip(pp, 'p') < 0) { pr("%s not enough petrol or shells!\n", prplane(pp)); return RET_FAIL; } @@ -280,7 +280,7 @@ launch_missile(struct plnstr *pp, int sublaunch) pr("Range too great; try again!\n"); return RET_FAIL; } - if (msl_equip(pp) < 0) { + if (msl_equip(pp, 'p') < 0) { pr("%s not enough shells!\n", prplane(pp)); return RET_FAIL; } @@ -390,6 +390,10 @@ launch_sat(struct plnstr *pp, int sublaunch) return RET_SYN; if (!check_plane_ok(pp)) return RET_FAIL; + if (msl_equip(pp, 'r') < 0) { + pr("%s not enough petrol!\n", prplane(pp)); + return RET_FAIL; + } pp->pln_theta = 0; pp->pln_flags |= PLN_SYNCHRONOUS; if (*p == 0 || *p == 'n') diff --git a/src/lib/subs/mission.c b/src/lib/subs/mission.c index a80e8cf6..3f812f2f 100644 --- a/src/lib/subs/mission.c +++ b/src/lib/subs/mission.c @@ -1036,6 +1036,7 @@ mission_pln_equip(struct plist *plp, struct ichrstr *ip, int flags, needed = load; } break; + case 'r': /* reconnaissance */ case 0: /* plane interception */ break; default: diff --git a/src/lib/subs/mslsub.c b/src/lib/subs/mslsub.c index 4b1a0cdd..970b701c 100644 --- a/src/lib/subs/mslsub.c +++ b/src/lib/subs/mslsub.c @@ -53,14 +53,14 @@ #include "xy.h" int -msl_equip(struct plnstr *pp) +msl_equip(struct plnstr *pp, char mission) { struct plist pl; memset(&pl, 0, sizeof(struct plist)); pl.pcp = plchr + pp->pln_type; pl.plane = *pp; - return mission_pln_equip(&pl, 0, 0, 'p'); + return mission_pln_equip(&pl, 0, 0, mission); } int