mirror of
https://github.com/ZDoom/gzdoom-last-svn.git
synced 2025-05-31 09:21:06 +00:00
- 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:
parent
976db2f978
commit
964d7d4c8a
22 changed files with 212 additions and 75 deletions
|
@ -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
|
November 17, 2009
|
||||||
- Fixed two bugs in FMODSoundRenderer::HandleChannelDelay():
|
- Fixed two bugs in FMODSoundRenderer::HandleChannelDelay():
|
||||||
* Looping sounds that have been playing for a very long time, were evicted,
|
* Looping sounds that have been playing for a very long time, were evicted,
|
||||||
|
|
|
@ -1395,7 +1395,7 @@ const PClass *FArchive::ReadClass ()
|
||||||
FName zaname(typeName.val, true);
|
FName zaname(typeName.val, true);
|
||||||
if (zaname != NAME_None)
|
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)
|
if (PClass::m_Types[i]->TypeName == zaname)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1475,10 +1475,8 @@ void G_DeathMatchSpawnPlayer (int playernum)
|
||||||
{
|
{
|
||||||
if (playernum < 4)
|
if (playernum < 4)
|
||||||
spot->type = playernum+1;
|
spot->type = playernum+1;
|
||||||
else if (gameinfo.gametype != GAME_Hexen)
|
else
|
||||||
spot->type = playernum+4001-4; // [RH] > 4 players
|
spot->type = playernum + gameinfo.player5start - 4;
|
||||||
else
|
|
||||||
spot->type = playernum+9100-4;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
AActor *mo = P_SpawnPlayer (spot);
|
AActor *mo = P_SpawnPlayer (spot);
|
||||||
|
@ -1569,17 +1567,13 @@ void G_DoReborn (int playernum, bool freshbot)
|
||||||
// fake as other player
|
// fake as other player
|
||||||
// [RH] These numbers should be common across all games. Or better yet, not
|
// [RH] These numbers should be common across all games. Or better yet, not
|
||||||
// used at all outside P_SpawnMapThing().
|
// used at all outside P_SpawnMapThing().
|
||||||
if (playernum < 4 || gameinfo.gametype == GAME_Strife)
|
if (playernum < 4)
|
||||||
{
|
{
|
||||||
playerstarts[i].type = playernum + 1;
|
playerstarts[i].type = playernum + 1;
|
||||||
}
|
}
|
||||||
else if (gameinfo.gametype == GAME_Hexen)
|
|
||||||
{
|
|
||||||
playerstarts[i].type = playernum + 9100 - 4;
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
playerstarts[i].type = playernum + 4001 - 4;
|
playerstarts[i].type = playernum + gameinfo.player5start - 4;
|
||||||
}
|
}
|
||||||
AActor *mo = P_SpawnPlayer (&playerstarts[i]);
|
AActor *mo = P_SpawnPlayer (&playerstarts[i]);
|
||||||
if (mo != NULL) P_PlayerStartStomp(mo);
|
if (mo != NULL) P_PlayerStartStomp(mo);
|
||||||
|
|
|
@ -281,6 +281,7 @@ void FMapInfoParser::ParseGameInfo()
|
||||||
GAMEINFOKEY_INT(defaultrespawntime, "defaultrespawntime")
|
GAMEINFOKEY_INT(defaultrespawntime, "defaultrespawntime")
|
||||||
GAMEINFOKEY_INT(defaultdropstyle, "defaultdropstyle")
|
GAMEINFOKEY_INT(defaultdropstyle, "defaultdropstyle")
|
||||||
GAMEINFOKEY_CSTRING(Endoom, "endoom", 8)
|
GAMEINFOKEY_CSTRING(Endoom, "endoom", 8)
|
||||||
|
GAMEINFOKEY_INT(player5start, "player5start")
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// ignore unkown keys.
|
// ignore unkown keys.
|
||||||
|
|
1
src/gi.h
1
src/gi.h
|
@ -103,6 +103,7 @@ struct gameinfo_t
|
||||||
int definventorymaxamount;
|
int definventorymaxamount;
|
||||||
int defaultrespawntime;
|
int defaultrespawntime;
|
||||||
int defaultdropstyle;
|
int defaultdropstyle;
|
||||||
|
int player5start;
|
||||||
|
|
||||||
const char *GetFinalePage(unsigned int num) const;
|
const char *GetFinalePage(unsigned int num) const;
|
||||||
};
|
};
|
||||||
|
|
|
@ -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* s1;
|
||||||
sector_t* s2;
|
sector_t* s2;
|
||||||
|
@ -781,13 +781,24 @@ bool EV_DoDonut (int tag, fixed_t pillarspeed, fixed_t slimespeed)
|
||||||
DFloor* floor;
|
DFloor* floor;
|
||||||
vertex_t* spot;
|
vertex_t* spot;
|
||||||
fixed_t height;
|
fixed_t height;
|
||||||
|
bool manual = false;
|
||||||
|
|
||||||
secnum = -1;
|
secnum = -1;
|
||||||
rtn = false;
|
rtn = false;
|
||||||
|
|
||||||
|
if (tag == 0)
|
||||||
|
{
|
||||||
|
if (!line || !(s1 = line->backsector))
|
||||||
|
return rtn;
|
||||||
|
manual = true;
|
||||||
|
goto manual_donut;
|
||||||
|
}
|
||||||
|
|
||||||
while ((secnum = P_FindSectorFromTag(tag,secnum)) >= 0)
|
while ((secnum = P_FindSectorFromTag(tag,secnum)) >= 0)
|
||||||
{
|
{
|
||||||
s1 = §ors[secnum]; // s1 is pillar's sector
|
s1 = §ors[secnum]; // s1 is pillar's sector
|
||||||
|
|
||||||
|
manual_donut:
|
||||||
// ALREADY MOVING? IF SO, KEEP GOING...
|
// ALREADY MOVING? IF SO, KEEP GOING...
|
||||||
if (s1->PlaneMoving(sector_t::floor))
|
if (s1->PlaneMoving(sector_t::floor))
|
||||||
continue;
|
continue;
|
||||||
|
@ -834,6 +845,7 @@ bool EV_DoDonut (int tag, fixed_t pillarspeed, fixed_t slimespeed)
|
||||||
floor->StartFloorSound ();
|
floor->StartFloorSound ();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
if (manual) break;
|
||||||
}
|
}
|
||||||
return rtn;
|
return rtn;
|
||||||
}
|
}
|
||||||
|
@ -989,17 +1001,28 @@ bool EV_DoElevator (line_t *line, DElevator::EElevator elevtype,
|
||||||
fixed_t floorheight, ceilingheight;
|
fixed_t floorheight, ceilingheight;
|
||||||
fixed_t newheight;
|
fixed_t newheight;
|
||||||
vertex_t* spot;
|
vertex_t* spot;
|
||||||
|
bool manual = false;
|
||||||
|
|
||||||
if (!line && (elevtype == DElevator::elevateCurrent))
|
if (!line && (elevtype == DElevator::elevateCurrent))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
secnum = -1;
|
secnum = -1;
|
||||||
rtn = false;
|
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
|
// act on all sectors with the same tag as the triggering linedef
|
||||||
while ((secnum = P_FindSectorFromTag (tag, secnum)) >= 0)
|
while ((secnum = P_FindSectorFromTag (tag, secnum)) >= 0)
|
||||||
{
|
{
|
||||||
sec = §ors[secnum];
|
sec = §ors[secnum];
|
||||||
|
manual_elevator:
|
||||||
// If either floor or ceiling is already activated, skip it
|
// If either floor or ceiling is already activated, skip it
|
||||||
if (sec->PlaneMoving(sector_t::floor) || sec->ceilingdata) //jff 2/22/98
|
if (sec->PlaneMoving(sector_t::floor) || sec->ceilingdata) //jff 2/22/98
|
||||||
continue;
|
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);
|
elevator->m_CeilingDestDist = sec->ceilingplane.PointToDist (sec->soundorg[0], sec->soundorg[1], ceilingheight - height);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
if (manual) break;
|
||||||
}
|
}
|
||||||
return rtn;
|
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 timer, bool ceiling)
|
||||||
{
|
{
|
||||||
int sectorIndex;
|
int sectorIndex;
|
||||||
sector_t *sector;
|
sector_t *sector;
|
||||||
DWaggleBase *waggle;
|
DWaggleBase *waggle;
|
||||||
bool retCode;
|
bool retCode;
|
||||||
|
bool manual = false;
|
||||||
|
|
||||||
retCode = false;
|
retCode = false;
|
||||||
sectorIndex = -1;
|
sectorIndex = -1;
|
||||||
|
|
||||||
|
if (tag == 0)
|
||||||
|
{
|
||||||
|
if (!line || !(sector = line->backsector))
|
||||||
|
return retCode;
|
||||||
|
manual = true;
|
||||||
|
goto manual_waggle;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
while ((sectorIndex = P_FindSectorFromTag(tag, sectorIndex)) >= 0)
|
while ((sectorIndex = P_FindSectorFromTag(tag, sectorIndex)) >= 0)
|
||||||
{
|
{
|
||||||
sector = §ors[sectorIndex];
|
sector = §ors[sectorIndex];
|
||||||
|
manual_waggle:
|
||||||
if ((!ceiling && sector->PlaneMoving(sector_t::floor)) ||
|
if ((!ceiling && sector->PlaneMoving(sector_t::floor)) ||
|
||||||
(ceiling && sector->PlaneMoving(sector_t::ceiling)))
|
(ceiling && sector->PlaneMoving(sector_t::ceiling)))
|
||||||
{ // Already busy with another thinker
|
{ // 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);
|
/(TICRATE+((3*TICRATE)*height)/255);
|
||||||
waggle->m_Ticker = timer ? timer*TICRATE : -1;
|
waggle->m_Ticker = timer ? timer*TICRATE : -1;
|
||||||
waggle->m_State = WGLSTATE_EXPAND;
|
waggle->m_State = WGLSTATE_EXPAND;
|
||||||
|
if (manual) break;
|
||||||
}
|
}
|
||||||
return retCode;
|
return retCode;
|
||||||
}
|
}
|
||||||
|
|
|
@ -341,13 +341,13 @@ FUNC(LS_Floor_LowerToLowestTxTy)
|
||||||
FUNC(LS_Floor_Waggle)
|
FUNC(LS_Floor_Waggle)
|
||||||
// Floor_Waggle (tag, amplitude, frequency, delay, time)
|
// 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)
|
FUNC(LS_Ceiling_Waggle)
|
||||||
// Ceiling_Waggle (tag, amplitude, frequency, delay, time)
|
// 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)
|
FUNC(LS_Floor_TransferTrigger)
|
||||||
|
@ -365,7 +365,7 @@ FUNC(LS_Floor_TransferNumeric)
|
||||||
FUNC(LS_Floor_Donut)
|
FUNC(LS_Floor_Donut)
|
||||||
// Floor_Donut (pillartag, pillarspeed, slimespeed)
|
// 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)
|
FUNC(LS_Generic_Floor)
|
||||||
|
|
|
@ -3157,11 +3157,20 @@ fixed_t P_AimLineAttack (AActor *t1, angle_t angle, fixed_t distance, AActor **p
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// 35 degrees is approximately what Doom used. You cannot have a
|
// [BB] Disable autoaim on weapons with WIF_NOAUTOAIM.
|
||||||
// vrange of 0 degrees, because then toppitch and bottompitch will
|
AWeapon *weapon = t1->player->ReadyWeapon;
|
||||||
// be equal, and PTR_AimTraverse will never find anything to shoot at
|
if ( weapon && (weapon->WeaponFlags & WIF_NOAUTOAIM) )
|
||||||
// if it crosses a line.
|
{
|
||||||
vrange = clamp (t1->player->userinfo.GetAimDist(), ANGLE_1/2, ANGLE_1*35);
|
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;
|
aim.toppitch = t1->pitch - vrange;
|
||||||
|
|
|
@ -3838,17 +3838,13 @@ APlayerPawn *P_SpawnPlayer (FMapThing *mthing, bool tempplayer)
|
||||||
// [RH] Things 4001-? are also multiplayer starts. Just like 1-4.
|
// [RH] Things 4001-? are also multiplayer starts. Just like 1-4.
|
||||||
// To make things simpler, figure out which player is being
|
// To make things simpler, figure out which player is being
|
||||||
// spawned here.
|
// 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;
|
playernum = mthing->type - 1;
|
||||||
}
|
}
|
||||||
else if (gameinfo.gametype != GAME_Hexen)
|
|
||||||
{
|
|
||||||
playernum = mthing->type - 4001 + 4;
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
playernum = mthing->type - 9100 + 4;
|
playernum = mthing->type - gameinfo.player5start + 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
// not playing?
|
// not playing?
|
||||||
|
@ -4140,12 +4136,9 @@ AActor *P_SpawnMapThing (FMapThing *mthing, int position)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
const int base = (gameinfo.gametype == GAME_Strife) ? 5 :
|
if (mthing->type >= gameinfo.player5start && mthing->type < gameinfo.player5start + MAXPLAYERS - 4)
|
||||||
(gameinfo.gametype == GAME_Hexen) ? 9100 : 4001;
|
|
||||||
|
|
||||||
if (mthing->type >= base && mthing->type < base + 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;
|
AActor *th;
|
||||||
PalEntry bloodcolor = (PalEntry)originator->GetClass()->Meta.GetMetaInt(AMETA_BloodColor);
|
PalEntry bloodcolor = (PalEntry)originator->GetClass()->Meta.GetMetaInt(AMETA_BloodColor);
|
||||||
const PClass *bloodcls = PClass::FindClass((ENamedName)originator->GetClass()->Meta.GetMetaInt(AMETA_BloodType, NAME_Blood));
|
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;
|
z += pr_spawnblood.Random2 () << 10;
|
||||||
th = Spawn (bloodcls, x, y, z, ALLOW_REPLACE);
|
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);
|
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);
|
PalEntry bloodcolor = (PalEntry)originator->GetClass()->Meta.GetMetaInt(AMETA_BloodColor);
|
||||||
const PClass *bloodcls = PClass::FindClass((ENamedName)originator->GetClass()->Meta.GetMetaInt(AMETA_BloodType2, NAME_BloodSplatter));
|
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;
|
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);
|
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);
|
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);
|
PalEntry bloodcolor = (PalEntry)originator->GetClass()->Meta.GetMetaInt(AMETA_BloodColor);
|
||||||
const PClass *bloodcls = PClass::FindClass((ENamedName)originator->GetClass()->Meta.GetMetaInt(AMETA_BloodType3, NAME_AxeBlood));
|
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;
|
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);
|
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);
|
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);
|
x = mo->x + (pr_ripperblood.Random2 () << 12);
|
||||||
y = mo->y + (pr_ripperblood.Random2 () << 12);
|
y = mo->y + (pr_ripperblood.Random2 () << 12);
|
||||||
z = mo->z + (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;
|
AActor *th;
|
||||||
th = Spawn (bloodcls, x, y, z, ALLOW_REPLACE);
|
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);
|
th->Translation = TRANSLATION(TRANSLATION_Blood, bloodcolor.a);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (cl_bloodtype >= 1)
|
if (bloodtype >= 1)
|
||||||
{
|
{
|
||||||
P_DrawSplash2 (28, x, y, z, 0, 0, bloodcolor);
|
P_DrawSplash2 (28, x, y, z, 0, 0, bloodcolor);
|
||||||
}
|
}
|
||||||
|
|
|
@ -825,7 +825,7 @@ protected:
|
||||||
friend bool EV_DoFloor (DFloor::EFloor floortype, line_t *line, int tag,
|
friend bool EV_DoFloor (DFloor::EFloor floortype, line_t *line, int tag,
|
||||||
fixed_t speed, fixed_t height, int crush, int change, bool hexencrush);
|
fixed_t speed, fixed_t height, int crush, int change, bool hexencrush);
|
||||||
friend bool EV_FloorCrushStop (int tag);
|
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:
|
private:
|
||||||
DFloor ();
|
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,
|
bool EV_DoFloor (DFloor::EFloor floortype, line_t *line, int tag,
|
||||||
fixed_t speed, fixed_t height, int crush, int change, bool hexencrush);
|
fixed_t speed, fixed_t height, int crush, int change, bool hexencrush);
|
||||||
bool EV_FloorCrushStop (int tag);
|
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)
|
inline FArchive &operator<< (FArchive &arc, DFloor::EFloor &type)
|
||||||
{
|
{
|
||||||
|
@ -915,7 +915,7 @@ protected:
|
||||||
int m_State;
|
int m_State;
|
||||||
TObjPtr<DInterpolation> m_Interpolation;
|
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);
|
int offset, int timer, bool ceiling);
|
||||||
|
|
||||||
void DoWaggle (bool ceiling);
|
void DoWaggle (bool ceiling);
|
||||||
|
@ -923,7 +923,7 @@ protected:
|
||||||
DWaggleBase ();
|
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);
|
int offset, int timer, bool ceiling);
|
||||||
|
|
||||||
class DFloorWaggle : public DWaggleBase
|
class DFloorWaggle : public DWaggleBase
|
||||||
|
|
|
@ -315,18 +315,21 @@ void FRemapTable::AddIndexRange(int start, int end, int pal1, int pal2)
|
||||||
}
|
}
|
||||||
else if (start == end)
|
else if (start == end)
|
||||||
{
|
{
|
||||||
|
start = GPalette.Remap[start];
|
||||||
|
pal1 = GPalette.Remap[pal1];
|
||||||
Remap[start] = pal1;
|
Remap[start] = pal1;
|
||||||
Palette[start] = GPalette.BaseColors[pal1];
|
Palette[start] = GPalette.BaseColors[pal1];
|
||||||
Palette[start].a = start==0? 0:255;
|
Palette[start].a = start == 0 ? 0 : 255;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
palcol = pal1 << FRACBITS;
|
palcol = pal1 << FRACBITS;
|
||||||
palstep = ((pal2 << FRACBITS) - palcol) / (end - start);
|
palstep = ((pal2 << FRACBITS) - palcol) / (end - start);
|
||||||
for (int i = start; i <= end; palcol += palstep, ++i)
|
for (int i = start; i <= end; palcol += palstep, ++i)
|
||||||
{
|
{
|
||||||
Remap[i] = palcol >> FRACBITS;
|
int j = GPalette.Remap[i], k = GPalette.Remap[palcol >> FRACBITS];
|
||||||
Palette[i] = GPalette.BaseColors[palcol >> FRACBITS];
|
Remap[j] = k;
|
||||||
Palette[i].a = i==0? 0:255;
|
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)
|
if (start == end)
|
||||||
{
|
{
|
||||||
Remap[start] = ColorMatcher.Pick
|
start = GPalette.Remap[start];
|
||||||
(r >> FRACBITS, g >> FRACBITS, b >> FRACBITS);
|
Remap[start] = ColorMatcher.Pick(r >> FRACBITS, g >> FRACBITS, b >> FRACBITS);
|
||||||
Palette[start] = PalEntry(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
|
else
|
||||||
{
|
{
|
||||||
|
@ -380,9 +383,9 @@ void FRemapTable::AddColorRange(int start, int end, int _r1,int _g1, int _b1, in
|
||||||
bs /= (end - start);
|
bs /= (end - start);
|
||||||
for (int i = start; i <= end; ++i)
|
for (int i = start; i <= end; ++i)
|
||||||
{
|
{
|
||||||
Remap[i] = ColorMatcher.Pick
|
int j = GPalette.Remap[i];
|
||||||
(r >> FRACBITS, g >> FRACBITS, b >> FRACBITS);
|
Remap[j] = ColorMatcher.Pick(r >> FRACBITS, g >> FRACBITS, b >> FRACBITS);
|
||||||
Palette[i] = PalEntry(start==0? 0:255, r >> FRACBITS, g >> FRACBITS, b >> FRACBITS);
|
Palette[j] = PalEntry(j == 0 ? 0 : 255, r >> FRACBITS, g >> FRACBITS, b >> FRACBITS);
|
||||||
r += rs;
|
r += rs;
|
||||||
g += gs;
|
g += gs;
|
||||||
b += bs;
|
b += bs;
|
||||||
|
@ -412,7 +415,7 @@ void FRemapTable::AddDesaturation(int start, int end, float r1,float g1, float b
|
||||||
g1 *= 255;
|
g1 *= 255;
|
||||||
b1 *= 255;
|
b1 *= 255;
|
||||||
|
|
||||||
for(int c=start; c < end; c++)
|
for(int c = start; c < end; c++)
|
||||||
{
|
{
|
||||||
double intensity = (GPalette.BaseColors[c].r * 77 +
|
double intensity = (GPalette.BaseColors[c].r * 77 +
|
||||||
GPalette.BaseColors[c].g * 143 +
|
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(g1 + intensity*g2)),
|
||||||
MIN(255, int(b1 + intensity*b2)));
|
MIN(255, int(b1 + intensity*b2)));
|
||||||
|
|
||||||
Remap[c] = ColorMatcher.Pick(pe);
|
int cc = GPalette.Remap[c];
|
||||||
Palette[c] = pe;
|
|
||||||
Palette[c].a = c==0? 0:255;
|
Remap[cc] = ColorMatcher.Pick(pe);
|
||||||
|
Palette[cc] = pe;
|
||||||
|
Palette[cc].a = cc == 0 ? 0:255;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3,5 +3,5 @@
|
||||||
// This file was automatically generated by the
|
// This file was automatically generated by the
|
||||||
// updaterevision tool. Do not edit by hand.
|
// updaterevision tool. Do not edit by hand.
|
||||||
|
|
||||||
#define ZD_SVN_REVISION_STRING "1991"
|
#define ZD_SVN_REVISION_STRING "2001"
|
||||||
#define ZD_SVN_REVISION_NUMBER 1991
|
#define ZD_SVN_REVISION_NUMBER 2001
|
||||||
|
|
|
@ -222,7 +222,7 @@ int FWadCollection::AddExternalFile(const char *filename)
|
||||||
// [RH] Removed reload hack
|
// [RH] Removed reload hack
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
|
|
||||||
void FWadCollection::AddFile (const char *filename, FileReader *wadinfo)
|
void FWadCollection::AddFile (char *filename, FileReader *wadinfo)
|
||||||
{
|
{
|
||||||
int startlump;
|
int startlump;
|
||||||
bool isdir = false;
|
bool isdir = false;
|
||||||
|
@ -252,6 +252,7 @@ void FWadCollection::AddFile (const char *filename, FileReader *wadinfo)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
FixPathSeperator(filename);
|
||||||
}
|
}
|
||||||
|
|
||||||
Printf (" adding %s", filename);
|
Printf (" adding %s", filename);
|
||||||
|
|
|
@ -154,7 +154,7 @@ public:
|
||||||
enum { IWAD_FILENUM = 1 };
|
enum { IWAD_FILENUM = 1 };
|
||||||
|
|
||||||
void InitMultipleFiles (wadlist_t **filenames);
|
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);
|
int CheckIfWadLoaded (const char *name);
|
||||||
|
|
||||||
const char *GetWadName (int wadnum) const;
|
const char *GetWadName (int wadnum) const;
|
||||||
|
|
|
@ -480,11 +480,16 @@ void I_WaitVBL(int count)
|
||||||
|
|
||||||
void I_DetectOS(void)
|
void I_DetectOS(void)
|
||||||
{
|
{
|
||||||
OSVERSIONINFO info;
|
OSVERSIONINFOEX info;
|
||||||
const char *osname;
|
const char *osname;
|
||||||
|
|
||||||
info.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
|
info.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
|
||||||
GetVersionEx (&info);
|
if (!GetVersionEx((OSVERSIONINFO *)&info))
|
||||||
|
{
|
||||||
|
// Retry with the older OSVERSIONINFO structure.
|
||||||
|
info.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
|
||||||
|
GetVersionEx((OSVERSIONINFO *)&info);
|
||||||
|
}
|
||||||
|
|
||||||
switch (info.dwPlatformId)
|
switch (info.dwPlatformId)
|
||||||
{
|
{
|
||||||
|
@ -522,9 +527,30 @@ void I_DetectOS(void)
|
||||||
osname = "Server 2003";
|
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;
|
break;
|
||||||
|
|
||||||
|
@ -543,7 +569,7 @@ void I_DetectOS(void)
|
||||||
}
|
}
|
||||||
else
|
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,
|
osname,
|
||||||
info.dwMajorVersion, info.dwMinorVersion,
|
info.dwMajorVersion, info.dwMinorVersion,
|
||||||
info.dwBuildNumber, info.szCSDVersion);
|
info.dwBuildNumber, info.szCSDVersion);
|
||||||
|
|
|
@ -94,7 +94,7 @@ ACTOR ArtiPork : CustomInventory 30
|
||||||
States
|
States
|
||||||
{
|
{
|
||||||
Spawn:
|
Spawn:
|
||||||
PORK ABCB 6
|
PORK ABCDEFGH 6
|
||||||
Loop
|
Loop
|
||||||
Use:
|
Use:
|
||||||
TNT1 A 0 A_FireCustomMissile("PorkFX", -15, 0, 0, 0, 1)
|
TNT1 A 0 A_FireCustomMissile("PorkFX", -15, 0, 0, 0, 1)
|
||||||
|
|
|
@ -40,6 +40,7 @@ gameinfo
|
||||||
defaultrespawntime = 12
|
defaultrespawntime = 12
|
||||||
defaultdropstyle = 1
|
defaultdropstyle = 1
|
||||||
endoom = "ENDOOM"
|
endoom = "ENDOOM"
|
||||||
|
player5start = 4001
|
||||||
}
|
}
|
||||||
|
|
||||||
skill baby
|
skill baby
|
||||||
|
|
|
@ -39,6 +39,7 @@ gameinfo
|
||||||
defaultrespawntime = 12
|
defaultrespawntime = 12
|
||||||
defaultdropstyle = 1
|
defaultdropstyle = 1
|
||||||
endoom = "ENDOOM"
|
endoom = "ENDOOM"
|
||||||
|
player5start = 4001
|
||||||
}
|
}
|
||||||
|
|
||||||
skill baby
|
skill baby
|
||||||
|
|
|
@ -40,6 +40,7 @@ gameinfo
|
||||||
defaultrespawntime = 12
|
defaultrespawntime = 12
|
||||||
defaultdropstyle = 1
|
defaultdropstyle = 1
|
||||||
endoom = "ENDTEXT"
|
endoom = "ENDTEXT"
|
||||||
|
player5start = 4001
|
||||||
}
|
}
|
||||||
|
|
||||||
skill baby
|
skill baby
|
||||||
|
|
|
@ -38,6 +38,7 @@ gameinfo
|
||||||
definventorymaxamount = 25
|
definventorymaxamount = 25
|
||||||
defaultrespawntime = 12
|
defaultrespawntime = 12
|
||||||
defaultdropstyle = 1
|
defaultdropstyle = 1
|
||||||
|
player5start = 9100
|
||||||
}
|
}
|
||||||
|
|
||||||
skill baby
|
skill baby
|
||||||
|
|
|
@ -41,6 +41,7 @@ gameinfo
|
||||||
defaultrespawntime = 16
|
defaultrespawntime = 16
|
||||||
defaultdropstyle = 2
|
defaultdropstyle = 2
|
||||||
endoom = "ENDSTRF"
|
endoom = "ENDSTRF"
|
||||||
|
player5start = 5
|
||||||
}
|
}
|
||||||
|
|
||||||
skill baby
|
skill baby
|
||||||
|
|
|
@ -43,7 +43,7 @@ include "xlat/defines.i"
|
||||||
41 = USE, Ceiling_LowerToFloor (tag, C_SLOW)
|
41 = USE, Ceiling_LowerToFloor (tag, C_SLOW)
|
||||||
42 = USE|REP, Door_Close (tag, D_SLOW)
|
42 = USE|REP, Door_Close (tag, D_SLOW)
|
||||||
43 = USE|REP, Ceiling_LowerToFloor (tag, C_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)
|
45 = USE|REP, Floor_LowerToHighest (tag, F_SLOW, 128)
|
||||||
46 = SHOOT|REP|MONST, Door_Open (tag, D_SLOW)
|
46 = SHOOT|REP|MONST, Door_Open (tag, D_SLOW)
|
||||||
47 = SHOOT, Plat_RaiseAndStayTx0 (tag, P_SLOW/2)
|
47 = SHOOT, Plat_RaiseAndStayTx0 (tag, P_SLOW/2)
|
||||||
|
@ -71,7 +71,7 @@ include "xlat/defines.i"
|
||||||
69 = USE|REP, Floor_RaiseToNearest (tag, F_SLOW)
|
69 = USE|REP, Floor_RaiseToNearest (tag, F_SLOW)
|
||||||
70 = USE|REP, Floor_LowerToHighest (tag, F_FAST, 136)
|
70 = USE|REP, Floor_LowerToHighest (tag, F_FAST, 136)
|
||||||
71 = USE, 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)
|
73 = WALK|REP, Ceiling_CrushAndRaiseA (tag, C_SLOW, C_SLOW, 10)
|
||||||
74 = WALK|REP, Ceiling_CrushStop (tag)
|
74 = WALK|REP, Ceiling_CrushStop (tag)
|
||||||
75 = WALK|REP, Door_Close (tag, D_SLOW)
|
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)
|
164 = USE, Ceiling_CrushAndRaiseA (tag, C_NORMAL, C_NORMAL, 10)
|
||||||
165 = USE, Ceiling_CrushAndRaiseSilentA (tag, C_SLOW, C_SLOW, 10)
|
165 = USE, Ceiling_CrushAndRaiseSilentA (tag, C_SLOW, C_SLOW, 10)
|
||||||
166 = USE, FloorAndCeiling_LowerRaise (tag, F_SLOW, C_SLOW)
|
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)
|
168 = USE, Ceiling_CrushStop (tag)
|
||||||
169 = USE, Light_MaxNeighbor (tag)
|
169 = USE, Light_MaxNeighbor (tag)
|
||||||
170 = USE, Light_ChangeToValue (tag, 35)
|
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)
|
184 = USE|REP, Ceiling_CrushAndRaiseA (tag, C_SLOW, C_SLOW, 10)
|
||||||
185 = USE|REP, Ceiling_CrushAndRaiseSilentA (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)
|
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)
|
188 = USE|REP, Ceiling_CrushStop (tag)
|
||||||
189 = USE, Floor_TransferTrigger (tag)
|
189 = USE, Floor_TransferTrigger (tag)
|
||||||
190 = USE|REP, Floor_TransferTrigger (tag)
|
190 = USE|REP, Floor_TransferTrigger (tag)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue