- 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)
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)
- 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)
- 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)
- Converted a_zombie.cpp and most of a_strifestuff.cpp to DECORATE.
- Converted a_strifekeys.cpp to DECORATE and moved the pickup messages to the
string table.
- Removed the WIF_HITS_GHOSTS weapon flag and replaced it with MF2_THRUGHOST.
There is no need to keep two flags around with virtually the same meaning.
- Changed the ShadowArmor to use the VISIBILITYPULSE flag to change its translucency.
It looks much better now than the cheap code pointer based blinking it used before.
- Converted most of a_strifeitems.cpp to DECORATE and moved the pickup messages
to the string table.
- Converted a_strifearmor.cpp to DECORATE and moved the pickup messages to the
string table.
- Moved the messages for killing spectres to the string table.
- Converted the quest items to DECORATE. Also changed A_GiveQuestItem to get
the messages it prints from the string table instead of the quest item's tag
string.
May 5, 2006 (Changes by Graf Zahl)
- Removed the hopelessly outdated thingdef_doc.txt file from the repository.
- Converted a_peasant.cpp and a_ratbuddy.cpp to DECORATE.
- Fixed: C_DoKey didn't treat an empty string as 'no binding' when checking for
valid double bindings.
- Converted a_merchants.cpp to DECORATE.
- Added MF5_NODAMAGE flag to generalize the behavior of Strife's merchants which
can be shot but take no damage from getting hurt.
- Converted a_beggars.cpp to DECORATE.
- Added an Inventory.GiveQuest property. This makes it possible to define all of
Strife's original items that also give a quest item in DECORATE but it is also
useful to define items like the ones in Day of the Acolyte without ugly workarounds.
- Added a Tag property and Strife teaser conversation IDs to DECORATE so now it is
possible to define many of Strife's items.
- Added a FastSpeed property to DECORATE so that projectiles can finally be
assigned a higher speed for fast mode.
- Added a ACS_LockedExecuteDoor special. It is basically the same as the existing
ACS_LockedExecute but it uses the 'door' message instead of 'remote'. This
cannot be integrated into ACS_LockedExecute because all its arguments are already
in use.
- Added a fully customizable A_CustomMeleeAttack function for DECORATE.
SVN r83 (trunk)
- Removed doom.x, heretic.x and strife.x from the SVN repository. These
are generated files.
- Fixed: A_PainDie has to check whether a valid target exists before
calling IsFriend.
- Fixed: FDecalLib::FindAnimator needs a signed counter to work properly.
May 1, 2006 (Changes by Graf Zahl)
- Added support for game specific pickup messages, if only to be able
to define Raven's invulnerability item in DECORATE.
- Removed A_TreeDeath because it is no longer used.
- Fixed: When picking up a PowerupGiver for an active powerup the
blend color and the duration were transferred to a temorary item
and never took effect. They have to be trnasferred to the newly created
powerup item before trying to give it to the player, not afterward.
- Made the colormap of the InvulnerabilitySphere item specific.
The base power class still needs to have its color adjusted
per game though and since Raven's invulnerability item is used in both
Hexen and Heretic it can't define its own colormap/blend.
- Separated the invulnerability colormaps from the game being played
and made them item specific. They can also be specified as regular
blend colors in DECORATE now.
- Converted a_hereticarmor.cpp and most of a_doomartifacts.cpp,
a_hereticartifacts.cpp and a_heretickeys.cpp to DECORATE.
- Changed the Soulsphere to be a real health item with the Dehacked
modifications made in d_dehacked.cpp as for most other items which
need to be adjusted.
- Added IF_BIGPOWERUP flag to AInventory to expose the RESPAWN_SUPER
dmflag to DECORATE. Also removed the now obsolete ShouldRespawn methods
from AInvulnerabilitySphere and ABlurSphere.
- Converted a_splashes.cpp to DECORATE.
- Converted most of a_debris.cpp to DECORATE.
SVN r73 (trunk)