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.
This commit is contained in:
parent
499e19f97b
commit
d906fd6b99
11 changed files with 7 additions and 23 deletions
|
@ -173,6 +173,9 @@ extern struct dchrstr bigcity_dchr;
|
||||||
/* Work required for building */
|
/* Work required for building */
|
||||||
#define SCT_BLD_WORK(lcm, hcm) ((lcm) + 2 * (hcm))
|
#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 MIN_MOBCOST 0.001 /* lowest cost a sector can have to move into */
|
||||||
#define FORTEFF 5 /* forts must be 5% efficient to fire. */
|
#define FORTEFF 5 /* forts must be 5% efficient to fire. */
|
||||||
|
|
||||||
|
|
|
@ -369,8 +369,6 @@ eff_bomb(struct emp_qelem *list, struct sctstr *target)
|
||||||
target->sct_road = effdamage(target->sct_road, dam);
|
target->sct_road = effdamage(target->sct_road, dam);
|
||||||
target->sct_rail = effdamage(target->sct_rail, dam);
|
target->sct_rail = effdamage(target->sct_rail, dam);
|
||||||
target->sct_defense = effdamage(target->sct_defense, 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",
|
pr("did %d%% damage to efficiency in %s\n",
|
||||||
oldeff - target->sct_effic,
|
oldeff - target->sct_effic,
|
||||||
xyas(target->sct_x, target->sct_y, player->cnum));
|
xyas(target->sct_x, target->sct_y, player->cnum));
|
||||||
|
|
|
@ -615,8 +615,6 @@ build_bridge(struct sctstr *sp, short *vec)
|
||||||
sect.sct_road = 0;
|
sect.sct_road = 0;
|
||||||
sect.sct_rail = 0;
|
sect.sct_rail = 0;
|
||||||
sect.sct_defense = 0;
|
sect.sct_defense = 0;
|
||||||
if (!opt_DEFENSE_INFRA)
|
|
||||||
sect.sct_defense = sect.sct_effic;
|
|
||||||
if (opt_MOB_ACCESS) {
|
if (opt_MOB_ACCESS) {
|
||||||
time(§.sct_access);
|
time(§.sct_access);
|
||||||
sect.sct_mobil = -(etu_per_update / sect_mob_neg_factor);
|
sect.sct_mobil = -(etu_per_update / sect_mob_neg_factor);
|
||||||
|
@ -915,8 +913,6 @@ build_tower(struct sctstr *sp, short *vec)
|
||||||
} else {
|
} else {
|
||||||
sect.sct_mobil = 0;
|
sect.sct_mobil = 0;
|
||||||
}
|
}
|
||||||
if (!opt_DEFENSE_INFRA)
|
|
||||||
sect.sct_defense = sect.sct_effic;
|
|
||||||
sect.sct_mines = 0;
|
sect.sct_mines = 0;
|
||||||
map_set(player->cnum, sect.sct_x, sect.sct_y, dchr[SCT_BTOWER].d_mnem, 2);
|
map_set(player->cnum, sect.sct_x, sect.sct_y, dchr[SCT_BTOWER].d_mnem, 2);
|
||||||
writemap(player->cnum);
|
writemap(player->cnum);
|
||||||
|
|
|
@ -733,7 +733,7 @@ dump(void)
|
||||||
pr("%d", sect.sct_rail);
|
pr("%d", sect.sct_rail);
|
||||||
break;
|
break;
|
||||||
case 71:
|
case 71:
|
||||||
pr("%d", sect.sct_defense);
|
pr("%d", SCT_DEFENSE(§));
|
||||||
break;
|
break;
|
||||||
case 72:
|
case 72:
|
||||||
if (opt_FALLOUT)
|
if (opt_FALLOUT)
|
||||||
|
|
|
@ -134,8 +134,6 @@ new(void)
|
||||||
sect.sct_road = 0;
|
sect.sct_road = 0;
|
||||||
sect.sct_rail = 0;
|
sect.sct_rail = 0;
|
||||||
sect.sct_defense = 0;
|
sect.sct_defense = 0;
|
||||||
if (!opt_DEFENSE_INFRA)
|
|
||||||
sect.sct_defense = sect.sct_effic;
|
|
||||||
sect.sct_mobil = startmob;
|
sect.sct_mobil = startmob;
|
||||||
sect.sct_work = 100;
|
sect.sct_work = 100;
|
||||||
sect.sct_oldown = num;
|
sect.sct_oldown = num;
|
||||||
|
@ -159,8 +157,6 @@ new(void)
|
||||||
sect.sct_road = 0;
|
sect.sct_road = 0;
|
||||||
sect.sct_rail = 0;
|
sect.sct_rail = 0;
|
||||||
sect.sct_defense = 0;
|
sect.sct_defense = 0;
|
||||||
if (!opt_DEFENSE_INFRA)
|
|
||||||
sect.sct_defense = sect.sct_effic;
|
|
||||||
sect.sct_work = 100;
|
sect.sct_work = 100;
|
||||||
sect.sct_oldown = num;
|
sect.sct_oldown = num;
|
||||||
sect.sct_mobil = startmob;
|
sect.sct_mobil = startmob;
|
||||||
|
|
|
@ -39,6 +39,7 @@
|
||||||
#include "sect.h"
|
#include "sect.h"
|
||||||
#include "nsc.h"
|
#include "nsc.h"
|
||||||
#include "nat.h"
|
#include "nat.h"
|
||||||
|
#include "optlist.h"
|
||||||
#include "path.h"
|
#include "path.h"
|
||||||
#include "commands.h"
|
#include "commands.h"
|
||||||
#include "combat.h"
|
#include "combat.h"
|
||||||
|
@ -78,7 +79,7 @@ sinfra(void)
|
||||||
pr("%4.3f ", sector_mcost(§, MOB_ROAD));
|
pr("%4.3f ", sector_mcost(§, MOB_ROAD));
|
||||||
pr("%4d%% ", sect.sct_rail);
|
pr("%4d%% ", sect.sct_rail);
|
||||||
pr("%4.3f ", sector_mcost(§, MOB_RAIL));
|
pr("%4.3f ", sector_mcost(§, MOB_RAIL));
|
||||||
pr("%4d%% ", sect.sct_defense);
|
pr("%4d%% ", SCT_DEFENSE(§));
|
||||||
pr("%5.2f\n", sector_strength(§));
|
pr("%5.2f\n", sector_strength(§));
|
||||||
}
|
}
|
||||||
if (nsect == 0) {
|
if (nsect == 0) {
|
||||||
|
|
|
@ -142,8 +142,6 @@ buildeff(struct sctstr *sp, int work, double *money)
|
||||||
sp->sct_type = sp->sct_newtype;
|
sp->sct_type = sp->sct_newtype;
|
||||||
}
|
}
|
||||||
sp->sct_effic = n;
|
sp->sct_effic = n;
|
||||||
if (!opt_DEFENSE_INFRA)
|
|
||||||
sp->sct_defense = sp->sct_effic;
|
|
||||||
work -= work_cost;
|
work -= work_cost;
|
||||||
*money += work_cost;
|
*money += work_cost;
|
||||||
effdone += work_cost;
|
effdone += work_cost;
|
||||||
|
|
|
@ -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_road = damage(sp->sct_road, dam);
|
||||||
sp->sct_rail = damage(sp->sct_rail, dam);
|
sp->sct_rail = damage(sp->sct_rail, dam);
|
||||||
sp->sct_defense = damage(sp->sct_defense, dam);
|
sp->sct_defense = damage(sp->sct_defense, dam);
|
||||||
if (!opt_DEFENSE_INFRA)
|
|
||||||
sp->sct_defense = sp->sct_effic;
|
|
||||||
|
|
||||||
eff = dam;
|
eff = dam;
|
||||||
|
|
||||||
|
|
|
@ -349,8 +349,6 @@ put_combat(struct combat *com)
|
||||||
sect.sct_defense = 0;
|
sect.sct_defense = 0;
|
||||||
}
|
}
|
||||||
sect.sct_effic = com->eff;
|
sect.sct_effic = com->eff;
|
||||||
if (!opt_DEFENSE_INFRA)
|
|
||||||
sect.sct_defense = sect.sct_effic;
|
|
||||||
if (com->mobcost) {
|
if (com->mobcost) {
|
||||||
if (opt_MOB_ACCESS) {
|
if (opt_MOB_ACCESS) {
|
||||||
if ((com->mob - com->mobcost) < -127)
|
if ((com->mob - com->mobcost) < -127)
|
||||||
|
@ -2606,7 +2604,7 @@ sector_strength(struct sctstr *sp)
|
||||||
d = 2.0;
|
d = 2.0;
|
||||||
|
|
||||||
d = d + ((double)(dchr[sp->sct_type].d_dstr - d) *
|
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)
|
if (d > dchr[sp->sct_type].d_dstr)
|
||||||
d = dchr[sp->sct_type].d_dstr;
|
d = dchr[sp->sct_type].d_dstr;
|
||||||
|
|
|
@ -132,8 +132,6 @@ checksect(struct sctstr *sp)
|
||||||
sp->sct_mobil = 0;
|
sp->sct_mobil = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!opt_DEFENSE_INFRA)
|
|
||||||
sp->sct_defense = sp->sct_effic;
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -362,8 +362,6 @@ produce_sect(int natnum, int etu, int *bp, long (*p_sect)[2],
|
||||||
np->nat_money -= cost;
|
np->nat_money -= cost;
|
||||||
sp->sct_type = desig;
|
sp->sct_type = desig;
|
||||||
sp->sct_effic = neweff;
|
sp->sct_effic = neweff;
|
||||||
if (!opt_DEFENSE_INFRA)
|
|
||||||
sp->sct_defense = sp->sct_effic;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue