Merge remote-tracking branch 'origin/master'

This commit is contained in:
Randy Heit 2014-07-28 21:08:21 -05:00
commit 0f8a0020ed
14 changed files with 57 additions and 43 deletions

View file

@ -340,6 +340,7 @@ enum
MF7_NOTELESTOMP = 0x00000002, // cannot telefrag under any circumstances (even when set by MAPINFO) MF7_NOTELESTOMP = 0x00000002, // cannot telefrag under any circumstances (even when set by MAPINFO)
MF7_ALWAYSTELEFRAG = 0x00000004, // will unconditionally be telefragged when in the way. Overrides all other settings. MF7_ALWAYSTELEFRAG = 0x00000004, // will unconditionally be telefragged when in the way. Overrides all other settings.
MF7_HANDLENODELAY = 0x00000008, // respect NoDelay state flag MF7_HANDLENODELAY = 0x00000008, // respect NoDelay state flag
MF7_WEAPONSPAWN = 0x00000010, // subject to DF_NO_COOP_WEAPON_SPAWN dmflag
// --- mobj.renderflags --- // --- mobj.renderflags ---

View file

@ -422,7 +422,7 @@ CVAR (Flag, sv_fastmonsters, dmflags, DF_FAST_MONSTERS);
CVAR (Flag, sv_nojump, dmflags, DF_NO_JUMP); CVAR (Flag, sv_nojump, dmflags, DF_NO_JUMP);
CVAR (Flag, sv_allowjump, dmflags, DF_YES_JUMP); CVAR (Flag, sv_allowjump, dmflags, DF_YES_JUMP);
CVAR (Flag, sv_nofreelook, dmflags, DF_NO_FREELOOK); CVAR (Flag, sv_nofreelook, dmflags, DF_NO_FREELOOK);
CVAR (Flag, sv_respawnsuper, dmflags, DF_RESPAWN_SUPER); CVAR (Flag, sv_allowfreelook, dmflags, DF_YES_FREELOOK);
CVAR (Flag, sv_nofov, dmflags, DF_NO_FOV); CVAR (Flag, sv_nofov, dmflags, DF_NO_FOV);
CVAR (Flag, sv_noweaponspawn, dmflags, DF_NO_COOP_WEAPON_SPAWN); CVAR (Flag, sv_noweaponspawn, dmflags, DF_NO_COOP_WEAPON_SPAWN);
CVAR (Flag, sv_nocrouch, dmflags, DF_NO_CROUCH); CVAR (Flag, sv_nocrouch, dmflags, DF_NO_CROUCH);
@ -439,6 +439,7 @@ CVAR (Flag, sv_coophalveammo, dmflags, DF_COOP_HALVE_AMMO);
CVAR (Mask, sv_crouch, dmflags, DF_NO_CROUCH|DF_YES_CROUCH); CVAR (Mask, sv_crouch, dmflags, DF_NO_CROUCH|DF_YES_CROUCH);
CVAR (Mask, sv_jump, dmflags, DF_NO_JUMP|DF_YES_JUMP); CVAR (Mask, sv_jump, dmflags, DF_NO_JUMP|DF_YES_JUMP);
CVAR (Mask, sv_fallingdamage, dmflags, DF_FORCE_FALLINGHX|DF_FORCE_FALLINGZD); CVAR (Mask, sv_fallingdamage, dmflags, DF_FORCE_FALLINGHX|DF_FORCE_FALLINGZD);
CVAR (Mask, sv_freelook, dmflags, DF_NO_FREELOOK|DF_YES_FREELOOK);
//========================================================================== //==========================================================================
// //
@ -510,6 +511,8 @@ CVAR (Flag, sv_noautoaim, dmflags2, DF2_NOAUTOAIM);
CVAR (Flag, sv_dontcheckammo, dmflags2, DF2_DONTCHECKAMMO); CVAR (Flag, sv_dontcheckammo, dmflags2, DF2_DONTCHECKAMMO);
CVAR (Flag, sv_killbossmonst, dmflags2, DF2_KILLBOSSMONST); CVAR (Flag, sv_killbossmonst, dmflags2, DF2_KILLBOSSMONST);
CVAR (Flag, sv_nocountendmonst, dmflags2, DF2_NOCOUNTENDMONST); CVAR (Flag, sv_nocountendmonst, dmflags2, DF2_NOCOUNTENDMONST);
CVAR (Flag, sv_respawnsuper, dmflags2, DF2_RESPAWN_SUPER);
//========================================================================== //==========================================================================
// //
// CVAR compatflags // CVAR compatflags

View file

@ -254,7 +254,7 @@ enum
DF_NO_JUMP = 1 << 16, // Don't allow jumping DF_NO_JUMP = 1 << 16, // Don't allow jumping
DF_YES_JUMP = 2 << 16, DF_YES_JUMP = 2 << 16,
DF_NO_FREELOOK = 1 << 18, // Don't allow freelook DF_NO_FREELOOK = 1 << 18, // Don't allow freelook
DF_RESPAWN_SUPER = 1 << 19, // Respawn invulnerability and invisibility DF_YES_FREELOOK = 2 << 18,
DF_NO_FOV = 1 << 20, // Only let the arbitrator set FOV (for all players) DF_NO_FOV = 1 << 20, // Only let the arbitrator set FOV (for all players)
DF_NO_COOP_WEAPON_SPAWN = 1 << 21, // Don't spawn multiplayer weapons in coop games DF_NO_COOP_WEAPON_SPAWN = 1 << 21, // Don't spawn multiplayer weapons in coop games
DF_NO_CROUCH = 1 << 22, // Don't allow crouching DF_NO_CROUCH = 1 << 22, // Don't allow crouching
@ -298,6 +298,7 @@ enum
DF2_DONTCHECKAMMO = 1 << 24, // Don't Check ammo when switching weapons. DF2_DONTCHECKAMMO = 1 << 24, // Don't Check ammo when switching weapons.
DF2_KILLBOSSMONST = 1 << 25, // Kills all monsters spawned by a boss cube when the boss dies DF2_KILLBOSSMONST = 1 << 25, // Kills all monsters spawned by a boss cube when the boss dies
DF2_NOCOUNTENDMONST = 1 << 26, // Do not count monsters in 'end level when dying' sectors towards kill count DF2_NOCOUNTENDMONST = 1 << 26, // Do not count monsters in 'end level when dying' sectors towards kill count
DF2_RESPAWN_SUPER = 1 << 27, // Respawn invulnerability and invisibility
}; };
// [RH] Compatibility flags. // [RH] Compatibility flags.

View file

@ -154,7 +154,7 @@ static const char * const ActorNames_init[]=
"RocketAmmo", "RocketAmmo",
"RocketBox", "RocketBox",
"Cell", "Cell",
"CellBox", "CellPack",
"Shell", "Shell",
"ShellBox", "ShellBox",
"Backpack", "Backpack",

View file

@ -1835,6 +1835,13 @@ void G_DoLoadGame ()
BYTE *vars_p = (BYTE *)text; BYTE *vars_p = (BYTE *)text;
C_ReadCVars (&vars_p); C_ReadCVars (&vars_p);
delete[] text; delete[] text;
if (SaveVersion <= 4509)
{
// account for the flag shuffling for making freelook a 3-state option
INTBOOL flag = dmflags & DF_YES_FREELOOK;
dmflags = dmflags & ~DF_YES_FREELOOK;
if (flag) dmflags2 = dmflags2 | DF2_RESPAWN_SUPER;
}
} }
// dearchive all the modifications // dearchive all the modifications

View file

@ -1320,11 +1320,11 @@ bool FLevelLocals::IsCrouchingAllowed() const
bool FLevelLocals::IsFreelookAllowed() const bool FLevelLocals::IsFreelookAllowed() const
{ {
if (level.flags & LEVEL_FREELOOK_NO) if (dmflags & DF_NO_FREELOOK)
return false; return false;
if (level.flags & LEVEL_FREELOOK_YES) if (dmflags & DF_YES_FREELOOK)
return true; return true;
return !(dmflags & DF_NO_FREELOOK); return !(level.flags & LEVEL_FREELOOK_NO);
} }
//========================================================================== //==========================================================================

View file

@ -497,7 +497,7 @@ bool AInventory::SpecialDropAction (AActor *dropper)
bool AInventory::ShouldRespawn () bool AInventory::ShouldRespawn ()
{ {
if ((ItemFlags & IF_BIGPOWERUP) && !(dmflags & DF_RESPAWN_SUPER)) return false; if ((ItemFlags & IF_BIGPOWERUP) && !(dmflags2 & DF2_RESPAWN_SUPER)) return false;
if (ItemFlags & IF_NEVERRESPAWN) return false; if (ItemFlags & IF_NEVERRESPAWN) return false;
return !!(dmflags & DF_ITEMS_RESPAWN); return !!(dmflags & DF_ITEMS_RESPAWN);
} }

View file

@ -4724,7 +4724,7 @@ AActor *P_SpawnMapThing (FMapThing *mthing, int position)
// [RH] don't spawn extra weapons in coop if so desired // [RH] don't spawn extra weapons in coop if so desired
if (multiplayer && !deathmatch && (dmflags & DF_NO_COOP_WEAPON_SPAWN)) if (multiplayer && !deathmatch && (dmflags & DF_NO_COOP_WEAPON_SPAWN))
{ {
if (i->IsDescendantOf (RUNTIME_CLASS(AWeapon))) if (GetDefaultByType(i)->flags7 & MF7_WEAPONSPAWN)
{ {
if ((mthing->flags & (MTF_DEATHMATCH|MTF_SINGLE)) == MTF_DEATHMATCH) if ((mthing->flags & (MTF_DEATHMATCH|MTF_SINGLE)) == MTF_DEATHMATCH)
return NULL; return NULL;

View file

@ -252,7 +252,7 @@ bool P_ActivateLine (line_t *line, AActor *mo, int side, int activationType)
if (buttonSuccess) if (buttonSuccess)
{ {
if (activationType == SPAC_Use || activationType == SPAC_Impact) if (activationType == SPAC_Use || activationType == SPAC_Impact || activationType == SPAC_Push)
{ {
P_ChangeSwitchTexture (line->sidedef[0], repeat, special); P_ChangeSwitchTexture (line->sidedef[0], repeat, special);
} }

View file

@ -189,41 +189,38 @@ static const char *TerrainKeywords[] =
NULL NULL
}; };
// Alternate offsetof macro to shut GCC up
#define theoffsetof(type,field) ((size_t)&((type*)1)->field - 1)
static FGenericParse SplashParser[] = static FGenericParse SplashParser[] =
{ {
{ GEN_End, {0} }, { GEN_End, {0} },
{ GEN_Sound, {theoffsetof(FSplashDef, SmallSplashSound)} }, { GEN_Sound, {myoffsetof(FSplashDef, SmallSplashSound)} },
{ GEN_Fixed, {theoffsetof(FSplashDef, SmallSplashClip)} }, { GEN_Fixed, {myoffsetof(FSplashDef, SmallSplashClip)} },
{ GEN_Sound, {theoffsetof(FSplashDef, NormalSplashSound)} }, { GEN_Sound, {myoffsetof(FSplashDef, NormalSplashSound)} },
{ GEN_Class, {theoffsetof(FSplashDef, SmallSplash)} }, { GEN_Class, {myoffsetof(FSplashDef, SmallSplash)} },
{ GEN_Class, {theoffsetof(FSplashDef, SplashBase)} }, { GEN_Class, {myoffsetof(FSplashDef, SplashBase)} },
{ GEN_Class, {theoffsetof(FSplashDef, SplashChunk)} }, { GEN_Class, {myoffsetof(FSplashDef, SplashChunk)} },
{ GEN_Byte, {theoffsetof(FSplashDef, ChunkXVelShift)} }, { GEN_Byte, {myoffsetof(FSplashDef, ChunkXVelShift)} },
{ GEN_Byte, {theoffsetof(FSplashDef, ChunkYVelShift)} }, { GEN_Byte, {myoffsetof(FSplashDef, ChunkYVelShift)} },
{ GEN_Byte, {theoffsetof(FSplashDef, ChunkZVelShift)} }, { GEN_Byte, {myoffsetof(FSplashDef, ChunkZVelShift)} },
{ GEN_Fixed, {theoffsetof(FSplashDef, ChunkBaseZVel)} }, { GEN_Fixed, {myoffsetof(FSplashDef, ChunkBaseZVel)} },
{ GEN_Bool, {theoffsetof(FSplashDef, NoAlert)} } { GEN_Bool, {myoffsetof(FSplashDef, NoAlert)} }
}; };
static FGenericParse TerrainParser[] = static FGenericParse TerrainParser[] =
{ {
{ GEN_End, {0} }, { GEN_End, {0} },
{ GEN_Splash, {theoffsetof(FTerrainDef, Splash)} }, { GEN_Splash, {myoffsetof(FTerrainDef, Splash)} },
{ GEN_Int, {theoffsetof(FTerrainDef, DamageAmount)} }, { GEN_Int, {myoffsetof(FTerrainDef, DamageAmount)} },
{ GEN_Custom, {(size_t)ParseDamage} }, { GEN_Custom, {(size_t)ParseDamage} },
{ GEN_Int, {theoffsetof(FTerrainDef, DamageTimeMask)} }, { GEN_Int, {myoffsetof(FTerrainDef, DamageTimeMask)} },
{ GEN_Fixed, {theoffsetof(FTerrainDef, FootClip)} }, { GEN_Fixed, {myoffsetof(FTerrainDef, FootClip)} },
{ GEN_Float, {theoffsetof(FTerrainDef, StepVolume)} }, { GEN_Float, {myoffsetof(FTerrainDef, StepVolume)} },
{ GEN_Time, {theoffsetof(FTerrainDef, WalkStepTics)} }, { GEN_Time, {myoffsetof(FTerrainDef, WalkStepTics)} },
{ GEN_Time, {theoffsetof(FTerrainDef, RunStepTics)} }, { GEN_Time, {myoffsetof(FTerrainDef, RunStepTics)} },
{ GEN_Sound, {theoffsetof(FTerrainDef, LeftStepSound)} }, { GEN_Sound, {myoffsetof(FTerrainDef, LeftStepSound)} },
{ GEN_Sound, {theoffsetof(FTerrainDef, RightStepSound)} }, { GEN_Sound, {myoffsetof(FTerrainDef, RightStepSound)} },
{ GEN_Bool, {theoffsetof(FTerrainDef, IsLiquid)} }, { GEN_Bool, {myoffsetof(FTerrainDef, IsLiquid)} },
{ GEN_Custom, {(size_t)ParseFriction} }, { GEN_Custom, {(size_t)ParseFriction} },
{ GEN_Bool, {theoffsetof(FTerrainDef, AllowProtection)} }, { GEN_Bool, {myoffsetof(FTerrainDef, AllowProtection)} },
}; };

View file

@ -240,6 +240,7 @@ static FFlagDef ActorFlags[]=
DEFINE_FLAG(MF7, NEVERTARGET, AActor, flags7), DEFINE_FLAG(MF7, NEVERTARGET, AActor, flags7),
DEFINE_FLAG(MF7, NOTELESTOMP, AActor, flags7), DEFINE_FLAG(MF7, NOTELESTOMP, AActor, flags7),
DEFINE_FLAG(MF7, ALWAYSTELEFRAG, AActor, flags7), DEFINE_FLAG(MF7, ALWAYSTELEFRAG, AActor, flags7),
DEFINE_FLAG(MF7, WEAPONSPAWN, AActor, flags7),
// Effect flags // Effect flags
DEFINE_FLAG(FX, VISIBILITYPULSE, AActor, effects), DEFINE_FLAG(FX, VISIBILITYPULSE, AActor, effects),

View file

@ -51,7 +51,7 @@ const char *GetVersionString();
// Version identifier for network games. // Version identifier for network games.
// Bump it every time you do a release unless you're certain you // Bump it every time you do a release unless you're certain you
// didn't change anything that will affect sync. // didn't change anything that will affect sync.
#define NETGAMEVERSION 229 #define NETGAMEVERSION 230
// Version stored in the ini's [LastRun] section. // Version stored in the ini's [LastRun] section.
// Bump it if you made some configuration change that you want to // Bump it if you made some configuration change that you want to
@ -61,11 +61,11 @@ const char *GetVersionString();
// Protocol version used in demos. // Protocol version used in demos.
// Bump it if you change existing DEM_ commands or add new ones. // Bump it if you change existing DEM_ commands or add new ones.
// Otherwise, it should be safe to leave it alone. // Otherwise, it should be safe to leave it alone.
#define DEMOGAMEVERSION 0x21A #define DEMOGAMEVERSION 0x21B
// Minimum demo version we can play. // Minimum demo version we can play.
// Bump it whenever you change or remove existing DEM_ commands. // Bump it whenever you change or remove existing DEM_ commands.
#define MINDEMOVERSION 0x215 #define MINDEMOVERSION 0x21B
// SAVEVER is the version of the information stored in level snapshots. // SAVEVER is the version of the information stored in level snapshots.
// Note that SAVEVER is not directly comparable to VERSION. // Note that SAVEVER is not directly comparable to VERSION.
@ -76,7 +76,7 @@ const char *GetVersionString();
// Use 4500 as the base git save version, since it's higher than the // Use 4500 as the base git save version, since it's higher than the
// SVN revision ever got. // SVN revision ever got.
#define SAVEVER 4509 #define SAVEVER 4510
#define SAVEVERSTRINGIFY2(x) #x #define SAVEVERSTRINGIFY2(x) #x
#define SAVEVERSTRINGIFY(x) SAVEVERSTRINGIFY2(x) #define SAVEVERSTRINGIFY(x) SAVEVERSTRINGIFY2(x)

View file

@ -335,6 +335,7 @@ Actor Weapon : Inventory native
Weapon.BobSpeed 1.0 Weapon.BobSpeed 1.0
Weapon.BobRangeX 1.0 Weapon.BobRangeX 1.0
Weapon.BobRangeY 1.0 Weapon.BobRangeY 1.0
+WEAPONSPAWN
States States
{ {
LightDone: LightDone:
@ -362,4 +363,7 @@ Actor WeaponHolder : Inventory native
+INVENTORY.UNDROPPABLE +INVENTORY.UNDROPPABLE
} }
Actor WeaponPiece : Inventory native {} Actor WeaponPiece : Inventory native
{
+WEAPONSPAWN
}

View file

@ -1157,7 +1157,7 @@ OptionValue FallingDM
3, "Strife" 3, "Strife"
} }
OptionValue JumpCrouch OptionValue JumpCrouchFreeLook
{ {
0, "Default" 0, "Default"
1, "Off" 1, "Off"
@ -1189,9 +1189,9 @@ OptionMenu GameplayOptions
Option "Degeneration", "sv_degeneration", "YesNo" Option "Degeneration", "sv_degeneration", "YesNo"
Option "Allow Autoaim", "sv_noautoaim", "NoYes" Option "Allow Autoaim", "sv_noautoaim", "NoYes"
Option "Allow Suicide", "sv_disallowsuicide", "NoYes" Option "Allow Suicide", "sv_disallowsuicide", "NoYes"
Option "Allow jump", "sv_jump", "JumpCrouch" Option "Allow jump", "sv_jump", "JumpCrouchFreeLook"
Option "Allow crouch", "sv_crouch", "JumpCrouch" Option "Allow crouch", "sv_crouch", "JumpCrouchFreeLook"
Option "Allow freelook", "sv_nofreelook", "NoYes" Option "Allow freelook", "sv_freelook", "JumpCrouchFreeLook"
Option "Allow FOV", "sv_nofov", "NoYes" Option "Allow FOV", "sv_nofov", "NoYes"
Option "Allow BFG aiming", "sv_nobfgaim", "NoYes" Option "Allow BFG aiming", "sv_nobfgaim", "NoYes"
Option "Allow automap", "sv_noautomap", "NoYes" Option "Allow automap", "sv_noautomap", "NoYes"