From e7c2a3097e455ce93c62a21832e5c584031468db Mon Sep 17 00:00:00 2001 From: "Eric S. Raymond" Date: Sat, 12 Feb 2005 04:33:52 +0000 Subject: [PATCH] Simplified the logic for refeshing starcharts. --- events.c | 3 +- moving.c | 2 +- reports.c | 26 +++++------- setup.c | 2 +- sst.c | 3 -- sst.h | 118 +++++++++++++++++++++++++++--------------------------- 6 files changed, 73 insertions(+), 81 deletions(-) diff --git a/events.c b/events.c index 2935404..d734cce 100644 --- a/events.c +++ b/events.c @@ -50,8 +50,7 @@ void events(void) game.damage[l] -= (game.damage[l]-repair > 0.0 ? repair : game.damage[l]); /* If radio repaired, update star chart and attack reports */ if (radio_was_broken && game.damage[DRADIO] == 0.0) { - stdamtim = FOREVER; - prout("Lt. Uhura- \"Captain, the sub-space radio is working and"); +1 prout("Lt. Uhura- \"Captain, the sub-space radio is working and"); prout(" surveillance reports are coming in."); skip(1); if (iseenit==0) { diff --git a/moving.c b/moving.c index 31374c2..7dee9e5 100644 --- a/moving.c +++ b/moving.c @@ -233,7 +233,7 @@ void dock(int l) shield = inshld; torps = intorps; lsupres = inlsr; - if (stdamtim != FOREVER && + if (game.damage[DRADIO] == 0.0 && (game.future[FCDBAS] < FOREVER || isatb == 1) && iseenit == 0) { /* get attack report from base */ prout("Lt. Uhura- \"Captain, an important message from the starbase:\""); diff --git a/reports.c b/reports.c index 29bcba5..d4b1f63 100644 --- a/reports.c +++ b/reports.c @@ -175,7 +175,7 @@ void rechart(void) /* update the chart in the Enterprise's computer from galaxy data */ { int i, j; - stdamtim = game.state.date; + lastchart = game.state.date; for_quadrants(i) for_quadrants(j) if (game.state.galaxy[i][j].charted) { @@ -190,23 +190,19 @@ void chart(int nn) int i,j; char *cp; chew(); - if (stdamtim != FOREVER && stdamtim != game.state.date && condit == IHDOCKED) { + + if (game.damage[DRADIO] == 0.0) + rechart(); + + if (lastchart < game.state.date && condit == IHDOCKED) { proutn("Spock- \"I revised the Star Chart from the starbase's records.\"\n\r"); - } - if (nn == 0) proutn(" STAR CHART FOR THE KNOWN GALAXY\n\r"); - if (stdamtim != FOREVER) { - if (condit == IHDOCKED) { - /* We are docked, so restore chart from base information */ - rechart(); - } - else if (game.state.date-stdamtim) { - prout("(Last surveillance update %d stardates ago).", - (int)(game.state.date-stdamtim)); - } - } - else if (game.damage[DRADIO] == 0.0) rechart(); + } + if (nn == 0) proutn(" STAR CHART FOR THE KNOWN GALAXY\n\r"); + if (game.state.date > lastchart) + prout("(Last surveillance update %d stardates ago).", + (int)(game.state.date-lastchart)); prout(" 1 2 3 4 5 6 7 8"); for_quadrants(i) { proutn("%d |", i); diff --git a/setup.c b/setup.c index 4963413..d729c61 100644 --- a/setup.c +++ b/setup.c @@ -242,7 +242,7 @@ void setup(int needprompt) game.future[FSCDBAS] = FOREVER; game.future[FDSPROB] = FOREVER; // Starchart is functional but we've never seen it - stdamtim = FOREVER; + lastchart = FOREVER; // Put stars in the galaxy instar = 0; for_quadrants(i) diff --git a/sst.c b/sst.c index 87595a6..5fddb15 100644 --- a/sst.c +++ b/sst.c @@ -751,7 +751,6 @@ void debugme(void) for (i=0; i < NDEVICES; i++) if (game.damage[i] > 0.0) game.damage[i] = 0.0; - stdamtim = FOREVER; } proutn("Toggle idebug? "); if (ja() != 0) { @@ -770,8 +769,6 @@ void debugme(void) key = scan(); if (key == IHALPHA && isit("y")) { game.damage[i] = 10.0; - if (i == DRADIO) - stdamtim = game.state.date; } } } diff --git a/sst.h b/sst.h index f514d5c..cb20407 100644 --- a/sst.h +++ b/sst.h @@ -233,7 +233,7 @@ EXTERN struct { docfac, resting, damfac, - stdamtim, + lastchart, cryprob, probex, probey, @@ -243,88 +243,88 @@ EXTERN struct { } game; #define inkling game.inkling // Initial number of klingons -#define inbase game.inbase // Initial number of bases -#define incom game.incom // Initian number of commanders -#define instar game.instar // Initial stars +#define inbase game.inbase // Initial number of bases +#define incom game.incom // Initian number of commanders +#define instar game.instar // Initial stars #define intorps game.intorps // Initial/Max torpedoes -#define condit game.condit // Condition (red, yellow, green docked) -#define torps game.torps // number of torpedoes -#define ship game.ship // Ship type -- 'E' is Enterprise -#define quadx game.quadx // where we are -#define quady game.quady // -#define sectx game.sectx // where we are -#define secty game.secty // -#define length game.length // length of game -#define skill game.skill // skill level -#define basex game.basex // position of base in current quad -#define basey game.basey // -#define klhere game.klhere // klingons here +#define condit game.condit // Condition (red/yellow/green/docked) +#define torps game.torps // number of torpedoes +#define ship game.ship // Ship type -- 'E' is Enterprise +#define quadx game.quadx // where we are +#define quady game.quady // +#define sectx game.sectx // where we are +#define secty game.secty // +#define length game.length // length of game +#define skill game.skill // skill level +#define basex game.basex // position of base in current quad +#define basey game.basey // +#define klhere game.klhere // klingons here #define comhere game.comhere // commanders here -#define casual game.casual // causalties -#define nhelp game.nhelp // calls for help -#define nkinks game.nkinks // -#define ididit game.ididit // Action taken -- allows enemy to attack +#define casual game.casual // causalties +#define nhelp game.nhelp // calls for help +#define nkinks game.nkinks // +#define ididit game.ididit // Action taken -- allows enemy to attack #define gamewon game.gamewon // Finished! -#define alive game.alive // We are alive (not killed) -#define justin game.justin // just entered quadrant +#define alive game.alive // We are alive (not killed) +#define justin game.justin // just entered quadrant #define alldone game.alldone // game is now finished #define shldchg game.shldchg // shield is changing (affects efficiency) -#define plnetx game.plnetx // location of planet in quadrant -#define plnety game.plnety // +#define plnetx game.plnetx // location of planet in quadrant +#define plnety game.plnety // #define inorbit game.inorbit // orbiting -#define landed game.landed // party on planet (1), on ship (-1) -#define iplnet game.iplnet // planet # in quadrant -#define imine game.imine // mining -#define inplan game.inplan // initial planets +#define landed game.landed // party on planet (1), on ship (-1) +#define iplnet game.iplnet // planet # in quadrant +#define imine game.imine // mining +#define inplan game.inplan // initial planets #define nenhere game.nenhere // Number of enemies in quadrant -#define ishere game.ishere // Super-commander in quandrant -#define neutz game.neutz // Romulan Neutral Zone -#define irhere game.irhere // Romulans in quadrant -#define icraft game.icraft // Kirk in Galileo +#define ishere game.ishere // Super-commander in quandrant +#define neutz game.neutz // Romulan Neutral Zone +#define irhere game.irhere // Romulans in quadrant +#define icraft game.icraft // Kirk in Galileo #define ientesc game.ientesc // Attempted escape from supercommander #define iscraft game.iscraft // =1 if craft on ship, -1 if removed from game -#define isatb game.isatb // =1 if SuperCommander is attacking base -#define iscate game.iscate // Super Commander is here +#define isatb game.isatb // =1 if SuperCommander is attacking base +#define iscate game.iscate // Super Commander is here #ifdef DEBUG -#define idebug game.idebug // Debug mode +#define idebug game.idebug // Debug mode #endif -#define iattak game.iattak // attack recursion elimination (was cracks[4]) +#define iattak game.iattak // attack recursion elimination (was cracks[4]) #define icrystl game.icrystl // dilithium crystals aboard -#define tourn game.tourn // Tournament number -#define thawed game.thawed // Thawed game -#define batx game.batx // Base coordinates being attacked -#define baty game.baty // -#define ithere game.ithere // Tholean is here -#define ithx game.ithx // coordinates of tholean +#define tourn game.tourn // Tournament number +#define thawed game.thawed // Thawed game +#define batx game.batx // Base coordinates being attacked +#define baty game.baty // +#define ithere game.ithere // Tholean is here +#define ithx game.ithx // coordinates of tholean #define ithy game.ithy #define iseenit game.iseenit // Seen base attack report #define inresor game.inresor // initial resources -#define intime game.intime // initial time -#define inenrg game.inenrg // Initial/Max Energy -#define inshld game.inshld // Initial/Max Shield -#define inlsr game.inlsr // initial life support resources -#define indate game.indate // Initial date -#define energy game.energy // Energy level -#define shield game.shield // Shield level -#define shldup game.shldup // Shields are up +#define intime game.intime // initial time +#define inenrg game.inenrg // Initial/Max Energy +#define inshld game.inshld // Initial/Max Shield +#define inlsr game.inlsr // initial life support resources +#define indate game.indate // Initial date +#define energy game.energy // Energy level +#define shield game.shield // Shield level +#define shldup game.shldup // Shields are up #define warpfac game.warpfac // Warp speed -#define wfacsq game.wfacsq // squared warp factor +#define wfacsq game.wfacsq // squared warp factor #define lsupres game.lsupres // life support reserves -#define dist game.dist // movement distance -#define direc game.direc // movement direction -#define Time game.Time // time taken by current operation -#define docfac game.docfac // repair factor when docking (constant?) +#define dist game.dist // movement distance +#define direc game.direc // movement direction +#define Time game.Time // time taken by current operation +#define docfac game.docfac // repair factor when docking (constant?) #define resting game.resting // rest time -#define damfac game.damfac // damage factor -#define stdamtim game.stdamtim // time that star chart was damaged +#define damfac game.damfac // damage factor +#define lastchart game.lastchart // time star chart was last updated #define cryprob game.cryprob // probability that crystal will work -#define probex game.probex // location of probe +#define probex game.probex // location of probe #define probey game.probey #define probecx game.probecx // current probe quadrant #define probecy game.probecy #define probeinx game.probeinx // Probe x,y increment #define probeiny game.probeiny -#define proben game.proben // number of moves for probe +#define proben game.proben // number of moves for probe #define isarmed game.isarmed // Probe is armed #define nprobes game.nprobes // number of probes available -- 2.31.1