- Copied railgun sound fix from Skulltag.

- Made infighting a level flag. The old method still exists but the level flags
  will take precedence if set.



SVN r532 (trunk)
This commit is contained in:
Christoph Oelckers 2007-05-20 11:08:36 +00:00
parent ea2ea7dbf0
commit f4dcfad331
9 changed files with 60 additions and 13 deletions

View file

@ -1,3 +1,10 @@
May 20, 2007 (Changes by Graf Zahl)
- Copied railgun sound fix from Skulltag.
May 19, 2007 (Changes by Graf Zahl)
- Made infighting a level flag. The old method still exists but the level flags
will take precedence if set.
May 13, 2007 (Changes by Graf Zahl) May 13, 2007 (Changes by Graf Zahl)
- fixed: meleethreshold only has meaning when the attacking monster actually - fixed: meleethreshold only has meaning when the attacking monster actually
has a melee attack. has a melee attack.

View file

@ -284,6 +284,9 @@ static const char *MapInfoMapLevel[] =
"compat_invisibility", "compat_invisibility",
"bordertexture", "bordertexture",
"f1", // [RC] F1 help "f1", // [RC] F1 help
"noinfighting",
"normalinfighting",
"totalinfighting",
NULL NULL
}; };
@ -419,6 +422,9 @@ MapHandlers[] =
{ MITYPE_COMPATFLAG, COMPATF_INVISIBILITY}, { MITYPE_COMPATFLAG, COMPATF_INVISIBILITY},
{ MITYPE_LUMPNAME, lioffset(bordertexture), 0 }, { MITYPE_LUMPNAME, lioffset(bordertexture), 0 },
{ MITYPE_F1, lioffset(f1), 0, }, { MITYPE_F1, lioffset(f1), 0, },
{ MITYPE_SCFLAGS, LEVEL_NOINFIGHTING, ~LEVEL_TOTALINFIGHTING },
{ MITYPE_SCFLAGS, 0, ~(LEVEL_NOINFIGHTING|LEVEL_TOTALINFIGHTING)},
{ MITYPE_SCFLAGS, LEVEL_TOTALINFIGHTING, ~LEVEL_NOINFIGHTING },
}; };
static const char *MapInfoClusterLevel[] = static const char *MapInfoClusterLevel[] =
@ -2220,7 +2226,7 @@ void G_InitLevelLocals ()
BaseBlendA = 0.0f; // Remove underwater blend effect, if any BaseBlendA = 0.0f; // Remove underwater blend effect, if any
NormalLight.Maps = realcolormaps; NormalLight.Maps = realcolormaps;
//NormalLight.Color = PalEntry (255, 255, 255);
// [BB] Instead of just setting the color, we also have reset Desaturate and build the lights. // [BB] Instead of just setting the color, we also have reset Desaturate and build the lights.
NormalLight.ChangeColor (PalEntry (255, 255, 255), 0); NormalLight.ChangeColor (PalEntry (255, 255, 255), 0);

View file

@ -107,6 +107,8 @@
#define LEVEL_CROUCH_YES UCONST64(0x100000000000) #define LEVEL_CROUCH_YES UCONST64(0x100000000000)
#define LEVEL_PAUSE_MUSIC_IN_MENUS UCONST64(0x200000000000) #define LEVEL_PAUSE_MUSIC_IN_MENUS UCONST64(0x200000000000)
#define LEVEL_TOTALINFIGHTING UCONST64(0x400000000000)
#define LEVEL_NOINFIGHTING UCONST64(0x800000000000)
struct acsdefered_s; struct acsdefered_s;

View file

@ -1225,12 +1225,13 @@ void M_OptInit (void)
void M_InitVideoModesMenu () void M_InitVideoModesMenu ()
{ {
int dummy1, dummy2; //int dummy1, dummy2;
size_t currval = 0; //size_t currval = 0;
char name[24]; //char name[24];
M_RefreshModesList(); M_RefreshModesList();
/*
for (unsigned int i = 1; i < 32 && currval < countof(Depths); i++) for (unsigned int i = 1; i < 32 && currval < countof(Depths); i++)
{ {
Video->StartModeIterator (i, screen->IsFullscreen()); Video->StartModeIterator (i, screen->IsFullscreen());
@ -1243,6 +1244,7 @@ void M_InitVideoModesMenu ()
currval++; currval++;
} }
} }
*/
//ModesItems[VM_DEPTHITEM].b.min = (float)currval; //ModesItems[VM_DEPTHITEM].b.min = (float)currval;

View file

@ -462,8 +462,9 @@ void P_DrawRailTrail (AActor *source, const FVector3 &start, const FVector3 &end
else else
{ {
// Only consider sound in 2D (for now, anyway) // Only consider sound in 2D (for now, anyway)
// [BB] You have to devide by lengthsquared here, not multiply with it.
r = ((start.Y - FIXED2FLOAT(mo->y)) * (-dir.Y) - r = ((start.Y - FIXED2FLOAT(mo->y)) * (-dir.Y) -
(start.X - FIXED2FLOAT(mo->x)) * (dir.X)) * length * length; (start.X - FIXED2FLOAT(mo->x)) * (dir.X)) / lengthsquared;
dirz = dir.Z; dirz = dir.Z;
dir.Z = 0; dir.Z = 0;

View file

@ -230,17 +230,34 @@ void DElevator::Tick ()
{ {
EResult res; EResult res;
fixed_t oldfloor, oldceiling;
oldfloor = m_Sector->floorplane.d;
oldceiling = m_Sector->ceilingplane.d;
if (m_Direction < 0) // moving down if (m_Direction < 0) // moving down
{ {
res = MoveCeiling (m_Speed, m_CeilingDestDist, m_Direction); res = MoveCeiling (m_Speed, m_CeilingDestDist, m_Direction);
if (res == ok || res == pastdest) if (res == ok || res == pastdest)
MoveFloor (m_Speed, m_FloorDestDist, m_Direction); {
res = MoveFloor (m_Speed, m_FloorDestDist, m_Direction);
if (res == crushed)
{
MoveCeiling (m_Speed, oldceiling, -m_Direction);
}
}
} }
else // up else // up
{ {
res = MoveFloor (m_Speed, m_FloorDestDist, m_Direction); res = MoveFloor (m_Speed, m_FloorDestDist, m_Direction);
if (res == ok || res == pastdest) if (res == ok || res == pastdest)
MoveCeiling (m_Speed, m_CeilingDestDist, m_Direction); {
res = MoveCeiling (m_Speed, m_CeilingDestDist, m_Direction);
if (res == crushed)
{
MoveFloor (m_Speed, oldfloor, -m_Direction);
}
}
} }
if (res == pastdest) // if destination height acheived if (res == pastdest) // if destination height acheived

View file

@ -1241,10 +1241,15 @@ bool AActor::OkayToSwitchTarget (AActor *other)
{ // [RH] Friendlies don't target other friendlies { // [RH] Friendlies don't target other friendlies
return false; return false;
} }
if ((gameinfo.gametype == GAME_Strife || infighting < 0) &&
other->player == NULL && !IsHostile (other)) int infight;
if (level.flags & LEVEL_TOTALINFIGHTING) infight=1;
else if (level.flags & LEVEL_NOINFIGHTING) infight=-1;
else infight = infighting;
if (infight < 0 && other->player == NULL && !IsHostile (other))
{ {
return false; // Strife & infighting off: Non-friendlies don't target other non-friendlies return false; // infighting off: Non-friendlies don't target other non-friendlies
} }
if (TIDtoHate != 0 && TIDtoHate == other->TIDtoHate) if (TIDtoHate != 0 && TIDtoHate == other->TIDtoHate)
return false; // [RH] Don't target "teammates" return false; // [RH] Don't target "teammates"

View file

@ -938,6 +938,7 @@ bool PIT_CheckThing (AActor *thing)
// [Graf Zahl] Why do I have the feeling that this didn't really work anymore now // [Graf Zahl] Why do I have the feeling that this didn't really work anymore now
// that ZDoom supports friendly monsters? // that ZDoom supports friendly monsters?
if (tmthing->target != NULL) if (tmthing->target != NULL)
{ {
@ -950,7 +951,12 @@ bool PIT_CheckThing (AActor *thing)
// to harm / be harmed by anything. // to harm / be harmed by anything.
if (!thing->player && !tmthing->target->player) if (!thing->player && !tmthing->target->player)
{ {
if (infighting < 0) int infight;
if (level.flags & LEVEL_TOTALINFIGHTING) infight=1;
else if (level.flags & LEVEL_NOINFIGHTING) infight=-1;
else infight = infighting;
if (infight < 0)
{ {
// -1: Monsters cannot hurt each other, but make exceptions for // -1: Monsters cannot hurt each other, but make exceptions for
// friendliness and hate status. // friendliness and hate status.
@ -973,7 +979,7 @@ bool PIT_CheckThing (AActor *thing)
} }
} }
} }
else if (infighting == 0) else if (infight == 0)
{ {
// 0: Monsters cannot hurt same species except // 0: Monsters cannot hurt same species except
// cases where they are clearly supposed to do that // cases where they are clearly supposed to do that
@ -1001,7 +1007,7 @@ bool PIT_CheckThing (AActor *thing)
} }
} }
} }
// else if (infighting==1) any shot hurts anything - no further tests // else if (infight==1) any shot hurts anything - no further tests
} }
} }
if (!(thing->flags & MF_SHOOTABLE)) if (!(thing->flags & MF_SHOOTABLE))

View file

@ -5,6 +5,7 @@ forcenoskystretch
strifefallingdamage strifefallingdamage
nointermission nointermission
clipmidtextures clipmidtextures
noinfighting
map MAP01 "AREA 1: sanctuary" map MAP01 "AREA 1: sanctuary"
next MAP02 next MAP02