From d906fd6b99dfca6c59dc010e1f1ceaf90ac2a7d9 Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Sat, 20 May 2006 11:53:20 +0000 Subject: [PATCH] DEFENSE_INFRA was implemented in an odd way: sct_defense was used regardless of the option, but forced to sct_effic when disabled. This screws up sct_defense when you disable DEFENSE_INFRA. Implement it more like FALLOUT: use sct_defense if enabled, else sct_effic. The change should be invisible except in xdump, which shows the real sct_defense. Closes #804641. (SCT_DEFENSE): New. (dump, sinfra, sector_strength): Use it. (eff_bomb, build_bridge, build_tower, new, buildeff, sect_damage) (put_combat, checksect, produce_sect): Don't force sct_defense to sct_effic when DEFENSE_INFRA is disabled. --- include/sect.h | 3 +++ src/lib/commands/bomb.c | 2 -- src/lib/commands/buil.c | 4 ---- src/lib/commands/dump.c | 2 +- src/lib/commands/new.c | 4 ---- src/lib/commands/sinf.c | 3 ++- src/lib/commands/work.c | 2 -- src/lib/common/sectdamage.c | 2 -- src/lib/subs/attsub.c | 4 +--- src/lib/subs/sect.c | 2 -- src/lib/update/sect.c | 2 -- 11 files changed, 7 insertions(+), 23 deletions(-) diff --git a/include/sect.h b/include/sect.h index 58f54775..7c6e338f 100644 --- a/include/sect.h +++ b/include/sect.h @@ -173,6 +173,9 @@ extern struct dchrstr bigcity_dchr; /* Work required for building */ #define SCT_BLD_WORK(lcm, hcm) ((lcm) + 2 * (hcm)) +#define SCT_DEFENSE(sp) \ + (opt_DEFENSE_INFRA ? (sp)->sct_defense : (sp)->sct_effic) + #define MIN_MOBCOST 0.001 /* lowest cost a sector can have to move into */ #define FORTEFF 5 /* forts must be 5% efficient to fire. */ diff --git a/src/lib/commands/bomb.c b/src/lib/commands/bomb.c index 5c0c18e9..ef308d17 100644 --- a/src/lib/commands/bomb.c +++ b/src/lib/commands/bomb.c @@ -369,8 +369,6 @@ eff_bomb(struct emp_qelem *list, struct sctstr *target) target->sct_road = effdamage(target->sct_road, dam); target->sct_rail = effdamage(target->sct_rail, dam); target->sct_defense = effdamage(target->sct_defense, dam); - if (!opt_DEFENSE_INFRA) - target->sct_defense = target->sct_effic; pr("did %d%% damage to efficiency in %s\n", oldeff - target->sct_effic, xyas(target->sct_x, target->sct_y, player->cnum)); diff --git a/src/lib/commands/buil.c b/src/lib/commands/buil.c index a46d4ee7..909a0026 100644 --- a/src/lib/commands/buil.c +++ b/src/lib/commands/buil.c @@ -615,8 +615,6 @@ build_bridge(struct sctstr *sp, short *vec) sect.sct_road = 0; sect.sct_rail = 0; sect.sct_defense = 0; - if (!opt_DEFENSE_INFRA) - sect.sct_defense = sect.sct_effic; if (opt_MOB_ACCESS) { time(§.sct_access); sect.sct_mobil = -(etu_per_update / sect_mob_neg_factor); @@ -915,8 +913,6 @@ build_tower(struct sctstr *sp, short *vec) } else { sect.sct_mobil = 0; } - if (!opt_DEFENSE_INFRA) - sect.sct_defense = sect.sct_effic; sect.sct_mines = 0; map_set(player->cnum, sect.sct_x, sect.sct_y, dchr[SCT_BTOWER].d_mnem, 2); writemap(player->cnum); diff --git a/src/lib/commands/dump.c b/src/lib/commands/dump.c index f36b2d20..af020b7f 100644 --- a/src/lib/commands/dump.c +++ b/src/lib/commands/dump.c @@ -733,7 +733,7 @@ dump(void) pr("%d", sect.sct_rail); break; case 71: - pr("%d", sect.sct_defense); + pr("%d", SCT_DEFENSE(§)); break; case 72: if (opt_FALLOUT) diff --git a/src/lib/commands/new.c b/src/lib/commands/new.c index 29cc0bc1..c8dd174d 100644 --- a/src/lib/commands/new.c +++ b/src/lib/commands/new.c @@ -134,8 +134,6 @@ new(void) sect.sct_road = 0; sect.sct_rail = 0; sect.sct_defense = 0; - if (!opt_DEFENSE_INFRA) - sect.sct_defense = sect.sct_effic; sect.sct_mobil = startmob; sect.sct_work = 100; sect.sct_oldown = num; @@ -159,8 +157,6 @@ new(void) sect.sct_road = 0; sect.sct_rail = 0; sect.sct_defense = 0; - if (!opt_DEFENSE_INFRA) - sect.sct_defense = sect.sct_effic; sect.sct_work = 100; sect.sct_oldown = num; sect.sct_mobil = startmob; diff --git a/src/lib/commands/sinf.c b/src/lib/commands/sinf.c index 48698384..23c09bf6 100644 --- a/src/lib/commands/sinf.c +++ b/src/lib/commands/sinf.c @@ -39,6 +39,7 @@ #include "sect.h" #include "nsc.h" #include "nat.h" +#include "optlist.h" #include "path.h" #include "commands.h" #include "combat.h" @@ -78,7 +79,7 @@ sinfra(void) pr("%4.3f ", sector_mcost(§, MOB_ROAD)); pr("%4d%% ", sect.sct_rail); pr("%4.3f ", sector_mcost(§, MOB_RAIL)); - pr("%4d%% ", sect.sct_defense); + pr("%4d%% ", SCT_DEFENSE(§)); pr("%5.2f\n", sector_strength(§)); } if (nsect == 0) { diff --git a/src/lib/commands/work.c b/src/lib/commands/work.c index d84bcb4b..b7174e15 100644 --- a/src/lib/commands/work.c +++ b/src/lib/commands/work.c @@ -142,8 +142,6 @@ buildeff(struct sctstr *sp, int work, double *money) sp->sct_type = sp->sct_newtype; } sp->sct_effic = n; - if (!opt_DEFENSE_INFRA) - sp->sct_defense = sp->sct_effic; work -= work_cost; *money += work_cost; effdone += work_cost; diff --git a/src/lib/common/sectdamage.c b/src/lib/common/sectdamage.c index f0d2dadc..b1f2679d 100644 --- a/src/lib/common/sectdamage.c +++ b/src/lib/common/sectdamage.c @@ -65,8 +65,6 @@ sect_damage(struct sctstr *sp, int dam, struct emp_qelem *list) sp->sct_road = damage(sp->sct_road, dam); sp->sct_rail = damage(sp->sct_rail, dam); sp->sct_defense = damage(sp->sct_defense, dam); - if (!opt_DEFENSE_INFRA) - sp->sct_defense = sp->sct_effic; eff = dam; diff --git a/src/lib/subs/attsub.c b/src/lib/subs/attsub.c index a214372d..052aece3 100644 --- a/src/lib/subs/attsub.c +++ b/src/lib/subs/attsub.c @@ -349,8 +349,6 @@ put_combat(struct combat *com) sect.sct_defense = 0; } sect.sct_effic = com->eff; - if (!opt_DEFENSE_INFRA) - sect.sct_defense = sect.sct_effic; if (com->mobcost) { if (opt_MOB_ACCESS) { if ((com->mob - com->mobcost) < -127) @@ -2606,7 +2604,7 @@ sector_strength(struct sctstr *sp) d = 2.0; d = d + ((double)(dchr[sp->sct_type].d_dstr - d) * - ((double)sp->sct_defense / 100.0)); + ((double)SCT_DEFENSE(sp) / 100.0)); if (d > dchr[sp->sct_type].d_dstr) d = dchr[sp->sct_type].d_dstr; diff --git a/src/lib/subs/sect.c b/src/lib/subs/sect.c index 4ad8390f..ffc235a5 100644 --- a/src/lib/subs/sect.c +++ b/src/lib/subs/sect.c @@ -132,8 +132,6 @@ checksect(struct sctstr *sp) sp->sct_mobil = 0; } } - if (!opt_DEFENSE_INFRA) - sp->sct_defense = sp->sct_effic; return 1; } diff --git a/src/lib/update/sect.c b/src/lib/update/sect.c index eebf0165..887f1811 100644 --- a/src/lib/update/sect.c +++ b/src/lib/update/sect.c @@ -362,8 +362,6 @@ produce_sect(int natnum, int etu, int *bp, long (*p_sect)[2], np->nat_money -= cost; sp->sct_type = desig; sp->sct_effic = neweff; - if (!opt_DEFENSE_INFRA) - sp->sct_defense = sp->sct_effic; } }