Commit graph

3918 commits

Author SHA1 Message Date
Christoph Oelckers
d4160f7211 May 7, 2006 (Changes by Graf Zahl)
- Added a misc/secret sound definition for Heretic.
- Fixed: Powered up weapons were not properly deselected when the level ended
  and their ready state was different from the main weapon's.
- Made some improvements to A_CountdownArg.
- Removed the 'Yes', 'No' and 'Greetings' state assignment commands. They haven't
  been documented and thus haven't been used at all so far. Therefore they don't 
  need to be handled considering that they will go away anyway.
- Changed the DECORATE state parser so that Stop can also be specified right after
  a label, in addition to goto.


SVN r84 (trunk)
2006-05-07 23:55:17 +00:00
Christoph Oelckers
605a9a7715 May 6, 2006 (Changes by Graf Zahl)
- 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)
2006-05-07 00:27:22 +00:00
Randy Heit
abed04ab23 - Updated Italian strings that someone kindly e-mailed to me.
- The CRT no longer detects any memory leaks when I run to the IWAD picker and quit.
- Fixed: The memory used to hold the path to zdoom.wad/.pk3 was not freed if
  the IWAD picker was cancelled.
- Fixed: Some implementations of cvar->GetGenericRep (CVAR_String) returned a 
  statically allocated string and others returned a dynamically allocated string.
  To be consistant, they should all be static.
- Fixed: DObject also has three static TArrays that should not be explicitly
  initialized: Objects, FreeIndices, and ToDestroy.
- Added a new do-nothing constructor for TArray that can be used for BSS objects
  that are manipulated before startup. Specifically, this was added because
  C_AddTabCommand() is called before main, but the TabCommands constructor is
  called after the array already has over 100 entries in it, orphaning everything
  that was already inserted. And since the code is much nicer-looking now, I didn't
  want to revert to the old non-TArray version.
  
  This could also have been used to fix FName, but I consider the current
  implementation to be better than the old one, so I'm leaving it as-is.
- Fixed: Scanned IWAD paths were not freed if you exited without selecting one.
- Fixed: Dynamically allocated cvars were not freed on exit.
- Fixed: FConfigFile's destructor did not free space used for Values.


SVN r82 (trunk)
2006-05-06 23:43:44 +00:00
Randy Heit
3c9b55d1db SVN r81 (trunk) 2006-05-06 03:25:12 +00:00
Randy Heit
fd0c5a6db6 - Changed TAG_MORE to pass a va_list pointer instead of a va_list because it's a
non-POD type when targeting several non-ix86 targets with GCC. Hopefully this works.


SVN r80 (trunk)
2006-05-06 00:54:41 +00:00
Randy Heit
e78385f807 - Rewrote FName to use only POD types for its static data so that it can be used
without any explicit constructors being called.
- Fixed: ZTwinedTorchUnlit, ZWallTorchUnlit, ZFireBullUnlit, and ZCauldronUnlit
  were missing game filters.


SVN r79 (trunk)
2006-05-05 04:37:10 +00:00
Christoph Oelckers
d06793ad7e - Converted A_Puzzleitems.cpp and parts of A_HexenSpecialdecs.cpp to DECORATE and fixed a few broken Hexen items.
SVN r78 (trunk)
2006-05-04 19:36:12 +00:00
Christoph Oelckers
650d07b8c1 May 4, 2006 (Changes by Graf Zahl)
- Converted A_Hexendecorations.cpp
- Changed the lower decal spawning code to transfer the main decal's color if
  the lower decal's default color is the same as the main decal's.
- Changed the decal stretcher back to use the specified size parameters as a 
  scaling factor and not a destination size because this is more consistent with 
  the rest of the decal code. Also adjusted the blood smear definition in DECALDEF
  and the description in the Wiki for this.
- Added Jim's most recent fixes.


SVN r77 (trunk)
2006-05-04 12:40:39 +00:00
Randy Heit
fe84b6077e - Fixed: Conversion of c_bind.cpp to FString was incomplete.
- Fixed some functions that were declared as taking size_t's but defined as taking
  unsigned ints.
- Added a dummy object to delete sound environments on exit.
- Fixed: FWarpTexture did not delete its Spans when destroyed.
- Changed wadclusterinfos and wadlevelinfos arrays into TArrays.
- Added the TypeInfo::AutoTypeInfoPtr for TypeInfo::m_RuntimeActors so they can
  be automatically deleted.
- Changed TypeInfo::m_Types into a TArray so it will be automatically deleted
  on exit.
- Fixed: TArray::Resize() did not deconstruct entries when shrinking the array.
- Changed TArray::Push() so that it calls Grow() instead of duplicating the growth
  calculations itself.
- Calling TArray::Grow() for a small amount when the array is short should grow it
  a bit more than it was doing.

SVN r76 (trunk)
2006-05-04 06:14:52 +00:00
Randy Heit
c8cdb52863 - Removed generational garbage collection from the string pool because it didn't
actually work.
- Turned the list of TabCommands into a TArray because I saw lots of console
  commands in the memory leak report at exit. Then I realized those were actually
  key bindings, so I changed the Bindings and DoubleBindings arrays into FString
  arrays.
- Fixed: FStringCVar was missing a destructor.
- Added TArray::Insert().
- Fixed: TArray::Delete() used memmove().
- Renamed Malloc(), Realloc(), and Calloc() to M_Malloc(), M_Realloc(), and
  M_Calloc() so that the debug versions can be defined as macros.
- Enabled the CRT's memory leak detection in WinMain().
- Moved contents of PO_DeInit() into P_FreeLevelData().
- Removed "PolyBlockMap = NULL;" from P_SetupLevel(), because the P_FreeLevelData()
  call it makes next does the exact same thing, but also freeing it if needed.
- Fixed: Unneeded memcpy in UnpackUserCmd() when ucmd and basis are the same


SVN r75 (trunk)
2006-05-04 03:49:46 +00:00
Randy Heit
ea3b76815d - Removed -bpal parameter. Blood's blood.pal is loaded from blood.rff, and
its tiles are loaded from the same directory.
- RFF files now load their entire directories into the lumplist.
- Added char * and const char * type coversions for FString, so FStrings can be
  freely passed to functions expecting C strings. (Except varargs functions,
  which still require manually fetching the C string out of it.)
- Renamed the name class to FName.
- Renamed the string class to FString to emphasize that it is not std::string.


SVN r74 (trunk)
2006-05-03 22:45:01 +00:00
Christoph Oelckers
0e69196370 May 3, 2006 (Changes by Graf Zahl)
- 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)
2006-05-03 14:54:48 +00:00
Randy Heit
01a41a6f13 - Made loading of Build's palette.dat automatic if it's found inside a loaded
group file, but the -bpal parameter remains for now.
- Made loading of Build art tiles automatic if they are found inside a group
  file. Removed the corresponding command-line parameter.
- Added support for Ken Silverman's group files.


SVN r72 (trunk)
2006-05-02 04:38:12 +00:00
Christoph Oelckers
29cd024aba SVN r71 (trunk) 2006-04-30 21:49:18 +00:00
Christoph Oelckers
eff7c898cf - ZDoom now loads zdoom.pk3 instead of zdoom.wad.
- Fixed: StreamSong::SetVolume should check the m_stream pointer. This can
  happen when a TimiditySong doesn't use FMOD and outputs the sound itself.
- Fixed: 'use' sector actions were using the incorrect sector on several 
  occasions.
- Added a wi_noautostartmap CVAR and a noautostartmap intermission option
  that force the user to manually end the 'entering level' page.


SVN r70 (trunk)
2006-04-29 12:40:09 +00:00
Randy Heit
75aec5dde9 GCC fixes: (courtesy of Jim and zloba)
- default.cbd was missing thingdef_exp.cpp
- tools/makewad/Makefile.mgw was outdated thanks to recently added zip support
- wadsrc/wadmake should not be in the repository, as it needs to use host machine path separator conventions

SVN r69 (trunk)
2006-04-29 04:52:30 +00:00
Christoph Oelckers
19a7cf743e SVN r68 (trunk) 2006-04-27 15:12:17 +00:00
Christoph Oelckers
9b5f9a1d70 SVN r67 (trunk) 2006-04-24 14:26:06 +00:00
Christoph Oelckers
790ff69f52 - Removed ABossEye::Serialize because it didn't do anything.
- Fixed the issues with .96x's railgun code and added it to the current
  version.
- Fixed: Setting of the friendly Minotaur's angle was inconsistent and
  could cause it to move backwards in a féw situation.
- Fixed: The minotaur did checks for type by checking for the MF_FRIENDLY
  flag, not by checking for the actor class. That made it impossible to
  spawn friendly 'normal' minotaurs.
- Moved a few virtual methods which are only applicable to the friendly
  minotaur to AMinotaurFriend.
- Fixed: The friendly minotaur checked the master's health instead of
  the target's when deciding whether to switch targets. Replaced with
  MF4_NOTARGETSWITCH.
- Fixed: maybedrawnow must not draw the console unless the background
  texture has been set up.

SVN r66 (trunk)
2006-04-23 20:12:27 +00:00
Christoph Oelckers
b229d07500 SVN r65 (trunk) 2006-04-23 09:02:19 +00:00
Christoph Oelckers
1e1db5dd0c - Fixed: To prevent the pointer cleanup code from crashing numsectors has
to be set to 0 when the sectors array is deleted.


SVN r64 (trunk)
2006-04-23 00:03:32 +00:00
Christoph Oelckers
9aae758ec5 - Added Zloba's fix for Linux's I_FindFirst.
SVN r63 (trunk)
2006-04-22 15:02:08 +00:00
Christoph Oelckers
663a0f5209 - Fixed: Doom's status bar assumed that STBAR was always in Doom patch format.
- Added MF3_DONTSPLASH to the newly created sound sequence things.


SVN r62 (trunk)
2006-04-21 21:42:12 +00:00
Christoph Oelckers
283dca5750 Made makewad.c compilable as C.
SVN r61 (trunk)
2006-04-21 20:32:24 +00:00
Christoph Oelckers
67bf668ad9 April 20, 2006 (Changes by Graf Zahl)
- Fixed: Strife's ending check included destroying the computer - an event
  that happens before the branch in the story.
- Fixed: The overloaded FRandom::Random2 function with mask parameter didn't
  use its parameter.
- Added Jim's latest makefile.linux


SVN r60 (trunk)
2006-04-21 16:32:49 +00:00
Randy Heit
6cd650271a Added a_soundsequence.cpp to the repository.
SVN r59 (trunk)
2006-04-21 14:29:05 +00:00
Randy Heit
8ea6569de8 - Fixed: Crash when opening the player setup menu when you're so dead that
your head has popped off your body.
- Fixed: When item respawning is on and you play on skill 1 or 5, picking
  up ammo would permanently double the amount of ammo received from that
  item the next time it gets picked up.
- Added a check to PlayerIsGone() for players who have already had their
  actors destroyed before calling it.
- Fixed: G_CheckDemoStatus() only restored your name, autoaim, and color
  settings after playing back a demo.
- Added DEM_SPRAY net command so that sprayed decals work in multiplayer
  and demos.
- Changed DEM_GIVECHEAT to use a word for specifying the item quantity.
  This is useful mainly for giving yourself more than 255 health at a time.
- Fixed: DEM_SUMMONFRIEND was not handled by Net_SkipCommand().


SVN r58 (trunk)
2006-04-21 05:44:21 +00:00
Randy Heit
7e7ab6b4ec - Fixed compilation with mingw again.
- Added multiple-choice sound sequences. These overcome one of the major
  deficiences of the Hexen-inherited SNDSEQ system while still being Hexen
  compatible: Custom door sounds can now use different opening and closing
  sequences, for both normal and blazing speeds.
- Added a serializer for TArray.
- Added a countof macro to doomtype.h. See the1's blog to find out why
  it's implemented the way it is.
    <http://blogs.msdn.com/the1/articles/210011.aspx>
- Added a new method to FRandom for getting random numbers larger than 255,
  which lets me:
- Fixed: SNDSEQ delayrand commands could delay for no more than 255 tics.
- Fixed: If you're going to have sector_t.SoundTarget, then they need to
  be included in the pointer cleanup scans.
- Ported back newer name code from 2.1.
- Fixed: Using -warp with only one parameter in Doom and Heretic to
  select a map on episode 1 no longer worked.
- New: Loading a multiplayer save now restores the players based on
  their names rather than on their connection order. Using connection
  order was sensible when -net was the only way to start a network game,
  but with -host/-join, it's not so nice. Also, if there aren't enough
  players in the save, then the extra players will be spawned normally,
  so you can continue a saved game with more players than you started it
  with.
- Added some new SNDSEQ commands to make it possible to define Heretic's
  ambient sounds in SNDSEQ: volumerel, volumerand, slot, randomsequence,
  delayonce, and restart. With these, it is basically possible to obsolete
  all of the $ambient SNDINFO commands.
- Fixed: Sound sequences would only execute one command each time they were
  ticked.
- Fixed: No bounds checking was done on the volume sound sequences played at.
- Fixed: The tic parameter to playloop was useless and caused it to
  act like a redundant playrepeat. I have removed all the logic that
  caused playloop to play repeating sounds, and now it acts like an
  infinite sequence of play/delay commands until the sequence is
  stopped.
- Fixed: Sound sequences were ticked every frame, not every tic, so all
  the delay commands were timed incorrectly and varied depending on your
  framerate. Since this is useful for restarting looping sounds that got
  cut off, I have not changed this. Instead, the delay commands now
  record the tic when execution should resume, not the number of tics
  left to delay.


SVN r57 (trunk)
2006-04-21 01:22:55 +00:00
Christoph Oelckers
66c663e9d8 - Fixed: Hexen's ammo display in the status bar cannot be refreshed
partially because the background patch has to be drawn always to 
  overwrite the old display.
- Fixed: Giving a health item to a non-player caused a crash.
- Added a compatibility option to limit deh.MaxHealth to the health bonus.
  Originally this value wasn't used for health packs. Doing this was a bug
  in Boom but since there's quite a few maps out there which require
  Boom's altered behavior it has to be compatibility optioned.
- Fixed: The health bonus's max health must be defined by deh.MaxHealth, 
  not deh.MaxSoulsphere. To achieve this deh.MaxHealth's handling had to
  be altered because it has to default to 100.
- Fixed: ZDBSP created incorrect side references with compressed sidedefs
  and both sidedefs of a linedef being the same. This only affects the
  external tool because the internal node builder is run after uncompressing
  the sidedefs.
- Added Jim's latest makefile.linux.
- Added a consistency check to the PNAMES loader because one crash log
  indicated that it crashed due to a corrupt PNAMES lump.
- Brought back the sector based sound target handling as a compatibility
  option. This radical change just broke far too many maps that depend
  on the original behavior. Strife's special AI functions are excluded 
  though because they work better with the new method.


SVN r56 (trunk)
2006-04-20 14:21:27 +00:00
Christoph Oelckers
b2b729fd37 April 19, 2006 (Changes by Graf Zahl)
- Fixed: Hexen had no default sound sequence for doors and passed a NULL
  pointer to SN_StartSequence in DoorSound.


SVN r55 (trunk)
2006-04-20 00:25:30 +00:00
Christoph Oelckers
8e631eca0b SVN r54 (trunk) 2006-04-18 22:15:05 +00:00
Randy Heit
c3c22c9453 - Fixed: FBaseStatusBar::DrBNumber() should behave like Doom's
STlib_drawNum(), and FDoomStatusBarTexture::DrawToBar() should add
  the textures left offset to the x coordinate before drawing.
  These fix Twice Risen's status bar.
- Changed: VPrintf now uses string.VFormat(), instead of vsprintf().


SVN r53 (trunk)
2006-04-18 06:07:09 +00:00
Christoph Oelckers
d8500150f3 SVN r52 (trunk) 2006-04-17 16:04:27 +00:00
Christoph Oelckers
36e37becb5 SVN r51 (trunk) 2006-04-17 13:53:34 +00:00
Randy Heit
fa7987005e - Fixed: After respawning in a singleplayer demo, demo playback went out
of sync becase the RNG seed was being altered during recording but not
  during playback. This was caused by an inappropriate fix for a similar
  problem: -record calls G_InitNew() before it actually starts recording
  the demo, but -playdemo calls G_InitNew() after it starts playback. So
  the rngseed stored in the demo was already altered. The correct thing
  to do is not to prevent the rngseed from changing during playback but
  to move the call to G_InitNew() after the call to G_BeginRecording().
- Fixed: After respawning in a demo, demo playback was prematurely
  terminated.


SVN r50 (trunk)
2006-04-16 19:09:36 +00:00
Christoph Oelckers
da51ac7446 SVN r49 (trunk) 2006-04-16 13:29:50 +00:00
Randy Heit
3165756b02 Make the line endings in ccdv-win32.c consistantly CR/LF.
SVN r48 (trunk)
2006-04-16 05:20:20 +00:00
Randy Heit
2bfc183154 SVN r47 (trunk) 2006-04-16 03:31:40 +00:00
Christoph Oelckers
8a7ba616f4 SVN r46 (trunk) 2006-04-15 15:00:29 +00:00
Christoph Oelckers
153d3b4681 SVN r45 (trunk) 2006-04-14 16:25:57 +00:00
Christoph Oelckers
07f35a7008 SVN r44 (trunk) 2006-04-14 12:58:52 +00:00
Christoph Oelckers
4dd936e438 SVN r43 (trunk) 2006-04-13 22:40:43 +00:00
Randy Heit
ab1d4a2e0f Updated Jim's Makefile.linux.
SVN r42 (trunk)
2006-04-13 22:35:56 +00:00
Randy Heit
00f332c678 - Fix farchive.cpp swappers for GCC again. Now that they use entirely integer
math, they should work with all GCC versions.
- Updated FLAC readers to #define FLAC__NO_DLL to match the new FLAC builds.


SVN r41 (trunk)
2006-04-13 22:25:26 +00:00
Randy Heit
7138ab86a8 Updated FLAC code to version 1.1.2.
SVN r40 (trunk)
2006-04-13 22:18:41 +00:00
Christoph Oelckers
e8c7a10f80 SVN r39 (trunk) 2006-04-13 20:33:19 +00:00
Christoph Oelckers
218fd0ae56 SVN r38 (trunk) 2006-04-13 16:56:06 +00:00
Christoph Oelckers
fdeb374fdb SVN r37 (trunk) 2006-04-13 16:52:24 +00:00
Randy Heit
b00360a08c - Fixed: Using printinv before starting a game crashed.
- Fixed: DMover::MovePlane() would not stop moving the plane when it exactly
  reached its target height unless it was a floor moving down.
- Fixed: Actors that can't attack should not be valid haters for Thing_Hate.
- Fixed: AArtiBlastRadius::BlastActor() should not set MF2_SLIDE for missiles.
- Fixed: sdl/i_input.cpp should check !iscntrl() before generating EV_GUI_Char
  messages.


SVN r36 (trunk)
2006-04-13 03:13:07 +00:00
Randy Heit
735e6d72c4 - Added Jim's Makefile.linux;
- Changed: Decal scales now use full precision fixed point numbers.
- Changed: Keeping impact decals in their own statlist is enough to keep track
  of them for when one needs to be destroyed. There's no need to maintain a
  separate list for them.
- Fixed: Decal actors did not spread their decals across neighboring walls.
- Fixed: Decal groups did not initialize their IDs and could not be reliably
  used with the decal actor.
- Fixed: Decals on moving polyobjects were not interpolated. R_RenderDecal()
  now uses the decal's LeftDistance to calculate its visible location, so it
  always stays in sync with the wall's vertices. This also lets me dump some
  code from the polyobjects that maintained the decals' (x, y) coordinates.
  Also, the decals' x and y information is redundant and can be removed.
  Doing this revealed a bug with slider decals and horizontal sliding:
  That is, it didn't work at all. I have opted to simply remove the horizontal
  sliding support so that I don't have to worry about what happens when a
  decal slides across the edge of a wall.
- Fixed: DBaseDecal::LeftDistance was calculated as a 30.2 fixed point number.
  It should be 2.30 fixed point.


SVN r35 (trunk)
2006-04-13 02:01:40 +00:00