- Added DECORATE support for setting an actor's args. If this is done
it will also disable the actor's special that can be set in a map. This
is for actors that want to use A_CountdownArg or similar functions
that use the args for something different than the special's parameters.
- Converted a_sharedmisc.cpp to DECORATE.
- Added a new NActorIterator that can search for classes specified by name.
- Added a new constructor to TThinkerIterator that can search
for DECORATE defined subclasses that are not represented by a real C++ class.
- Fixed: BuildInfoDefaults must set the parent symbol table so that
all actors can get to the global symbols stored in AActor.
- Fixed some minor inconsistencies in the Arch-Vile's DECORATE definition.
- Fixed: A_VileAttack moved the flame without relinking it into the sector
lists. It also forgot to set the z-position correctly. (original Doom bug.)
- Fixed: The Doom 2 cast finale didn't work with the dynamic state name handling.
SVN r401 (trunk)
names for some DECORATE functions. Technically these will be constants
of the AActor class but that will make them accessible in all other actor
classes.
SVN r397 (trunk)
APlayerPawn::GiveDefaultInventory gave him some HexenArmor even though
he doesn't need it.
- Added custom blood type properties to DECORATE.
- Converted Blood to DECORATE and made some minor changes to the code
in preparation for custom blood types.
- Converted the bot helper things to DECORATE.
- Added damage type specific crash states.
SVN r395 (trunk)
not even zvox.wad or the skins directory.
- Minor improvement of Hexen's Demons: They now transfer the translation
to the chunks they spawn so that they look correct if they are color
translated. See Resurrection of Chaos for an example.
- Converted Key gizmos to DECORATE.
- Converted Heretic's Beast (Weredragon) to DECORATE.
- Added a randomness parameter to A_SpawnItemEx. This allows
spawning objects with a random chance without the need to write
complicated A_Jump constructs.
- Converted Heretic's Mummy to DECORATE.
- Converted Hexen's Demons to DECORATE.
SVN r393 (trunk)
- Made the Ettin's and Centaur's howling sound an actor property.
- Added A_CustomComboAttack function to finally have something that can
replace the old A_ComboAttack function.
- Added A_SpawnItemEx function that removes the problems with A_SpawnItem
and which also should make most of the A_CustomMissile abuse unnecessary.
- Added A_QueueCorpse to the list of DECORATE code pointers.
- Made the size of Hexen's corpse queue configurable by CVAR
(sv_corpsequeuesize.) Setting this CVAR to -1 will disable corpse
queuing completely so that even in Hexen all corpses will stay forever.
SVN r392 (trunk)
better emulate some calculation of internal code pointers.
- Added named RNG support to DECORATE's expression evaluator. Just use
random[name](min, max).
SVN r391 (trunk)
explaining the need to use mt.exe 6.0 or newer. Here is the note:
VERY IMPORTANT: You must copy the mt.exe from %VSINSTALLDIR%\Common7\Tools\bin
on top of the version in %VSINSTALLDIR%\VC\bin or your computer may restart
while building.
- Changed the ASecretTrigger::Activate() fix: There's no reason open scripts
shouldn't be able to activate secret triggers; players just won't get
credit for it in coop.
- Added a NULL actor check to R_SetupFrame().
- Fixed: The player sounds in DEHSUPP were defined incorrectly.
SVN r390 (trunk)
- Added MissSound parameter to A_CustomMeleeAttack.
- Converted Heretic's Snake (Ophidian) to DECORATE.
- Added an option to A_CustomMissile to jump to the see state if
the caller's target is dead.
- Fixed: A_ThrowGrenade didn't play the missile's spawn sound.
- Added MF_SPAWNSOUNDSOURCE flag so that Raven's missile spawning code
pointers can be recreated with DECORATE.
- Converted a_ravenambient.cpp to DECORATE.
SVN r388 (trunk)
- Made Hexenarmor factors configurable by DECORATE.
- Added support for selecting the invulnerability mode per item as well.
- Made Invulnerability and Healing radius behavior selectable by player
class instead of hard coding the special behavior to the Hexen classes.
SVN r379 (trunk)
- After doing some tests with state label scopes I had to conclude that
using '.' both for separating sub-state-labels and scope resolution
identifiers does not work reliably unless all actor class names were
prohibited from being used as state labels. Since that is undesirable
the only solution is to change the scope resolution operator. Fortunately
no WADs so far have used it so implementing such a breaking change isn't
a major issue. Now it uses '::', like C++ for this purpose.
- Converted Revenant, Mancubus and Pain Elemental to DECORATE.
SVN r375 (trunk)
- Added VSpeed DECORATE property so that an actor can be given an initial
vertical speed.
- Removed the barrel check in P_DamageMobj. AActor::Die is doing the same
operation unconditionally so this is redundant.
- Added A_BarrelDestroy to the list of DECORATE code pointers so that
the same effect can be recreated for other items as well.
- Renamed A_BarrelRespawn to A_Respawn, changed it so that it works for
monsters and added it to the list of DECORATE code pointers. Now Quake-style
zombies should be possible. ;)
- Changed handling of MF4_RANDOMIZE so that it applies to all actors being
spawned and not just projectiles.
- Converted Berserk and Megasphere to DECORATE.
- Fixed: HealThing should respect the stamina a player has and the Dehacked
health compatibility flag if max is 0. To do that it calls P_GiveBody now.
SVN r373 (trunk)
with an FString now.
- Fixed: The music strings in the default level info were never freed and
caused memory leaks when used repeatedly.
- Fixed: The intermusic string in the level info was never freed.
- Fixed: The default fire obituary should only be printed if the damage
came from the environment. If it comes from a monster the monster specific
obituary should be used instead.
- Added custom damage types from the floating point test release.
- Changed Pain Elemental's massacre check. Now A_PainDie checks for the damage
type and doesn't spawn anything if it is NAME_Massacre. A_PainDie can also
be used by other actors so a more generalized approach is needed than hard
coding it into the Pain Elemental.
- Converted a few of Doom's monsters to DECORATE because I couldn't test the
first version of the custom state code with the corpses inheriting from them.
- Added custom states from last year's floating point test release and fixed
some bugs I found in that code. Unfortunately it wasn't all salvageable
and it was easier to recreate some parts from scratch.
SVN r368 (trunk)
resulted in incorrect colors.
- Fixed: FFont::BuildTranslations didn't clamp the RGB color values. This
can happen if some font colors overflow or underflow due to incomplete
range specifications.
SVN r358 (trunk)
on the automap instead. If its first argument is zero, the map marker itself
appears on the automap, otherwise it is drawn on top of any actor with a TID
matching that argument. If the second argument is one, then the map marker
will only be appear if the player has previously seen the sector it is one.
You can use Thing_Activate and Thing_Deactivate on markers to turn them on
and off. And if you subclass MapMarker with DECORATE, you can easily make
your own custom markers.
- Fixed: Map markers could not be drawn partially off the map. They were
drawn either fully or not at all.
- Fixed: Map markers appeared in the wrong place on a rotated overlay map if
screenblocks < 10.
SVN r356 (trunk)
state and make its pain noise at the start of the next level.
- Fixed: The FPS counter obstructed the key display in Doom's fullscreen HUD.
SVN r348 (trunk)
- If you aren't targeting x86, m_fixed.h only includes basicinlines.h now.
- Moved x64inlines.h into basicinlines.h.
- Replaced uses of __int64 with types from doomtype.h.
- The stop console command no longer ends single player games, just the demo
that was being recorded.
- In C mode, the sc_man parser no longer allows multi-line string constants
without using the \ character to preface the newline character. This makes
it much easier to diagnose errors where you forget the closing quote of a
string.
- Fixed: V_BreakLines() added the terminating '\0' to the last line of the
input string.
- Added font as a parameter to V_BreakLines and removed its keepspace
parameter, which was never passed as anything other than the default.
SVN r331 (trunk)
- Fixed: Voodoo dolls should not start ENTER scripts.
- Fixed: ActorDamage must not parse the enclosing parentheses as part of the
expression. That will produce an error if a flag set or clear command immediately
follows.
- Fixed: P_DamageMobj ignored MF2_NODMGTHRUST if the damaging object had no
owner.
- Added a 'font' parameter to A_Print.
- Changed A_CustomMeleeAttack to take one damage parameter only. Since expressions
can be used this value is not used as a factor for a random value but as
a direct damage value instead.
- Fixed: AActor::SetState must check whether a called action function resulted
in the actor's destruction. A_Jump constructs to a 0-length terminating
state will hang if this isn't checked.
SVN r329 (trunk)
data file.
- Removed the setcolor CCMD. It's been obsolete for years, ever since color-
aware cvars were added.
- Changed V_GetColorStringByName() to return an FString, because it did a
copystring() call.
- Extended V_GetColorFromString() so that it accepts HTML-style #RRGGBB and
#RGB color strings.
SVN r313 (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)
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)
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)
longer used.
- Fixed: strifehelp.acs and the PUMPUPS cheat need to give 10 UpgradeStaminas
because that item is using Inventory::Amount now.
SVN r220 (trunk)
didn't work properly. It has to be done in the cheat code, not in
APlayerPawn::AddInventory.
- Fixed: The medikit and stimpack used a MaxAmount of 100 so that
stamina upgrades were ineffective.
SVN r214 (trunk)
while and killing centaurs with the flechette.
- Fixed: Moving to an old level in a hub caused the old player's inventory to
spawn owned by the current player (but still hanging off the old player), so
the game would hang when trying to delete it.
- Modified re2c so that it doesn't add a date to the file it generates. Thus,
if it regenerates a file during a full rebuild, SVN won't see it as a change.
Also updated it to 0.10.5.
- Fixed: SC_GetString() did not properly terminate sc_String when the last
token in the file had no white space after it. Since I could not actually
find the problem (it works fine in debug mode and I saw no logic errors),
I decided to take this opportunity to reimplement it using an re2c-generated
scanner. Now it's 1.6x faster than before and correctness is easier to
verify.
- Fixed: FMODSoundRenderer::Shutdown() also needs to reset NumChannels.
- Added back the Manifest to zdoom.rc for non-VC8 Windows compilers.
- Fixed MinGW compilation again. Now it uses the same method as Makefile.linux
to find all the source files so that it doesn't need to be manually updated
each time source files are added or removed.
- Added the SVN revision number to the version string. A new tool is used to
obtain this information from the svnversion command and write it into a
header file. If you don't have the svn command line tools installed or didn't
check it out from the repository, you can still build. I added some rules for
this to Makefile.linux, and I assume they work because they do for
Makefile.mingw.
- Fixed: MIDISong2 did not delete MusHeader in its destructor.
SVN r200 (trunk)
- Added a PickupMessage property to the internal actor parser, replaced
most of the virtual PickupMessages with it and placed the code that
reads the metadata into AInventory::PickupMessage. Now the
PickupMessage method is truly virtual and I can do:
Added a Health.LowMessage property to define double message items like
Doom's medikit in DECORATE.
- Since defining Mana3 as an ammo type and then overriding the TryPickup
method means that this item defeats all ammo checks in the game it might
as well be defined as a CustomInventory item. At least this fixes the
amount given in easy and very hard skills.
- Converted all ammo items to DECORATE.
- Changed internal property setting of ammo types and sister weapons
to use fuglyname as for DECORATE definitions. This allows to export
the ammo definitions into DECORATE definitions without doing it for
the weapons themselves.
- Replaced obituary methods with actor properties.
- Fixed: The secret map check didn't work for maps inside Zips.
SVN r196 (trunk)
- Did some very preliminary support for x64 compiling.
- Now I see why makewad is using the __fastcall calling convention by default:
Because the release zlib is built with it as well.
- Fixed: Conversion from 'const char *' to 'char *' in DEM_SAVEGAME case in
Net_DoCommand().
- Updated the project files for Visual C++ 2005.
SVN r138 (trunk)
be changed is scheduled for destruction.
- Fixed: G_FinishTravel added the player to the hash chain twice.
- Fixed: The animations for Doom's E3 intermission used incorrect patch names.
- Added a check for MF_NOLIFTDROP to PIT_CeilingRaise because the overlapping
bridges in 007LTSD got moved by this function.
SVN r136 (trunk)
memcpy to copy the player structures.
- Fixed compilation with MinGW again and removed most of the new warnings.
And following is the log that I forgot to paste in for the previous commit:
- Changed the memory management for FString. Instead of using a garbage
collected heap, it now uses normal heap calls and reference counting to
implement lazy copying. You may now use bitwise operators to move
(but not copy!) FStrings around in memory. This means that the
CopyForTArray template function is gone, since TArrays can now freely
move their contents around without bothering with their specifics.
There is one important caveat, however. It is not acceptable to blindly 0
an FString's contents. This necessitated the creation of a proper
constructor for player_s so that it can be reset without using memset. I
did a quick scan of all memsets in the source and didn't see anything else
with a similar problem, but it's possible I missed something.
- Fixed: Build tiles were never deallocated.
- Fixed: Using Build's palette.dat only got half the palette right.
SVN r117 (trunk)
other more important message types which have lower priority for some
reason.
- Added a menu option for show_messages after accidentally switching it
off far too often and wondering why no messages appear.
- Added crouching DoomPlayer sprites submitted by Enjay.
- Fixed DF_NO_CROUCH was not checked.
- Fixed: The intermission script parser had some of its cases in the
keyword parser incorrectly sorted.
- Fixed: atterm was still defined to take a STACK_ARGS function argument.
- Added an AltFlash state for weapons.
- Turned FloatSpeed into an actor property and changed the value to 5
for all floating Strife actors, as a comment in the source indicated.
(r114 below):
- Added GZDoom's code for Vavoom slope things because I wanted to test
something with a map from Silent Steel.
- Added nocrouch and allowcrouch MAPINFO commands and a DF_NO_CROUCH
dmflag.
- Added GZDoom's crouching code after cleaning it up so that adding
crouching sprites will be easier.
SVN r115 (trunk)
message. When trying to puke a script outside a map it crashed.
- Fixed: The random number generator for large numbers must mask out the
sign bit before performing a modulo.
- Now that the conversation states are pointers there is no need to make
AActor::ConversationAnimation virtual. No class overrides this method
anymore.
- Replaced AMacil1::TakeSpecialDamage with MF5_NODAMAGE.
- Fixed: AMacil2::TakeSpecialDamage and AOracle::TakeSpecialDamage didn't
check whether inflictor was NULL and crashed when used with 'kill monsters'.
- Fixed: Some Strife decorations didn't loop their animation
SVN r113 (trunk)
- Added string replacement option to obituary strings.
- Changed lock and pickup message handling so that it is either a real
string or a LANGUAGE identifier. The only reason I did the mixed format
in the first place were Hexen's lock messages but they have been
replaced by unique strings in the mean time so the feature isn't needed
any more.
- Added a flags parameter to TranslucentLine.
- Extended the second arg of Line_SetIdentification to set not only
ML_ZONEBOUNDARY but all 8 bits of the third byte in the flag word.
This allows a relatively simple means of setting all the new flags
directly.
- Moved ML_ZONEBOUNDARY to doomdata.h so that it is in the same place as the
other line flags.
- Fixed: Strife's teleport swirl didn't loop its animation.
- Fixed: Strife's rat is not supposed to be shootable.
SVN r110 (trunk)
string. With strings being passed as names this is unsafe.
- Removed unused parameter types from the function parameter parser for
DECORATE.
- Changed: All actor name parameters in DECORATE are now passed as
FNames, not as strings.
- Fixed: The MAPINFO parser stored the RedirectType as a type pointer.
But at this point DECORATE hasn't been read yet so this was limited to
the internal classes.
- Fixed: TXT_NEED_IDCARD wasn't terminated with a ';'.
- Fixed: Strife's DeadRebel was missing its DoomEdNum.
- With names as type identifiers it is no longer necessary to remap
the monster types to internal constants in A_BossDeath.
- Fixed: A_BossDeath got the string from a name - just to get a name from
the string. Using the name directly is sufficient.
SVN r103 (trunk)
- Added support for wrapping midtextures vertically.
- Since zdoom.wad is now zdoom.pk3, the default mapinfos can use full pathnames.
So now they do.
- Fixed: The DSimpleCanvas constructor used a pitch too narrow on screens wider
than 640 pixels when using a non-AMD processor and the processor's L1 cache
line size could not be determined. I think this should fix the issue of
weirdly rendered 8 pixel wide borders on the left and right of the screen that
some people experienced.
- Fixed: The secnodes were never freed.
SVN r93 (trunk)