strict mode (#597)

* implement strict mode

* rename demo_skipping->DEMOSKIP

* add static

* DISABLE_ITEM macros, disable cosmetic comp options in strict mode

* fix hud_distributed condition

* reset time scale, add strict mode menu item

* disable colored_blood and flipcorpses in strict mode

* disable brightmaps in strict mode, DISABLE_STRICT macro

* make strictmode local for each game

* missed comp_pursuit

* move menus a bit (map_player_coords doesn't fit in 4:3 mode)

* add STRICTMODE_COMP macro for cosmetic compatibility options

* comp_skymap = 1 in PrBoom+ complevel 9
This commit is contained in:
Roman Fomin 2022-06-13 17:07:08 +07:00 committed by GitHub
parent d1a93dedfa
commit 676b7e8347
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
17 changed files with 194 additions and 101 deletions

View File

@ -206,7 +206,7 @@ void D_Display (void)
int wipestart; int wipestart;
boolean done, wipe, redrawsbar; boolean done, wipe, redrawsbar;
if (demobar && demo_skipping) if (demobar && DEMOSKIP)
{ {
if (HU_DemoProgressBar(false)) if (HU_DemoProgressBar(false))
{ {

View File

@ -295,7 +295,13 @@ extern boolean demonext;
// skipping demo // skipping demo
extern int demoskip_tics; extern int demoskip_tics;
#define demo_skipping (demowarp >= 0 || demoskip_tics > 0 || demonext) #define DEMOSKIP (demowarp >= 0 || demoskip_tics > 0 || demonext)
extern boolean strictmode, default_strictmode;
#define STRICTMODE(x) (strictmode ? 0 : x)
#define STRICTMODE_COMP(x) (strictmode ? comp[x] : default_comp[x])
extern gamestate_t gamestate; extern gamestate_t gamestate;

View File

@ -127,9 +127,13 @@ byte *savebuffer;
int autorun = false; // always running? // phares int autorun = false; // always running? // phares
int novert = false; int novert = false;
int mouselook = false; int mouselook = false;
// killough 4/13/98: Make clock rate adjustable by scale factor
int realtic_clock_rate = 100;
int default_complevel; int default_complevel;
boolean strictmode, default_strictmode;
// //
// controls (have defaults) // controls (have defaults)
// //
@ -2608,6 +2612,39 @@ static int G_GetWadComplevel(void)
return -1; return -1;
} }
static void G_MBFDefaults(void)
{
weapon_recoil = 0;
monsters_remember = 1;
monster_infighting = 1;
monster_backing = 0;
monster_avoid_hazards = 1;
monkeys = 0;
monster_friction = 1;
help_friends = 0;
dogs = 0;
distfriend = 128;
dog_jumping = 1;
memset(comp, 0, sizeof comp);
comp[comp_zombie] = 1;
};
static void G_MBF21Defaults(void)
{
G_MBFDefaults();
comp[comp_pursuit] = 1;
comp[comp_respawn] = 0;
comp[comp_soul] = 0;
comp[comp_ledgeblock] = 1;
comp[comp_friendlyspawn] = 1;
comp[comp_voodooscroller] = 0;
comp[comp_reservedlineflag] = 1;
};
static void G_MBFComp() static void G_MBFComp()
{ {
comp[comp_respawn] = 1; comp[comp_respawn] = 1;
@ -2623,11 +2660,13 @@ static void G_BoomComp()
comp[comp_telefrag] = 1; comp[comp_telefrag] = 1;
comp[comp_dropoff] = 0; comp[comp_dropoff] = 0;
comp[comp_falloff] = 1; comp[comp_falloff] = 1;
comp[comp_skymap] = 1;
comp[comp_pursuit] = 1; comp[comp_pursuit] = 1;
comp[comp_staylift] = 1; comp[comp_staylift] = 1;
comp[comp_zombie] = 1; comp[comp_zombie] = 1;
comp[comp_infcheat] = 1; comp[comp_infcheat] = 1;
comp[comp_respawn] = 1;
comp[comp_respawn] = 1;
comp[comp_soul] = 1; comp[comp_soul] = 1;
comp[comp_ledgeblock] = 0; comp[comp_ledgeblock] = 0;
comp[comp_friendlyspawn] = 1; comp[comp_friendlyspawn] = 1;
@ -2711,8 +2750,25 @@ void G_ReloadDefaults(void)
if (demo_version == -1) if (demo_version == -1)
demo_version = G_GetDefaultComplevel(); demo_version = G_GetDefaultComplevel();
strictmode = default_strictmode;
if (M_CheckParm("-strict"))
strictmode = true;
// Reset MBF compatibility options in strict mode
if (strictmode)
{
if (demo_version == 203)
G_MBFDefaults();
else if (mbf21)
G_MBF21Defaults();
}
if (!mbf21) if (!mbf21)
{
// Set new compatibility options
G_MBFComp(); G_MBFComp();
}
// killough 3/31/98, 4/5/98: demo sync insurance // killough 3/31/98, 4/5/98: demo sync insurance
demo_insurance = 0; demo_insurance = 0;
@ -2749,11 +2805,10 @@ void G_ReloadDefaults(void)
} }
else if (mbf21) else if (mbf21)
{ {
// These are not configurable
variable_friction = 1; variable_friction = 1;
allow_pushers = 1; allow_pushers = 1;
demo_insurance = 0;
classic_bfg = 0; classic_bfg = 0;
beta_emulation = 0;
} }
M_ResetSetupMenu(); M_ResetSetupMenu();

View File

@ -1037,7 +1037,7 @@ static void HU_UpdateCrosshair(void)
else else
crosshair.cr = colrngs[hud_crosshair_color]; crosshair.cr = colrngs[hud_crosshair_color];
if (hud_crosshair_target) if (STRICTMODE(hud_crosshair_target))
{ {
angle_t an = plr->mo->angle; angle_t an = plr->mo->angle;
ammotype_t ammo = weaponinfo[plr->readyweapon].ammo; ammotype_t ammo = weaponinfo[plr->readyweapon].ammo;
@ -1144,7 +1144,9 @@ void HU_Drawer(void)
} }
// [FG] draw player coords widget // [FG] draw player coords widget
if (automapactive && !(hud_distributed && automapoverlay) && map_player_coords) if ((automapactive && !(hud_distributed && automapoverlay) &&
STRICTMODE(map_player_coords) == 1) ||
STRICTMODE(map_player_coords) == 2)
{ {
// killough 10/98: allow coordinates to display non-following pointer // killough 10/98: allow coordinates to display non-following pointer
AM_Coordinates(plr->mo, &x, &y, &z); AM_Coordinates(plr->mo, &x, &y, &z);

View File

@ -102,25 +102,10 @@ static int I_GetFracTime_FastDemo(void)
int (*I_GetFracTime)(void) = I_GetFracTime_Scaled; int (*I_GetFracTime)(void) = I_GetFracTime_Scaled;
// killough 4/13/98: Make clock rate adjustable by scale factor
int realtic_clock_rate = 100;
void I_InitTimer(void) void I_InitTimer(void)
{ {
int p;
p = M_CheckParmWithArgs("-speed", 1);
if (p)
{
time_scale = BETWEEN(10, 1000, atoi(myargv[p+1]));
}
else
{
time_scale = realtic_clock_rate;
}
I_GetTime = I_GetTime_Scaled; I_GetTime = I_GetTime_Scaled;
I_GetFracTime = I_GetFracTime_Scaled;
} }
void I_SetTimeScale(int scale) void I_SetTimeScale(int scale)

View File

@ -1022,7 +1022,7 @@ void I_BeginRead(unsigned int bytes)
static void I_DrawDiskIcon(void) static void I_DrawDiskIcon(void)
{ {
if (!disk_icon || !in_graphics_mode || demo_skipping) if (!disk_icon || !in_graphics_mode || DEMOSKIP)
return; return;
if (disk_to_draw >= DISK_ICON_THRESHOLD) if (disk_to_draw >= DISK_ICON_THRESHOLD)
@ -1045,7 +1045,7 @@ void I_EndRead(void)
static void I_RestoreDiskBackground(void) static void I_RestoreDiskBackground(void)
{ {
if (!disk_icon || !in_graphics_mode || demo_skipping) if (!disk_icon || !in_graphics_mode || DEMOSKIP)
return; return;
if (disk_to_restore) if (disk_to_restore)

View File

@ -60,6 +60,7 @@
#include "r_draw.h" // [FG] R_SetFuzzColumnMode #include "r_draw.h" // [FG] R_SetFuzzColumnMode
#include "r_sky.h" // [FG] R_InitSkyMap() #include "r_sky.h" // [FG] R_InitSkyMap()
#include "r_plane.h" // [FG] R_InitPlanes() #include "r_plane.h" // [FG] R_InitPlanes()
#include "m_argv.h"
// [crispy] remove DOS reference from the game quit confirmation dialogs // [crispy] remove DOS reference from the game quit confirmation dialogs
#include "SDL_platform.h" #include "SDL_platform.h"
@ -133,7 +134,7 @@ boolean menuactive; // The menus are up
#define LINEHEIGHT 16 #define LINEHEIGHT 16
#define M_SPC 9 #define M_SPC 9
#define M_X 250 #define M_X 240
#define M_Y (29 + M_SPC) #define M_Y (29 + M_SPC)
#define M_X_PREV (57) #define M_X_PREV (57)
#define M_X_NEXT (310) #define M_X_NEXT (310)
@ -145,6 +146,9 @@ boolean menuactive; // The menus are up
#define M_THRM_WIDTH (M_THRM_STEP * (M_THRM_SIZE + 2)) #define M_THRM_WIDTH (M_THRM_STEP * (M_THRM_SIZE + 2))
#define M_X_THRM (M_X - M_THRM_WIDTH) #define M_X_THRM (M_X - M_THRM_WIDTH)
#define DISABLE_ITEM(condition, item) \
(condition ? (item.m_flags |= S_DISABLE) : (item.m_flags &= ~S_DISABLE))
char savegamestrings[10][SAVESTRINGSIZE]; char savegamestrings[10][SAVESTRINGSIZE];
// [FG] support up to 8 pages of savegames // [FG] support up to 8 pages of savegames
@ -3094,10 +3098,7 @@ static const char *weapon_attack_alignment_strings[] = {
static void M_UpdateCenteredWeaponItem(void) static void M_UpdateCenteredWeaponItem(void)
{ {
// weap_center // weap_center
if (cosmetic_bobbing) DISABLE_ITEM(!cosmetic_bobbing, weap_settings1[13]);
weap_settings1[12].m_flags &= ~S_DISABLE;
else
weap_settings1[12].m_flags |= S_DISABLE;
} }
setup_menu_t weap_settings1[] = // Weapons Settings screen setup_menu_t weap_settings1[] = // Weapons Settings screen
@ -3220,27 +3221,11 @@ setup_menu_t stat_settings1[] = // Status Bar and HUD Settings screen
static void M_UpdateCrosshairItems (void) static void M_UpdateCrosshairItems (void)
{ {
if (hud_crosshair) DISABLE_ITEM(!hud_crosshair, stat_settings2[8]);
{ DISABLE_ITEM(!(hud_crosshair && !strictmode), stat_settings2[9]);
stat_settings2[8].m_flags &= ~S_DISABLE; DISABLE_ITEM(!hud_crosshair, stat_settings2[10]);
stat_settings2[9].m_flags &= ~S_DISABLE; DISABLE_ITEM(!(hud_crosshair && STRICTMODE(hud_crosshair_target)),
stat_settings2[10].m_flags &= ~S_DISABLE; stat_settings2[11]);
if (hud_crosshair_target)
{
stat_settings2[11].m_flags &= ~S_DISABLE;
}
else
{
stat_settings2[11].m_flags |= S_DISABLE;
}
}
else
{
stat_settings2[8].m_flags |= S_DISABLE;
stat_settings2[9].m_flags |= S_DISABLE;
stat_settings2[10].m_flags |= S_DISABLE;
stat_settings2[11].m_flags |= S_DISABLE;
}
} }
static const char *timests_str[] = { static const char *timests_str[] = {
@ -3816,6 +3801,7 @@ enum {
enum { enum {
general_title5, general_title5,
general_strictmode,
general_realtic, general_realtic,
general_demobar, general_demobar,
general_skill, general_skill,
@ -3828,6 +3814,48 @@ enum {
#define G_Y3 (M_Y + (general_end3 + 1) * M_SPC) #define G_Y3 (M_Y + (general_end3 + 1) * M_SPC)
#define G_Y4 (G_Y3 + (general_end4 + 1) * M_SPC) #define G_Y4 (G_Y3 + (general_end4 + 1) * M_SPC)
#define DISABLE_STRICT(item) DISABLE_ITEM(strictmode, item)
static void M_UpdateStrictModeItems(void)
{
// weap_center
DISABLE_STRICT(weap_settings1[13]);
// hud_crosshair_target
DISABLE_STRICT(stat_settings2[9]);
DISABLE_STRICT(stat_settings2[11]);
// map_player_coords
DISABLE_STRICT(auto_settings1[5]);
// enem_ghost
DISABLE_ITEM(strictmode || !comp[comp_vile], enem_settings1[13]);
// general_realtic
DISABLE_STRICT(gen_settings3[general_realtic]);
// enem_colored_blood
DISABLE_STRICT(enem_settings1[11]);
// enem_flipcorpses
DISABLE_STRICT(enem_settings1[12]);
// general_brightmaps
DISABLE_STRICT(gen_settings2[general_end3 + general_brightmaps]);
}
static void M_ResetTimeScale(void)
{
if (strictmode)
I_SetTimeScale(100);
else
{
int p, time_scale;
p = M_CheckParmWithArgs("-speed", 1);
if (p)
time_scale = BETWEEN(10, 1000, atoi(myargv[p+1]));
else
time_scale = realtic_clock_rate;
I_SetTimeScale(time_scale);
}
}
static const char *default_skill_strings[] = { static const char *default_skill_strings[] = {
// dummy first option because defaultskill is 1-based // dummy first option because defaultskill is 1-based
"", "ITYTD", "HNTR", "HMP", "UV", "NM", NULL "", "ITYTD", "HNTR", "HMP", "UV", "NM", NULL
@ -3891,8 +3919,11 @@ setup_menu_t gen_settings3[] = { // General Settings screen3
{"Miscellaneous" ,S_SKIP|S_TITLE, m_null, M_X, M_Y}, {"Miscellaneous" ,S_SKIP|S_TITLE, m_null, M_X, M_Y},
{"Game speed, percentage of normal", S_NUM|S_PRGWARN, m_null, M_X, {"Strict Mode", S_YESNO|S_LEVWARN, m_null, M_X,
M_Y + general_realtic*M_SPC, {"realtic_clock_rate"}}, M_Y + general_strictmode*M_SPC, {"strictmode"}},
{"Game speed, percentage of normal", S_NUM, m_null, M_X,
M_Y + general_realtic*M_SPC, {"realtic_clock_rate"}, 0, M_ResetTimeScale},
{"Show demo progress bar", S_YESNO, m_null, M_X, {"Show demo progress bar", S_YESNO, m_null, M_X,
M_Y + general_demobar*M_SPC, {"demobar"}}, M_Y + general_demobar*M_SPC, {"demobar"}},
@ -4070,6 +4101,7 @@ setup_menu_t comp_settings2[] = // Compatibility Settings screen #2
{"Linedef effects work with sector tag = 0", S_YESNO, m_null, C_X, {"Linedef effects work with sector tag = 0", S_YESNO, m_null, C_X,
M_Y + compat_zerotags * COMP_SPC, {"comp_zerotags"}}, M_Y + compat_zerotags * COMP_SPC, {"comp_zerotags"}},
{"Cosmetic", S_SKIP|S_TITLE, m_null, C_X, {"Cosmetic", S_SKIP|S_TITLE, m_null, C_X,
M_Y + compat_cosmetic * COMP_SPC}, M_Y + compat_cosmetic * COMP_SPC},
@ -4184,10 +4216,7 @@ setup_menu_t* mess_settings[] =
static void M_UpdateMultiLineMsgItem(void) static void M_UpdateMultiLineMsgItem(void)
{ {
if (message_list) DISABLE_ITEM(!message_list, mess_settings1[7]);
mess_settings1[7].m_flags &= ~S_DISABLE;
else
mess_settings1[7].m_flags |= S_DISABLE;
} }
setup_menu_t mess_settings1[] = // Messages screen setup_menu_t mess_settings1[] = // Messages screen
@ -5225,7 +5254,7 @@ boolean M_Responder (event_t* ev)
// [FG] reload current level / go to next level // [FG] reload current level / go to next level
if (M_InputActivated(input_menu_nextlevel)) if (M_InputActivated(input_menu_nextlevel))
{ {
if (demoplayback && singledemo && !demo_skipping) if (demoplayback && singledemo && !DEMOSKIP)
{ {
demonext = true; demonext = true;
G_EnableWarp(true); G_EnableWarp(true);
@ -5237,7 +5266,7 @@ boolean M_Responder (event_t* ev)
if (M_InputActivated(input_demo_fforward)) if (M_InputActivated(input_demo_fforward))
{ {
if (demoplayback && singledemo && !demo_skipping && !fastdemo) if (demoplayback && singledemo && !DEMOSKIP && !fastdemo)
{ {
static boolean fastdemo_timer = false; static boolean fastdemo_timer = false;
fastdemo_timer = !fastdemo_timer; fastdemo_timer = !fastdemo_timer;
@ -5246,7 +5275,8 @@ boolean M_Responder (event_t* ev)
} }
} }
if (M_InputActivated(input_speed_up) && (!netgame || demoplayback)) if (M_InputActivated(input_speed_up) && (!netgame || demoplayback)
&& !strictmode)
{ {
realtic_clock_rate += 10; realtic_clock_rate += 10;
realtic_clock_rate = BETWEEN(10, 1000, realtic_clock_rate); realtic_clock_rate = BETWEEN(10, 1000, realtic_clock_rate);
@ -5254,7 +5284,8 @@ boolean M_Responder (event_t* ev)
I_SetTimeScale(realtic_clock_rate); I_SetTimeScale(realtic_clock_rate);
} }
if (M_InputActivated(input_speed_down) && (!netgame || demoplayback)) if (M_InputActivated(input_speed_down) && (!netgame || demoplayback)
&& !strictmode)
{ {
realtic_clock_rate -= 10; realtic_clock_rate -= 10;
realtic_clock_rate = BETWEEN(10, 1000, realtic_clock_rate); realtic_clock_rate = BETWEEN(10, 1000, realtic_clock_rate);
@ -5262,7 +5293,8 @@ boolean M_Responder (event_t* ev)
I_SetTimeScale(realtic_clock_rate); I_SetTimeScale(realtic_clock_rate);
} }
if (M_InputActivated(input_speed_default) && (!netgame || demoplayback)) if (M_InputActivated(input_speed_default) && (!netgame || demoplayback)
&& !strictmode)
{ {
realtic_clock_rate = 100; realtic_clock_rate = 100;
dprintf("Game Speed: %d", realtic_clock_rate); dprintf("Game Speed: %d", realtic_clock_rate);
@ -6641,9 +6673,12 @@ void M_ResetMenu(void)
} }
} }
#define FLAG_SET_BOOM(var, flag) (demo_version < 203) ? (var |= flag) : (var &= ~flag) #define DISABLE_BOOM(item) \
#define FLAG_SET_VANILLA(var, flag) demo_compatibility ? (var |= flag) : (var &= ~flag) DISABLE_ITEM((strictmode || demo_version < 203), item)
#define FLAG_SET_VANILLA_ONLY(var, flag) (!demo_compatibility) ? (var |= flag) : (var &= ~flag) #define DISABLE_VANILLA(item) \
DISABLE_ITEM((strictmode || demo_compatibility), item)
#define DISABLE_VANILLA_ONLY(item) \
DISABLE_ITEM(!demo_compatibility, item)
void M_ResetSetupMenu(void) void M_ResetSetupMenu(void)
{ {
@ -6651,55 +6686,56 @@ void M_ResetSetupMenu(void)
for (i = compat_stub1; i <= compat_god; ++i) for (i = compat_stub1; i <= compat_god; ++i)
{ {
FLAG_SET_BOOM(comp_settings1[i].m_flags, S_DISABLE); DISABLE_BOOM(comp_settings1[i]);
} }
for (i = compat_infcheat; i <= compat_zerotags; ++i) for (i = compat_infcheat; i <= compat_zerotags; ++i)
{ {
FLAG_SET_BOOM(comp_settings2[i].m_flags, S_DISABLE); DISABLE_BOOM(comp_settings2[i]);
}
for (i = compat_blazing; i <= compat_skymap; ++i)
{
DISABLE_STRICT(comp_settings2[i]);
} }
// comp_emu1 to comp_emu3 // comp_emu1 to comp_emu3
for (i = compat_emu1; i <= compat_emu3; ++i) for (i = compat_emu1; i <= compat_emu3; ++i)
{ {
FLAG_SET_VANILLA_ONLY(comp_settings3[i].m_flags, S_DISABLE); DISABLE_VANILLA_ONLY(comp_settings3[i]);
} }
FLAG_SET_BOOM(enem_settings1[enem_infighting].m_flags, S_DISABLE); DISABLE_BOOM(enem_settings1[enem_infighting]);
for (i = enem_backing; i < enem_stub1; ++i) for (i = enem_backing; i < enem_stub1; ++i)
{ {
FLAG_SET_BOOM(enem_settings1[i].m_flags, S_DISABLE); DISABLE_BOOM(enem_settings1[i]);
} }
// enem_ghost // enem_ghost
if (comp[comp_vile]) DISABLE_ITEM(!comp[comp_vile], enem_settings1[13]);
enem_settings1[13].m_flags &= ~S_DISABLE;
else DISABLE_VANILLA(enem_settings1[enem_remember]);
enem_settings1[13].m_flags |= S_DISABLE;
FLAG_SET_VANILLA(enem_settings1[enem_remember].m_flags, S_DISABLE);
// weap_pref1 to weap_pref9 // weap_pref1 to weap_pref9
for (i = 0; i < 9; ++i) for (i = 0; i < 9; ++i)
{ {
FLAG_SET_VANILLA(weap_settings1[i].m_flags, S_DISABLE); DISABLE_ITEM(demo_compatibility, weap_settings1[i]);
} }
// [FG] exclusive fullscreen // [FG] exclusive fullscreen
if (fullscreen_width != 0 || fullscreen_height != 0) if (fullscreen_width != 0 || fullscreen_height != 0)
{ {
gen_settings1[general_fullscreen+1].m_flags |= S_DISABLE; gen_settings1[general_fullscreen].m_flags |= S_DISABLE;
} }
M_UpdateCrosshairItems(); M_UpdateCrosshairItems();
M_UpdateCenteredWeaponItem(); M_UpdateCenteredWeaponItem();
M_UpdateMultiLineMsgItem(); M_UpdateMultiLineMsgItem();
M_UpdateStrictModeItems();
M_ResetTimeScale();
} }
void M_ResetSetupMenuVideo(void) void M_ResetSetupMenuVideo(void)
{ {
// enem_fuzz // enem_fuzz
if (hires) DISABLE_ITEM(!hires, enem_settings1[14]);
enem_settings1[14].m_flags &= ~S_DISABLE;
else
enem_settings1[14].m_flags |= S_DISABLE;
} }
// //

View File

@ -157,6 +157,13 @@ default_t defaults[] = {
"1 to enable wait for vsync to avoid display tearing" "1 to enable wait for vsync to avoid display tearing"
}, },
{
"strictmode",
(config_t *) &default_strictmode, (config_t *) &strictmode,
{0}, {0,1}, number, ss_gen, wad_no,
"1 to enable strict mode"
},
{ {
"realtic_clock_rate", "realtic_clock_rate",
(config_t *) &realtic_clock_rate, NULL, (config_t *) &realtic_clock_rate, NULL,
@ -1670,11 +1677,11 @@ default_t defaults[] = {
"1 to make keyed doors flash on the automap" "1 to make keyed doors flash on the automap"
}, },
// [FG] player coords widget (intentionally not shown outside Automap) // [FG] player coords widget
{ {
"map_player_coords", "map_player_coords",
(config_t *) &map_player_coords, NULL, (config_t *) &map_player_coords, NULL,
{1}, {0,1}, number, ss_auto, wad_yes, {1}, {0,2}, number, ss_auto, wad_yes,
"1 to show player coords widget" "1 to show player coords widget"
}, },

View File

@ -133,7 +133,7 @@ void T_VerticalDoor (vldoor_t *door)
door->sector->ceilingdata = NULL; //jff 2/22/98 door->sector->ceilingdata = NULL; //jff 2/22/98
P_RemoveThinker (&door->thinker); // unlink and free P_RemoveThinker (&door->thinker); // unlink and free
// killough 4/15/98: remove double-closing sound of blazing doors // killough 4/15/98: remove double-closing sound of blazing doors
if (default_comp[comp_blazing]) if (STRICTMODE_COMP(comp_blazing))
S_StartSound((mobj_t *)&door->sector->soundorg,sfx_bdcls); S_StartSound((mobj_t *)&door->sector->soundorg,sfx_bdcls);
break; break;
@ -525,7 +525,7 @@ int EV_VerticalDoor(line_t *line, mobj_t *thing)
door->line = line; // jff 1/31/98 remember line that triggered us door->line = line; // jff 1/31/98 remember line that triggered us
// killough 10/98: use gradual lighting changes if nonzero tag given // killough 10/98: use gradual lighting changes if nonzero tag given
door->lighttag = default_comp[comp_doorlight] ? 0 : line->tag; // killough 10/98 door->lighttag = STRICTMODE_COMP(comp_doorlight) ? 0 : line->tag; // killough 10/98
// set the type of door from the activating linedef type // set the type of door from the activating linedef type
switch(line->special) switch(line->special)

View File

@ -1691,7 +1691,8 @@ static boolean P_HealCorpse(mobj_t* actor, int radius, statenum_t healstate, sfx
(info->flags & ~MF_FRIEND) | (actor->flags & MF_FRIEND); (info->flags & ~MF_FRIEND) | (actor->flags & MF_FRIEND);
// [crispy] resurrected pools of gore ("ghost monsters") are translucent // [crispy] resurrected pools of gore ("ghost monsters") are translucent
if (ghost_monsters && corpsehit->height == 0 && corpsehit->radius == 0) if (STRICTMODE(ghost_monsters) && corpsehit->height == 0
&& corpsehit->radius == 0)
{ {
corpsehit->flags |= MF_TRANSLUCENT; corpsehit->flags |= MF_TRANSLUCENT;
fprintf(stderr, "A_VileChase: Resurrected ghost monster (%d) at (%d/%d)!\n", fprintf(stderr, "A_VileChase: Resurrected ghost monster (%d) at (%d/%d)!\n",

View File

@ -971,7 +971,7 @@ manual_locked:
door->direction = 1; door->direction = 1;
// killough 10/98: implement gradual lighting // killough 10/98: implement gradual lighting
door->lighttag = !default_comp[comp_doorlight] && (line->special&6) == 6 && door->lighttag = !STRICTMODE_COMP(comp_doorlight) && (line->special&6) == 6 &&
line->special > GenLockedBase ? line->tag : 0; line->special > GenLockedBase ? line->tag : 0;
// setup speed of door motion // setup speed of door motion
@ -1110,7 +1110,7 @@ manual_door:
door->line = line; // jff 1/31/98 remember line that triggered us door->line = line; // jff 1/31/98 remember line that triggered us
// killough 10/98: implement gradual lighting // killough 10/98: implement gradual lighting
door->lighttag = !default_comp[comp_doorlight] && (line->special&6) == 6 && door->lighttag = !STRICTMODE_COMP(comp_doorlight) && (line->special&6) == 6 &&
line->special > GenLockedBase ? line->tag : 0; line->special > GenLockedBase ? line->tag : 0;
// set kind of door, whether it opens then close, opens, closes etc. // set kind of door, whether it opens then close, opens, closes etc.

View File

@ -1881,7 +1881,7 @@ static boolean PIT_ChangeSector(mobj_t *thing)
P_SetMobjState(thing, S_GIBS); P_SetMobjState(thing, S_GIBS);
thing->flags &= ~MF_SOLID; thing->flags &= ~MF_SOLID;
thing->height = thing->radius = 0; thing->height = thing->radius = 0;
if (colored_blood) if (STRICTMODE(colored_blood))
{ {
thing->flags2 |= MF2_COLOREDBLOOD; thing->flags2 |= MF2_COLOREDBLOOD;
thing->bloodcolor = V_BloodColor(thing->info->bloodcolor); thing->bloodcolor = V_BloodColor(thing->info->bloodcolor);
@ -1921,7 +1921,7 @@ static boolean PIT_ChangeSector(mobj_t *thing)
thing->y, thing->y,
thing->z + thing->height/2, MT_BLOOD); thing->z + thing->height/2, MT_BLOOD);
if (colored_blood) if (STRICTMODE(colored_blood))
{ {
mo->flags2 |= MF2_COLOREDBLOOD; mo->flags2 |= MF2_COLOREDBLOOD;
mo->bloodcolor = V_BloodColor(thing->info->bloodcolor); mo->bloodcolor = V_BloodColor(thing->info->bloodcolor);

View File

@ -1331,7 +1331,7 @@ void P_SpawnBlood(fixed_t x,fixed_t y,fixed_t z,int damage,mobj_t *bleeder)
th = P_SpawnMobj(x,y,z, MT_BLOOD); th = P_SpawnMobj(x,y,z, MT_BLOOD);
th->momz = FRACUNIT*2; th->momz = FRACUNIT*2;
th->tics -= P_Random(pr_spawnblood)&3; th->tics -= P_Random(pr_spawnblood)&3;
if (colored_blood) if (STRICTMODE(colored_blood))
{ {
th->flags2 |= MF2_COLOREDBLOOD; th->flags2 |= MF2_COLOREDBLOOD;
th->bloodcolor = V_BloodColor(bleeder->info->bloodcolor); th->bloodcolor = V_BloodColor(bleeder->info->bloodcolor);

View File

@ -681,7 +681,7 @@ static const byte *R_BrightmapForTexName_Hacx (const char *texname)
// [crispy] adapted from russian-doom/src/doom/r_things.c:617-639 // [crispy] adapted from russian-doom/src/doom/r_things.c:617-639
static const byte *R_BrightmapForSprite_Doom (const int type) static const byte *R_BrightmapForSprite_Doom (const int type)
{ {
if (brightmaps) if (STRICTMODE(brightmaps))
{ {
switch (type) switch (type)
{ {
@ -723,7 +723,7 @@ static const byte *R_BrightmapForSprite_Chex (const int type)
{ {
// [crispy] TODO // [crispy] TODO
/* /*
if (brightmaps) if (STRICTMODE(brightmaps))
{ {
switch (type) switch (type)
{ {
@ -751,7 +751,7 @@ static const byte *R_BrightmapForSprite_Chex (const int type)
static const byte *R_BrightmapForSprite_Hacx (const int type) static const byte *R_BrightmapForSprite_Hacx (const int type)
{ {
if (brightmaps) if (STRICTMODE(brightmaps))
{ {
switch (type) switch (type)
{ {
@ -803,7 +803,7 @@ static int bmapflatnum[12];
static const byte *R_BrightmapForFlatNum_Doom (const int num) static const byte *R_BrightmapForFlatNum_Doom (const int num)
{ {
if (brightmaps) if (STRICTMODE(brightmaps))
{ {
if (num == bmapflatnum[0] || if (num == bmapflatnum[0] ||
num == bmapflatnum[1] || num == bmapflatnum[1] ||
@ -818,7 +818,7 @@ static const byte *R_BrightmapForFlatNum_Doom (const int num)
static const byte *R_BrightmapForFlatNum_Hacx (const int num) static const byte *R_BrightmapForFlatNum_Hacx (const int num)
{ {
if (brightmaps) if (STRICTMODE(brightmaps))
{ {
if (num == bmapflatnum[0] || if (num == bmapflatnum[0] ||
num == bmapflatnum[1] || num == bmapflatnum[1] ||
@ -853,7 +853,7 @@ static const byte *R_BrightmapForFlatNum_None (const int num)
static const byte *R_BrightmapForState_Doom (const int state) static const byte *R_BrightmapForState_Doom (const int state)
{ {
if (brightmaps) if (STRICTMODE(brightmaps))
{ {
switch (state) switch (state)
{ {
@ -873,7 +873,7 @@ static const byte *R_BrightmapForState_Doom (const int state)
static const byte *R_BrightmapForState_Hacx (const int state) static const byte *R_BrightmapForState_Hacx (const int state)
{ {
if (brightmaps) if (STRICTMODE(brightmaps))
{ {
switch (state) switch (state)
{ {

View File

@ -400,7 +400,7 @@ static void do_draw_plane(visplane_t *pl)
// //
// killough 7/19/98: fix hack to be more realistic: // killough 7/19/98: fix hack to be more realistic:
if (default_comp[comp_skymap] || !(dc_colormap[0] = dc_colormap[1] = fixedcolormap)) if (STRICTMODE_COMP(comp_skymap) || !(dc_colormap[0] = dc_colormap[1] = fixedcolormap))
dc_colormap[0] = dc_colormap[1] = fullcolormap; // killough 3/20/98 dc_colormap[0] = dc_colormap[1] = fullcolormap; // killough 3/20/98
dc_texheight = textureheight[texture]>>FRACBITS; // killough dc_texheight = textureheight[texture]>>FRACBITS; // killough

View File

@ -388,7 +388,8 @@ static void R_RenderSegLoop (void)
if (index >= MAXLIGHTSCALE ) if (index >= MAXLIGHTSCALE )
index = MAXLIGHTSCALE-1; index = MAXLIGHTSCALE-1;
dc_colormap[0] = walllights[index]; dc_colormap[0] = walllights[index];
dc_colormap[1] = (!fixedcolormap && brightmaps) ? fullcolormap : dc_colormap[0]; dc_colormap[1] = (!fixedcolormap && STRICTMODE(brightmaps)) ?
fullcolormap : dc_colormap[0];
dc_x = rw_x; dc_x = rw_x;
dc_iscale = 0xffffffffu / (unsigned)rw_scale; dc_iscale = 0xffffffffu / (unsigned)rw_scale;
} }

View File

@ -519,7 +519,7 @@ void R_ProjectSprite (mobj_t* thing)
} }
// [crispy] randomly flip corpse, blood and death animation sprites // [crispy] randomly flip corpse, blood and death animation sprites
if (flipcorpses && if (STRICTMODE(flipcorpses) &&
(thing->flags2 & MF2_FLIPPABLE) && (thing->flags2 & MF2_FLIPPABLE) &&
!(thing->flags & MF_SHOOTABLE) && !(thing->flags & MF_SHOOTABLE) &&
(thing->health & 1)) (thing->health & 1))