The lump is open anyway at that time so deferring this action until the information
is needed doesn't give any speed improvements. Now GetDimensions and all its
associated overhead is gone.
- Added support for TGA textures. It can handle all of the common variations
of this format.
- Changed: GI_PAGESARERAW is no longer checked. It wasn't really necessary before
because the chance of texture misidentification is absolutely minimal.
But raw pages are now restricted to textures of type TEX_MiscPatch only.
- Changed the automap parchment to use a regular texture. The previous
FAutomapTexture is only used as a last resort fallback now. If the code
finds a recognizable graphic it will create a proper texture for it now.
- Fixed: Flats were only auto-scaled when in Doom flat format.
- Fixed: FMultiPatchTexture::CheckForHacks blindly assumed that all patches
were FPstchTextures. Since the texture code does not have any type information
I added a new flag bIsPatch for this purpose.
- Moved all texture classes into their own source files and created a new
subdirectory 'textures' for that.
- Cleaned up the texture management code and added some stricter checks for
the validity of Doom patches. The old code liked to crash when being passed
some non-graphic data.
SVN r300 (trunk)
be a default setting.
- Moved a_artiegg.cpp to g_shared and renamed it to a_morph.cpp to better reflect
its meaning.
- Fixed: AMorphProjectile's PlayerClass and MonsterClass members must be serialized
as FNames. Serializing them as ints is not safe because name indices are not
guaranteed to be the same each time the game is started. Same for APlayerPawn's
MorphWeapon member.
- Converted EggFX, ArtiEgg, PorkFX and ArtiPork to DECORATE.
- Added a new parameter to A_FireCustomMissile. Previously it always aimed
straight ahead and altered the projectile's angle according to the resulting
direction. If the 6th parameter is 1 now it will aim at the specified angle
directly.
- Changed custom morphing to be based on a new MorphProjectile class, not
the Heretic specific EggFX. The EggFX properties are now prefixed with
'MorphProjectile.'.
SVN r297 (trunk)
- Created a new MorphedMonster class that Chicken and Pig now derive from.
This class automatically takes care of unmorphing the monster when its
time is up.
- Made PlayerClass and MonsterClass properties of EggFX. You can override
these in a subclass to create new kinds of morpher projectiles. Along with
that, MorphWeapon is a new property of PlayerPawn that controls what type
of weapon you have available while morphed ("None" means you have no
weapons).
- Changed morphed monsters to record the time when they want to unmorph, not
the time left until they unmorph. This simplifies calling
P_UpdateMorhpedMonster() because you don't need to pass it a tic count.
- Added an optional second parameter to A_SpawnDebris and an optional
fifth parameter to A_SpawnItem that both do the same thing: If you set it
to 1, then the spawned actor will be assigned the same translation table
as the actor that called the function.
- Moved the blood colorization in P_SpawnBlood() ahead of the SetDamage()
call so that the blood color will available to the states of the blood
actor.
- Extended the puke command so that giving it a negative script number will
act like ACS_ExecuteAlways and always execute the script. (Ugh. Why did I
use's Raven's cheat code to name this command?)
SVN r296 (trunk)
down version of the library with the ZDoom source. (It actually uses less
space than zlib now.) Unix users probably ought to use the system-supplied
libjpeg instead. I modified Makefile.linux to hopefully do that. I'm sure
Jim or someone will correct me if it doesn't actually work.
SVN r293 (trunk)
probably switch to the IJG library once I pare it down. (Ken's code is 18K
of C source but does not support progressive JPEG. The IJG library is over
a megabyte of source and supports pretty much everything you would ever
need ever.)
- Fixed endianness issue in FTextureManager::CreateTexture().
- Added support for interlaced PNGs. Now ZDoom is a mostly complete PNG
reader. The only thing missing is 48-bit RGB and 16-bit grayscale support,
which are just wastes of bits here, but also less likely to appear than
an interlaced PNG. (However, if you are using interlaced PNGs for textures,
then you are needlessly wasting space, since the image won't display
progressively.)
- Fixed: Writing named screenshots didn't work.
SVN r292 (trunk)
- Bumped savegame version, min. savegame version, netgame version and
demo version because the inventory and damage changes are incompatible
with the old code.
SVN r289 (trunk)
ReplaceTextures (str old_texture, str new_texture, optional bool not_lower,
optional bool not_mid, optional bool not_upper, optional bool not_floor,
optional bool not_ceiling); and
SectorDamage (int tag, int amount, str type, bool players_only, bool in_air,
str protection_item, bool subclasses_okay);
- Added the vid_nowidescreen cvar to disable widescreen aspect ratio
correction. When this is enabled, the only display ratio available is 4:3
(and 5:4 if vid_tft is set).
- Added support for setting an actor's damage property to an expression
through decorate. Just enclose it within parentheses, and the expression
will be evaluated exactly as-is without the normal Doom damage calculation.
So if you want something that does exactly 6 damage, use a "Damage (6)"
property. To deal normal Doom missile damage, you can use
"Damage (random(1,8)*6)" instead of "Damage 6".
- Moved InvFirst and InvSel into APlayerPawn so that they can be consistantly
maintained by ObtainInventory.
SVN r288 (trunk)
damage is truly thrustless. The 'thrustless' parameter disabled all
thrust done by PIT_RadiusDamage but not the one done by P_DamageMobj.
Also gave Hexen's poison cloud the MF3_BLOODLESSIMPACT flag and made
spawning of blood decals in PIT_RadiusAttack depend on that. Since with
these changes the 'bombthrustless' argument to P_RadiusAttack is no
longer useful I removed it.
SVN r285 (trunk)
- Fixed: CheckActorInventory stored the return value in the wrong address
on the ACS stack.
- Fixed: Skin sounds weren't properly restored after a SNDINFO reset.
- Added a more flexible ACS ChangeLevel function. It gets passed a level name
instead of a level number and has several additional options (e.g. changing
skill, starting the map without monsters and clearing the players' inventories. (UNTESTED!)
- Changed Thing_Activate so that passing a tid of 0 activates the calling actor.
- Changed Thing_Remove so that passing a tid of 0 removes the calling actor.
- Added DECORATE parameters to A_Saw.
SVN r283 (trunk)
that if it didn't have any strings, then it didn't matter what it calculated
for the location of the string table because it would never be referenced.
While this is true for a script all by itself, it means a crash if you have
a map script without strings that imports a library with strings and the
library tries to use one of its strings.
SVN r281 (trunk)
is not available under Windows 95. Since this is (or at least should be) the
only thing preventing us from running under Windows 95, I added a stub that
replaces __imp__IsDebuggerPresent@0 with a pointer to a function that checks
for the real thing.
SVN r279 (trunk)
AxePuff, not the weapon itself.
- Fixed: P_RunEffects used the consoleplayer's camera without checking its
validity.
- Fixed: CopyFriendliness needs to copy target to LastHeard as well in order
to make newly spawned monsters chase their spawner's target.
SVN r278 (trunk)
meaningful message instead of the nondescript
'Tried to spawn a class-less actor'.
- Converted AGlassJunk to DECORATE and made the spawn function a little
more flexible so that replacing the shard is easier.
- Converted ABloodSplatter to DECORATE.
- Removed A_Jiggle because it never worked properly.
- Changed DECORATE parser to allow commas between arguments for multi-
argument properties. For all newly added properties this format will
become mandatory but for backwards compatibility it is optional for
old ones.
- Added a check for negative indices to TAutoGrowArray::SetVal to prevent
passing an index of -1 from crashing the game.
- Fixed: Morphing must clear the weapon's flash sprite.
- Fixed: Resurrecting a morphed player caused a crash.
- Fixed: Random sounds that recursively refer to themselves caused a stack
overflow. Now they print a warning and get ignored.
SVN r277 (trunk)
- Changed A_AlertMonsters so that it can be placed directly in a weapon state.
- Fixed: Frozen corpses of stealth monsters were invisible.
- Added: Calling Radius_Quake with a tid of 0 now uses the activator
as the quake's center.
SVN r275 (trunk)
definitions. The SimpleProjectile class is gone and it uses the meta
data and A_ExplodeParms instead now.
- Removed the deprecation warnings for explosion parameters again because
the new system is fully inheritable and therefore useful.
- Changed the explosion properties into meta data and adjusted A_ExplodeParams
to use these when called without any parameters. Also removed all special
parsing for A_Explode so now this function can be called with expressions
like any other function.
- Changed DECORATE parsing so that functions with completely optional
parameter lists don't create an empty list when called without parameters.
SVN r274 (trunk)
- Fixed: Friendlies would not turn to face you when you engaged them in
conversation, nor would they reliably return to their original facing when
you stopped talking to them.
- Added deprecation warnings for the DontHurtShooter, ExplosionRadius, and
ExplosionDamage actor "properties." They were considered deprecated before;
now this is explicitly stated when they are used. The problem with them is
that they are not really properties and do not behave like other properties
and cannot be inherited, because they are really just an alternate way of
specifying parameters for A_Explode. (Anything that currently prints a
deprecation warning will be removed completely in 2.2.0, which will be the
version where custom state labels make their debut.)
SVN r272 (trunk)
intelligently pick the value to use for TranslucentLine's second argument.
- Added a queryiwad_key cvar to control which key can force the IWAD selection
to appear. It can be either "shift" or "control". Any other value will
disable its functionality.
- Fixed: A_SkullPop() and A_FreezeDeathChunks() did not transfer the player's
inventory to the new dismembered head "player".
SVN r268 (trunk)
class menu was present so instead of starting the game specific skill menu
it always started Hexen's.
- Fixed: When a non-player tried to play a player sound it tried to access
the actor object as an APlayerPawn.
- Changed PlayAttacking2 to always use the melee state instead of different
implementations per player and hard coding it to MissileState+1. Also
changed PlayAttacking for the HereticPlayer to use the same animation as
PlayAttacking2. Now the special handling for Heretic in the FireWeapon
functions can be removed.
For R258:
- Fixed: PlayerStartItem created a duplicate of the item's class name before
converting it into an FName.
- Removed game check for Doom from P_BloodSplatter. The BloodSplatter actor
is compatible with all games now so the explicit handling is no longer needed.
- Moved replacement handling back into AActor::StaticSpawn but controlled
by a (mandatory) parameter. Also added replacement to most other
instances in the game where non-inventory items are spawned. Replacement is safe
nearly everywhere except for inventory related spawns.
- Fixed: Due to the player class inclusion A_NoBlocking never called
NoBlockingSet for monsters.
- Changed: Sounds can be specified by full path now in SNDINFO and S_SKIN.
SVN r259 (trunk)
didn't count at all - not even toward the global level statistics.
- ...and removed it again. It was not an accident. The only reason the PowerupGiver
had its own RespawnTics was to account for the pickup flash delay.
But that is better handled by checking the flag and adding the additional 30
tics in AInventory::Hide because then it affects all items that have one -
and only those. The AT_GAME_SET function didn't work anyway because it was
called after parsing DECORATE.
SVN r253 (trunk)
here the game filter is irrelevant and there's nothing that should prevent
the HereticPlayer being added to a Hexen game, for example.
- Changed: The addplayerclass CCMD was far too paranoid and needlessly aborted
the game for any error being encountered. Since an empty player class list
is checked for elsewhere outputting the messages to the console is sufficient.
SVN r251 (trunk)
so now it is available in all games.
- Replaced the call to A_FlameSnd in the HereticPlayer's burn death sequence
with A_FireScream and defined *burndeath for Heretic.
- Added Grubber's custom player class support.
SVN r250 (trunk)
greater flexibility in what can be replaced (replaced actors need not be ancestors
of actors that replace them) at the expense of not having universal actor
replacement. Instances where replacements work:
- Line specials that spawn things (Thing_Spawn and related)
- ACS spawning commands (SpawnSpot and the like)
- Spawning mapthings at level load time in P_SpawnMapThing()
- Spawning items off of dead dudes in P_DropItem()
- The A_SpawnItem decorate function
- The summon and summonfriend console commands
- ThingCount will count both original actors and their replacements as the same
things.
TBD: Should the ACS inventory functions use replacements too, or not?
SVN r249 (trunk)
because PClass::CreateDerivedClass() did not initialize everything before calling
InsertIntoHash().
- Fixed: Forcefully removing a weapon from a player's inventory would not reset
the player's refire counter.
- Fixed: FreeKeySections() was called before M_SaveDefaults() during shutdown,
so all custom keys would go to a "(null)" section instead of their intended
section.
SVN r248 (trunk)
savegames at this point in time.
- Fixed: R_ClearPlanes() did not clear skybox planes for a full clear.
- Streamlined zip file loading by delaying the processing of the local file
header until it is actually needed.
SVN r247 (trunk)
- Fixed: CCMD(dir) passes FStrings directly to Printf.
For R241:
- Fixed: The defaultbind command still treated the bindings as char pointers and
as a result didn't work.
- Added SpawnSpotFacing ACS function which is the same as SpawnSpot but it uses
the map spot's angle.
- Added ThingCountName ACS function which is the same as ThingCount but it takes
an actor's type name instead of a spawn ID.
SVN r242 (trunk)
ceiling and floor of the front sector, the renderer did not add it to the
solid clip list.
- Blends created with the ACS fade commands now degrade to transparent overlays
when the console is visible, just as they do for the menu.
SVN r240 (trunk)
using duplicate DoomEdNums and will affect all attempts to spawn the
replaced actor. However, because this happens for all spawns and not just
at map load, the replacing actor must be compatible with the replaced
actor, which means that an actor can only serve as a replacement for one
of its baseclasses. For example, if you want to use a modified imp, you can
use this DECORATE:
actor MyImp : DoomImp replaces DoompImp
{
// Put changed properties here
}
- New: The IWAD dialog now remembers the last IWAD you picked and
automatically highlights it the next time you run the game. This also
applies if you check "Don't ask me this again": The IWAD selected will be
the one that gets automatically loaded, not the one located first. (Using
the -iwad parameter will not change the default IWAD.) In addition, you
can now bring the dialog up even if you disable it by holding down SHIFT
during startup.
- Changed ExtractFilePath() and ExtractFileBase() to return FStrings instead
of writing to a provided output buffer. ExtractFileBase() can also
optionally keep the file's extension in the result.
- Removed the -heapsize parameter entirely. The informational message should
no longer be needed.
- Removed -maxdemo parameter. There's no point to having it around since
the demo buffer grows automatically.
SVN r238 (trunk)