Commit graph

304 commits

Author SHA1 Message Date
Randy Heit
3b2c2efcb1 - Version bump to 2.1.7.
- Fixed: Placing a /* */ comment at the very end of a file without a
  terminating newline would not parse reliably.
- Added a NULL WallSpriteTile check to R_RenderDecal().


SVN r365 (trunk)
2006-10-31 00:47:05 +00:00
Christoph Oelckers
88ca8e630c - Changed parameter storage for states to use a separate member variable
instead of forcing it into misc1/misc2. Although this increases the EXE's
  size by 30k it has several advantages:
  * State parameters are no longer limited to 65535 for all states combined.
  * State parameters can be used with long durations.
  * Some special handling in the weapon state set functions can be removed.


SVN r364 (trunk)
2006-10-29 11:01:00 +00:00
Christoph Oelckers
b178bb2612 - Fixed: The MinotaurFriend's MF4_NOTARGETSWITCH was put on AMinotaurFX1.
SVN r363 (trunk)
2006-10-27 08:20:54 +00:00
Randy Heit
bcca366e8f - Removed A_JumpSet and merged its functionality with A_Jump by turning
A_Jump into a varargs function.
- Fixed: P_MorphPlayer() should check that the desired type is actually a
  PlayerPawn.
- Added an optional parameter to the morphme ccmd that specifies the player
  class to morph into.
- Changed the SetActorPitch, SetActorAngle, Thing_Spawn*, Thing_Projectile*,
  and Thing_Move functions so that TID 0 affects the activator.


SVN r362 (trunk)
2006-10-27 03:03:34 +00:00
Christoph Oelckers
753f280e04 - Moved the sector type translation for Doom format maps into a simple lump
in zdoom.pk3.
- Changed Line_SetIdentification so that the fifth arg is a high-byte for the line ID.


SVN r361 (trunk)
2006-10-25 16:21:08 +00:00
Randy Heit
2efba66558 - Added the A_JumpSet function for what seems to be a fairly common scenario.
It is like A_Jump, except it accepts up to 20 jump targets. The jump
  probability is still the first parameter and controls whether any jump is
  taken at all; use 256 if you always want to jump. If a jump is taken, then
  one of the jump targets will be chosen at random, with each target having
  an equal chance of being chosen.
- Fixed: The unfreeze ccmd was not multiplayer-safe. And I renamed it to thaw,
  since it has nothing to do with the freeze ccmd.


SVN r360 (trunk)
2006-10-24 02:32:12 +00:00
Christoph Oelckers
0d5e3cf97e - Added MF5_PIERCEARMOR flag that allows damaging objects that aren't
affected by armor.
- Added an unfreeze CCMD so that frozen players can be unfrozen for testing.
- Added special death states for projectiles hitting actors.
- Added ACS SetActorPitch/GetActorPitch functions.
- Added cameraheight property for actors.


SVN r359 (trunk)
2006-10-22 10:32:41 +00:00
Christoph Oelckers
fb5f4a132b - Fixed: The yellow color range contained gaps in its definition which
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)
2006-10-21 09:01:45 +00:00
Randy Heit
dd5f01b91e - Fixed: ExpData::EvalConst() did not NULL the children pointers for binary
operators after deleting them, so ~ExpData() would try to delete them again
  later.


SVN r357 (trunk)
2006-10-21 04:38:57 +00:00
Randy Heit
ef1a5a115f - Added a new MapMarker actor. Instead of appearing in the 3D view, it appears
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)
2006-10-20 04:04:04 +00:00
Randy Heit
35ca16ba4f - Added the MF2_PASSMOBJ for P_Thing_Spawn() from January 4, 2003, to
DLevelScript::DoSpawn().
- Changed VectorNormalize() (and VectorNormalize2) to use doubles for storing
  the vector lengths, fixing desyncs between GCC/VC++ games that happened
  because the two compilers produced slightly different results for some
  slopes. GCC kept them in registers, so they were never truncated to floats.
  VC++ stored them to memory and reloaded them in order to truncate them to
  the defined precision. Lesson learned: Floating point numbers in local
  variables should always be doubles to produce the best code with VC++ that
  has the best chance of matching GCC's default behavior.
- Removed netget and netsend function pointers. PacketGet and PacketSend are
  now called directly.
- Fixed: Watching a demo from the point of view of someone other than the
  first player could cause a crash when the demo ended.
- Removed invcount from the expression evaluator at Grubber's suggestion,
  because it doesn't work.
- Fixed: vid_nowidescreen should fire off setsizeneeded so that changes to it
  can happen immediately instead of at the next resolution change.


SVN r355 (trunk)
2006-10-20 01:58:26 +00:00
Randy Heit
7c1fbe7ee5 - Modified the way autosaves are done. Instead of setting gameaction to
ga_autosave, write DEM_CHECKAUTOSAVE to the net stream. When this is
  processed, it will check if it's okay to do an autosave. If it is, it writes
  DEM_DOAUTOSAVE to the net stream, which the sets gameaction to ga_autosave.
  Essentially, about half of the functionality was moved out of G_DoAutoSave()
  and into Net_DoCommand().
- Minor changes to OS detection: The os_WinNT enumeration has been renamed to
  os_WinNT4, since every new OS coming out of Microsoft these days is
  essentially NT. NT 5.2 and 6.0 are now properly identified as "Windows
  Server 2003" and "Windows Vista" respectively, and any unknown NT versions
  Microsoft introduces in the future will now be displayed as "Windows NT"
  instead of "Windows 2000" if the minor version is 0 and "Windows XP" if the
  minor version is non-0. Win32s detection has also been removed. Presumably
  if somebody is foolish enough to try to run this on Windows 3.x with Win32s,
  it won't even load due to missing DLLs.
- Fixed: Demos with NETD chunks should not set netgame to true unless they
  have more than one player. And since netdemo is ignored if netgame is
  false, it doesn't need to set that either.
- Fixed: FTexture::GetScaled* functions did not check for scale values of 0.


SVN r354 (trunk)
2006-10-19 20:20:56 +00:00
Christoph Oelckers
39d2ef0460 - Changed the rocket so that the FX_ROCKET flag is set in the actor
definition and not in BeginPlay.
- Changed the special explosion behavior of the rocket to a flag
  (MF5_DEHEXPLOSION) so that its effects can be used on other actors
  as well without having to inherit from the rocket.


SVN r353 (trunk)
2006-10-15 20:27:16 +00:00
Christoph Oelckers
92c3a89255 - Fixed: PrintAlias passed FString objects directly to Printf.
- Added bitwise not (~) operator to ACS.


SVN r352 (trunk)
2006-10-09 15:55:47 +00:00
Christoph Oelckers
3dabd38359 - Fixed: Hires texture replacements must call AddPatch if the texture
isn't defined yet in order to replace lumps that are not in the
  list of preinitialized graphics.
- Changed font initialization to occur after textures have been completely
  initialized. This is necessary so that the font characters can be
  replaced with hires versions.


SVN r351 (trunk)
2006-10-06 21:07:58 +00:00
Christoph Oelckers
6fe9c98b47 - Fixed: Hires texture replacements and auto-scaled flats require the
bWorldPanning flag. Also added some NULL pointer checks to the
  hires texture loading code.
- Added Sector_SetFloorScale2 and Sector_SetCeilingScale2 line specials.
  They are mostly the same as Sector_Set*Scale but take fixed point parameters.
  This makes them easier to use and more precise than the old ones which
  offered very small fractional precision.
- Changed Thing_Deactivate so that passing a tid of 0 deactivates the calling 
  actor.
- Added MeansOfDeath parameter to DamageThing.


SVN r350 (trunk)
2006-10-05 20:32:16 +00:00
Randy Heit
2c2261884c SVN r349 (trunk) 2006-10-05 03:30:44 +00:00
Christoph Oelckers
28ea15d8f4 - When exiting the level on a damaging floor the player could be in the pain
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)
2006-10-04 07:45:44 +00:00
Randy Heit
65bb04b7e8 - Fixed: V_BreakLines() failed to produce output for the final line if it was
only one character long.
- Fixed: When players respawned in multiplayer, scripts that started on their
  old body kept executing on that body instead of being transferred to the new
  one. I'm doing this with general pointer substitution now, so everything
  that pointed to the old body will use the new one; not sure if that's best,
  or if it should applied exclusively to scripts, though.
- Fixed: Hexen's delay ACS command actually waited one extra tic. Now if
  you're playing Hexen and an old-style ACS script delays it will wait one
  extra tic in ZDoom as well.
- Fixed: When G_FinishTravel() created a temporary player, P_SpawnPlayer()
  thought the old player actor was a voodoo doll and stopped its scripts
  and moved its inventory.


SVN r347 (trunk)
2006-10-03 03:14:28 +00:00
Randy Heit
c0bd4e54f4 - Fixed: player_t::GetSpawnClass() always returned the spawn flags for the
local player, so co-op games would spawn only the things relevant for the
  local player and not all the things relevant for all players.


SVN r344 (trunk)
2006-10-01 01:38:37 +00:00
Christoph Oelckers
fa2fc3f4d7 - Fixed: Default flags for APlayerPawn and APlayerChunk were not defined.
SVN r343 (trunk)
2006-09-30 22:28:38 +00:00
Christoph Oelckers
a3f39c3789 - Fixed: Monsters should never target friends, even if the friendliness
state has changed since the target has been acquired.
- Fixed: Multiplayer telefrag obituaries must be handled before weapon
  dependent obituary messages.


SVN r341 (trunk)
2006-09-28 07:37:19 +00:00
Randy Heit
6c3b569e66 - Fixed GCC compilation again.
- PClass::StaticInit() now sorts the class metadata so that operations that
  iterate over it (such as the "give all" cheat) are compiler-independant.


SVN r340 (trunk)
2006-09-27 04:56:18 +00:00
Christoph Oelckers
a4a23d1b25 - Fixed: ACustomInventory::CallStateChain couldn't be called recursively
so any item that was giving another CustomInventory item didn't work
  as intended.
- Fixed: CustomInventory items didn't process A_Jump... commands properly
  for non-players.


SVN r339 (trunk)
2006-09-25 07:48:52 +00:00
Christoph Oelckers
adf6579b37 - Fixed: Starting a new game didn't remove the deferred scripts.
SVN r337 (trunk)
2006-09-23 20:14:06 +00:00
Randy Heit
3deb4e631e - Fixed: FNodeBuilder::ShoveSegBehind needs to check that the result from
Heuristic is positive, not just non-zero.


SVN r336 (trunk)
2006-09-23 02:48:39 +00:00
Christoph Oelckers
bbfc149bd7 - Fixed: Summoned friendly monsters added to the total kill count.
SVN r334 (trunk)
2006-09-20 08:09:00 +00:00
Randy Heit
b132575533 - Added a dialog that gives the user the chance to fix things if the config
could not be saved for some reason.
- Added the writeini console command to write the config file, optionally
  specifying a specific file name for it.
- Fixed: "Multiplayer" demos that only had one player were not played back
  properly because the demo playback code only checked the number of players
  to determine if it should be played as a netdemo.


SVN r333 (trunk)
2006-09-20 02:00:19 +00:00
Randy Heit
419724dd02 - Assembly code is disabled when building with __APPLE__ defined, for now.
- 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)
2006-09-19 23:25:51 +00:00
Christoph Oelckers
73032c2f3d - Fixed: Texture scale calculations for HIRESTEX were incorrect.
SVN r330 (trunk)
2006-09-17 15:45:27 +00:00
Christoph Oelckers
782b8a3b92 - Fixed: The sky scrolling calculations caused an integer multiplication overflow.
- 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)
2006-09-17 10:43:51 +00:00
Randy Heit
b951721c1b - Moved the vid_fps display to the upper-right of the screen.
- The stat display can now show multiple stats at once.


SVN r328 (trunk)
2006-09-14 03:06:09 +00:00
Randy Heit
c412b42703 - Fixed: cycle_t was still a DWORD and not a QWORD under GCC.
- The stat meters now return an FString instead of sprintfing into a fixed
  output buffer.
- NOASM is now automatically defined when compiling for a non-x86 target.
- Some changes have been made to the integral types in doomtype.h:
  - For consistancy with the other integral types, byte is no longer a
    synonym for BYTE.
  - Most uses of BOOL have been change to the standard C++ bool type. Those
    that weren't were changed to INTBOOL to indicate they may contain values
    other than 0 or 1 but are still used as a boolean.
  - Compiler-provided types with explicit bit sizes are now used. In
    particular, DWORD is no longer a long so it will work with both 64-bit
    Windows and Linux.
  - Since some files need to include Windows headers, uint32 is a synonym
    for the non-Windows version of DWORD.
- Removed d_textur.h. The pic_t struct it defined was used nowhere, and that
  was all it contained.


SVN r326 (trunk)
2006-09-14 00:02:31 +00:00
Christoph Oelckers
06630b0fee - Added support for scaled textures to DCanvas::DrawTexture.
- Changed deh.MaxHealth use to be consistent with other source ports.
- Added NULL pointer checks to APlayerPawn's state set functions. If these
  remove the player from the game a crash is the inevitable result.


SVN r325 (trunk)
2006-09-09 08:55:47 +00:00
Randy Heit
4999c3b4aa - Fixed: Weapons did not give you double ammo at baby and nightmare skills.
- Fixed: SetTexture() in p_setup.cpp assumed that all color values were
  six characters. Although this was the intended way to specify colors,
  earlier versions did no error checking, so other lengths worked too.
- Fixed: FPatchTexture waited until MakeTexture() to call CalcBitSize(),
  so the width and height bit sizes weren't available when using it as a
  source for a warp texture.
- Fixed: R_InitSkyMap() should only warn about two sky textures not being
  the same height when they are used as part of a double sky.
- Added a NULL state check in AActor::Tick() before advancing the current
  state. Note that this should not happen, so there's an assert there for
  the debug build as well as a regular check for the release build.


SVN r324 (trunk)
2006-09-09 01:14:13 +00:00
Randy Heit
05265c3213 - Version bump to 2.1.5.
- Fixed: P_LoadSegs() checked for invalid vertices too late.


SVN r320 (trunk)
2006-09-01 22:09:03 +00:00
Randy Heit
da32156d41 - Changed: Starting a new game or reloading an old one reset the chasecam.
SVN r319 (trunk)
2006-09-01 01:52:50 +00:00
Randy Heit
c87be34b08 - Removed the r: ACS print cast. You can do it yourself with s: and an array.
- Changed all the bool arguments to the ACS ReplaceTextures and SectorDamage
  commands with a single flags argument. SectorDamage also gained extended
  functionality: you can now make it hurt only players, only non-players, or
  both. Previously, hurting only non-players was not possible.
- Added the HUDMSG_COLORSTRING flag for ACS hudmessages. If you OR it in with
  the message type, the color will be treated as a string naming the color
  you want to use, so now you can use custom colors with hudmessages.


SVN r318 (trunk)
2006-09-01 01:08:27 +00:00
Randy Heit
b1e564d907 - Added the FNameNoInit class that is exactly like FName except it does not
initialize its index, so it can be used from inside Actors without
  overwriting the runtime default value.
- V_BreakLines() now returns an array of FStrings instead of char *'s.
- Added support for custom text colors in messages like this:
    print (s:"\c[Chartreuce]This text is in the color 'Bleargh'");
  This also obsoletes some of the functionality of the r: print specifier
  before it even saw a release version, because you can do this with the
  standard colors too:
    print (s:"\c[Green]Some text");
- Added two new decorate functionns: A_PlaySoundEx("sound_name", "channel"
  [, bLooping]) and A_StopSoundEx("channel"), where "channel" is "Auto",
  "Weapon", "Voice", "Item", "Body", "SoundSlot5", "SoundSlot6", or
  "SoundSlot7".
- Added a third parameter to S_IsActorPlayingSomething() to allow it to check
  if the actor is playing a specific sound.


SVN r315 (trunk)
2006-08-31 00:19:51 +00:00
Randy Heit
603e905c42 SVN r314 (trunk) 2006-08-31 00:16:12 +00:00
Randy Heit
2fb55622e7 - Moved the text color definitions out of the executable and into an external
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)
2006-08-30 02:38:39 +00:00
Christoph Oelckers
38f650f7c5 SVN r312 (trunk) 2006-08-27 08:51:01 +00:00
Randy Heit
1b879c61c2 - Fixed: Multiple-choice sound sequences could not be assigned IDs for use
with polyobjects and the sound sequence selector things.


SVN r311 (trunk)
2006-08-26 02:50:06 +00:00
Randy Heit
cf3b1bfd6e - Removed the 64 seg limit for polyobjects defined with Polyobj_ExplicitLine.
- Polyobj_StartLine and Polyobj_ExplicitLine can now set a line's ID. This is
  the fourth parameter for Polyobj_StartLine and the fifth parameter for
  Polyobj_ExplicitLine.


SVN r310 (trunk)
2006-08-24 19:19:15 +00:00
Randy Heit
a69d7f529e - Added support for DDS textures compressed with DXT1, DXT3, or DXT5.
SVN r309 (trunk)
2006-08-24 18:30:34 +00:00
Christoph Oelckers
848097cd2e - Fixed incorrect spawn ID for cell pack.
SVN r308 (trunk)
2006-08-23 14:09:15 +00:00
Randy Heit
d62e6c5332 - Added Martin Howe's code for replacing environment variables in partial IWAD
search paths.


SVN r307 (trunk)
2006-08-22 22:34:35 +00:00
Randy Heit
1a7253e53c - Added support for casting color names in ACS print-type statements. What that
means is that instead of writing this:
    print (s:"\cDSome text");
  You can write this:
    print (r:CR_GREEN, s:"Some text");
- Added some new colors, based on the ones jimmy91 posted in the forum: cream,
  light blue, black, olive, dark green, dark red, dark brown, purple, and dark
  gray.
- Simplified FFont::BuildTranslations() and BuildTranslations2() to make adding
  new colors easier.


SVN r306 (trunk)
2006-08-22 21:58:24 +00:00
Christoph Oelckers
66295cf9e9 - Removed a few redundant calls to FTexture::GetWidth because all textures
are now fully initialized when being created.
- Added GZDoom's HI_START/HI_END namespace and HIRESTEX support.
- Added sprite scaling to the weapon drawing code


SVN r304 (trunk)
2006-08-22 21:45:12 +00:00
Christoph Oelckers
5c7eeed018 - Added support for PCX textures (1, 4, 8 and 24 bit variants.)
SVN r303 (trunk)
2006-08-21 13:09:55 +00:00
Christoph Oelckers
2536eca01d - Changed: Patch and IMGZ textures now initialize their dimensions upon creation.
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)
2006-08-20 12:55:46 +00:00
Christoph Oelckers
ab947ce16b - Added custom fail messages to the puzzle items.
SVN r299 (trunk)
2006-08-18 22:22:39 +00:00
Christoph Oelckers
aef5df6628 - Did some minor reorganization of code in r_data.cpp (mostly to make
handling of textures easier in GZDoom.)
- Did some preparations to allow loading folders on the HD into the lump
  directory.


SVN r298 (trunk)
2006-08-17 22:10:50 +00:00
Christoph Oelckers
f66b7de8c8 - Took MF2_WINDTHRUST off AMorphedMonster. This is something that should not
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)
2006-08-17 09:54:42 +00:00
Randy Heit
a6d656b108 - Updated thingdef_specials.h for the new thingdef_specials.gperf file.
- 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)
2006-08-17 00:19:26 +00:00
Randy Heit
7dc4be302f - Added action special support to the thingdef expression evaluator. Now you
can use them like normal functions, which is probably most useful for
  ACS_ExecuteWithResult.


SVN r294 (trunk)
2006-08-16 20:56:06 +00:00
Randy Heit
ed12bdc0f4 - Switched to IJG code for reading JPEG images. I have included a stripped-
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)
2006-08-16 18:08:39 +00:00
Randy Heit
21869a6c08 - Added JPEG texture support, courtesy of Ken's Picture Library. I will
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)
2006-08-15 04:34:35 +00:00
Randy Heit
89396964f5 - Added support for truecolor PNG textures. They still get resampled to the
global palette, but at least they are visible now.
- Optimized UnfilterRow() in m_png.cpp a little.


SVN r291 (trunk)
2006-08-13 03:38:18 +00:00
Christoph Oelckers
8ecfe6a8ac - Fixed: P_CheckOnMobjZ returned the first thing an actor could stand on,
not the highest possible.


SVN r290 (trunk)
2006-08-12 21:02:46 +00:00
Christoph Oelckers
7f93ab05ee - Added disintegration damage to SectorDamage.
- 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)
2006-08-12 08:38:00 +00:00
Randy Heit
b25c7722f3 - Added the ACS commands
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)
2006-08-12 02:30:57 +00:00
Christoph Oelckers
b8312a9bd8 - Gave Strife's PhosphorousFire the MF2_NODMGTHRUST flag so that its
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)
2006-08-10 21:03:17 +00:00
Christoph Oelckers
688476b9aa August 10, 2006 (Changes by Graf Zahl)
- 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)
2006-08-10 15:28:12 +00:00
Randy Heit
f2333b6f26 - Fixed: The ACS VM made no checks for object files without strings, assuming
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)
2006-08-03 03:45:58 +00:00
Randy Heit
3a552d4aa0 - It turns out that the Visual C++ 2005 runtime calls IsDebuggerPresent, which
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)
2006-08-02 04:57:36 +00:00
Christoph Oelckers
effa46975e - Fixed: The pickup message for Hexen's fighter's axe was assigned to the
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)
2006-08-01 22:11:49 +00:00
Christoph Oelckers
5ac0789e6e - Added a type check to Spawn(actorname,...) to allow it to print a
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)
2006-07-31 10:22:53 +00:00
Christoph Oelckers
f94cdaf782 - Added Grubber's GetPlayerInfo ACS function.
SVN r276 (trunk)
2006-07-30 22:56:20 +00:00
Christoph Oelckers
d6bc07c3b1 - Fixed: Starting a game without skill menu always started the first episode.
- 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)
2006-07-30 08:31:26 +00:00
Christoph Oelckers
3f90f1655c - Used the new explosion handling to clean up the old style projectile
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)
2006-07-29 10:47:14 +00:00
Randy Heit
06681ec72d - Version bump to 2.1.4.
- 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)
2006-07-29 01:26:24 +00:00
Christoph Oelckers
f203219d24 - Changed player sprite translation for the menu so that it uses a regular
translation table instead of a local custom buffer.
- Fixed: ResetBaggage must set MeleeDamage to 0.


SVN r271 (trunk)
2006-07-26 09:50:17 +00:00
Randy Heit
35d79553b2 - Made SafeReadMemory() in i_crash.cpp more readable.
SVN r270 (trunk)
2006-07-21 22:36:39 +00:00
Randy Heit
f7a8653196 - Here's something MinGW users will probably like: i_crash.cpp no longer needs
dbghelp.h if you compile with GCC.


SVN r269 (trunk)
2006-07-21 22:28:54 +00:00
Randy Heit
361f855de0 - Added some simple translucency map analysis for BOOM maps to more
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)
2006-07-20 05:13:39 +00:00
Randy Heit
6d389c6b7d - Fixed: C_midPrint() needs a NULL status bar check.
SVN r267 (trunk)
2006-07-19 16:00:44 +00:00
Christoph Oelckers
b1989b4d34 - Fixed: PClass::CreateDerivedClass forgot to NULL FActorInfo::Replacee.
SVN r266 (trunk)
2006-07-18 23:09:11 +00:00
Christoph Oelckers
c32b9df059 - Fixed: S_ClearSoundData cleared PlayerClasses instead of PlayerClassLookups.
SVN r262 (trunk)
2006-07-16 23:03:39 +00:00
Christoph Oelckers
1ff4d09bed - Added NecroMage's submission for bitwise/shift assignment operators for ACS.
SVN r261 (trunk)
2006-07-16 20:13:24 +00:00
Christoph Oelckers
e5a26c75fa - Added replacement handling to A_BossDeath.
SVN r260 (trunk)
2006-07-16 15:00:10 +00:00
Christoph Oelckers
93cd78ebfb - Fixed: The check for no skill menu was incorrect when a custom player
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)
2006-07-16 10:23:14 +00:00
Christoph Oelckers
ecce60e8f9 SVN r258 (trunk) 2006-07-16 09:10:45 +00:00
Randy Heit
5e37e4a0b8 - Fixed: Makefile.mgw was mysteriously missing some targets. After fixing that,
I also removed some of GCC's warnings.


SVN r255 (trunk)
2006-07-16 01:25:29 +00:00
Christoph Oelckers
1c3153690a - Fixed: Any kill in multiplayer games that could not be credited to a player
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)
2006-07-14 08:04:17 +00:00
Randy Heit
3113037229 - Restored the PowerupGiver AT_GAME_SET function. I assume its removal was an
accident from merging in Grubber's custom player classes.


SVN r252 (trunk)
2006-07-14 00:33:11 +00:00
Christoph Oelckers
bada3bf462 - Removed the game filter check from addplayerclass. If a player class is added
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)
2006-07-13 10:24:54 +00:00
Christoph Oelckers
31c749058b - Generalized Hexen's class-based spawning to be a property of the player class
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)
2006-07-13 10:17:56 +00:00
Randy Heit
38a073626f - Changed decorate replacement to be opt-in instead of opt-out. This allows for
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)
2006-07-13 03:34:50 +00:00
Randy Heit
56427d1b1c - Fixed: The game would crash after informing you of a duplicate class registration
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)
2006-07-13 02:08:39 +00:00
Randy Heit
18af8a57cf - Restored the previous level flag values to avoid needlessly breaking some
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)
2006-07-12 03:35:55 +00:00
Christoph Oelckers
5d1563b0e4 - Changed the additive scrollers option into a compatibility flag so that it can
be changed from the menu.


SVN r245 (trunk)
2006-07-11 08:27:05 +00:00
Randy Heit
0b3730392c - Fixed closed doors between the front sector's floor and ceiling the right way.
I was just missing a non-null texture check.
- Removed references to texturewidthmask. What was that?


SVN r244 (trunk)
2006-07-11 04:48:10 +00:00
Christoph Oelckers
133a035c76 - Fixed: The earthquake code needs to check whether a quake's spot is still valid.
Super Sonic Doom crashed due to this.
- Fixed: G_DoAutosave could divide by 0 if autosavecount was 0.


SVN r243 (trunk)
2006-07-11 00:20:45 +00:00
Christoph Oelckers
a9470f8642 - Fixed: The calls to DCanvas::Dim in c_console.cpp were missing some type casts.
- 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)
2006-07-09 21:50:16 +00:00
Christoph Oelckers
dd3c0d82f7 SVN r241 (trunk) 2006-07-09 20:15:38 +00:00
Randy Heit
d027aafb4c - Fixed: If the sector behind a seg was closed, but it was closed between the
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)
2006-07-09 20:04:05 +00:00
Christoph Oelckers
5541dc69f1 - Fixed: Specifying 'strifefallingdamage' in MAPINFO cleared all other flags.
- Fixed: maxstepheight and maxdropoffheight were stored as ints instead of 
  fixed_t's by the DECORATE parser.


SVN r239 (trunk)
2006-07-08 20:17:52 +00:00
Randy Heit
6695e255ce - Added actor replacement for DECORATE. This works at a higher level than
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)
2006-07-08 02:17:35 +00:00
Christoph Oelckers
43c1ec4a74 - Fixed: Changed initialization of Weapon.Kickback so that it is only done
for direct descendants of AWeapon and not for every weapon being defined.
- Changed parsing of actor names back to not use C-mode. This change breaks
  any definition that contain periods in their name and apparently there's
  more than anyone could expect. Also altered the parser to manually check
  for colons inside the parsed string so that placing spaces around them
  is no longer necessary.
- Fixed: Weapons could be picked up for ammo even if they gave none.
- Fixed: A_Beacon was missing a NULL pointer check for the beacon's owner.
- Fixed: The status bar tried to access CPlayer->camera without checking
  its validity. In spy mode there is a possibility that it is NULL.

SVN r237 (trunk)
2006-07-03 09:07:56 +00:00