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;
boolean done, wipe, redrawsbar;
if (demobar && demo_skipping)
if (demobar && DEMOSKIP)
{
if (HU_DemoProgressBar(false))
{

View File

@ -295,7 +295,13 @@ extern boolean demonext;
// skipping demo
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;

View File

@ -127,9 +127,13 @@ byte *savebuffer;
int autorun = false; // always running? // phares
int novert = false;
int mouselook = false;
// killough 4/13/98: Make clock rate adjustable by scale factor
int realtic_clock_rate = 100;
int default_complevel;
boolean strictmode, default_strictmode;
//
// controls (have defaults)
//
@ -2608,6 +2612,39 @@ static int G_GetWadComplevel(void)
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()
{
comp[comp_respawn] = 1;
@ -2623,10 +2660,12 @@ static void G_BoomComp()
comp[comp_telefrag] = 1;
comp[comp_dropoff] = 0;
comp[comp_falloff] = 1;
comp[comp_skymap] = 1;
comp[comp_pursuit] = 1;
comp[comp_staylift] = 1;
comp[comp_zombie] = 1;
comp[comp_infcheat] = 1;
comp[comp_respawn] = 1;
comp[comp_soul] = 1;
comp[comp_ledgeblock] = 0;
@ -2711,8 +2750,25 @@ void G_ReloadDefaults(void)
if (demo_version == -1)
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)
{
// Set new compatibility options
G_MBFComp();
}
// killough 3/31/98, 4/5/98: demo sync insurance
demo_insurance = 0;
@ -2749,11 +2805,10 @@ void G_ReloadDefaults(void)
}
else if (mbf21)
{
// These are not configurable
variable_friction = 1;
allow_pushers = 1;
demo_insurance = 0;
classic_bfg = 0;
beta_emulation = 0;
}
M_ResetSetupMenu();

View File

@ -1037,7 +1037,7 @@ static void HU_UpdateCrosshair(void)
else
crosshair.cr = colrngs[hud_crosshair_color];
if (hud_crosshair_target)
if (STRICTMODE(hud_crosshair_target))
{
angle_t an = plr->mo->angle;
ammotype_t ammo = weaponinfo[plr->readyweapon].ammo;
@ -1144,7 +1144,9 @@ void HU_Drawer(void)
}
// [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
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;
// killough 4/13/98: Make clock rate adjustable by scale factor
int realtic_clock_rate = 100;
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_GetFracTime = I_GetFracTime_Scaled;
}
void I_SetTimeScale(int scale)

View File

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

View File

@ -60,6 +60,7 @@
#include "r_draw.h" // [FG] R_SetFuzzColumnMode
#include "r_sky.h" // [FG] R_InitSkyMap()
#include "r_plane.h" // [FG] R_InitPlanes()
#include "m_argv.h"
// [crispy] remove DOS reference from the game quit confirmation dialogs
#include "SDL_platform.h"
@ -133,7 +134,7 @@ boolean menuactive; // The menus are up
#define LINEHEIGHT 16
#define M_SPC 9
#define M_X 250
#define M_X 240
#define M_Y (29 + M_SPC)
#define M_X_PREV (57)
#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_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];
// [FG] support up to 8 pages of savegames
@ -3094,10 +3098,7 @@ static const char *weapon_attack_alignment_strings[] = {
static void M_UpdateCenteredWeaponItem(void)
{
// weap_center
if (cosmetic_bobbing)
weap_settings1[12].m_flags &= ~S_DISABLE;
else
weap_settings1[12].m_flags |= S_DISABLE;
DISABLE_ITEM(!cosmetic_bobbing, weap_settings1[13]);
}
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)
{
if (hud_crosshair)
{
stat_settings2[8].m_flags &= ~S_DISABLE;
stat_settings2[9].m_flags &= ~S_DISABLE;
stat_settings2[10].m_flags &= ~S_DISABLE;
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;
}
DISABLE_ITEM(!hud_crosshair, stat_settings2[8]);
DISABLE_ITEM(!(hud_crosshair && !strictmode), stat_settings2[9]);
DISABLE_ITEM(!hud_crosshair, stat_settings2[10]);
DISABLE_ITEM(!(hud_crosshair && STRICTMODE(hud_crosshair_target)),
stat_settings2[11]);
}
static const char *timests_str[] = {
@ -3816,6 +3801,7 @@ enum {
enum {
general_title5,
general_strictmode,
general_realtic,
general_demobar,
general_skill,
@ -3828,6 +3814,48 @@ enum {
#define G_Y3 (M_Y + (general_end3 + 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[] = {
// dummy first option because defaultskill is 1-based
"", "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},
{"Game speed, percentage of normal", S_NUM|S_PRGWARN, m_null, M_X,
M_Y + general_realtic*M_SPC, {"realtic_clock_rate"}},
{"Strict Mode", S_YESNO|S_LEVWARN, m_null, M_X,
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,
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,
M_Y + compat_zerotags * COMP_SPC, {"comp_zerotags"}},
{"Cosmetic", S_SKIP|S_TITLE, m_null, C_X,
M_Y + compat_cosmetic * COMP_SPC},
@ -4184,10 +4216,7 @@ setup_menu_t* mess_settings[] =
static void M_UpdateMultiLineMsgItem(void)
{
if (message_list)
mess_settings1[7].m_flags &= ~S_DISABLE;
else
mess_settings1[7].m_flags |= S_DISABLE;
DISABLE_ITEM(!message_list, mess_settings1[7]);
}
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
if (M_InputActivated(input_menu_nextlevel))
{
if (demoplayback && singledemo && !demo_skipping)
if (demoplayback && singledemo && !DEMOSKIP)
{
demonext = true;
G_EnableWarp(true);
@ -5237,7 +5266,7 @@ boolean M_Responder (event_t* ev)
if (M_InputActivated(input_demo_fforward))
{
if (demoplayback && singledemo && !demo_skipping && !fastdemo)
if (demoplayback && singledemo && !DEMOSKIP && !fastdemo)
{
static boolean fastdemo_timer = false;
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 = BETWEEN(10, 1000, realtic_clock_rate);
@ -5254,7 +5284,8 @@ boolean M_Responder (event_t* ev)
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 = BETWEEN(10, 1000, realtic_clock_rate);
@ -5262,7 +5293,8 @@ boolean M_Responder (event_t* ev)
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;
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 FLAG_SET_VANILLA(var, flag) demo_compatibility ? (var |= flag) : (var &= ~flag)
#define FLAG_SET_VANILLA_ONLY(var, flag) (!demo_compatibility) ? (var |= flag) : (var &= ~flag)
#define DISABLE_BOOM(item) \
DISABLE_ITEM((strictmode || demo_version < 203), item)
#define DISABLE_VANILLA(item) \
DISABLE_ITEM((strictmode || demo_compatibility), item)
#define DISABLE_VANILLA_ONLY(item) \
DISABLE_ITEM(!demo_compatibility, item)
void M_ResetSetupMenu(void)
{
@ -6651,55 +6686,56 @@ void M_ResetSetupMenu(void)
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)
{
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
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)
{
FLAG_SET_BOOM(enem_settings1[i].m_flags, S_DISABLE);
DISABLE_BOOM(enem_settings1[i]);
}
// enem_ghost
if (comp[comp_vile])
enem_settings1[13].m_flags &= ~S_DISABLE;
else
enem_settings1[13].m_flags |= S_DISABLE;
DISABLE_ITEM(!comp[comp_vile], enem_settings1[13]);
DISABLE_VANILLA(enem_settings1[enem_remember]);
FLAG_SET_VANILLA(enem_settings1[enem_remember].m_flags, S_DISABLE);
// weap_pref1 to weap_pref9
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
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_UpdateCenteredWeaponItem();
M_UpdateMultiLineMsgItem();
M_UpdateStrictModeItems();
M_ResetTimeScale();
}
void M_ResetSetupMenuVideo(void)
{
// enem_fuzz
if (hires)
enem_settings1[14].m_flags &= ~S_DISABLE;
else
enem_settings1[14].m_flags |= S_DISABLE;
DISABLE_ITEM(!hires, enem_settings1[14]);
}
//

View File

@ -157,6 +157,13 @@ default_t defaults[] = {
"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",
(config_t *) &realtic_clock_rate, NULL,
@ -1670,11 +1677,11 @@ default_t defaults[] = {
"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",
(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"
},

View File

@ -133,7 +133,7 @@ void T_VerticalDoor (vldoor_t *door)
door->sector->ceilingdata = NULL; //jff 2/22/98
P_RemoveThinker (&door->thinker); // unlink and free
// 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);
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
// 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
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);
// [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;
fprintf(stderr, "A_VileChase: Resurrected ghost monster (%d) at (%d/%d)!\n",

View File

@ -971,7 +971,7 @@ manual_locked:
door->direction = 1;
// 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;
// setup speed of door motion
@ -1110,7 +1110,7 @@ manual_door:
door->line = line; // jff 1/31/98 remember line that triggered us
// 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;
// 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);
thing->flags &= ~MF_SOLID;
thing->height = thing->radius = 0;
if (colored_blood)
if (STRICTMODE(colored_blood))
{
thing->flags2 |= MF2_COLOREDBLOOD;
thing->bloodcolor = V_BloodColor(thing->info->bloodcolor);
@ -1921,7 +1921,7 @@ static boolean PIT_ChangeSector(mobj_t *thing)
thing->y,
thing->z + thing->height/2, MT_BLOOD);
if (colored_blood)
if (STRICTMODE(colored_blood))
{
mo->flags2 |= MF2_COLOREDBLOOD;
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->momz = FRACUNIT*2;
th->tics -= P_Random(pr_spawnblood)&3;
if (colored_blood)
if (STRICTMODE(colored_blood))
{
th->flags2 |= MF2_COLOREDBLOOD;
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
static const byte *R_BrightmapForSprite_Doom (const int type)
{
if (brightmaps)
if (STRICTMODE(brightmaps))
{
switch (type)
{
@ -723,7 +723,7 @@ static const byte *R_BrightmapForSprite_Chex (const int type)
{
// [crispy] TODO
/*
if (brightmaps)
if (STRICTMODE(brightmaps))
{
switch (type)
{
@ -751,7 +751,7 @@ static const byte *R_BrightmapForSprite_Chex (const int type)
static const byte *R_BrightmapForSprite_Hacx (const int type)
{
if (brightmaps)
if (STRICTMODE(brightmaps))
{
switch (type)
{
@ -803,7 +803,7 @@ static int bmapflatnum[12];
static const byte *R_BrightmapForFlatNum_Doom (const int num)
{
if (brightmaps)
if (STRICTMODE(brightmaps))
{
if (num == bmapflatnum[0] ||
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)
{
if (brightmaps)
if (STRICTMODE(brightmaps))
{
if (num == bmapflatnum[0] ||
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)
{
if (brightmaps)
if (STRICTMODE(brightmaps))
{
switch (state)
{
@ -873,7 +873,7 @@ static const byte *R_BrightmapForState_Doom (const int state)
static const byte *R_BrightmapForState_Hacx (const int state)
{
if (brightmaps)
if (STRICTMODE(brightmaps))
{
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:
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_texheight = textureheight[texture]>>FRACBITS; // killough

View File

@ -388,7 +388,8 @@ static void R_RenderSegLoop (void)
if (index >= MAXLIGHTSCALE )
index = MAXLIGHTSCALE-1;
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_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
if (flipcorpses &&
if (STRICTMODE(flipcorpses) &&
(thing->flags2 & MF2_FLIPPABLE) &&
!(thing->flags & MF_SHOOTABLE) &&
(thing->health & 1))