Merge branch 'master' into GLEW_VERSION

This commit is contained in:
Christoph Oelckers 2014-04-18 12:16:12 +02:00
commit c7354c571f
19 changed files with 117 additions and 60 deletions

View File

@ -1008,6 +1008,7 @@ public:
bool SetState (FState *newstate, bool nofunction=false);
virtual bool UpdateWaterLevel (fixed_t oldz, bool splash=true);
bool isFast();
bool isSlow();
void SetIdle();
void ClearCounters();

View File

@ -441,27 +441,33 @@ CCMD (exec)
}
}
void execLogfile(const char *fn)
{
if ((Logfile = fopen(fn, "w")))
{
const char *timestr = myasctime();
Printf("Log started: %s\n", timestr);
}
else
{
Printf("Could not start log\n");
}
}
CCMD (logfile)
{
const char *timestr = myasctime ();
if (Logfile)
{
Printf ("Log stopped: %s\n", timestr);
const char *timestr = myasctime();
Printf("Log stopped: %s\n", timestr);
fclose (Logfile);
Logfile = NULL;
}
if (argv.argc() >= 2)
{
if ( (Logfile = fopen (argv[1], "w")) )
{
Printf ("Log started: %s\n", timestr);
}
else
{
Printf ("Could not start log\n");
}
execLogfile(argv[1]);
}
}

View File

@ -168,4 +168,6 @@ extern unsigned int MakeKey (const char *s);
extern unsigned int MakeKey (const char *s, size_t len);
extern unsigned int SuperFastHash (const char *data, size_t len);
void execLogfile(const char *fn);
#endif //__C_DISPATCH_H__

View File

@ -2223,6 +2223,13 @@ void D_DoomMain (void)
FString *args;
int argcount;
// +logfile gets checked too late to catch the full startup log in the logfile so do some extra check for it here.
FString logfile = Args->TakeValue("+logfile");
if (logfile != NULL)
{
execLogfile(logfile);
}
D_DoomInit();
PClass::StaticInit ();
atterm(FinalGC);

View File

@ -554,6 +554,7 @@ enum ESkillProperty
SKILLP_NoPain,
SKILLP_ArmorFactor,
SKILLP_EasyKey,
SKILLP_SlowMonsters,
};
int G_SkillProperty(ESkillProperty prop);
const char * G_SkillName();
@ -568,6 +569,7 @@ struct FSkillInfo
fixed_t AmmoFactor, DoubleAmmoFactor, DropAmmoFactor;
fixed_t DamageFactor;
bool FastMonsters;
bool SlowMonsters;
bool DisableCheats;
bool AutoUseHealth;

View File

@ -64,6 +64,7 @@ void FMapInfoParser::ParseSkill ()
skill.DropAmmoFactor = -1;
skill.DamageFactor = FRACUNIT;
skill.FastMonsters = false;
skill.SlowMonsters = false;
skill.DisableCheats = false;
skill.EasyBossBrain = false;
skill.EasyKey = false;
@ -118,6 +119,10 @@ void FMapInfoParser::ParseSkill ()
{
skill.FastMonsters = true;
}
else if (sc.Compare ("slowmonsters"))
{
skill.SlowMonsters = true;
}
else if (sc.Compare ("disablecheats"))
{
skill.DisableCheats = true;
@ -336,6 +341,9 @@ int G_SkillProperty(ESkillProperty prop)
case SKILLP_FastMonsters:
return AllSkills[gameskill].FastMonsters || (dmflags & DF_FAST_MONSTERS);
case SKILLP_SlowMonsters:
return AllSkills[gameskill].SlowMonsters;
case SKILLP_Respawn:
if (dmflags & DF_MONSTERS_RESPAWN && AllSkills[gameskill].RespawnCounter==0)
return TICRATE * gameinfo.defaultrespawntime;
@ -433,6 +441,7 @@ FSkillInfo &FSkillInfo::operator=(const FSkillInfo &other)
DropAmmoFactor = other.DropAmmoFactor;
DamageFactor = other.DamageFactor;
FastMonsters = other.FastMonsters;
SlowMonsters = other.SlowMonsters;
DisableCheats = other.DisableCheats;
AutoUseHealth = other.AutoUseHealth;
EasyBossBrain = other.EasyBossBrain;

View File

@ -77,6 +77,7 @@ struct FState
BYTE Fast:1;
BYTE NoDelay:1; // Spawn states executes its action normally
BYTE CanRaise:1; // Allows a monster to be resurrected without waiting for an infinate frame
BYTE Slow:1; // Inverse of fast
int ParameterIndex;
inline int GetFrame() const

View File

@ -1542,7 +1542,6 @@ bool P_LookForEnemies (AActor *actor, INTBOOL allaround, FLookExParams *params)
bool P_LookForPlayers (AActor *actor, INTBOOL allaround, FLookExParams *params)
{
int c;
int stop;
int pnum;
player_t* player;
bool chasegoal = params? (!(params->flags & LOF_DONTCHASEGOAL)) : true;
@ -1615,20 +1614,22 @@ bool P_LookForPlayers (AActor *actor, INTBOOL allaround, FLookExParams *params)
{
pnum = actor->LastLookPlayerNumber;
}
stop = (pnum - 1) & (MAXPLAYERS-1);
for (;;)
{
pnum = (pnum + 1) & (MAXPLAYERS-1);
if (!playeringame[pnum])
continue;
if (actor->TIDtoHate == 0)
// [ED850] Each and every player should only ever be checked once.
if (c++ < MAXPLAYERS)
{
actor->LastLookPlayerNumber = pnum;
}
pnum = (pnum + 1) & (MAXPLAYERS - 1);
if (!playeringame[pnum])
continue;
if (++c == MAXPLAYERS-1 || pnum == stop)
if (actor->TIDtoHate == 0)
{
actor->LastLookPlayerNumber = pnum;
}
}
else
{
// done looking
if (actor->target == NULL)
@ -1692,11 +1693,11 @@ bool P_LookForPlayers (AActor *actor, INTBOOL allaround, FLookExParams *params)
&& P_AproxDistance (player->mo->velx, player->mo->vely)
< 5*FRACUNIT)
{ // Player is sneaking - can't detect
return false;
continue;
}
if (pr_lookforplayers() < 225)
{ // Player isn't sneaking, but still didn't detect
return false;
continue;
}
}
}

View File

@ -405,7 +405,7 @@ bool AActor::InStateSequence(FState * newstate, FState * basestate)
//
// Get the actual duration of the next state
// We are using a state flag now to indicate a state that should be
// accelerated in Fast mode.
// accelerated in Fast mode or slowed in Slow mode.
//
//==========================================================================
@ -416,6 +416,10 @@ int AActor::GetTics(FState * newstate)
{
return tics - (tics>>1);
}
else if (isSlow() && newstate->Slow)
{
return tics<<1;
}
return tics;
}
@ -4082,6 +4086,11 @@ bool AActor::isFast()
return !!G_SkillProperty(SKILLP_FastMonsters);
}
bool AActor::isSlow()
{
return !!G_SkillProperty(SKILLP_SlowMonsters);
}
void AActor::Activate (AActor *activator)
{
if ((flags3 & MF3_ISMONSTER) && (health > 0 || (flags & MF_ICECORPSE)))
@ -4795,10 +4804,7 @@ AActor *P_SpawnMapThing (FMapThing *mthing, int position)
// Set various UDMF options
if (mthing->alpha != -1)
{
DPrintf("Setting alpha to %f", FIXED2FLOAT(mthing->alpha));
mobj->alpha = mthing->alpha;
}
if (mthing->RenderStyle != STYLE_Count)
mobj->RenderStyle = (ERenderStyle)mthing->RenderStyle;
if (mthing->scaleX)

View File

@ -1764,6 +1764,9 @@ void P_LoadThings (MapData * map)
mti[i].Conversation = 0;
mti[i].SkillFilter = MakeSkill(flags);
mti[i].ClassFilter = 0xffff; // Doom map format doesn't have class flags so spawn for all player classes
mti[i].RenderStyle = STYLE_Count;
mti[i].alpha = -1;
mti[i].health = 1;
flags &= ~MTF_SKILLMASK;
mti[i].flags = (short)((flags & 0xf) | 0x7e0);
if (gameinfo.gametype == GAME_Strife)
@ -1837,6 +1840,10 @@ void P_LoadThings2 (MapData * map)
mti[i].flags &= ~(MTF_SKILLMASK|MTF_CLASS_MASK);
mti[i].Conversation = 0;
mti[i].gravity = FRACUNIT;
mti[i].RenderStyle = STYLE_Count;
mti[i].alpha = -1;
mti[i].health = 1;
mti[i].fillcolor = mti[i].scaleX = mti[i].scaleY = mti[i].score = 0;
}
delete[] mtp;
}

View File

@ -275,6 +275,11 @@ do_stop:
state.Fast = true;
continue;
}
if (sc.Compare("SLOW"))
{
state.Slow = true;
continue;
}
if (sc.Compare("NODELAY"))
{
if (bag.statedef.GetStateLabelIndex(NAME_Spawn) == bag.statedef.GetStateCount())

View File

@ -581,6 +581,18 @@ void I_DetectOS(void)
osname = "Server 2008 R2";
}
}
else if (info.dwMinorVersion == 2)
{
// Microsoft broke this API for 8.1 so without jumping through hoops it won't be possible anymore to detect never versions aside from the build number, especially for older compilers.
if (info.wProductType == VER_NT_WORKSTATION)
{
osname = "8 (or higher)";
}
else
{
osname = "Server 2012 (or higher)";
}
}
}
break;

View File

@ -39,16 +39,16 @@ ACTOR Acolyte : StrifeHumanoid
AGRD ABCDABCD 5 A_Wander
Loop
See:
AGRD A 6 A_AcolyteBits
AGRD BCD 6 A_Chase
AGRD A 6 Fast Slow A_AcolyteBits
AGRD BCD 6 Fast Slow A_Chase
Loop
Missile:
AGRD E 8 A_FaceTarget
AGRD FE 4 A_ShootGun
AGRD F 6 A_ShootGun
AGRD E 8 Fast Slow A_FaceTarget
AGRD FE 4 Fast Slow A_ShootGun
AGRD F 6 Fast Slow A_ShootGun
Goto See
Pain:
AGRD O 8 A_Pain
AGRD O 8 Fast Slow A_Pain
Goto See
Death:
AGRD G 4
@ -170,8 +170,8 @@ ACTOR AcolyteShadow : Acolyte 58
AGRD A 6 A_BeShadowyFoe
Goto Super::See+1
Pain:
AGRD O 0 A_SetShadow
AGRD O 8 A_Pain
AGRD O 0 Fast Slow A_SetShadow
AGRD O 8 Fast Slow A_Pain
Goto See
}
}

View File

@ -42,19 +42,16 @@ ACTOR Crusader 3005
ROB2 AABBCCDD 3 A_Chase
Loop
Missile:
ROB2 E 3 A_FaceTarget
ROB2 F 2 Bright A_CrusaderChoose
ROB2 E 2 Bright A_CrusaderSweepLeft
ROB2 F 3 Bright A_CrusaderSweepLeft
ROB2 E 2 Bright A_CrusaderSweepLeft
ROB2 F 2 Bright A_CrusaderSweepLeft
ROB2 E 2 Bright A_CrusaderSweepRight
ROB2 F 2 Bright A_CrusaderSweepRight
ROB2 E 2 Bright A_CrusaderSweepRight
ROB2 F 2 A_CrusaderRefire
ROB2 E 3 Slow A_FaceTarget
ROB2 F 2 Slow Bright A_CrusaderChoose
ROB2 E 2 Slow Bright A_CrusaderSweepLeft
ROB2 F 3 Slow Bright A_CrusaderSweepLeft
ROB2 EF 2 Slow Bright A_CrusaderSweepLeft
ROB2 EFE 2 Slow Bright A_CrusaderSweepRight
ROB2 F 2 Slow A_CrusaderRefire
Loop
Pain:
ROB2 D 1 A_Pain
ROB2 D 1 Slow A_Pain
Goto See
Death:
ROB2 G 3 A_Scream

View File

@ -32,16 +32,16 @@ ACTOR Reaver 3001
ROB1 BBCCDDEE 3 A_Chase
Loop
Melee:
ROB1 H 6 A_FaceTarget
ROB1 I 8 A_CustomMeleeAttack(random[ReaverMelee](1,8)*3, "reaver/blade")
ROB1 H 6
ROB1 H 6 Slow A_FaceTarget
ROB1 I 8 Slow A_CustomMeleeAttack(random[ReaverMelee](1,8)*3, "reaver/blade")
ROB1 H 6 Slow
Goto See
Missile:
ROB1 F 8 A_FaceTarget
ROB1 G 11 BRIGHT A_ReaverRanged
ROB1 F 8 Slow A_FaceTarget
ROB1 G 11 Slow BRIGHT A_ReaverRanged
Goto See
Pain:
ROB1 A 2
ROB1 A 2 Slow
ROB1 A 2 A_Pain
Goto See
Death:

View File

@ -45,14 +45,14 @@ ACTOR Stalker 186
STLK J 10 A_Look
Loop
See:
STLK A 1 A_StalkerChaseDecide
STLK ABB 3 A_Chase
STLK C 3 A_StalkerWalk
STLK C 3 A_Chase
STLK A 1 Slow A_StalkerChaseDecide
STLK ABB 3 Slow A_Chase
STLK C 3 Slow A_StalkerWalk
STLK C 3 Slow A_Chase
Loop
Melee:
STLK J 3 A_FaceTarget
STLK K 3 A_StalkerAttack
STLK J 3 Slow A_FaceTarget
STLK K 3 Slow A_StalkerAttack
SeeFloor:
STLK J 3 A_StalkerWalk
STLK KK 3 A_Chase

View File

@ -1786,8 +1786,8 @@ ACTOR CeilingTurret 27
Loop
Missile:
Pain:
TURT B 4 A_ShootGun
TURT D 3 A_SentinelRefire
TURT B 4 Slow A_ShootGun
TURT D 3 Slow A_SentinelRefire
TURT A 4 A_SentinelRefire
Loop
Death:

View File

@ -238,6 +238,7 @@ skill baby
AmmoFactor = 2
DamageFactor = 0.5
EasyBossBrain
SlowMonsters
SpawnFilter = Baby
PicName = "M_JKILL"
Name = "$SSKILL_BABY"

View File

@ -240,5 +240,5 @@ enum
//
ML_PASSTHROUGH = -1,
ML_TRANSLUCENT = -2,
ML_TRANSPARENT = -3,
ML_TRANSPARENT = -3
}