mirror of
https://github.com/ZDoom/gzdoom-gles.git
synced 2024-11-10 23:01:59 +00:00
- Added a new parameter to all crushing action specials that selects
which crushing mode is used: 0 uses the game's default for compatibility, 1 uses Doom's mode (crushers continue to move while damaging any actors ) and 2 uses Hexen's mode (crushers stay at blocking actor's top until they die). Since Generic_Crusher already used all 5 args I created a second version for Hexen crushing mode. - Added PICKUP flag to DECORATE. SVN r817 (trunk)
This commit is contained in:
parent
b1241d7f06
commit
8244d1ea07
17 changed files with 140 additions and 109 deletions
|
@ -1,4 +1,11 @@
|
|||
March 19, 2008 (Changes by Graf Zahl)
|
||||
- Added a new parameter to all crushing action specials that selects
|
||||
which crushing mode is used: 0 uses the game's default for compatibility,
|
||||
1 uses Doom's mode (crushers continue to move while damaging any actors ) and
|
||||
2 uses Hexen's mode (crushers stay at blocking actor's top until they die).
|
||||
Since Generic_Crusher already used all 5 args I created a second version for
|
||||
Hexen crushing mode.
|
||||
- Added PICKUP flag to DECORATE.
|
||||
- Integrated xlatcc into ZDoom.exe so that the linedef translation files
|
||||
don't need to be compiled and can be stored as text in zdoom.pk3.
|
||||
- Removed thingdef_specials.h and thingdef_specials.gperf and replaced
|
||||
|
|
|
@ -25,7 +25,7 @@ DEFINE_SPECIAL(Floor_RaiseToHighest, 24, 2, 2)
|
|||
DEFINE_SPECIAL(Floor_RaiseToNearest, 25, 2, 2)
|
||||
DEFINE_SPECIAL(Stairs_BuildDown, 26, 5, 5)
|
||||
DEFINE_SPECIAL(Stairs_BuildUp, 27, 5, 5)
|
||||
DEFINE_SPECIAL(Floor_RaiseAndCrush, 28, 3, 3)
|
||||
DEFINE_SPECIAL(Floor_RaiseAndCrush, 28, 3, 4)
|
||||
DEFINE_SPECIAL(Pillar_Build, 29, 3, 3)
|
||||
DEFINE_SPECIAL(Pillar_Open, 30, 4, 4)
|
||||
DEFINE_SPECIAL(Stairs_BuildDownSync, 31, 4, 4)
|
||||
|
@ -39,10 +39,10 @@ DEFINE_SPECIAL(Ceiling_Waggle, 38, 5, 5) // [RH] Complement of Floor_Waggle
|
|||
DEFINE_SPECIAL(Teleport_ZombieChanger, 39, 2, 2) // [RH] Needed for Strife
|
||||
DEFINE_SPECIAL(Ceiling_LowerByValue, 40, 3, 3)
|
||||
DEFINE_SPECIAL(Ceiling_RaiseByValue, 41, 3, 3)
|
||||
DEFINE_SPECIAL(Ceiling_CrushAndRaise, 42, 3, 3)
|
||||
DEFINE_SPECIAL(Ceiling_LowerAndCrush, 43, 3, 3)
|
||||
DEFINE_SPECIAL(Ceiling_CrushAndRaise, 42, 3, 4)
|
||||
DEFINE_SPECIAL(Ceiling_LowerAndCrush, 43, 3, 4)
|
||||
DEFINE_SPECIAL(Ceiling_CrushStop, 44, 1, 1)
|
||||
DEFINE_SPECIAL(Ceiling_CrushRaiseAndStay, 45, 3, 3)
|
||||
DEFINE_SPECIAL(Ceiling_CrushRaiseAndStay, 45, 3, 4)
|
||||
DEFINE_SPECIAL(Floor_CrushStop, 46, 1, 1)
|
||||
DEFINE_SPECIAL(Ceiling_MoveToValue, 47, 3, 4)
|
||||
DEFINE_SPECIAL(Sector_Attach3dMidtex, 48, -1, -1)
|
||||
|
@ -80,7 +80,7 @@ DEFINE_SPECIAL(Polyobj_OR_RotateLeft, 90, 3, 3)
|
|||
DEFINE_SPECIAL(Polyobj_OR_RotateRight, 91, 3, 3)
|
||||
DEFINE_SPECIAL(Polyobj_OR_Move, 92, 4, 4)
|
||||
DEFINE_SPECIAL(Polyobj_OR_MoveTimes8, 93, 4, 4)
|
||||
DEFINE_SPECIAL(Pillar_BuildAndCrush, 94, 4, 4)
|
||||
DEFINE_SPECIAL(Pillar_BuildAndCrush, 94, 4, 5)
|
||||
DEFINE_SPECIAL(FloorAndCeiling_LowerByValue, 95, 3, 3)
|
||||
DEFINE_SPECIAL(FloorAndCeiling_RaiseByValue, 96, 3, 3)
|
||||
|
||||
|
@ -133,6 +133,7 @@ DEFINE_SPECIAL(Sector_Set3DFloor, 160, -1, -1)
|
|||
DEFINE_SPECIAL(Sector_SetContents, 161, -1, -1)
|
||||
|
||||
// [RH] Begin new specials for ZDoom
|
||||
DEFINE_SPECIAL(Generic_Crusher2, 169, 5, 5)
|
||||
DEFINE_SPECIAL(Sector_SetCeilingScale2, 170, 3, 3)
|
||||
DEFINE_SPECIAL(Sector_SetFloorScale2, 171, 3, 3)
|
||||
DEFINE_SPECIAL(Plat_UpNearestWaitDownStay, 172, 3, 3)
|
||||
|
@ -158,9 +159,9 @@ DEFINE_SPECIAL(SetPlayerProperty, 191, 3, 3)
|
|||
DEFINE_SPECIAL(Ceiling_LowerToHighestFloor, 192, 2, 2)
|
||||
DEFINE_SPECIAL(Ceiling_LowerInstant, 193, 3, 3)
|
||||
DEFINE_SPECIAL(Ceiling_RaiseInstant, 194, 3, 3)
|
||||
DEFINE_SPECIAL(Ceiling_CrushRaiseAndStayA, 195, 4, 4)
|
||||
DEFINE_SPECIAL(Ceiling_CrushAndRaiseA, 196, 4, 4)
|
||||
DEFINE_SPECIAL(Ceiling_CrushAndRaiseSilentA, 197, 4, 4)
|
||||
DEFINE_SPECIAL(Ceiling_CrushRaiseAndStayA, 195, 4, 5)
|
||||
DEFINE_SPECIAL(Ceiling_CrushAndRaiseA, 196, 4, 5)
|
||||
DEFINE_SPECIAL(Ceiling_CrushAndRaiseSilentA, 197, 4, 5)
|
||||
DEFINE_SPECIAL(Ceiling_RaiseByValueTimes8, 198, 3, 3)
|
||||
DEFINE_SPECIAL(Ceiling_LowerByValueTimes8, 199, 3, 3)
|
||||
DEFINE_SPECIAL(Generic_Floor, 200, 5, 5)
|
||||
|
@ -218,6 +219,6 @@ DEFINE_SPECIAL(FloorAndCeiling_LowerRaise, 251, 3, 3)
|
|||
DEFINE_SPECIAL(Ceiling_RaiseToNearest, 252, 2, 2)
|
||||
DEFINE_SPECIAL(Ceiling_LowerToLowest, 253, 2, 2)
|
||||
DEFINE_SPECIAL(Ceiling_LowerToFloor, 254, 2, 2)
|
||||
DEFINE_SPECIAL(Ceiling_CrushRaiseAndStaySilA, 255, 4, 4)
|
||||
DEFINE_SPECIAL(Ceiling_CrushRaiseAndStaySilA, 255, 4, 5)
|
||||
|
||||
#undef DEFINE_SPECIAL
|
||||
|
|
|
@ -121,7 +121,7 @@ bool DMover::MoveAttached(int crush, fixed_t move, int floorOrCeiling, bool rese
|
|||
// dest is the desired d value for the plane
|
||||
//
|
||||
DMover::EResult DMover::MovePlane (fixed_t speed, fixed_t dest, int crush,
|
||||
int floorOrCeiling, int direction)
|
||||
int floorOrCeiling, int direction, bool hexencrush)
|
||||
{
|
||||
bool flag;
|
||||
fixed_t lastpos;
|
||||
|
@ -228,7 +228,7 @@ DMover::EResult DMover::MovePlane (fixed_t speed, fixed_t dest, int crush,
|
|||
flag = P_ChangeSector (m_Sector, crush, speed, 0);
|
||||
if (flag)
|
||||
{
|
||||
if (crush >= 0 && gameinfo.gametype != GAME_Hexen)
|
||||
if (crush >= 0 && !hexencrush)
|
||||
{
|
||||
m_Sector->floortexz += m_Sector->floorplane.HeightDiff (lastpos);
|
||||
m_Sector->AdjustFloorClip ();
|
||||
|
@ -294,7 +294,7 @@ DMover::EResult DMover::MovePlane (fixed_t speed, fixed_t dest, int crush,
|
|||
flag = P_ChangeSector (m_Sector, crush, -speed, 1);
|
||||
if (flag)
|
||||
{
|
||||
if (crush >= 0 && gameinfo.gametype != GAME_Hexen)
|
||||
if (crush >= 0 && !hexencrush)
|
||||
{
|
||||
m_Sector->ceilingtexz += m_Sector->ceilingplane.HeightDiff (lastpos);
|
||||
return crushed;
|
||||
|
|
|
@ -30,24 +30,24 @@ protected:
|
|||
enum EResult { ok, crushed, pastdest };
|
||||
private:
|
||||
bool MoveAttached(int crush, fixed_t move, int floorOrCeiling, bool resetfailed);
|
||||
EResult MovePlane (fixed_t speed, fixed_t dest, int crush, int floorOrCeiling, int direction);
|
||||
EResult MovePlane (fixed_t speed, fixed_t dest, int crush, int floorOrCeiling, int direction, bool hexencrush);
|
||||
protected:
|
||||
DMover ();
|
||||
inline EResult MoveFloor (fixed_t speed, fixed_t dest, int crush, int direction)
|
||||
inline EResult MoveFloor (fixed_t speed, fixed_t dest, int crush, int direction, bool hexencrush)
|
||||
{
|
||||
return MovePlane (speed, dest, crush, 0, direction);
|
||||
return MovePlane (speed, dest, crush, 0, direction, hexencrush);
|
||||
}
|
||||
inline EResult MoveFloor (fixed_t speed, fixed_t dest, int direction)
|
||||
{
|
||||
return MovePlane (speed, dest, -1, 0, direction);
|
||||
return MovePlane (speed, dest, -1, 0, direction, false);
|
||||
}
|
||||
inline EResult MoveCeiling (fixed_t speed, fixed_t dest, int crush, int direction)
|
||||
inline EResult MoveCeiling (fixed_t speed, fixed_t dest, int crush, int direction, bool hexencrush)
|
||||
{
|
||||
return MovePlane (speed, dest, crush, 1, direction);
|
||||
return MovePlane (speed, dest, crush, 1, direction, hexencrush);
|
||||
}
|
||||
inline EResult MoveCeiling (fixed_t speed, fixed_t dest, int direction)
|
||||
{
|
||||
return MovePlane (speed, dest, -1, 1, direction);
|
||||
return MovePlane (speed, dest, -1, 1, direction, false);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -503,7 +503,7 @@ void A_AlienSpectreDeath (AActor *self)
|
|||
|
||||
if (self->GetClass() == RUNTIME_CLASS(AAlienSpectre1))
|
||||
{
|
||||
EV_DoFloor (DFloor::floorLowerToLowest, NULL, 999, FRACUNIT, 0, 0, 0);
|
||||
EV_DoFloor (DFloor::floorLowerToLowest, NULL, 999, FRACUNIT, 0, 0, 0, false);
|
||||
log = 95;
|
||||
}
|
||||
else if (self->GetClass() == RUNTIME_CLASS(AAlienSpectre2))
|
||||
|
@ -575,7 +575,7 @@ void A_AlienSpectreDeath (AActor *self)
|
|||
{ // Another Sigil piece. Woohoo!
|
||||
log = 83;
|
||||
}
|
||||
EV_DoFloor (DFloor::floorLowerToLowest, NULL, 666, FRACUNIT, 0, 0, 0);
|
||||
EV_DoFloor (DFloor::floorLowerToLowest, NULL, 666, FRACUNIT, 0, 0, 0, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -223,7 +223,7 @@ void A_CrusaderDeath (AActor *self)
|
|||
{
|
||||
if (CheckBossDeath (self))
|
||||
{
|
||||
EV_DoFloor (DFloor::floorLowerToLowest, NULL, 667, FRACUNIT, 0, 0, 0);
|
||||
EV_DoFloor (DFloor::floorLowerToLowest, NULL, 667, FRACUNIT, 0, 0, 0, false);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -674,7 +674,7 @@ void APowerCoupling::Die (AActor *source, AActor *inflictor)
|
|||
P_NoiseAlert (source, this);
|
||||
}
|
||||
EV_DoDoor (DDoor::doorClose, NULL, players[i].mo, 225, 2*FRACUNIT, 0, 0, 0);
|
||||
EV_DoFloor (DFloor::floorLowerToHighest, NULL, 44, FRACUNIT, 0, 0, 0);
|
||||
EV_DoFloor (DFloor::floorLowerToHighest, NULL, 44, FRACUNIT, 0, 0, 0, false);
|
||||
players[i].mo->GiveInventoryType (QuestItemClasses[5]);
|
||||
S_Sound (CHAN_VOICE, "svox/voc13", 1, ATTN_NORM);
|
||||
players[i].SetLogNumber (13);
|
||||
|
|
|
@ -56,7 +56,8 @@ void DCeiling::Serialize (FArchive &arc)
|
|||
<< m_Texture
|
||||
<< m_NewSpecial
|
||||
<< m_Tag
|
||||
<< m_OldDirection;
|
||||
<< m_OldDirection
|
||||
<< m_Hexencrush;
|
||||
}
|
||||
|
||||
void DCeiling::PlayCeilingSound ()
|
||||
|
@ -121,7 +122,7 @@ void DCeiling::Tick ()
|
|||
|
||||
case -1:
|
||||
// DOWN
|
||||
res = MoveCeiling (m_Speed, m_BottomHeight, m_Crush, m_Direction);
|
||||
res = MoveCeiling (m_Speed, m_BottomHeight, m_Crush, m_Direction, m_Hexencrush);
|
||||
|
||||
if (res == pastdest)
|
||||
{
|
||||
|
@ -180,6 +181,7 @@ DCeiling::DCeiling (sector_t *sec, fixed_t speed1, fixed_t speed2, int silent)
|
|||
: DMovingCeiling (sec)
|
||||
{
|
||||
m_Crush = -1;
|
||||
m_Hexencrush = false;
|
||||
m_Speed = m_Speed1 = speed1;
|
||||
m_Speed2 = speed2;
|
||||
m_Silent = silent;
|
||||
|
@ -192,7 +194,7 @@ DCeiling::DCeiling (sector_t *sec, fixed_t speed1, fixed_t speed2, int silent)
|
|||
// [RH] Added tag, speed, speed2, height, crush, silent, change params
|
||||
bool EV_DoCeiling (DCeiling::ECeiling type, line_t *line,
|
||||
int tag, fixed_t speed, fixed_t speed2, fixed_t height,
|
||||
int crush, int silent, int change)
|
||||
int crush, int silent, int change, bool hexencrush)
|
||||
{
|
||||
int secnum;
|
||||
bool rtn;
|
||||
|
@ -382,6 +384,7 @@ manual_ceiling:
|
|||
ceiling->m_Tag = tag;
|
||||
ceiling->m_Type = type;
|
||||
ceiling->m_Crush = crush;
|
||||
ceiling->m_Hexencrush = hexencrush;
|
||||
|
||||
// Do not interpolate instant movement ceilings.
|
||||
// Note for ZDoomGL: Check to make sure that you update the sector
|
||||
|
|
|
@ -121,7 +121,7 @@ void DDoor::Tick ()
|
|||
|
||||
case -1:
|
||||
// DOWN
|
||||
res = MoveCeiling (m_Speed, m_BotDist, -1, m_Direction);
|
||||
res = MoveCeiling (m_Speed, m_BotDist, -1, m_Direction, false);
|
||||
|
||||
// killough 10/98: implement gradual lighting effects
|
||||
if (m_LightTag != 0 && m_TopDist != -m_Sector->floorplane.d)
|
||||
|
@ -168,7 +168,7 @@ void DDoor::Tick ()
|
|||
|
||||
case 1:
|
||||
// UP
|
||||
res = MoveCeiling (m_Speed, m_TopDist, -1, m_Direction);
|
||||
res = MoveCeiling (m_Speed, m_TopDist, -1, m_Direction, false);
|
||||
|
||||
// killough 10/98: implement gradual lighting effects
|
||||
if (m_LightTag != 0 && m_TopDist != -m_Sector->floorplane.d)
|
||||
|
@ -552,7 +552,7 @@ bool DAnimatedDoor::StartClosing ()
|
|||
}
|
||||
|
||||
fixed_t topdist = m_Sector->ceilingplane.d;
|
||||
if (MoveCeiling (2048*FRACUNIT, m_BotDist, 0, -1) == crushed)
|
||||
if (MoveCeiling (2048*FRACUNIT, m_BotDist, 0, -1, false) == crushed)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -2707,13 +2707,13 @@ void A_BossDeath (AActor *actor)
|
|||
{
|
||||
if (type == NAME_Fatso)
|
||||
{
|
||||
EV_DoFloor (DFloor::floorLowerToLowest, NULL, 666, FRACUNIT, 0, 0, 0);
|
||||
EV_DoFloor (DFloor::floorLowerToLowest, NULL, 666, FRACUNIT, 0, 0, 0, false);
|
||||
return;
|
||||
}
|
||||
|
||||
if (type == NAME_Arachnotron)
|
||||
{
|
||||
EV_DoFloor (DFloor::floorRaiseByTexture, NULL, 667, FRACUNIT, 0, 0, 0);
|
||||
EV_DoFloor (DFloor::floorRaiseByTexture, NULL, 667, FRACUNIT, 0, 0, 0, false);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -2722,7 +2722,7 @@ void A_BossDeath (AActor *actor)
|
|||
switch (level.flags & LEVEL_SPECACTIONSMASK)
|
||||
{
|
||||
case LEVEL_SPECLOWERFLOOR:
|
||||
EV_DoFloor (DFloor::floorLowerToLowest, NULL, 666, FRACUNIT, 0, 0, 0);
|
||||
EV_DoFloor (DFloor::floorLowerToLowest, NULL, 666, FRACUNIT, 0, 0, 0, false);
|
||||
return;
|
||||
|
||||
case LEVEL_SPECOPENDOOR:
|
||||
|
|
|
@ -55,7 +55,8 @@ void DFloor::Serialize (FArchive &arc)
|
|||
<< m_Delay
|
||||
<< m_PauseTime
|
||||
<< m_StepTime
|
||||
<< m_PerStepTime;
|
||||
<< m_PerStepTime
|
||||
<< m_Hexencrush;
|
||||
}
|
||||
|
||||
IMPLEMENT_CLASS (DElevator)
|
||||
|
@ -133,7 +134,7 @@ void DFloor::Tick ()
|
|||
if (m_Type == waitStair)
|
||||
return;
|
||||
|
||||
res = MoveFloor (m_Speed, m_FloorDestDist, m_Crush, m_Direction);
|
||||
res = MoveFloor (m_Speed, m_FloorDestDist, m_Crush, m_Direction, m_Hexencrush);
|
||||
|
||||
if (res == pastdest)
|
||||
{
|
||||
|
@ -325,7 +326,7 @@ DFloor::DFloor (sector_t *sec)
|
|||
// [RH] Added tag, speed, height, crush, change params.
|
||||
//
|
||||
bool EV_DoFloor (DFloor::EFloor floortype, line_t *line, int tag,
|
||||
fixed_t speed, fixed_t height, int crush, int change)
|
||||
fixed_t speed, fixed_t height, int crush, int change, bool hexencrush)
|
||||
{
|
||||
int secnum;
|
||||
bool rtn;
|
||||
|
@ -368,6 +369,7 @@ manual_floor:
|
|||
floor = new DFloor (sec);
|
||||
floor->m_Type = floortype;
|
||||
floor->m_Crush = -1;
|
||||
floor->m_Hexencrush = hexencrush;
|
||||
floor->m_Speed = speed;
|
||||
floor->m_ResetCount = 0; // [RH]
|
||||
floor->m_OrgDist = sec->floorplane.d; // [RH]
|
||||
|
@ -761,6 +763,7 @@ manual_stair:
|
|||
floor->m_StepTime = floor->m_PerStepTime = persteptime;
|
||||
|
||||
floor->m_Crush = (!usespecials && speed == 4*FRACUNIT) ? 10 : -1; //jff 2/27/98 fix uninitialized crush field
|
||||
floor->m_Hexencrush = false;
|
||||
|
||||
floor->m_Speed = speed;
|
||||
height = sec->floorplane.ZatPoint (0, 0) + stairstep;
|
||||
|
@ -929,6 +932,7 @@ bool EV_DoDonut (int tag, fixed_t pillarspeed, fixed_t slimespeed)
|
|||
floor = new DFloor (s2);
|
||||
floor->m_Type = DFloor::donutRaise;
|
||||
floor->m_Crush = -1;
|
||||
floor->m_Hexencrush = false;
|
||||
floor->m_Direction = 1;
|
||||
floor->m_Sector = s2;
|
||||
floor->m_Speed = slimespeed;
|
||||
|
@ -942,6 +946,7 @@ bool EV_DoDonut (int tag, fixed_t pillarspeed, fixed_t slimespeed)
|
|||
floor = new DFloor (s1);
|
||||
floor->m_Type = DFloor::floorLowerToNearest;
|
||||
floor->m_Crush = -1;
|
||||
floor->m_Hexencrush = false;
|
||||
floor->m_Direction = -1;
|
||||
floor->m_Sector = s1;
|
||||
floor->m_Speed = pillarspeed;
|
||||
|
|
119
src/p_lnspec.cpp
119
src/p_lnspec.cpp
|
@ -61,6 +61,7 @@
|
|||
#define TICS(a) (((a)*TICRATE)/35)
|
||||
#define OCTICS(a) (((a)*TICRATE)/8)
|
||||
#define BYTEANGLE(a) ((angle_t)((a)<<24))
|
||||
#define CRUSHTYPE(a) ((a)==1? false : (a)==2? true : gameinfo.gametype == GAME_Hexen)
|
||||
|
||||
static FRandom pr_glass ("GlassBreak");
|
||||
|
||||
|
@ -221,61 +222,61 @@ FUNC(LS_Generic_Door)
|
|||
FUNC(LS_Floor_LowerByValue)
|
||||
// Floor_LowerByValue (tag, speed, height)
|
||||
{
|
||||
return EV_DoFloor (DFloor::floorLowerByValue, ln, arg0, SPEED(arg1), FRACUNIT*arg2, 0, 0);
|
||||
return EV_DoFloor (DFloor::floorLowerByValue, ln, arg0, SPEED(arg1), FRACUNIT*arg2, 0, 0, false);
|
||||
}
|
||||
|
||||
FUNC(LS_Floor_LowerToLowest)
|
||||
// Floor_LowerToLowest (tag, speed)
|
||||
{
|
||||
return EV_DoFloor (DFloor::floorLowerToLowest, ln, arg0, SPEED(arg1), 0, 0, 0);
|
||||
return EV_DoFloor (DFloor::floorLowerToLowest, ln, arg0, SPEED(arg1), 0, 0, 0, false);
|
||||
}
|
||||
|
||||
FUNC(LS_Floor_LowerToHighest)
|
||||
// Floor_LowerToHighest (tag, speed, adjust)
|
||||
{
|
||||
return EV_DoFloor (DFloor::floorLowerToHighest, ln, arg0, SPEED(arg1), (arg2-128)*FRACUNIT, 0, 0);
|
||||
return EV_DoFloor (DFloor::floorLowerToHighest, ln, arg0, SPEED(arg1), (arg2-128)*FRACUNIT, 0, 0, false);
|
||||
}
|
||||
|
||||
FUNC(LS_Floor_LowerToNearest)
|
||||
// Floor_LowerToNearest (tag, speed)
|
||||
{
|
||||
return EV_DoFloor (DFloor::floorLowerToNearest, ln, arg0, SPEED(arg1), 0, 0, 0);
|
||||
return EV_DoFloor (DFloor::floorLowerToNearest, ln, arg0, SPEED(arg1), 0, 0, 0, false);
|
||||
}
|
||||
|
||||
FUNC(LS_Floor_RaiseByValue)
|
||||
// Floor_RaiseByValue (tag, speed, height)
|
||||
{
|
||||
return EV_DoFloor (DFloor::floorRaiseByValue, ln, arg0, SPEED(arg1), FRACUNIT*arg2, 0, 0);
|
||||
return EV_DoFloor (DFloor::floorRaiseByValue, ln, arg0, SPEED(arg1), FRACUNIT*arg2, 0, 0, false);
|
||||
}
|
||||
|
||||
FUNC(LS_Floor_RaiseToHighest)
|
||||
// Floor_RaiseToHighest (tag, speed)
|
||||
{
|
||||
return EV_DoFloor (DFloor::floorRaiseToHighest, ln, arg0, SPEED(arg1), 0, 0, 0);
|
||||
return EV_DoFloor (DFloor::floorRaiseToHighest, ln, arg0, SPEED(arg1), 0, 0, 0, false);
|
||||
}
|
||||
|
||||
FUNC(LS_Floor_RaiseToNearest)
|
||||
// Floor_RaiseToNearest (tag, speed)
|
||||
{
|
||||
return EV_DoFloor (DFloor::floorRaiseToNearest, ln, arg0, SPEED(arg1), 0, 0, 0);
|
||||
return EV_DoFloor (DFloor::floorRaiseToNearest, ln, arg0, SPEED(arg1), 0, 0, 0, false);
|
||||
}
|
||||
|
||||
FUNC(LS_Floor_RaiseAndCrush)
|
||||
// Floor_RaiseAndCrush (tag, speed, crush)
|
||||
// Floor_RaiseAndCrush (tag, speed, crush, crushmode)
|
||||
{
|
||||
return EV_DoFloor (DFloor::floorRaiseAndCrush, ln, arg0, SPEED(arg1), 0, arg2, 0);
|
||||
return EV_DoFloor (DFloor::floorRaiseAndCrush, ln, arg0, SPEED(arg1), 0, arg2, 0, CRUSHTYPE(arg3));
|
||||
}
|
||||
|
||||
FUNC(LS_Floor_RaiseByValueTimes8)
|
||||
// FLoor_RaiseByValueTimes8 (tag, speed, height)
|
||||
{
|
||||
return EV_DoFloor (DFloor::floorRaiseByValue, ln, arg0, SPEED(arg1), FRACUNIT*arg2*8, 0, 0);
|
||||
return EV_DoFloor (DFloor::floorRaiseByValue, ln, arg0, SPEED(arg1), FRACUNIT*arg2*8, 0, 0, false);
|
||||
}
|
||||
|
||||
FUNC(LS_Floor_LowerByValueTimes8)
|
||||
// Floor_LowerByValueTimes8 (tag, speed, height)
|
||||
{
|
||||
return EV_DoFloor (DFloor::floorLowerByValue, ln, arg0, SPEED(arg1), FRACUNIT*arg2*8, 0, 0);
|
||||
return EV_DoFloor (DFloor::floorLowerByValue, ln, arg0, SPEED(arg1), FRACUNIT*arg2*8, 0, 0, false);
|
||||
}
|
||||
|
||||
FUNC(LS_Floor_CrushStop)
|
||||
|
@ -287,51 +288,51 @@ FUNC(LS_Floor_CrushStop)
|
|||
FUNC(LS_Floor_LowerInstant)
|
||||
// Floor_LowerInstant (tag, unused, height)
|
||||
{
|
||||
return EV_DoFloor (DFloor::floorLowerInstant, ln, arg0, 0, arg2*FRACUNIT*8, 0, 0);
|
||||
return EV_DoFloor (DFloor::floorLowerInstant, ln, arg0, 0, arg2*FRACUNIT*8, 0, 0, false);
|
||||
}
|
||||
|
||||
FUNC(LS_Floor_RaiseInstant)
|
||||
// Floor_RaiseInstant (tag, unused, height)
|
||||
{
|
||||
return EV_DoFloor (DFloor::floorRaiseInstant, ln, arg0, 0, arg2*FRACUNIT*8, 0, 0);
|
||||
return EV_DoFloor (DFloor::floorRaiseInstant, ln, arg0, 0, arg2*FRACUNIT*8, 0, 0, false);
|
||||
}
|
||||
|
||||
FUNC(LS_Floor_MoveToValueTimes8)
|
||||
// Floor_MoveToValueTimes8 (tag, speed, height, negative)
|
||||
{
|
||||
return EV_DoFloor (DFloor::floorMoveToValue, ln, arg0, SPEED(arg1),
|
||||
arg2*FRACUNIT*8*(arg3?-1:1), 0, 0);
|
||||
arg2*FRACUNIT*8*(arg3?-1:1), 0, 0, false);
|
||||
}
|
||||
|
||||
FUNC(LS_Floor_MoveToValue)
|
||||
// Floor_MoveToValue (tag, speed, height, negative)
|
||||
{
|
||||
return EV_DoFloor (DFloor::floorMoveToValue, ln, arg0, SPEED(arg1),
|
||||
arg2*FRACUNIT*(arg3?-1:1), 0, 0);
|
||||
arg2*FRACUNIT*(arg3?-1:1), 0, 0, false);
|
||||
}
|
||||
|
||||
FUNC(LS_Floor_RaiseToLowestCeiling)
|
||||
// Floor_RaiseToLowestCeiling (tag, speed)
|
||||
{
|
||||
return EV_DoFloor (DFloor::floorRaiseToLowestCeiling, ln, arg0, SPEED(arg1), 0, 0, 0);
|
||||
return EV_DoFloor (DFloor::floorRaiseToLowestCeiling, ln, arg0, SPEED(arg1), 0, 0, 0, false);
|
||||
}
|
||||
|
||||
FUNC(LS_Floor_RaiseByTexture)
|
||||
// Floor_RaiseByTexture (tag, speed)
|
||||
{
|
||||
return EV_DoFloor (DFloor::floorRaiseByTexture, ln, arg0, SPEED(arg1), 0, 0, 0);
|
||||
return EV_DoFloor (DFloor::floorRaiseByTexture, ln, arg0, SPEED(arg1), 0, 0, 0, false);
|
||||
}
|
||||
|
||||
FUNC(LS_Floor_RaiseByValueTxTy)
|
||||
// Floor_RaiseByValueTxTy (tag, speed, height)
|
||||
{
|
||||
return EV_DoFloor (DFloor::floorRaiseAndChange, ln, arg0, SPEED(arg1), arg2*FRACUNIT, 0, 0);
|
||||
return EV_DoFloor (DFloor::floorRaiseAndChange, ln, arg0, SPEED(arg1), arg2*FRACUNIT, 0, 0, false);
|
||||
}
|
||||
|
||||
FUNC(LS_Floor_LowerToLowestTxTy)
|
||||
// Floor_LowerToLowestTxTy (tag, speed)
|
||||
{
|
||||
return EV_DoFloor (DFloor::floorLowerAndChange, ln, arg0, SPEED(arg1), arg2*FRACUNIT, 0, 0);
|
||||
return EV_DoFloor (DFloor::floorLowerAndChange, ln, arg0, SPEED(arg1), arg2*FRACUNIT, 0, 0, false);
|
||||
}
|
||||
|
||||
FUNC(LS_Floor_Waggle)
|
||||
|
@ -397,7 +398,7 @@ FUNC(LS_Generic_Floor)
|
|||
}
|
||||
|
||||
return EV_DoFloor (type, ln, arg0, SPEED(arg1), arg2*FRACUNIT,
|
||||
(arg4 & 16) ? 20 : -1, arg4 & 7);
|
||||
(arg4 & 16) ? 20 : -1, arg4 & 7, false);
|
||||
|
||||
}
|
||||
|
||||
|
@ -453,55 +454,55 @@ FUNC(LS_Generic_Stairs)
|
|||
FUNC(LS_Pillar_Build)
|
||||
// Pillar_Build (tag, speed, height)
|
||||
{
|
||||
return EV_DoPillar (DPillar::pillarBuild, arg0, SPEED(arg1), arg2*FRACUNIT, 0, -1);
|
||||
return EV_DoPillar (DPillar::pillarBuild, arg0, SPEED(arg1), arg2*FRACUNIT, 0, -1, false);
|
||||
}
|
||||
|
||||
FUNC(LS_Pillar_BuildAndCrush)
|
||||
// Pillar_BuildAndCrush (tag, speed, height, crush)
|
||||
// Pillar_BuildAndCrush (tag, speed, height, crush, crushtype)
|
||||
{
|
||||
return EV_DoPillar (DPillar::pillarBuild, arg0, SPEED(arg1), arg2*FRACUNIT, 0, arg3);
|
||||
return EV_DoPillar (DPillar::pillarBuild, arg0, SPEED(arg1), arg2*FRACUNIT, 0, arg3, CRUSHTYPE(arg4));
|
||||
}
|
||||
|
||||
FUNC(LS_Pillar_Open)
|
||||
// Pillar_Open (tag, speed, f_height, c_height)
|
||||
{
|
||||
return EV_DoPillar (DPillar::pillarOpen, arg0, SPEED(arg1), arg2*FRACUNIT, arg3*FRACUNIT, -1);
|
||||
return EV_DoPillar (DPillar::pillarOpen, arg0, SPEED(arg1), arg2*FRACUNIT, arg3*FRACUNIT, -1, false);
|
||||
}
|
||||
|
||||
FUNC(LS_Ceiling_LowerByValue)
|
||||
// Ceiling_LowerByValue (tag, speed, height)
|
||||
{
|
||||
return EV_DoCeiling (DCeiling::ceilLowerByValue, ln, arg0, SPEED(arg1), 0, arg2*FRACUNIT, -1, 0, 0);
|
||||
return EV_DoCeiling (DCeiling::ceilLowerByValue, ln, arg0, SPEED(arg1), 0, arg2*FRACUNIT, -1, 0, 0, false);
|
||||
}
|
||||
|
||||
FUNC(LS_Ceiling_RaiseByValue)
|
||||
// Ceiling_RaiseByValue (tag, speed, height)
|
||||
{
|
||||
return EV_DoCeiling (DCeiling::ceilRaiseByValue, ln, arg0, SPEED(arg1), 0, arg2*FRACUNIT, -1, 0, 0);
|
||||
return EV_DoCeiling (DCeiling::ceilRaiseByValue, ln, arg0, SPEED(arg1), 0, arg2*FRACUNIT, -1, 0, 0, false);
|
||||
}
|
||||
|
||||
FUNC(LS_Ceiling_LowerByValueTimes8)
|
||||
// Ceiling_LowerByValueTimes8 (tag, speed, height)
|
||||
{
|
||||
return EV_DoCeiling (DCeiling::ceilLowerByValue, ln, arg0, SPEED(arg1), 0, arg2*FRACUNIT*8, -1, 0, 0);
|
||||
return EV_DoCeiling (DCeiling::ceilLowerByValue, ln, arg0, SPEED(arg1), 0, arg2*FRACUNIT*8, -1, 0, 0, false);
|
||||
}
|
||||
|
||||
FUNC(LS_Ceiling_RaiseByValueTimes8)
|
||||
// Ceiling_RaiseByValueTimes8 (tag, speed, height)
|
||||
{
|
||||
return EV_DoCeiling (DCeiling::ceilRaiseByValue, ln, arg0, SPEED(arg1), 0, arg2*FRACUNIT*8, -1, 0, 0);
|
||||
return EV_DoCeiling (DCeiling::ceilRaiseByValue, ln, arg0, SPEED(arg1), 0, arg2*FRACUNIT*8, -1, 0, 0, false);
|
||||
}
|
||||
|
||||
FUNC(LS_Ceiling_CrushAndRaise)
|
||||
// Ceiling_CrushAndRaise (tag, speed, crush)
|
||||
// Ceiling_CrushAndRaise (tag, speed, crush, crushtype)
|
||||
{
|
||||
return EV_DoCeiling (DCeiling::ceilCrushAndRaise, ln, arg0, SPEED(arg1), SPEED(arg1)/2, 0, arg2, 0, 0);
|
||||
return EV_DoCeiling (DCeiling::ceilCrushAndRaise, ln, arg0, SPEED(arg1), SPEED(arg1)/2, 0, arg2, 0, 0, CRUSHTYPE(arg3));
|
||||
}
|
||||
|
||||
FUNC(LS_Ceiling_LowerAndCrush)
|
||||
// Ceiling_LowerAndCrush (tag, speed, crush)
|
||||
// Ceiling_LowerAndCrush (tag, speed, crush, crushtype)
|
||||
{
|
||||
return EV_DoCeiling (DCeiling::ceilLowerAndCrush, ln, arg0, SPEED(arg1), SPEED(arg1), 0, arg2, 0, 0);
|
||||
return EV_DoCeiling (DCeiling::ceilLowerAndCrush, ln, arg0, SPEED(arg1), SPEED(arg1), 0, arg2, 0, 0, CRUSHTYPE(arg3));
|
||||
}
|
||||
|
||||
FUNC(LS_Ceiling_CrushStop)
|
||||
|
@ -511,83 +512,83 @@ FUNC(LS_Ceiling_CrushStop)
|
|||
}
|
||||
|
||||
FUNC(LS_Ceiling_CrushRaiseAndStay)
|
||||
// Ceiling_CrushRaiseAndStay (tag, speed, crush)
|
||||
// Ceiling_CrushRaiseAndStay (tag, speed, crush, crushtype)
|
||||
{
|
||||
return EV_DoCeiling (DCeiling::ceilCrushRaiseAndStay, ln, arg0, SPEED(arg1), SPEED(arg1)/2, 0, arg2, 0, 0);
|
||||
return EV_DoCeiling (DCeiling::ceilCrushRaiseAndStay, ln, arg0, SPEED(arg1), SPEED(arg1)/2, 0, arg2, 0, 0, CRUSHTYPE(arg3));
|
||||
}
|
||||
|
||||
FUNC(LS_Ceiling_MoveToValueTimes8)
|
||||
// Ceiling_MoveToValueTimes8 (tag, speed, height, negative)
|
||||
{
|
||||
return EV_DoCeiling (DCeiling::ceilMoveToValue, ln, arg0, SPEED(arg1), 0,
|
||||
arg2*FRACUNIT*8*((arg3) ? -1 : 1), -1, 0, 0);
|
||||
arg2*FRACUNIT*8*((arg3) ? -1 : 1), -1, 0, 0, false);
|
||||
}
|
||||
|
||||
FUNC(LS_Ceiling_MoveToValue)
|
||||
// Ceiling_MoveToValue (tag, speed, height, negative)
|
||||
{
|
||||
return EV_DoCeiling (DCeiling::ceilMoveToValue, ln, arg0, SPEED(arg1), 0,
|
||||
arg2*FRACUNIT*((arg3) ? -1 : 1), -1, 0, 0);
|
||||
arg2*FRACUNIT*((arg3) ? -1 : 1), -1, 0, 0, false);
|
||||
}
|
||||
|
||||
FUNC(LS_Ceiling_LowerToHighestFloor)
|
||||
// Ceiling_LowerToHighestFloor (tag, speed)
|
||||
{
|
||||
return EV_DoCeiling (DCeiling::ceilLowerToHighestFloor, ln, arg0, SPEED(arg1), 0, 0, -1, 0, 0);
|
||||
return EV_DoCeiling (DCeiling::ceilLowerToHighestFloor, ln, arg0, SPEED(arg1), 0, 0, -1, 0, 0, false);
|
||||
}
|
||||
|
||||
FUNC(LS_Ceiling_LowerInstant)
|
||||
// Ceiling_LowerInstant (tag, unused, height)
|
||||
{
|
||||
return EV_DoCeiling (DCeiling::ceilLowerInstant, ln, arg0, 0, 0, arg2*FRACUNIT*8, -1, 0, 0);
|
||||
return EV_DoCeiling (DCeiling::ceilLowerInstant, ln, arg0, 0, 0, arg2*FRACUNIT*8, -1, 0, 0, false);
|
||||
}
|
||||
|
||||
FUNC(LS_Ceiling_RaiseInstant)
|
||||
// Ceiling_RaiseInstant (tag, unused, height)
|
||||
{
|
||||
return EV_DoCeiling (DCeiling::ceilRaiseInstant, ln, arg0, 0, 0, arg2*FRACUNIT*8, -1, 0, 0);
|
||||
return EV_DoCeiling (DCeiling::ceilRaiseInstant, ln, arg0, 0, 0, arg2*FRACUNIT*8, -1, 0, 0, false);
|
||||
}
|
||||
|
||||
FUNC(LS_Ceiling_CrushRaiseAndStayA)
|
||||
// Ceiling_CrushRaiseAndStayA (tag, dnspeed, upspeed, damage)
|
||||
// Ceiling_CrushRaiseAndStayA (tag, dnspeed, upspeed, damage, crushtype)
|
||||
{
|
||||
return EV_DoCeiling (DCeiling::ceilCrushRaiseAndStay, ln, arg0, SPEED(arg1), SPEED(arg2), 0, arg3, 0, 0);
|
||||
return EV_DoCeiling (DCeiling::ceilCrushRaiseAndStay, ln, arg0, SPEED(arg1), SPEED(arg2), 0, arg3, 0, 0, CRUSHTYPE(arg4));
|
||||
}
|
||||
|
||||
FUNC(LS_Ceiling_CrushRaiseAndStaySilA)
|
||||
// Ceiling_CrushRaiseAndStaySilA (tag, dnspeed, upspeed, damage)
|
||||
// Ceiling_CrushRaiseAndStaySilA (tag, dnspeed, upspeed, damage, crushtype)
|
||||
{
|
||||
return EV_DoCeiling (DCeiling::ceilCrushRaiseAndStay, ln, arg0, SPEED(arg1), SPEED(arg2), 0, arg3, 1, 0);
|
||||
return EV_DoCeiling (DCeiling::ceilCrushRaiseAndStay, ln, arg0, SPEED(arg1), SPEED(arg2), 0, arg3, 1, 0, CRUSHTYPE(arg4));
|
||||
}
|
||||
|
||||
FUNC(LS_Ceiling_CrushAndRaiseA)
|
||||
// Ceiling_CrushAndRaiseA (tag, dnspeed, upspeed, damage)
|
||||
// Ceiling_CrushAndRaiseA (tag, dnspeed, upspeed, damage, crushtype)
|
||||
{
|
||||
return EV_DoCeiling (DCeiling::ceilCrushAndRaise, ln, arg0, SPEED(arg1), SPEED(arg2), 0, arg3, 0, 0);
|
||||
return EV_DoCeiling (DCeiling::ceilCrushAndRaise, ln, arg0, SPEED(arg1), SPEED(arg2), 0, arg3, 0, 0, CRUSHTYPE(arg4));
|
||||
}
|
||||
|
||||
FUNC(LS_Ceiling_CrushAndRaiseSilentA)
|
||||
// Ceiling_CrushAndRaiseSilentA (tag, dnspeed, upspeed, damage)
|
||||
// Ceiling_CrushAndRaiseSilentA (tag, dnspeed, upspeed, damage, crushtype)
|
||||
{
|
||||
return EV_DoCeiling (DCeiling::ceilCrushAndRaise, ln, arg0, SPEED(arg1), SPEED(arg2), 0, arg3, 1, 0);
|
||||
return EV_DoCeiling (DCeiling::ceilCrushAndRaise, ln, arg0, SPEED(arg1), SPEED(arg2), 0, arg3, 1, 0, CRUSHTYPE(arg4));
|
||||
}
|
||||
|
||||
FUNC(LS_Ceiling_RaiseToNearest)
|
||||
// Ceiling_RaiseToNearest (tag, speed)
|
||||
{
|
||||
return EV_DoCeiling (DCeiling::ceilRaiseToNearest, ln, arg0, SPEED(arg1), 0, 0, -1, 0, 0);
|
||||
return EV_DoCeiling (DCeiling::ceilRaiseToNearest, ln, arg0, SPEED(arg1), 0, 0, -1, 0, 0, false);
|
||||
}
|
||||
|
||||
FUNC(LS_Ceiling_LowerToLowest)
|
||||
// Ceiling_LowerToLowest (tag, speed)
|
||||
{
|
||||
return EV_DoCeiling (DCeiling::ceilLowerToLowest, ln, arg0, SPEED(arg1), 0, 0, -1, 0, 0);
|
||||
return EV_DoCeiling (DCeiling::ceilLowerToLowest, ln, arg0, SPEED(arg1), 0, 0, -1, 0, 0, false);
|
||||
}
|
||||
|
||||
FUNC(LS_Ceiling_LowerToFloor)
|
||||
// Ceiling_LowerToFloor (tag, speed)
|
||||
{
|
||||
return EV_DoCeiling (DCeiling::ceilLowerToFloor, ln, arg0, SPEED(arg1), 0, 0, -1, 0, 0);
|
||||
return EV_DoCeiling (DCeiling::ceilLowerToFloor, ln, arg0, SPEED(arg1), 0, 0, -1, 0, 0, false);
|
||||
}
|
||||
|
||||
FUNC(LS_Generic_Ceiling)
|
||||
|
@ -618,14 +619,22 @@ FUNC(LS_Generic_Ceiling)
|
|||
}
|
||||
|
||||
return EV_DoCeiling (type, ln, arg0, SPEED(arg1), SPEED(arg1), arg2*FRACUNIT,
|
||||
(arg4 & 16) ? 20 : -1, 0, arg4 & 7);
|
||||
(arg4 & 16) ? 20 : -1, 0, arg4 & 7, false);
|
||||
}
|
||||
|
||||
FUNC(LS_Generic_Crusher)
|
||||
// Generic_Crusher (tag, dnspeed, upspeed, silent, damage)
|
||||
{
|
||||
return EV_DoCeiling (DCeiling::ceilCrushAndRaise, ln, arg0, SPEED(arg1),
|
||||
SPEED(arg2), 0, arg4, arg3 ? 2 : 0, 0);
|
||||
SPEED(arg2), 0, arg4, arg3 ? 2 : 0, 0, false);
|
||||
}
|
||||
|
||||
FUNC(LS_Generic_Crusher2)
|
||||
// Generic_Crusher2 (tag, dnspeed, upspeed, silent, damage)
|
||||
{
|
||||
// same as above but uses Hexen's crushing method.
|
||||
return EV_DoCeiling (DCeiling::ceilCrushAndRaise, ln, arg0, SPEED(arg1),
|
||||
SPEED(arg2), 0, arg4, arg3 ? 2 : 0, 0, true);
|
||||
}
|
||||
|
||||
FUNC(LS_Plat_PerpetualRaise)
|
||||
|
@ -1633,8 +1642,8 @@ FUNC(LS_FloorAndCeiling_RaiseByValue)
|
|||
FUNC(LS_FloorAndCeiling_LowerRaise)
|
||||
// FloorAndCeiling_LowerRaise (tag, fspeed, cspeed)
|
||||
{
|
||||
return EV_DoCeiling (DCeiling::ceilRaiseToHighest, ln, arg0, SPEED(arg2), 0, 0, 0, 0, 0) |
|
||||
EV_DoFloor (DFloor::floorLowerToLowest, ln, arg0, SPEED(arg1), 0, 0, 0);
|
||||
return EV_DoCeiling (DCeiling::ceilRaiseToHighest, ln, arg0, SPEED(arg2), 0, 0, 0, 0, 0, false) |
|
||||
EV_DoFloor (DFloor::floorLowerToLowest, ln, arg0, SPEED(arg1), 0, 0, 0, false);
|
||||
}
|
||||
|
||||
FUNC(LS_Elevator_MoveToFloor)
|
||||
|
@ -2952,7 +2961,7 @@ lnSpecFunc LineSpecials[256] =
|
|||
LS_NOP, // 166
|
||||
LS_NOP, // 167
|
||||
LS_NOP, // 168
|
||||
LS_NOP, // 169
|
||||
LS_Generic_Crusher2,
|
||||
LS_Sector_SetCeilingScale2,
|
||||
LS_Sector_SetFloorScale2,
|
||||
LS_Plat_UpNearestWaitDownStay,
|
||||
|
|
|
@ -52,7 +52,8 @@ void DPillar::Serialize (FArchive &arc)
|
|||
<< m_CeilingSpeed
|
||||
<< m_FloorTarget
|
||||
<< m_CeilingTarget
|
||||
<< m_Crush;
|
||||
<< m_Crush
|
||||
<< m_Hexencrush;
|
||||
}
|
||||
|
||||
void DPillar::Tick ()
|
||||
|
@ -65,13 +66,13 @@ void DPillar::Tick ()
|
|||
|
||||
if (m_Type == pillarBuild)
|
||||
{
|
||||
r = MoveFloor (m_FloorSpeed, m_FloorTarget, m_Crush, 1);
|
||||
s = MoveCeiling (m_CeilingSpeed, m_CeilingTarget, m_Crush, -1);
|
||||
r = MoveFloor (m_FloorSpeed, m_FloorTarget, m_Crush, 1, m_Hexencrush);
|
||||
s = MoveCeiling (m_CeilingSpeed, m_CeilingTarget, m_Crush, -1, m_Hexencrush);
|
||||
}
|
||||
else
|
||||
{
|
||||
r = MoveFloor (m_FloorSpeed, m_FloorTarget, m_Crush, -1);
|
||||
s = MoveCeiling (m_CeilingSpeed, m_CeilingTarget, m_Crush, 1);
|
||||
r = MoveFloor (m_FloorSpeed, m_FloorTarget, m_Crush, -1, m_Hexencrush);
|
||||
s = MoveCeiling (m_CeilingSpeed, m_CeilingTarget, m_Crush, 1, m_Hexencrush);
|
||||
}
|
||||
|
||||
if (r == pastdest && s == pastdest)
|
||||
|
@ -83,17 +84,17 @@ void DPillar::Tick ()
|
|||
{
|
||||
if (r == crushed)
|
||||
{
|
||||
MoveFloor (m_FloorSpeed, oldfloor, -1, -1);
|
||||
MoveFloor (m_FloorSpeed, oldfloor, -1, -1, m_Hexencrush);
|
||||
}
|
||||
if (s == crushed)
|
||||
{
|
||||
MoveCeiling (m_CeilingSpeed, oldceiling, -1, 1);
|
||||
MoveCeiling (m_CeilingSpeed, oldceiling, -1, 1, m_Hexencrush);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
DPillar::DPillar (sector_t *sector, EPillar type, fixed_t speed,
|
||||
fixed_t floordist, fixed_t ceilingdist, int crush)
|
||||
fixed_t floordist, fixed_t ceilingdist, int crush, bool hexencrush)
|
||||
: DMover (sector)
|
||||
{
|
||||
fixed_t newheight;
|
||||
|
@ -105,6 +106,7 @@ DPillar::DPillar (sector_t *sector, EPillar type, fixed_t speed,
|
|||
|
||||
m_Type = type;
|
||||
m_Crush = crush;
|
||||
m_Hexencrush = hexencrush;
|
||||
|
||||
if (type == pillarBuild)
|
||||
{
|
||||
|
@ -173,7 +175,7 @@ DPillar::DPillar (sector_t *sector, EPillar type, fixed_t speed,
|
|||
}
|
||||
|
||||
bool EV_DoPillar (DPillar::EPillar type, int tag, fixed_t speed, fixed_t height,
|
||||
fixed_t height2, int crush)
|
||||
fixed_t height2, int crush, bool hexencrush)
|
||||
{
|
||||
bool rtn = false;
|
||||
int secnum = -1;
|
||||
|
@ -197,7 +199,7 @@ bool EV_DoPillar (DPillar::EPillar type, int tag, fixed_t speed, fixed_t height,
|
|||
continue;
|
||||
|
||||
rtn = true;
|
||||
new DPillar (sec, type, speed, height, height2, crush);
|
||||
new DPillar (sec, type, speed, height, height2, crush, hexencrush);
|
||||
}
|
||||
return rtn;
|
||||
}
|
||||
|
|
|
@ -73,7 +73,7 @@ void DPlat::Tick ()
|
|||
switch (m_Status)
|
||||
{
|
||||
case up:
|
||||
res = MoveFloor (m_Speed, m_High, m_Crush, 1);
|
||||
res = MoveFloor (m_Speed, m_High, m_Crush, 1, false);
|
||||
|
||||
if (res == crushed && (m_Crush == -1))
|
||||
{
|
||||
|
@ -115,7 +115,7 @@ void DPlat::Tick ()
|
|||
break;
|
||||
|
||||
case down:
|
||||
res = MoveFloor (m_Speed, m_Low, -1, -1);
|
||||
res = MoveFloor (m_Speed, m_Low, -1, -1, false);
|
||||
|
||||
if (res == pastdest)
|
||||
{
|
||||
|
|
15
src/p_spec.h
15
src/p_spec.h
|
@ -490,7 +490,7 @@ public:
|
|||
};
|
||||
|
||||
DPillar (sector_t *sector, EPillar type, fixed_t speed, fixed_t height,
|
||||
fixed_t height2, int crush);
|
||||
fixed_t height2, int crush, bool hexencrush);
|
||||
|
||||
void Serialize (FArchive &arc);
|
||||
void Tick ();
|
||||
|
@ -502,6 +502,7 @@ protected:
|
|||
fixed_t m_FloorTarget;
|
||||
fixed_t m_CeilingTarget;
|
||||
int m_Crush;
|
||||
bool m_Hexencrush;
|
||||
|
||||
private:
|
||||
DPillar ();
|
||||
|
@ -516,7 +517,7 @@ inline FArchive &operator<< (FArchive &arc, DPillar::EPillar &type)
|
|||
}
|
||||
|
||||
bool EV_DoPillar (DPillar::EPillar type, int tag, fixed_t speed, fixed_t height,
|
||||
fixed_t height2, int crush);
|
||||
fixed_t height2, int crush, bool hexencrush);
|
||||
|
||||
//
|
||||
// P_DOORS
|
||||
|
@ -682,6 +683,7 @@ protected:
|
|||
fixed_t m_Speed1; // [RH] dnspeed of crushers
|
||||
fixed_t m_Speed2; // [RH] upspeed of crushers
|
||||
int m_Crush;
|
||||
bool m_Hexencrush;
|
||||
int m_Silent;
|
||||
int m_Direction; // 1 = up, 0 = waiting, -1 = down
|
||||
|
||||
|
@ -700,14 +702,14 @@ private:
|
|||
|
||||
friend bool EV_DoCeiling (DCeiling::ECeiling type, line_t *line,
|
||||
int tag, fixed_t speed, fixed_t speed2, fixed_t height,
|
||||
int crush, int silent, int change);
|
||||
int crush, int silent, int change, bool hexencrush);
|
||||
friend bool EV_CeilingCrushStop (int tag);
|
||||
friend void P_ActivateInStasisCeiling (int tag);
|
||||
};
|
||||
|
||||
bool EV_DoCeiling (DCeiling::ECeiling type, line_t *line,
|
||||
int tag, fixed_t speed, fixed_t speed2, fixed_t height,
|
||||
int crush, int silent, int change);
|
||||
int crush, int silent, int change, bool hexencrush);
|
||||
bool EV_CeilingCrushStop (int tag);
|
||||
void P_ActivateInStasisCeiling (int tag);
|
||||
|
||||
|
@ -781,6 +783,7 @@ public:
|
|||
protected:
|
||||
EFloor m_Type;
|
||||
int m_Crush;
|
||||
bool m_Hexencrush;
|
||||
int m_Direction;
|
||||
short m_NewSpecial;
|
||||
short m_Texture;
|
||||
|
@ -802,7 +805,7 @@ protected:
|
|||
fixed_t stairsize, fixed_t speed, int delay, int reset, int igntxt,
|
||||
int usespecials);
|
||||
friend bool EV_DoFloor (DFloor::EFloor floortype, line_t *line, int tag,
|
||||
fixed_t speed, fixed_t height, int crush, int change);
|
||||
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);
|
||||
private:
|
||||
|
@ -813,7 +816,7 @@ bool EV_BuildStairs (int tag, DFloor::EStair type, line_t *line,
|
|||
fixed_t stairsize, fixed_t speed, int delay, int reset, int igntxt,
|
||||
int usespecials);
|
||||
bool EV_DoFloor (DFloor::EFloor floortype, line_t *line, int tag,
|
||||
fixed_t speed, fixed_t height, int crush, int change);
|
||||
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);
|
||||
|
||||
|
|
|
@ -100,6 +100,7 @@ enum
|
|||
|
||||
static flagdef ActorFlags[]=
|
||||
{
|
||||
DEFINE_FLAG(MF, PICKUP, APlayerPawn, flags),
|
||||
DEFINE_FLAG(MF, SOLID, AActor, flags),
|
||||
DEFINE_FLAG(MF, SHOOTABLE, AActor, flags),
|
||||
DEFINE_FLAG(MF, NOSECTOR, AActor, flags),
|
||||
|
|
|
@ -75,7 +75,7 @@
|
|||
// SAVESIG should match SAVEVER.
|
||||
|
||||
// MINSAVEVER is the minimum level snapshot version that can be loaded.
|
||||
#define MINSAVEVER 810
|
||||
#define MINSAVEVER 817
|
||||
|
||||
#if SVN_REVISION_NUMBER == 0
|
||||
// This can happen if svnrevision is not updated properly (e.g. compiling while offline)
|
||||
|
|
Loading…
Reference in a new issue