- Update to ZDoom r2002:

- Make the palette indexes used by FRemapTable subject to the global remap
  table, just as the images they translate are.
- Added MF4_ALLOWPARTICLES checks to blood spawning code.
- Fixed: EV_DoDonut, EV_DoElevator and EV_StartWaggle did not to any 0-tag
  checks.
- Fixed: Doom line type 44 (lower ceiling to 8 above floor) must halt
  movement if blocked which essentially means it acts like a Hexen-style
  crusher.
- Fixed: Not all places checking for player start spots did it correctly.
  The editor number for player start spot 5 is now stored in the game info
  so that there's only one place where this check needs to be done.
- Fixed: WIF_NOAUTOAIM only worked for projectiles.
- Added Windows 7 (aka Windows NT 6.1) and Server 2008 identification to
  I_DetectOS().
- Fixed: ArtiPork did not use all its sprite frames.
- Fixed: FWadCollection::AddFile() did not call FixPathSeperator(), so
  savegames would hold the full file path for wads that had been specified
  with backslash characters, because GetWadName() would not trim off the
  path.

git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@636 b0f79afe-0144-0410-b225-9a4edf0717df
This commit is contained in:
Christoph Oelckers 2009-11-26 23:03:27 +00:00
parent 976db2f978
commit 964d7d4c8a
22 changed files with 212 additions and 75 deletions

View file

@ -1,3 +1,47 @@
November 25, 2009
- Make the palette indexes used by FRemapTable subject to the global remap
table, just as the images they translate are.
November 24, 2009 (Changes by Graf Zahl)
- Added MF4_ALLOWPARTICLES checks to blood spawning code.
- Fixed: EV_DoDonut, EV_DoElevator and EV_StartWaggle did not to any 0-tag
checks.
- Fixed: Doom line type 44 (lower ceiling to 8 above floor) must halt
movement if blocked which essentially means it acts like a Hexen-style
crusher.
- Fixed: Not all places checking for player start spots did it correctly.
The editor number for player start spot 5 is now stored in the game info
so that there's only one place where this check needs to be done.
- Fixed: WIF_NOAUTOAIM only worked for projectiles.
November 23, 2009
- Added Windows 7 (aka Windows NT 6.1) and Server 2008 identification to
I_DetectOS().
- Fixed: ArtiPork did not use all its sprite frames.
- Fixed: FWadCollection::AddFile() did not call FixPathSeperator(), so
savegames would hold the full file path for wads that had been specified
with backslash characters, because GetWadName() would not trim off the
path.
November 22, 2009 (Changes by Graf Zahl)
- extended Doom map format linedef translator so that it also handles the flags.
November 19, 2009
- Replaced toint/quickertoint with the portable routines from xs_Float.h. The
former used fistp, which is not portable across platforms, so cannot be
used in the play simulation. They were only suitable for the renderer.
xs_Float.h also has a very fast float->fixed conversion, so FLOAT2FIXED
uses that now.
(And I also learned that the FPU's round to nearest is not the rounding I
learned in grade school but actually Banker's Rounding. I had no idea.)
(Also, also, the only thing that could have made quickertoint faster than
toint was that it stored a 32-bit int. I never timed them, and I doubt in
practice there was any real difference between the two.)
November 18, 2009
- Added padding around packed textures to compensate for apparent NVidia
texture coordinate imprecision.
November 17, 2009
- Fixed two bugs in FMODSoundRenderer::HandleChannelDelay():
* Looping sounds that have been playing for a very long time, were evicted,

View file

@ -1395,7 +1395,7 @@ const PClass *FArchive::ReadClass ()
FName zaname(typeName.val, true);
if (zaname != NAME_None)
{
for (unsigned int i = 0; i < PClass::m_Types.Size(); i++)
for (unsigned int i = PClass::m_Types.Size(); i-- > 0; )
{
if (PClass::m_Types[i]->TypeName == zaname)
{

View file

@ -1475,10 +1475,8 @@ void G_DeathMatchSpawnPlayer (int playernum)
{
if (playernum < 4)
spot->type = playernum+1;
else if (gameinfo.gametype != GAME_Hexen)
spot->type = playernum+4001-4; // [RH] > 4 players
else
spot->type = playernum+9100-4;
else
spot->type = playernum + gameinfo.player5start - 4;
}
AActor *mo = P_SpawnPlayer (spot);
@ -1569,17 +1567,13 @@ void G_DoReborn (int playernum, bool freshbot)
// fake as other player
// [RH] These numbers should be common across all games. Or better yet, not
// used at all outside P_SpawnMapThing().
if (playernum < 4 || gameinfo.gametype == GAME_Strife)
if (playernum < 4)
{
playerstarts[i].type = playernum + 1;
}
else if (gameinfo.gametype == GAME_Hexen)
{
playerstarts[i].type = playernum + 9100 - 4;
}
else
{
playerstarts[i].type = playernum + 4001 - 4;
playerstarts[i].type = playernum + gameinfo.player5start - 4;
}
AActor *mo = P_SpawnPlayer (&playerstarts[i]);
if (mo != NULL) P_PlayerStartStomp(mo);

View file

@ -281,6 +281,7 @@ void FMapInfoParser::ParseGameInfo()
GAMEINFOKEY_INT(defaultrespawntime, "defaultrespawntime")
GAMEINFOKEY_INT(defaultdropstyle, "defaultdropstyle")
GAMEINFOKEY_CSTRING(Endoom, "endoom", 8)
GAMEINFOKEY_INT(player5start, "player5start")
else
{
// ignore unkown keys.

View file

@ -103,6 +103,7 @@ struct gameinfo_t
int definventorymaxamount;
int defaultrespawntime;
int defaultdropstyle;
int player5start;
const char *GetFinalePage(unsigned int num) const;
};

View file

@ -770,7 +770,7 @@ manual_stair:
//
//==========================================================================
bool EV_DoDonut (int tag, fixed_t pillarspeed, fixed_t slimespeed)
bool EV_DoDonut (int tag, line_t *line, fixed_t pillarspeed, fixed_t slimespeed)
{
sector_t* s1;
sector_t* s2;
@ -781,13 +781,24 @@ bool EV_DoDonut (int tag, fixed_t pillarspeed, fixed_t slimespeed)
DFloor* floor;
vertex_t* spot;
fixed_t height;
bool manual = false;
secnum = -1;
rtn = false;
if (tag == 0)
{
if (!line || !(s1 = line->backsector))
return rtn;
manual = true;
goto manual_donut;
}
while ((secnum = P_FindSectorFromTag(tag,secnum)) >= 0)
{
s1 = &sectors[secnum]; // s1 is pillar's sector
manual_donut:
// ALREADY MOVING? IF SO, KEEP GOING...
if (s1->PlaneMoving(sector_t::floor))
continue;
@ -834,6 +845,7 @@ bool EV_DoDonut (int tag, fixed_t pillarspeed, fixed_t slimespeed)
floor->StartFloorSound ();
break;
}
if (manual) break;
}
return rtn;
}
@ -989,17 +1001,28 @@ bool EV_DoElevator (line_t *line, DElevator::EElevator elevtype,
fixed_t floorheight, ceilingheight;
fixed_t newheight;
vertex_t* spot;
bool manual = false;
if (!line && (elevtype == DElevator::elevateCurrent))
return false;
secnum = -1;
rtn = false;
if (tag == 0)
{
if (!line || !(sec = line->backsector))
return rtn;
manual = true;
goto manual_elevator;
}
// act on all sectors with the same tag as the triggering linedef
while ((secnum = P_FindSectorFromTag (tag, secnum)) >= 0)
{
sec = &sectors[secnum];
manual_elevator:
// If either floor or ceiling is already activated, skip it
if (sec->PlaneMoving(sector_t::floor) || sec->ceilingdata) //jff 2/22/98
continue;
@ -1060,6 +1083,7 @@ bool EV_DoElevator (line_t *line, DElevator::EElevator elevtype,
elevator->m_CeilingDestDist = sec->ceilingplane.PointToDist (sec->soundorg[0], sec->soundorg[1], ceilingheight - height);
break;
}
if (manual) break;
}
return rtn;
}
@ -1307,19 +1331,31 @@ void DCeilingWaggle::Tick ()
//
//==========================================================================
bool EV_StartWaggle (int tag, int height, int speed, int offset,
bool EV_StartWaggle (int tag, line_t *line, int height, int speed, int offset,
int timer, bool ceiling)
{
int sectorIndex;
sector_t *sector;
DWaggleBase *waggle;
bool retCode;
bool manual = false;
retCode = false;
sectorIndex = -1;
if (tag == 0)
{
if (!line || !(sector = line->backsector))
return retCode;
manual = true;
goto manual_waggle;
}
while ((sectorIndex = P_FindSectorFromTag(tag, sectorIndex)) >= 0)
{
sector = &sectors[sectorIndex];
manual_waggle:
if ((!ceiling && sector->PlaneMoving(sector_t::floor)) ||
(ceiling && sector->PlaneMoving(sector_t::ceiling)))
{ // Already busy with another thinker
@ -1344,6 +1380,7 @@ bool EV_StartWaggle (int tag, int height, int speed, int offset,
/(TICRATE+((3*TICRATE)*height)/255);
waggle->m_Ticker = timer ? timer*TICRATE : -1;
waggle->m_State = WGLSTATE_EXPAND;
if (manual) break;
}
return retCode;
}

View file

@ -341,13 +341,13 @@ FUNC(LS_Floor_LowerToLowestTxTy)
FUNC(LS_Floor_Waggle)
// Floor_Waggle (tag, amplitude, frequency, delay, time)
{
return EV_StartWaggle (arg0, arg1, arg2, arg3, arg4, false);
return EV_StartWaggle (arg0, ln, arg1, arg2, arg3, arg4, false);
}
FUNC(LS_Ceiling_Waggle)
// Ceiling_Waggle (tag, amplitude, frequency, delay, time)
{
return EV_StartWaggle (arg0, arg1, arg2, arg3, arg4, true);
return EV_StartWaggle (arg0, ln, arg1, arg2, arg3, arg4, true);
}
FUNC(LS_Floor_TransferTrigger)
@ -365,7 +365,7 @@ FUNC(LS_Floor_TransferNumeric)
FUNC(LS_Floor_Donut)
// Floor_Donut (pillartag, pillarspeed, slimespeed)
{
return EV_DoDonut (arg0, SPEED(arg1), SPEED(arg2));
return EV_DoDonut (arg0, ln, SPEED(arg1), SPEED(arg2));
}
FUNC(LS_Generic_Floor)

View file

@ -3157,11 +3157,20 @@ fixed_t P_AimLineAttack (AActor *t1, angle_t angle, fixed_t distance, AActor **p
}
else
{
// 35 degrees is approximately what Doom used. You cannot have a
// vrange of 0 degrees, because then toppitch and bottompitch will
// be equal, and PTR_AimTraverse will never find anything to shoot at
// if it crosses a line.
vrange = clamp (t1->player->userinfo.GetAimDist(), ANGLE_1/2, ANGLE_1*35);
// [BB] Disable autoaim on weapons with WIF_NOAUTOAIM.
AWeapon *weapon = t1->player->ReadyWeapon;
if ( weapon && (weapon->WeaponFlags & WIF_NOAUTOAIM) )
{
vrange = ANGLE_1/2;
}
else
{
// 35 degrees is approximately what Doom used. You cannot have a
// vrange of 0 degrees, because then toppitch and bottompitch will
// be equal, and PTR_AimTraverse will never find anything to shoot at
// if it crosses a line.
vrange = clamp (t1->player->userinfo.aimdist, ANGLE_1/2, ANGLE_1*35);
}
}
}
aim.toppitch = t1->pitch - vrange;

View file

@ -3838,17 +3838,13 @@ APlayerPawn *P_SpawnPlayer (FMapThing *mthing, bool tempplayer)
// [RH] Things 4001-? are also multiplayer starts. Just like 1-4.
// To make things simpler, figure out which player is being
// spawned here.
if (mthing->type <= 4 || gameinfo.gametype == GAME_Strife) // don't forget Strife's starts 5-8 here!
if (mthing->type <= 4)
{
playernum = mthing->type - 1;
}
else if (gameinfo.gametype != GAME_Hexen)
{
playernum = mthing->type - 4001 + 4;
}
else
{
playernum = mthing->type - 9100 + 4;
playernum = mthing->type - gameinfo.player5start + 4;
}
// not playing?
@ -4140,12 +4136,9 @@ AActor *P_SpawnMapThing (FMapThing *mthing, int position)
}
else
{
const int base = (gameinfo.gametype == GAME_Strife) ? 5 :
(gameinfo.gametype == GAME_Hexen) ? 9100 : 4001;
if (mthing->type >= base && mthing->type < base + MAXPLAYERS - 4)
if (mthing->type >= gameinfo.player5start && mthing->type < gameinfo.player5start + MAXPLAYERS - 4)
{
pnum = mthing->type - base + 4;
pnum = mthing->type - gameinfo.player5start + 4;
}
}
@ -4449,8 +4442,13 @@ void P_SpawnBlood (fixed_t x, fixed_t y, fixed_t z, angle_t dir, int damage, AAc
AActor *th;
PalEntry bloodcolor = (PalEntry)originator->GetClass()->Meta.GetMetaInt(AMETA_BloodColor);
const PClass *bloodcls = PClass::FindClass((ENamedName)originator->GetClass()->Meta.GetMetaInt(AMETA_BloodType, NAME_Blood));
int bloodtype = cl_bloodtype;
if (bloodcls != NULL && !(GetDefaultByType(bloodcls)->flags4 & MF4_ALLOWPARTICLES))
bloodtype = 0;
if (bloodcls!=NULL && cl_bloodtype <= 1)
if (bloodcls!=NULL && bloodtype <= 1)
{
z += pr_spawnblood.Random2 () << 10;
th = Spawn (bloodcls, x, y, z, ALLOW_REPLACE);
@ -4492,7 +4490,7 @@ void P_SpawnBlood (fixed_t x, fixed_t y, fixed_t z, angle_t dir, int damage, AAc
}
}
if (cl_bloodtype >= 1)
if (bloodtype >= 1)
P_DrawSplash2 (40, x, y, z, dir, 2, bloodcolor);
}
@ -4507,7 +4505,12 @@ void P_BloodSplatter (fixed_t x, fixed_t y, fixed_t z, AActor *originator)
PalEntry bloodcolor = (PalEntry)originator->GetClass()->Meta.GetMetaInt(AMETA_BloodColor);
const PClass *bloodcls = PClass::FindClass((ENamedName)originator->GetClass()->Meta.GetMetaInt(AMETA_BloodType2, NAME_BloodSplatter));
if (bloodcls!=NULL && cl_bloodtype <= 1)
int bloodtype = cl_bloodtype;
if (bloodcls != NULL && !(GetDefaultByType(bloodcls)->flags4 & MF4_ALLOWPARTICLES))
bloodtype = 0;
if (bloodcls!=NULL && bloodtype <= 1)
{
AActor *mo;
@ -4523,7 +4526,7 @@ void P_BloodSplatter (fixed_t x, fixed_t y, fixed_t z, AActor *originator)
mo->Translation = TRANSLATION(TRANSLATION_Blood, bloodcolor.a);
}
}
if (cl_bloodtype >= 1)
if (bloodtype >= 1)
{
P_DrawSplash2 (40, x, y, z, R_PointToAngle2 (x, y, originator->x, originator->y), 2, bloodcolor);
}
@ -4540,7 +4543,12 @@ void P_BloodSplatter2 (fixed_t x, fixed_t y, fixed_t z, AActor *originator)
PalEntry bloodcolor = (PalEntry)originator->GetClass()->Meta.GetMetaInt(AMETA_BloodColor);
const PClass *bloodcls = PClass::FindClass((ENamedName)originator->GetClass()->Meta.GetMetaInt(AMETA_BloodType3, NAME_AxeBlood));
if (bloodcls!=NULL && cl_bloodtype <= 1)
int bloodtype = cl_bloodtype;
if (bloodcls != NULL && !(GetDefaultByType(bloodcls)->flags4 & MF4_ALLOWPARTICLES))
bloodtype = 0;
if (bloodcls!=NULL && bloodtype <= 1)
{
AActor *mo;
@ -4556,7 +4564,7 @@ void P_BloodSplatter2 (fixed_t x, fixed_t y, fixed_t z, AActor *originator)
mo->Translation = TRANSLATION(TRANSLATION_Blood, bloodcolor.a);
}
}
if (cl_bloodtype >= 1)
if (bloodtype >= 1)
{
P_DrawSplash2 (100, x, y, z, R_PointToAngle2 (0, 0, originator->x - x, originator->y - y), 2, bloodcolor);
}
@ -4577,7 +4585,13 @@ void P_RipperBlood (AActor *mo, AActor *bleeder)
x = mo->x + (pr_ripperblood.Random2 () << 12);
y = mo->y + (pr_ripperblood.Random2 () << 12);
z = mo->z + (pr_ripperblood.Random2 () << 12);
if (bloodcls!=NULL && cl_bloodtype <= 1)
int bloodtype = cl_bloodtype;
if (bloodcls != NULL && !(GetDefaultByType(bloodcls)->flags4 & MF4_ALLOWPARTICLES))
bloodtype = 0;
if (bloodcls!=NULL && bloodtype <= 1)
{
AActor *th;
th = Spawn (bloodcls, x, y, z, ALLOW_REPLACE);
@ -4593,7 +4607,7 @@ void P_RipperBlood (AActor *mo, AActor *bleeder)
th->Translation = TRANSLATION(TRANSLATION_Blood, bloodcolor.a);
}
}
if (cl_bloodtype >= 1)
if (bloodtype >= 1)
{
P_DrawSplash2 (28, x, y, z, 0, 0, bloodcolor);
}

View file

@ -825,7 +825,7 @@ protected:
friend bool EV_DoFloor (DFloor::EFloor floortype, line_t *line, int tag,
fixed_t speed, fixed_t height, int crush, int change, bool hexencrush);
friend bool EV_FloorCrushStop (int tag);
friend bool EV_DoDonut (int tag, fixed_t pillarspeed, fixed_t slimespeed);
friend bool EV_DoDonut (int tag, line_t *line, fixed_t pillarspeed, fixed_t slimespeed);
private:
DFloor ();
};
@ -836,7 +836,7 @@ bool EV_BuildStairs (int tag, DFloor::EStair type, line_t *line,
bool EV_DoFloor (DFloor::EFloor floortype, line_t *line, int tag,
fixed_t speed, fixed_t height, int crush, int change, bool hexencrush);
bool EV_FloorCrushStop (int tag);
bool EV_DoDonut (int tag, fixed_t pillarspeed, fixed_t slimespeed);
bool EV_DoDonut (int tag, line_t *line, fixed_t pillarspeed, fixed_t slimespeed);
inline FArchive &operator<< (FArchive &arc, DFloor::EFloor &type)
{
@ -915,7 +915,7 @@ protected:
int m_State;
TObjPtr<DInterpolation> m_Interpolation;
friend bool EV_StartWaggle (int tag, int height, int speed,
friend bool EV_StartWaggle (int tag, line_t *line, int height, int speed,
int offset, int timer, bool ceiling);
void DoWaggle (bool ceiling);
@ -923,7 +923,7 @@ protected:
DWaggleBase ();
};
bool EV_StartWaggle (int tag, int height, int speed,
bool EV_StartWaggle (int tag, line_t *line, int height, int speed,
int offset, int timer, bool ceiling);
class DFloorWaggle : public DWaggleBase

View file

@ -315,18 +315,21 @@ void FRemapTable::AddIndexRange(int start, int end, int pal1, int pal2)
}
else if (start == end)
{
start = GPalette.Remap[start];
pal1 = GPalette.Remap[pal1];
Remap[start] = pal1;
Palette[start] = GPalette.BaseColors[pal1];
Palette[start].a = start==0? 0:255;
Palette[start].a = start == 0 ? 0 : 255;
return;
}
palcol = pal1 << FRACBITS;
palstep = ((pal2 << FRACBITS) - palcol) / (end - start);
for (int i = start; i <= end; palcol += palstep, ++i)
{
Remap[i] = palcol >> FRACBITS;
Palette[i] = GPalette.BaseColors[palcol >> FRACBITS];
Palette[i].a = i==0? 0:255;
int j = GPalette.Remap[i], k = GPalette.Remap[palcol >> FRACBITS];
Remap[j] = k;
Palette[j] = GPalette.BaseColors[k];
Palette[j].a = j == 0 ? 0 : 255;
}
}
@ -368,10 +371,10 @@ void FRemapTable::AddColorRange(int start, int end, int _r1,int _g1, int _b1, in
}
if (start == end)
{
Remap[start] = ColorMatcher.Pick
(r >> FRACBITS, g >> FRACBITS, b >> FRACBITS);
start = GPalette.Remap[start];
Remap[start] = ColorMatcher.Pick(r >> FRACBITS, g >> FRACBITS, b >> FRACBITS);
Palette[start] = PalEntry(r >> FRACBITS, g >> FRACBITS, b >> FRACBITS);
Palette[start].a = start==0? 0:255;
Palette[start].a = start == 0 ? 0 : 255;
}
else
{
@ -380,9 +383,9 @@ void FRemapTable::AddColorRange(int start, int end, int _r1,int _g1, int _b1, in
bs /= (end - start);
for (int i = start; i <= end; ++i)
{
Remap[i] = ColorMatcher.Pick
(r >> FRACBITS, g >> FRACBITS, b >> FRACBITS);
Palette[i] = PalEntry(start==0? 0:255, r >> FRACBITS, g >> FRACBITS, b >> FRACBITS);
int j = GPalette.Remap[i];
Remap[j] = ColorMatcher.Pick(r >> FRACBITS, g >> FRACBITS, b >> FRACBITS);
Palette[j] = PalEntry(j == 0 ? 0 : 255, r >> FRACBITS, g >> FRACBITS, b >> FRACBITS);
r += rs;
g += gs;
b += bs;
@ -412,7 +415,7 @@ void FRemapTable::AddDesaturation(int start, int end, float r1,float g1, float b
g1 *= 255;
b1 *= 255;
for(int c=start; c < end; c++)
for(int c = start; c < end; c++)
{
double intensity = (GPalette.BaseColors[c].r * 77 +
GPalette.BaseColors[c].g * 143 +
@ -422,9 +425,11 @@ void FRemapTable::AddDesaturation(int start, int end, float r1,float g1, float b
MIN(255, int(g1 + intensity*g2)),
MIN(255, int(b1 + intensity*b2)));
Remap[c] = ColorMatcher.Pick(pe);
Palette[c] = pe;
Palette[c].a = c==0? 0:255;
int cc = GPalette.Remap[c];
Remap[cc] = ColorMatcher.Pick(pe);
Palette[cc] = pe;
Palette[cc].a = cc == 0 ? 0:255;
}
}

View file

@ -3,5 +3,5 @@
// This file was automatically generated by the
// updaterevision tool. Do not edit by hand.
#define ZD_SVN_REVISION_STRING "1991"
#define ZD_SVN_REVISION_NUMBER 1991
#define ZD_SVN_REVISION_STRING "2001"
#define ZD_SVN_REVISION_NUMBER 2001

View file

@ -222,7 +222,7 @@ int FWadCollection::AddExternalFile(const char *filename)
// [RH] Removed reload hack
//==========================================================================
void FWadCollection::AddFile (const char *filename, FileReader *wadinfo)
void FWadCollection::AddFile (char *filename, FileReader *wadinfo)
{
int startlump;
bool isdir = false;
@ -252,6 +252,7 @@ void FWadCollection::AddFile (const char *filename, FileReader *wadinfo)
return;
}
}
FixPathSeperator(filename);
}
Printf (" adding %s", filename);

View file

@ -154,7 +154,7 @@ public:
enum { IWAD_FILENUM = 1 };
void InitMultipleFiles (wadlist_t **filenames);
void AddFile (const char *filename, FileReader *wadinfo = NULL);
void AddFile (char *filename, FileReader *wadinfo = NULL);
int CheckIfWadLoaded (const char *name);
const char *GetWadName (int wadnum) const;

View file

@ -480,11 +480,16 @@ void I_WaitVBL(int count)
void I_DetectOS(void)
{
OSVERSIONINFO info;
OSVERSIONINFOEX info;
const char *osname;
info.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
GetVersionEx (&info);
info.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
if (!GetVersionEx((OSVERSIONINFO *)&info))
{
// Retry with the older OSVERSIONINFO structure.
info.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
GetVersionEx((OSVERSIONINFO *)&info);
}
switch (info.dwPlatformId)
{
@ -522,9 +527,30 @@ void I_DetectOS(void)
osname = "Server 2003";
}
}
else if (info.dwMajorVersion == 6 && info.dwMinorVersion == 0)
else if (info.dwMajorVersion == 6)
{
osname = "Vista";
if (info.dwMinorVersion == 0)
{
if (info.wProductType == VER_NT_WORKSTATION)
{
osname = "Vista";
}
else
{
osname = "Server 2008";
}
}
else if (info.dwMinorVersion == 1)
{
if (info.wProductType == VER_NT_WORKSTATION)
{
osname = "7";
}
else
{
osname = "Server 2008 R2";
}
}
}
break;
@ -543,7 +569,7 @@ void I_DetectOS(void)
}
else
{
Printf ("OS: Windows %s %lu.%lu (Build %lu)\n %s\n",
Printf ("OS: Windows %s (NT %lu.%lu) Build %lu\n %s\n",
osname,
info.dwMajorVersion, info.dwMinorVersion,
info.dwBuildNumber, info.szCSDVersion);

View file

@ -94,7 +94,7 @@ ACTOR ArtiPork : CustomInventory 30
States
{
Spawn:
PORK ABCB 6
PORK ABCDEFGH 6
Loop
Use:
TNT1 A 0 A_FireCustomMissile("PorkFX", -15, 0, 0, 0, 1)

View file

@ -40,6 +40,7 @@ gameinfo
defaultrespawntime = 12
defaultdropstyle = 1
endoom = "ENDOOM"
player5start = 4001
}
skill baby

View file

@ -39,6 +39,7 @@ gameinfo
defaultrespawntime = 12
defaultdropstyle = 1
endoom = "ENDOOM"
player5start = 4001
}
skill baby

View file

@ -40,6 +40,7 @@ gameinfo
defaultrespawntime = 12
defaultdropstyle = 1
endoom = "ENDTEXT"
player5start = 4001
}
skill baby

View file

@ -38,6 +38,7 @@ gameinfo
definventorymaxamount = 25
defaultrespawntime = 12
defaultdropstyle = 1
player5start = 9100
}
skill baby

View file

@ -41,6 +41,7 @@ gameinfo
defaultrespawntime = 16
defaultdropstyle = 2
endoom = "ENDSTRF"
player5start = 5
}
skill baby

View file

@ -43,7 +43,7 @@ include "xlat/defines.i"
41 = USE, Ceiling_LowerToFloor (tag, C_SLOW)
42 = USE|REP, Door_Close (tag, D_SLOW)
43 = USE|REP, Ceiling_LowerToFloor (tag, C_SLOW)
44 = WALK, Ceiling_LowerAndCrush (tag, C_SLOW, 0)
44 = WALK, Ceiling_LowerAndCrush (tag, C_SLOW, 0, 2)
45 = USE|REP, Floor_LowerToHighest (tag, F_SLOW, 128)
46 = SHOOT|REP|MONST, Door_Open (tag, D_SLOW)
47 = SHOOT, Plat_RaiseAndStayTx0 (tag, P_SLOW/2)
@ -71,7 +71,7 @@ include "xlat/defines.i"
69 = USE|REP, Floor_RaiseToNearest (tag, F_SLOW)
70 = USE|REP, Floor_LowerToHighest (tag, F_FAST, 136)
71 = USE, Floor_LowerToHighest (tag, F_FAST, 136)
72 = WALK|REP, Ceiling_LowerAndCrush (tag, C_SLOW, 0)
72 = WALK|REP, Ceiling_LowerAndCrush (tag, C_SLOW, 0, 2)
73 = WALK|REP, Ceiling_CrushAndRaiseA (tag, C_SLOW, C_SLOW, 10)
74 = WALK|REP, Ceiling_CrushStop (tag)
75 = WALK|REP, Door_Close (tag, D_SLOW)
@ -169,7 +169,7 @@ include "xlat/defines.i"
164 = USE, Ceiling_CrushAndRaiseA (tag, C_NORMAL, C_NORMAL, 10)
165 = USE, Ceiling_CrushAndRaiseSilentA (tag, C_SLOW, C_SLOW, 10)
166 = USE, FloorAndCeiling_LowerRaise (tag, F_SLOW, C_SLOW)
167 = USE, Ceiling_LowerAndCrush (tag, C_SLOW, 0)
167 = USE, Ceiling_LowerAndCrush (tag, C_SLOW, 0, 2)
168 = USE, Ceiling_CrushStop (tag)
169 = USE, Light_MaxNeighbor (tag)
170 = USE, Light_ChangeToValue (tag, 35)
@ -189,7 +189,7 @@ include "xlat/defines.i"
184 = USE|REP, Ceiling_CrushAndRaiseA (tag, C_SLOW, C_SLOW, 10)
185 = USE|REP, Ceiling_CrushAndRaiseSilentA (tag, C_SLOW, C_SLOW, 10)
186 = USE|REP, FloorAndCeiling_LowerRaise (tag, F_SLOW, C_SLOW)
187 = USE|REP, Ceiling_LowerAndCrush (tag, C_SLOW, 0)
187 = USE|REP, Ceiling_LowerAndCrush (tag, C_SLOW, 0, 2)
188 = USE|REP, Ceiling_CrushStop (tag)
189 = USE, Floor_TransferTrigger (tag)
190 = USE|REP, Floor_TransferTrigger (tag)