Merge tag 'g2.3.2'

# Conflicts:
#	src/p_effect.cpp
#	src/p_secnodes.cpp
#	src/r_draw.cpp
#	src/r_things.cpp
#	src/win32/win32video.cpp
This commit is contained in:
nashmuhandes 2017-02-05 18:34:29 +08:00
commit 4521f9eabc
30 changed files with 141 additions and 52 deletions

View file

@ -258,5 +258,6 @@ DEFINE_SPECIAL(Ceiling_LowerByTexture, 269, 2, 4, 4)
DEFINE_SPECIAL(Stairs_BuildDownDoom, 270, 5, 5, 5) DEFINE_SPECIAL(Stairs_BuildDownDoom, 270, 5, 5, 5)
DEFINE_SPECIAL(Stairs_BuildUpDoomSync, 271, 4, 4, 4) DEFINE_SPECIAL(Stairs_BuildUpDoomSync, 271, 4, 4, 4)
DEFINE_SPECIAL(Stairs_BuildDownDoomSync, 272, 4, 4, 4) DEFINE_SPECIAL(Stairs_BuildDownDoomSync, 272, 4, 4, 4)
DEFINE_SPECIAL(Stairs_BuildUpDoomCrush, 273, 5, 5, 5)
#undef DEFINE_SPECIAL #undef DEFINE_SPECIAL

View file

@ -1040,7 +1040,11 @@ FString BuildString (int argc, FString *argv)
for (arg = 0; arg < argc; arg++) for (arg = 0; arg < argc; arg++)
{ {
if (strchr(argv[arg], '"')) if (argv[arg][0] == '\0')
{ // It's an empty argument, we need to convert it to '""'
buf << "\"\" ";
}
else if (strchr(argv[arg], '"'))
{ // If it contains one or more quotes, we need to escape them. { // If it contains one or more quotes, we need to escape them.
buf << '"'; buf << '"';
long substr_start = 0, quotepos; long substr_start = 0, quotepos;

View file

@ -675,6 +675,9 @@ DThinker *FThinkerIterator::Next (bool exact)
{ {
return thinker; return thinker;
} }
// This can actually happen when a Destroy call on 'thinker' happens to destroy 'm_CurrThinker'.
// In that case there is no chance to recover, we have to terminate the iteration of this list.
if (m_CurrThinker == nullptr) break;
} }
} }
if ((m_SearchingFresh = !m_SearchingFresh)) if ((m_SearchingFresh = !m_SearchingFresh))

View file

@ -644,6 +644,8 @@ void AInventory::BecomeItem ()
RemoveFromHash (); RemoveFromHash ();
flags &= ~MF_SPECIAL; flags &= ~MF_SPECIAL;
ChangeStatNum(STAT_INVENTORY); ChangeStatNum(STAT_INVENTORY);
// stop all sounds this item is playing.
for(int i = 1;i<=7;i++) S_StopSound(this, i);
SetState (FindState("Held")); SetState (FindState("Held"));
} }

View file

@ -307,6 +307,9 @@ void FMapInfoParser::ParseGameInfo()
GAMEINFOKEY_STRINGARRAY(finalePages, "finalePage", 8, true) GAMEINFOKEY_STRINGARRAY(finalePages, "finalePage", 8, true)
GAMEINFOKEY_STRINGARRAY(infoPages, "addinfoPage", 8, false) GAMEINFOKEY_STRINGARRAY(infoPages, "addinfoPage", 8, false)
GAMEINFOKEY_STRINGARRAY(infoPages, "infoPage", 8, true) GAMEINFOKEY_STRINGARRAY(infoPages, "infoPage", 8, true)
GAMEINFOKEY_STRINGARRAY(PrecachedClasses, "precacheclasses", 0, false)
GAMEINFOKEY_STRINGARRAY(PrecachedTextures, "precachetextures", 0, false)
GAMEINFOKEY_STRINGARRAY(PrecachedSounds, "precachesounds", 0, false)
GAMEINFOKEY_STRING(PauseSign, "pausesign") GAMEINFOKEY_STRING(PauseSign, "pausesign")
GAMEINFOKEY_STRING(quitSound, "quitSound") GAMEINFOKEY_STRING(quitSound, "quitSound")
GAMEINFOKEY_STRING(BorderFlat, "borderFlat") GAMEINFOKEY_STRING(BorderFlat, "borderFlat")

View file

@ -36,6 +36,7 @@
#include "basictypes.h" #include "basictypes.h"
#include "zstring.h" #include "zstring.h"
#include "s_sound.h"
// Flags are not user configurable and only depend on the standard IWADs // Flags are not user configurable and only depend on the standard IWADs
#define GI_MAPxx 0x00000001 #define GI_MAPxx 0x00000001
@ -120,6 +121,10 @@ struct gameinfo_t
TArray<FName> DefaultWeaponSlots[10]; TArray<FName> DefaultWeaponSlots[10];
TArray<FName> PlayerClasses; TArray<FName> PlayerClasses;
TArray<FName> PrecachedClasses;
TArray<FString> PrecachedTextures;
TArray<FSoundID> PrecachedSounds;
FString titleMusic; FString titleMusic;
int titleOrder; int titleOrder;
float titleTime; float titleTime;

View file

@ -184,7 +184,9 @@ void FLightDefaults::ApplyProperties(ADynamicLight * light) const
if (m_additive) light->flags4 |= MF4_ADDITIVE; if (m_additive) light->flags4 |= MF4_ADDITIVE;
if (m_dontlightself) light->flags4 |= MF4_DONTLIGHTSELF; if (m_dontlightself) light->flags4 |= MF4_DONTLIGHTSELF;
light->m_tickCount = 0; light->m_tickCount = 0;
if (m_type == PulseLight) switch (m_type)
{
case PulseLight:
{ {
float pulseTime = float(m_Param / TICRATE); float pulseTime = float(m_Param / TICRATE);
@ -193,6 +195,36 @@ void FLightDefaults::ApplyProperties(ADynamicLight * light) const
light->m_cycler.ShouldCycle(true); light->m_cycler.ShouldCycle(true);
light->m_cycler.SetCycleType(CYCLE_Sin); light->m_cycler.SetCycleType(CYCLE_Sin);
light->m_currentRadius = light->m_cycler.GetVal(); light->m_currentRadius = light->m_cycler.GetVal();
break;
}
case FlickerLight:
case RandomFlickerLight:
{
float minrad = float(MIN(light->m_Radius[0], light->m_Radius[1]));
float maxrad = float(MAX(light->m_Radius[0], light->m_Radius[1]));
light->m_currentRadius = clamp(light->m_currentRadius, minrad, maxrad);
break;
}
case PointLight:
light->m_currentRadius = float(light->m_Radius[0]);
break;
case SectorLight:
{
float intensity;
float scale = light->args[LIGHT_SCALE] / 8.f;
if (scale == 0.f) scale = 1.f;
intensity = light->Sector->lightlevel * scale;
intensity = clamp<float>(intensity, 0.f, 255.f);
light->m_currentRadius = intensity;
break;
}
} }
switch (m_attenuate) switch (m_attenuate)

View file

@ -1108,6 +1108,9 @@ bool DPlayerMenu::MouseEvent(int type, int x, int y)
SendNewColor (RPART(color), GPART(color), v); SendNewColor (RPART(color), GPART(color), v);
} }
break; break;
case NAME_Autoaim:
AutoaimChanged(li);
break;
} }
} }
return res; return res;

View file

@ -272,7 +272,7 @@ void P_ThinkParticles ()
auto oldtrans = particle->alpha; auto oldtrans = particle->alpha;
particle->alpha -= particle->fadestep; particle->alpha -= particle->fadestep;
particle->size += particle->sizestep; particle->size += particle->sizestep;
if (oldtrans < particle->alpha || --particle->ttl <= 0 || (particle->size <= 0)) if (particle->alpha <= 0 || oldtrans < particle->alpha || --particle->ttl <= 0 || (particle->size <= 0))
{ // The particle has expired, so free it { // The particle has expired, so free it
memset (particle, 0, sizeof(particle_t)); memset (particle, 0, sizeof(particle_t));
if (prev) if (prev)
@ -763,7 +763,7 @@ void P_DrawRailTrail(AActor *source, TArray<SPortalHit> &portalhits, int color1,
int spiralduration = (duration == 0) ? 35 : duration; int spiralduration = (duration == 0) ? 35 : duration;
p->alpha = 1.f; p->alpha = 1.f;
p->ttl = duration; p->ttl = spiralduration;
p->fadestep = FADEFROMTTL(spiralduration); p->fadestep = FADEFROMTTL(spiralduration);
p->size = 3; p->size = 3;
p->bright = fullbright; p->bright = fullbright;

View file

@ -626,7 +626,7 @@ bool EV_BuildStairs (int tag, DFloor::EStair type, line_t *line,
floor->m_PauseTime = 0; floor->m_PauseTime = 0;
floor->m_StepTime = floor->m_PerStepTime = persteptime; floor->m_StepTime = floor->m_PerStepTime = persteptime;
floor->m_Crush = (!(usespecials & DFloor::stairUseSpecials) && speed == 4) ? 10 : -1; //jff 2/27/98 fix uninitialized crush field floor->m_Crush = (usespecials & DFloor::stairCrush) ? 10 : -1; //jff 2/27/98 fix uninitialized crush field
floor->m_Hexencrush = false; floor->m_Hexencrush = false;
floor->m_Speed = speed; floor->m_Speed = speed;

View file

@ -591,6 +591,13 @@ FUNC(LS_Stairs_BuildUpDoom)
arg2, SPEED(arg1), TICS(arg3), arg4, 0, 0); arg2, SPEED(arg1), TICS(arg3), arg4, 0, 0);
} }
FUNC(LS_Stairs_BuildUpDoomCrush)
// Stairs_BuildUpDoom (tag, speed, height, delay, reset)
{
return EV_BuildStairs(arg0, DFloor::buildUp, ln,
arg2, SPEED(arg1), TICS(arg3), arg4, 0, DFloor::stairCrush);
}
FUNC(LS_Stairs_BuildDownDoom) FUNC(LS_Stairs_BuildDownDoom)
// Stair_BuildDownDoom (tag, speed, height, delay, reset) // Stair_BuildDownDoom (tag, speed, height, delay, reset)
{ {
@ -3582,6 +3589,7 @@ static lnSpecFunc LineSpecials[] =
/* 270 */ LS_Stairs_BuildDownDoom, /* 270 */ LS_Stairs_BuildDownDoom,
/* 271 */ LS_Stairs_BuildUpDoomSync, /* 271 */ LS_Stairs_BuildUpDoomSync,
/* 272 */ LS_Stairs_BuildDownDoomSync, /* 272 */ LS_Stairs_BuildDownDoomSync,
/* 273 */ LS_Stairs_BuildUpDoomCrush,
}; };

View file

@ -3379,6 +3379,11 @@ static void P_PrecacheLevel()
actorhitlist[actor->GetClass()] = true; actorhitlist[actor->GetClass()] = true;
} }
for (auto n : gameinfo.PrecachedClasses)
{
PClassActor *cls = PClass::FindActor(n);
if (cls != NULL) actorhitlist[cls] = true;
}
for (unsigned i = 0; i < level.info->PrecacheClasses.Size(); i++) for (unsigned i = 0; i < level.info->PrecacheClasses.Size(); i++)
{ {
// level.info can only store names, no class pointers. // level.info can only store names, no class pointers.
@ -3415,6 +3420,11 @@ static void P_PrecacheLevel()
hitlist[sky2texture.GetIndex()] |= FTextureManager::HIT_Sky; hitlist[sky2texture.GetIndex()] |= FTextureManager::HIT_Sky;
} }
for (auto n : gameinfo.PrecachedTextures)
{
FTextureID tex = TexMan.CheckForTexture(n, FTexture::TEX_Wall, FTextureManager::TEXMAN_Overridable | FTextureManager::TEXMAN_TryAny | FTextureManager::TEXMAN_ReturnFirst);
if (tex.Exists()) hitlist[tex.GetIndex()] |= FTextureManager::HIT_Wall;
}
for (unsigned i = 0; i < level.info->PrecacheTextures.Size(); i++) for (unsigned i = 0; i < level.info->PrecacheTextures.Size(); i++)
{ {
FTextureID tex = TexMan.CheckForTexture(level.info->PrecacheTextures[i], FTexture::TEX_Wall, FTextureManager::TEXMAN_Overridable | FTextureManager::TEXMAN_TryAny | FTextureManager::TEXMAN_ReturnFirst); FTextureID tex = TexMan.CheckForTexture(level.info->PrecacheTextures[i], FTexture::TEX_Wall, FTextureManager::TEXMAN_Overridable | FTextureManager::TEXMAN_TryAny | FTextureManager::TEXMAN_ReturnFirst);

View file

@ -116,6 +116,7 @@ public:
sightend = t2->PosRelative(task->portalgroup); sightend = t2->PosRelative(task->portalgroup);
sightstart.Z += t1->Height * 0.75; sightstart.Z += t1->Height * 0.75;
portalgroup = task->portalgroup;
Startfrac = task->Frac; Startfrac = task->Frac;
Trace = { sightstart.X, sightstart.Y, sightend.X - sightstart.X, sightend.Y - sightstart.Y }; Trace = { sightstart.X, sightstart.Y, sightend.X - sightstart.X, sightend.Y - sightstart.Y };
Lastztop = Lastzbottom = sightstart.Z; Lastztop = Lastzbottom = sightstart.Z;
@ -790,6 +791,7 @@ sightcounts[2]++;
bool traverseres = P_SightTraverseIntercepts ( ); bool traverseres = P_SightTraverseIntercepts ( );
if (itres == -1) return false; // if the iterator had an early out there was no line of sight. The traverser was only called to collect more portals. if (itres == -1) return false; // if the iterator had an early out there was no line of sight. The traverser was only called to collect more portals.
if (seeingthing->Sector->PortalGroup != portalgroup) return false; // We are in a different group than the seeingthing, so this trace cannot determine visibility alone.
return traverseres; return traverseres;
} }

View file

@ -504,7 +504,8 @@ public:
enum EStairType enum EStairType
{ {
stairUseSpecials = 1, stairUseSpecials = 1,
stairSync = 2 stairSync = 2,
stairCrush = 4,
}; };
DFloor (sector_t *sec); DFloor (sector_t *sec);

View file

@ -481,6 +481,10 @@ void S_PrecacheLevel ()
{ {
actor->MarkPrecacheSounds(); actor->MarkPrecacheSounds();
} }
for (auto i : gameinfo.PrecachedSounds)
{
level.info->PrecacheSounds[i].MarkUsed();
}
// Precache all extra sounds requested by this map. // Precache all extra sounds requested by this map.
for (i = 0; i < level.info->PrecacheSounds.Size(); ++i) for (i = 0; i < level.info->PrecacheSounds.Size(); ++i)
{ {

View file

@ -2336,6 +2336,7 @@ void ZCCCompiler::CompileFunction(ZCC_StructWork *c, ZCC_FuncDeclarator *f, bool
sym->Variants[0].Implementation->DefaultArgs = std::move(argdefaults); sym->Variants[0].Implementation->DefaultArgs = std::move(argdefaults);
} }
PClass *clstype = static_cast<PClass *>(c->Type());
if (varflags & VARF_Virtual) if (varflags & VARF_Virtual)
{ {
if (sym->Variants[0].Implementation == nullptr) if (sym->Variants[0].Implementation == nullptr)
@ -2349,7 +2350,6 @@ void ZCCCompiler::CompileFunction(ZCC_StructWork *c, ZCC_FuncDeclarator *f, bool
} }
if (forclass) if (forclass)
{ {
PClass *clstype = static_cast<PClass *>(c->Type());
int vindex = clstype->FindVirtualIndex(sym->SymbolName, sym->Variants[0].Proto); int vindex = clstype->FindVirtualIndex(sym->SymbolName, sym->Variants[0].Proto);
// specifying 'override' is necessary to prevent one of the biggest problem spots with virtual inheritance: Mismatching argument types. // specifying 'override' is necessary to prevent one of the biggest problem spots with virtual inheritance: Mismatching argument types.
if (varflags & VARF_Override) if (varflags & VARF_Override)
@ -2383,6 +2383,14 @@ void ZCCCompiler::CompileFunction(ZCC_StructWork *c, ZCC_FuncDeclarator *f, bool
Error(p, "Virtual functions can only be defined for classes"); Error(p, "Virtual functions can only be defined for classes");
} }
} }
else if (forclass)
{
int vindex = clstype->FindVirtualIndex(sym->SymbolName, sym->Variants[0].Proto);
if (vindex != -1)
{
Error(f, "Function %s attempts to override parent function without 'override' qualifier", FName(f->Name).GetChars());
}
}
} }
} }

View file

@ -407,7 +407,7 @@ public:
virtual FString GetStats() virtual FString GetStats()
{ {
FString stats; FString stats;
size_t pos, len; size_t pos = 0, len = 0;
ALfloat volume; ALfloat volume;
ALint offset; ALint offset;
ALint processed; ALint processed;
@ -429,28 +429,34 @@ public:
return stats; return stats;
} }
pos = Decoder->getSampleOffset(); if (Decoder != nullptr)
len = Decoder->getSampleLength(); {
pos = Decoder->getSampleOffset();
len = Decoder->getSampleLength();
}
lock.unlock(); lock.unlock();
stats = (state == AL_INITIAL) ? "Buffering" : (state == AL_STOPPED) ? "Underrun" : stats = (state == AL_INITIAL) ? "Buffering" : (state == AL_STOPPED) ? "Underrun" :
(state == AL_PLAYING || state == AL_PAUSED) ? "Ready" : "Unknown state"; (state == AL_PLAYING || state == AL_PAUSED) ? "Ready" : "Unknown state";
if(state == AL_STOPPED) if (Decoder != nullptr)
offset = BufferCount * (Data.Size()/FrameSize); {
else if (state == AL_STOPPED)
{ offset = BufferCount * (Data.Size() / FrameSize);
size_t rem = queued*(Data.Size()/FrameSize) - offset; else
if(pos > rem) pos -= rem; {
else if(len > 0) pos += len - rem; size_t rem = queued*(Data.Size() / FrameSize) - offset;
else pos = 0; if (pos > rem) pos -= rem;
} else if (len > 0) pos += len - rem;
pos = (size_t)(pos * 1000.0 / SampleRate); else pos = 0;
len = (size_t)(len * 1000.0 / SampleRate); }
stats.AppendFormat(",%3u%% buffered", 100 - 100*offset/(BufferCount*(Data.Size()/FrameSize))); pos = (size_t)(pos * 1000.0 / SampleRate);
stats.AppendFormat(", %zu.%03zu", pos/1000, pos%1000); len = (size_t)(len * 1000.0 / SampleRate);
if(len > 0) stats.AppendFormat(",%3u%% buffered", 100 - 100 * offset / (BufferCount*(Data.Size() / FrameSize)));
stats.AppendFormat(" / %zu.%03zu", len/1000, len%1000); stats.AppendFormat(", %zu.%03zu", pos / 1000, pos % 1000);
if (len > 0)
stats.AppendFormat(" / %zu.%03zu", len / 1000, len % 1000);
}
if(state == AL_PAUSED) if(state == AL_PAUSED)
stats += ", paused"; stats += ", paused";
if(state == AL_PLAYING) if(state == AL_PLAYING)

View file

@ -41,12 +41,12 @@ const char *GetVersionString();
/** Lots of different version numbers **/ /** Lots of different version numbers **/
#define VERSIONSTR "2.3pre" #define VERSIONSTR "2.3.2"
// The version as seen in the Windows resource // The version as seen in the Windows resource
#define RC_FILEVERSION 2,3,9999,0 #define RC_FILEVERSION 2,3,2,0
#define RC_PRODUCTVERSION 2,3,9999,0 #define RC_PRODUCTVERSION 2,3,2,0
#define RC_PRODUCTVERSION2 "2.3pre" #define RC_PRODUCTVERSION2 "2.3.2"
// Version identifier for network games. // Version identifier for network games.
// Bump it every time you do a release unless you're certain you // Bump it every time you do a release unless you're certain you

View file

@ -352,6 +352,11 @@ DFrameBuffer *Win32GLVideo::CreateFrameBuffer(int width, int height, bool fs, DF
{ {
Win32GLFrameBuffer *fb; Win32GLFrameBuffer *fb;
if (fs)
{
I_ClosestResolution(&width, &height, 32);
}
m_DisplayWidth = width; m_DisplayWidth = width;
m_DisplayHeight = height; m_DisplayHeight = height;
m_DisplayBits = 32; m_DisplayBits = 32;

View file

@ -1779,7 +1779,6 @@ DSPLYMNU_SCREENSIZE = "Screen size";
DSPLYMNU_BRIGHTNESS = "Brightness"; DSPLYMNU_BRIGHTNESS = "Brightness";
DSPLYMNU_VSYNC = "Vertical Sync"; DSPLYMNU_VSYNC = "Vertical Sync";
DSPLYMNU_CAPFPS = "Rendering Interpolation"; DSPLYMNU_CAPFPS = "Rendering Interpolation";
DSPLYMNU_COLUMNMETHOD = "Column render mode";
DSPLYMNU_WIPETYPE = "Screen wipe style"; DSPLYMNU_WIPETYPE = "Screen wipe style";
DSPLYMNU_SHOWENDOOM = "Show ENDOOM screen"; DSPLYMNU_SHOWENDOOM = "Show ENDOOM screen";
DSPLYMNU_BLOODFADE = "Blood Flash Intensity"; DSPLYMNU_BLOODFADE = "Blood Flash Intensity";

View file

@ -594,12 +594,6 @@ OptionMenu "JoystickConfigMenu"
// //
//------------------------------------------------------------------------------------------- //-------------------------------------------------------------------------------------------
OptionValue ColumnMethods
{
0.0, "$OPTVAL_ORIGINAL"
1.0, "$OPTVAL_OPTIMIZED"
}
OptionValue SkyModes OptionValue SkyModes
{ {
0.0, "$OPTVAL_NORMAL" 0.0, "$OPTVAL_NORMAL"
@ -684,7 +678,6 @@ OptionMenu "VideoOptions"
Slider "$DSPLYMNU_BLOODFADE", "blood_fade_scalar", 0.0, 1.0, 0.05, 2 Slider "$DSPLYMNU_BLOODFADE", "blood_fade_scalar", 0.0, 1.0, 0.05, 2
Slider "$DSPLYMNU_PICKUPFADE", "pickup_fade_scalar", 0.0, 1.0, 0.05, 2 Slider "$DSPLYMNU_PICKUPFADE", "pickup_fade_scalar", 0.0, 1.0, 0.05, 2
Slider "$DSPLYMNU_WATERFADE", "underwater_fade_scalar", 0.0, 1.0, 0.05, 2 Slider "$DSPLYMNU_WATERFADE", "underwater_fade_scalar", 0.0, 1.0, 0.05, 2
Option "$DSPLYMNU_COLUMNMETHOD", "r_columnmethod", "ColumnMethods"
StaticText " " StaticText " "
Option "$DSPLYMNU_WIPETYPE", "wipetype", "Wipes" Option "$DSPLYMNU_WIPETYPE", "wipetype", "Wipes"

View file

@ -99,7 +99,7 @@ include "xlat/defines.i"
97 = WALK|REP|MONST, Teleport (0, tag) 97 = WALK|REP|MONST, Teleport (0, tag)
98 = WALK|REP, Floor_LowerToHighest (tag, F_FAST, 136) 98 = WALK|REP, Floor_LowerToHighest (tag, F_FAST, 136)
99 = USE|REP, Door_LockedRaise (tag, D_FAST, 0, BCard | CardIsSkull) 99 = USE|REP, Door_LockedRaise (tag, D_FAST, 0, BCard | CardIsSkull)
100 = WALK, Stairs_BuildUpDoom (tag, ST_TURBO, 16, 0, 0) 100 = WALK, Stairs_BuildUpDoomCrush (tag, ST_TURBO, 16, 0, 0)
101 = USE, Floor_RaiseToLowestCeiling (tag, F_SLOW) 101 = USE, Floor_RaiseToLowestCeiling (tag, F_SLOW)
102 = USE, Floor_LowerToHighest (tag, F_SLOW, 128) 102 = USE, Floor_LowerToHighest (tag, F_SLOW, 128)
103 = USE, Door_Open (tag, D_SLOW) 103 = USE, Door_Open (tag, D_SLOW)
@ -126,7 +126,7 @@ include "xlat/defines.i"
124 = WALK, Exit_Secret (0) 124 = WALK, Exit_Secret (0)
125 = MONWALK, Teleport (0, tag) 125 = MONWALK, Teleport (0, tag)
126 = MONWALK|REP, Teleport (0, tag) 126 = MONWALK|REP, Teleport (0, tag)
127 = USE, Stairs_BuildUpDoom (tag, ST_TURBO, 16, 0, 0) 127 = USE, Stairs_BuildUpDoomCrush (tag, ST_TURBO, 16, 0, 0)
128 = WALK|REP, Floor_RaiseToNearest (tag, F_SLOW) 128 = WALK|REP, Floor_RaiseToNearest (tag, F_SLOW)
129 = WALK|REP, Floor_RaiseToNearest (tag, F_FAST) 129 = WALK|REP, Floor_RaiseToNearest (tag, F_FAST)
130 = WALK, Floor_RaiseToNearest (tag, F_FAST) 130 = WALK, Floor_RaiseToNearest (tag, F_FAST)
@ -259,9 +259,9 @@ include "xlat/defines.i"
254 = 0, Scroll_Texture_Model (lineid, 0) 254 = 0, Scroll_Texture_Model (lineid, 0)
255 = 0, Scroll_Texture_Offsets () 255 = 0, Scroll_Texture_Offsets ()
256 = WALK|REP, Stairs_BuildUpDoom (tag, ST_SLOW, 8, 0, 0) 256 = WALK|REP, Stairs_BuildUpDoom (tag, ST_SLOW, 8, 0, 0)
257 = WALK|REP, Stairs_BuildUpDoom (tag, ST_TURBO, 16, 0, 0) 257 = WALK|REP, Stairs_BuildUpDoomCrush (tag, ST_TURBO, 16, 0, 0)
258 = USE|REP, Stairs_BuildUpDoom (tag, ST_SLOW, 8, 0, 0) 258 = USE|REP, Stairs_BuildUpDoom (tag, ST_SLOW, 8, 0, 0)
259 = USE|REP, Stairs_BuildUpDoom (tag, ST_TURBO, 16, 0, 0) 259 = USE|REP, Stairs_BuildUpDoomCrush (tag, ST_TURBO, 16, 0, 0)
260 = 0, TranslucentLine (lineid, 168) // Changed to better reflect the BOOM default 260 = 0, TranslucentLine (lineid, 168) // Changed to better reflect the BOOM default
261 = 0, Transfer_CeilingLight (tag) 261 = 0, Transfer_CeilingLight (tag)
262 = WALK|MONST, Teleport_Line (tag, tag, 1) 262 = WALK|MONST, Teleport_Line (tag, tag, 1)

View file

@ -120,7 +120,7 @@ RetailOnly = 121
104 = WALK, Light_MinNeighbor (tag) 104 = WALK, Light_MinNeighbor (tag)
108 = WALK, Door_Raise (tag, D_FAST, VDOORWAIT) 108 = WALK, Door_Raise (tag, D_FAST, VDOORWAIT)
109 = WALK, Door_Open (tag, D_FAST) 109 = WALK, Door_Open (tag, D_FAST)
100 = WALK, Stairs_BuildUpDoom (tag, ST_TURBO, 16, 0, 0) 100 = WALK, Stairs_BuildUpDoomCrush (tag, ST_TURBO, 16, 0, 0)
197 = WALK|REP, ACS_ExecuteAlways (0, 0, 197, tag) 197 = WALK|REP, ACS_ExecuteAlways (0, 0, 197, tag)
110 = WALK, Door_Close (tag, D_FAST) 110 = WALK, Door_Close (tag, D_FAST)
119 = WALK, Floor_RaiseToNearest (tag, F_SLOW) 119 = WALK, Floor_RaiseToNearest (tag, F_SLOW)
@ -255,7 +255,7 @@ RetailOnly = 121
112 = USE, Door_Open (tag, D_FAST) 112 = USE, Door_Open (tag, D_FAST)
113 = USE, Door_Close (tag, D_FAST) 113 = USE, Door_Close (tag, D_FAST)
122 = USE, Plat_DownWaitUpStayLip (tag, P_TURBO, PLATWAIT, 0) 122 = USE, Plat_DownWaitUpStayLip (tag, P_TURBO, PLATWAIT, 0)
127 = USE, Stairs_BuildUpDoom (tag, ST_TURBO, 16, 0, 0) 127 = USE, Stairs_BuildUpDoomCrush (tag, ST_TURBO, 16, 0, 0)
131 = USE, Floor_RaiseToNearest (tag, F_FAST) 131 = USE, Floor_RaiseToNearest (tag, F_FAST)
133 = USE, Door_LockedRaise (tag, D_FAST, 0, 4) 133 = USE, Door_LockedRaise (tag, D_FAST, 0, 4)
135 = USE, Door_LockedRaise (tag, D_FAST, 0, 11) 135 = USE, Door_LockedRaise (tag, D_FAST, 0, 11)

View file

@ -66,7 +66,7 @@ Class ArtiTomeOfPower : PowerupGiver
Loop; Loop;
} }
bool Use (bool pickup) override bool Use (bool pickup)
{ {
Playerinfo p = Owner.player; Playerinfo p = Owner.player;
if (p && p.morphTics && (p.MorphStyle & MRF_UNDOBYTOMEOFPOWER)) if (p && p.morphTics && (p.MorphStyle & MRF_UNDOBYTOMEOFPOWER))

View file

@ -220,7 +220,7 @@ class Ripper : Actor
Stop; Stop;
} }
int DoSpecialDamage (Actor target, int damage, Name damagetype) override int DoSpecialDamage (Actor target, int damage, Name damagetype)
{ {
if (target is "Ironlich") if (target is "Ironlich")
{ // Less damage to Ironlich bosses { // Less damage to Ironlich bosses

View file

@ -311,7 +311,7 @@ class PhoenixFX2 : Actor
} }
int DoSpecialDamage (Actor target, int damage, Name damagetype) override int DoSpecialDamage (Actor target, int damage, Name damagetype)
{ {
if (target.player && Random[PhoenixFX2]() < 128) if (target.player && Random[PhoenixFX2]() < 128)
{ // Freeze player for a bit { // Freeze player for a bit

View file

@ -402,7 +402,7 @@ class RainPillar : Actor
// Rain pillar 1 ------------------------------------------------------------ // Rain pillar 1 ------------------------------------------------------------
int DoSpecialDamage (Actor target, int damage, Name damagetype) override int DoSpecialDamage (Actor target, int damage, Name damagetype)
{ {
if (target.bBoss) if (target.bBoss)
{ // Decrease damage for bosses { // Decrease damage for bosses

View file

@ -112,7 +112,7 @@ class Heresiarch : Actor
Stop; Stop;
} }
void Die (Actor source, Actor inflictor, int dmgflags) override void Die (Actor source, Actor inflictor, int dmgflags)
{ {
// The heresiarch just executes a script instead of a special upon death // The heresiarch just executes a script instead of a special upon death
int script = special; int script = special;
@ -698,8 +698,8 @@ class SorcBall2 : SorcBall
Actor parent = target; Actor parent = target;
Actor mo = Spawn("SorcFX2", Pos + (0, 0, parent.Floorclip + Heresiarch.SORC_DEFENSE_HEIGHT), ALLOW_REPLACE); Actor mo = Spawn("SorcFX2", Pos + (0, 0, parent.Floorclip + Heresiarch.SORC_DEFENSE_HEIGHT), ALLOW_REPLACE);
bReflective = true; parent.bReflective = true;
bInvulnerable = true; parent.bInvulnerable = true;
parent.args[0] = Heresiarch.SORC_DEFENSE_TIME; parent.args[0] = Heresiarch.SORC_DEFENSE_TIME;
if (mo) mo.target = parent; if (mo) mo.target = parent;
} }

View file

@ -28,7 +28,7 @@ class FadeSetter : Actor
RenderStyle "None"; RenderStyle "None";
} }
void PostBeginPlay() override void PostBeginPlay()
{ {
Super.PostBeginPlay(); Super.PostBeginPlay();
CurSector.SetFade(color(args[0], args[1], args[2])); CurSector.SetFade(color(args[0], args[1], args[2]));

View file

@ -241,7 +241,7 @@ class PhosphorousFire : Actor
Stop; Stop;
} }
int DoSpecialDamage (Actor target, int damage, Name damagetype) override int DoSpecialDamage (Actor target, int damage, Name damagetype)
{ {
if (target.bNoBlood) if (target.bNoBlood)
{ {