Commit graph

38 commits

Author SHA1 Message Date
Christoph Oelckers
5b2c91106e - implemented Vavoom's seethrough and shootthrough options for 3D floors.
- Fixed: For Vavoom-type 3D floors the additive translucency flag was not checked.



git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@284 b0f79afe-0144-0410-b225-9a4edf0717df
2009-01-03 13:00:40 +00:00
Christoph Oelckers
8b61dada84 Update to ZDoom r1344:
- Fixed: SBARINFO used GetSpecies instead of GetClass to check weapon types.
- Added a few missing NULL pointer checks to SBARINFO code.
- Changed pickup sounds of local player to unpaused to resolve problems with 
  the time freezer and make them behave better.
- Fixed: When sounds are paused not all newly started sounds should actually
  be played.
- Fixed: SBARINFO had no means to check if a weapon uses any ammo at all and
  as a result the inventory icon was misplaced if a no-ammo weapon was selected.
- Fixed: P_CheckMissileSpawn and AFastProjectile didn't adjust their
  calculations for missiles with small radii.
- Added a new aiming mode to A_CustomRailgun to aim directly at the target
  from the actual point the shot originates from.
- Added a constant name for Skulltag's 128 flag for A_SpawnItemEx. For 
  compatibility ZDoom needs to define this name, too, even though it doesn't 
  use it.
- Fixed: The nodebuilder could hang on badly set up polyobjects. Now it aborts 
  when the loop iterates NumberOfSegs times.
- Fixed: FMOD calls for setting the water reverb must check the return code
  for errors.
- Fixed: Hexen's dual attack weapons must check distance to targets in 3D,
  not 2D.
- Made several DECORATE errors which do not involve parsing non-fatal.
- Added a static error counter to FScriptPosition class.
- Changed initialization of actor class type properties: fuglyname is gone as
  is the postprocessing in FinishThingdef. Instead an empty placeholder class
  is now created when a class is first referenced and this placeholder is later
  filled in. 
- Added option to replace backslash with '^' in state frame definitions because
  the backslash is just causing too many problems because it's also an escape
  character.


git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@282 b0f79afe-0144-0410-b225-9a4edf0717df
2009-01-01 16:47:46 +00:00
Christoph Oelckers
d3fa20416f Update to ZDoom r1327:
- OggMod improperly decodes the right channel of stereo samples when sending
  them to OggEnc, so I have no choice but to convert them to mono by chopping
  off the right channel and only using the left channel information.
- Fixed: OggMod passes the raw sample data to OggEnc for stereo samples, so
  the resultant Vorbis stream is not actually stereo but mono with the right
  channel after the left. The two need to be interleaved just like
  uncompressed samples are.
- Removed the pattern length limit in the XM reader.
- Decal changes as per Xaser's suggestions: Smaller decal for PhoenixFX2,
  CrossbowFX2 and MaceFX4 were missing decals, and HornRodFX2 gets a whole
  new decal.
- Fixed: bfgscrc2.png had some holes in the middle that did not look so good.
  (From previously being handled through WinTex, maybe?)
- Fixed: Thing_ProjectileIntercept broke slightly when converted to the new
  vector math routines (almost two years ago!) because the original code
  multiplied down columns of the rotation matrix, but the new code multiplies
  across rows of the matrix instead. This is remedied by flipping the matrix
  across the x=y axis by reversing the sign of the sine value passed to the
  matrix constructor.
- Fixed: Autoloading a game (e.g. respawning after dying in single player)
  during demo playback prematurely ended demo control of the player.
- Fixed: Loading a multiplayer save with only one player crashed.
- Changed the co-op intermission screen to draw the stats with the small font.
- Added Karate Chris's patch to optionally specify an angle offset for
  summoning.
- Added Karate Chris's fix for Serpent Staff vampirism on teammates.
- Locks and teleporters now take precedence over one-sidedness for automap
  coloring.
- Increased maximum number of per-pattern rows for the XM loader from
  256 to 1024 to deal with a module that otherwise would not load.
- Removed the artificial restriction on not supporting Vorbis-compressed
  samples in XMs if they are stereo, since it turns out that OggMod does
  support them.
- Added a SECF_NORESPAWN flag for sectors that prevents players from being respawned
  in such a sector. As a workaround for current map formats a new actor
  (DoomEdNum 9041) was added that can set the extended sector flags without the
  use of ACS and sector tags. The new flag can also be set with Sector_ChangeFlags.
- Fixed: Players ignored MF2_TELESTOMP and always telefragged what was in the way.
- Fixed: Actors with MF5_NOINTERACTION were not affected by the time freezer.


git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@273 b0f79afe-0144-0410-b225-9a4edf0717df
2008-12-21 08:31:23 +00:00
Christoph Oelckers
11b8d6994d - Fixed: The railgun attack functions still read their puff parameters as names
even though they are now passed as class pointers.
- Fixed: The state parser counted one parameter too many for a varargs function.
- Fixed: FStateExpressions could copy unresolved default parameter expressions.
  When these were resolved and changed later all copied pointers pointed to
  invalid data.

git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@195 b0f79afe-0144-0410-b225-9a4edf0717df
2008-10-28 22:56:10 +00:00
Christoph Oelckers
83ece56308 - Fixed: The trace code could pass a temporary sector struct with its result.
Update to ZDoom r1271:
- Added native variables to expression evaluator and replaced the previous
  handling of actor variables in expressions with it.
- Added support for floating point constants to DECORATE expression evaluator.
- Rewrote the SeePastShootableLines check in P_SightCheckLine() to be
  more readable.
- Commented out the MugShot state nulling in DSBarInfo::AttachToPlayer() so
  that fiddling with player options does not reset the mug shot.
- Fixed: SetMugShotState ACS command did not pop the stack.
- Added a global symbol table and changed DECORATE parser to put its global 
  symbols there instead of into AActor.
- Changed the expression evaluator's floating point precision to double.
- Started rewriting the DECORATE expression evaluator to allow more flexibility.
  All the operators use the new functionality but functions, variables and
  constants are yet to be redone.
  While doing this rewrite I noticed that random2 was always evaluated as const.
  This got fixed automatically.
- This may or may not be a problem, but GCC warned that FStateDefinitions::
  AddStateDefines() does not initialize def.FStateDefine::DefineFlags, so
  I fixed that.
- Fixed: The three-argument version of AActor::FindState() initialized a
  two-entry array for passing to the main FindState() routine, but did
  not actually pass it, passing the original primary label instead.
- Fixed: SDL builds did not shutdown the sound system at exit.
- Fixed: ThingCountSector and ThingCountNameSector did not remove enough
  entries from the stack, and did not put the result in the right slot.
- Fixed: Teleport lines were prioritized over secret lines when deciding what
  color to draw them on the automap.
- Fixed: Death-reverting morphs did not remove the morph item from the
  player's inventory when death caused the morph to revert.
- Updated fmod_wrap.h for FMOD Ex 4.18.
- Fixed: The TEXTURES parser could copy beyond the end of a string when parsing
  a 'define' definition.
- Fixed: Cheats in demos must not access the weapon slots.
- Fixed: S_ChannelEnded didn't check for a NULL SfxInfo.
- Fixed: R_InitTables did a typecast to angle_t instead of fixed_t.
- Fixed: PowerProtection and PowerDamage applied their defaults incorrectly.
- Fixed: The damage type property didn't properly read its factor.
- Finally has the right idea how to restore Doom's original clipping of projectiles
  against decorations without breaking anything newer:
  Added a new 'projectilepassheight' property that defines an alternative height
  that is only used when checking a projectile's movement against this actor.
  If the value is positive it is used regardless of other settings, if it is
  negative, its absolute will be used if a new compatibility option is enabled
  and if it is 0 the normal height will be used.


git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@187 b0f79afe-0144-0410-b225-9a4edf0717df
2008-10-19 22:24:34 +00:00
Christoph Oelckers
2cba83663a Update to ZDoom r1229:
- Separated low level sound code from all high level dependencies.
- Separated low level sound channel class from high level class which now
  is just a subclass of the low level class.
- Moved some more high level sound logic out of FMODSoundRenderer:
  The rolloff and channel ended callbacks now call functions in s_sound.cpp
  instead of working on the data itself and GSnd->StopSound has been replaced
  with S_StopChannel.
- Changed compilation for g_doom, g_heretic, g_hexen and g_strife folders so 
  that all files are included by a central one instead of compiling each one 
  separately. This speeds up the compilation process by 25% when doing a 
  complete rebuild in Visual C.
- Cleaned up some include dependencies.


git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@179 b0f79afe-0144-0410-b225-9a4edf0717df
2008-09-15 23:47:00 +00:00
Christoph Oelckers
92b2fb4803 Update to ZDoom r 1181:
- Fixed: The conversion of the strings in wbstartstruct_t to FStrings
  caused crashes when reloading the hub data.
- Replaced WALLF_AUTOCONTRAST with WALLF_NOFAKECONTRAST so that the 
  default setting for the flags is 0.
- Added: doom2day's smoothlighting
- Added: dontincrement argument to A_CheckForReload.
- Fixed: The UDMF parser wrote class filter bits into SkillFilter.
- Fixed: (SBARINFO patch) DrawInventoryBar has a missing argument in 
  one of its drawgraphic calls.
- Added Gez's patch for Heretic's GIMME cheat.
- Externalized some cheat strings.
- Added Gez's patch for removing MF4_FIRERESIST.

(SBARINFO patch)
- Fixed: DrawBar would not show.
- Fixed: IsSelected took string constants instead of identifiers.

- Put more floor/ceiling properties in sector_t into a substructure and
  added wrapper functions.
- Fixed: A_Explode wants the distance parameter as an int, not a fixed_t.
- some minor DECORATE fixes.

git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@161 b0f79afe-0144-0410-b225-9a4edf0717df
2008-08-22 07:36:50 +00:00
Christoph Oelckers
1ee7f7395e Update to ZDoom r1073:
- Fixed: When Heretic's Mace was replaced by a non-child class A_SpawnMace still 
  treated it as a mace and wrote into some undefined memory.
- Fixed: A_BishopMissileWeave didn't initialize special2 for proper movement.
- Added a speed parameter to A_SkullAttack.
- Fixed: Black as first or only blood color didn't work.
- Fixed: Sounds played in wi_stuff.cpp and f_finale.cpp need the CHAN_UI flag.
- Fixed: Spawning a player could play the *gasp sound.
- Fixed: SBARINFO's health display didn't scale to the proper maximum.
- Added const char &operator[] (unsigned int index) to FString class.
- Added Skulltag's Teleport_NoStop action special.
- Fixed: Strife's EntityBoss didn't copy friendliness information to the
  sub-entities.
- Fixed: Friendly spectral monsters should be able to hurt unfriendly ones
  and vice versa.
- Fixed: In deathmatch specral missiles spawned by players should hurt other
  players.
- Fixed: SpectralLightningBigBall didn't set the proper owner for the lightning
  projectiles it spawned.
- Changed the EntityBoss's attack function to call the equivalent spectre
  functions instead of duplicating their code.
- Gave many of Strife's code pointers that only had a number as name more
  meaningful names. 
- Fixed: All spectral attacks must set 'health' first before P_CheckMissileSpawn
  is called.
- Added a compatibility option to play sector sounds from the precalculated
  center because some maps apparently abuse the behavior to make the sound
  play somewhere where it can't be heard by the player to fake silent movement.
- Fixed: The S_Sound variant taking an actor must check if the actor is not
  NULL.
- Fixed: ACS's ActivatorSound must check if the activator is valid.
- Changed stats drawing so that multi-line strings can be used.


git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@132 b0f79afe-0144-0410-b225-9a4edf0717df
2008-07-19 23:52:06 +00:00
Christoph Oelckers
45d3093f18 Update to ZDoom r1069:
- Added a check to G_DoSaveGame() to prevent saving when you're not actually
  in a level.
- Fixed: Serialized player data must always be loaded, even if it's simply to
  be discarded, so that anything serialized after the players will load from
  the correct position in the file when revisiting a hub map.
- Changed: AInventory::Tick now only calls the super method if the item is not
  owned. Having owned inventory items interact with the world is not supposed
  to happen.
- Fixed: case PCD_SECTORDAMAGE in p_acs.cpp was missing a terminating 'break'.
- Fixed: When a weapon is destroyed, its sister weapon must also be destroyed.
- Added a check for PUFFGETSOWNER to A_BFGSpray.
- Moved the PUFFGETSOWNER check into P_SpawnPuff and removed the limitation
  to players only.
- Fixed: P_SpawnMapThing still checked FMapThing::flags for the class bits 
  instead of FMapThing::ClassFilter.
- Fixed: A_CustomMissile must not let P_SpawnMissile call P_CheckMissileSpawn.
  It must do this itself after setting the proper owner.
- Fixed: CCMD(give) increased the total item count.
- Fixed: A_Stop didn't set the player specific variables to 0.
- Fixed: Screenwipes now pause sounds, since there can be sounds playing
  during them.
- UI sounds are now omitted from savegames.
- Fixed: Menu sounds had been restricted to one at a time again.
- Moved the P_SerializeSounds() call to the end of G_SerializeLevel() so that
  it will occur after the players are loaded.
- Added fixes from FreeBSD for 0-length and very large string buffers
  passed to myvsnprintf.


git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@131 b0f79afe-0144-0410-b225-9a4edf0717df
2008-07-06 17:32:31 +00:00
Christoph Oelckers
bc28486753 Update to ZDoom r1062:
- Rewrote myvsnprintf to use the StringFormat routines directly so that no
  additional memory needs to be allocated from the heap.
- Polyobject sounds now play from their lines, similar to the way sector
  sounds are handled.
- Why do polyobjects have a 3D start spot? Flattened it to 2D.
- Moved the sector sound origin calculation out of fmodsound.cpp and into
  s_sound.cpp so that the near sound limiting will use the correct sound
  location for deciding on neighbors.
- Removed the S_Sound() variant that allows for pointing the origin at an
  arbitrary point. It has been replaced with a variant that takes a polyobject
  as a source, since that was the only use that couldn't be rewritten with the
  other variants. This also fixes the bug that polyobject sounds were not
  successfully saved and caused a crash when reloading the game. Note that
  this is a significant change to how equality of sound sources is determined,
  so some things may not behave quite the same as before. (Which would be a
  bug, but hopefully everything still sounds the same.)
- Adjusted the noise debug table so that fractional volume levels do not
  run into the adjacent columns.
- Added a NullSoundRenderer so that most of the checks against a NULL GSnd
  can be removed.
- Fixed: Looping sounds must always successfully allocate a channel, even if
  it's only a pre-evicted channel.
- Added A_ClearReFire code pointer for weapons. Preferably A_WeaponReady should
  reset this counter but that can't be done due to unwanted side effects with
  existing weapons.
- Changed the 'scale' variable in CVAR(turbo) to double because the calculations
  depended on the current floating point precision setting and only worked properly
  when set to 'precise' in VC++.

git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@130 b0f79afe-0144-0410-b225-9a4edf0717df
2008-07-04 16:54:29 +00:00
Christoph Oelckers
722eccf6c7 Update to ZDoom r1052:
- Fixed: Dead players didn't get the MF_CORPSE flag set.
- Fixed: The internal definition of Floor_LowerToNearest had incorrect parameter
  settings.
- Fixed: Heretic's ActivatedTimeBomb had the same spawn ID as the inventory item.
- fixed: Heretic's mace did not have its spawn ID set.
- For controls that are not bound, the customize controls menu now displays
  a black --- instead of ???.
- Applied Gez's BossBrainPatch3.
- Fixed: P_BulletSlope() did not return the linetarget. This effected
  the Sigil, A_JumpIfCloser, and A_JumpIfTargetInLOS.
- Fixed all the new warnings tossed out by GCC 4.3.
- Fixed: PickNext/PrevWeapon() did not check for NULL player actors.
- Fixed compilation issues with GCC.
- Removed special case for nobotnodes in MAPINFO.
- Added support for ST's QUARTERGRAVITY flag.
- Added a generalized version of Skulltag's A_CheckRailReload function.
- Fixed: DrawImage didn't take 0 as a valid image index.
- Added Gez's RandomSpawner submission with significant changes.
- Added optional blocks for MAPINFO map definitions. ZDoom doesn't use
  this feature itself but it allows other ports based on ZDoom
  to implement their own sets of options without making such a MAPINFO 
  unreadable by ZDoom.
- Fixed: The mugshot would not reset on re-spawn.
- Fixed: Picking up a weapon would sometimes not activate the grin.
- Changed: Line_SetIdentification will ignore extended parameters when
  used in maps defined Hexen style in MAPINFO.
- Fixed: Ambient sounds didn't pass their point of origin to S_StartSound.
- Fixed: UseType was not properly set for textures defined in TEXTURES.
- Fixed: You couldn't set an offset for sprites defined in TEXTURES.
- Added read barriers to all actor pointers within player_t except for
  mo, ReadyWeapon and PendingWeapon.
- Added a read barrier to player_t::PrewmorphWeapon.
- Fixed: After spawning a deathmatch player P_PlayerStartStomp must
  be called.
- Fixed: SpawnThings must check if the players were spawned before
  calling P_PlayerStartStomp.
- Fixed typo in flat scroll interpolation.
- Changed FImageCollection to return translated texture indices so
  that animated icons can be done with it.
- Changed FImageCollection to use a TArray to hold its data.
- Fixed: SetChanHeadSettings did an assignment instead of comparing
  the channel ID witg CHAN_CEILING.
- Changed sound sequence names for animated doors to FNames.
- Automatically fixed: DCeiling didn't properly serialize its texture id.
- Replaced integers as texture ID representation with a specific new type
  to track down all potentially incorrect uses and remaining WORDs used
  for texture IDs so that more than 32767 or 65535 textures can be defined.


git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@124 b0f79afe-0144-0410-b225-9a4edf0717df
2008-06-28 13:29:59 +00:00
Christoph Oelckers
513aeb87b8 - Increased the duration of respawn invulnerability by one second.
- DF2_YES_RESPAWN_INVUL and DF_FORCE_RESPAWN now apply to all multiplayer 
  games, not just deathmatch, without the need for turning on
  alwaysapplydmflags.
- Fixed: DF2_YES_RESPAWN_INVUL only worked in deathmatch, even with
  alwaysapplydmflags turned on.
- Fixed: DF_COOP_LOSE_ARMOR did not empty the starting armor items.
- Replaced the naive area sound implementation with one that takes into
  consideration the size and shape of the sector producing the sound. See
  the lifts on Doom 2 MAP30 and compare with previous versions.
- Fixed: The stop sound for sector-based sound sequences was not played with
  the CHAN_AREA flag.
- Removed the distinction between S_Sound() and S_SoundID() functions. Use
  S_Sound() for both names and IDs from now on.


git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@123 b0f79afe-0144-0410-b225-9a4edf0717df
2008-06-15 17:17:31 +00:00
Christoph Oelckers
9c8f4874cf Update to ZDoom r1033:
- Fixed: The UDMF parser stored plane rotation angles as fixed_t, not angle_t.
- Grouped the sector plane texture transformation values into a separate
  structure and replaced all access to them with wrapper functions.
- Add environment 255, 255 as a way to get the software underwater effect in
  any zone you want.
- Using a too-recent version of FMOD now gives an error, since there may be
  breaking changes to the API from one version to the next (excluding
  revisions in stable branches, which only represent bug fixes).
- Updated fmod_wrap.h for FMOD 4.16 and corrected a bug that had gone
  unnoticed before: The delayhi and delaylo parameters for Channel::setDelay()
  and getDelay() were swapped.
- Fixed: P_ChangeSector could incorrectly block movement when checking for
  mid textures linked to a moving floor.
- Fixed AActor's bouncefactor definitions which I accidentally changed when
  adding wallbouncefactor.
- Fixed: A_SpawnItemEx added the floorclip offset to the z coordinate instead 
  of subtracting it.
- Fixed: SBARINFO's popup code used 1-based indices to address a C++ array.
- Fixed: ACS's ChangeSky command didn't clean up the stack.
- Fixed: Wall scrolling interpolations incremented their reference count twice.
- Fixed: Before a level's thinkers are loaded all previous interpolations must
  be cleared.
- Fixed: deleted interpolations didn't NULL the pointer in the interpolated
  object. Also added all interpolation pointers to DSectorMarker to ensure
  that they are properyl processed by the garbage collector.
- Added scaling to double size for idmypos display.
- Changed: Players don't telefrag when they are spawned now but after all
  actors have been spawned to avoid accidental voodoo doll telefragging.
- Fixed: ACS scripts for non-existent maps were started on the current one.
- Added a 'wallbouncefactor' property to AActor.
- Reverted forceunderwater change from r1026 and fixed the problem for real:
  SECF_FORCEDUNDERWATER only has meaning when coming from the heightsec.
  So the initial check of the current sector in AActor::UpdateWaterLevel
  must only check for SECF_UNDERWATER, not SECF_UNDERWATERMASK.
- Dehacked fix discovered by entryway: Dehacked only changes the blue armor's
  armortype. It does not touch the armor given by the megasphere.
- Changed forcewater handling so that only control sectors created by one-
  sided lines become swimmable, since there's a good chance that a two-sided
  line is creating the control sector out of a normal, accessible portion of
  the map. (See e.g. linedef 29242 of zdoomcmp1.)
- Added self-modifying code notifications for Valgrind.
  Build with make VALGRIND=1 to turn them on.

git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@121 b0f79afe-0144-0410-b225-9a4edf0717df
2008-06-14 15:37:17 +00:00
Christoph Oelckers
3dc69f8bb8 - fixed: splashes on 3D floors must not check the precise z coordinate but instead
allow for some variation because puffs are not spawned directly on the floor.
- fixed: Moving 3D floors could incorrectly cause things to block movement.
- fixed: The setting of the trigger actor for FS's running scripts did not work.
- fixed: FS label strings were one character too long and included the ':'.
- fixed: FraggleScript's operator evaluation was evaluating operands in the wrong order.


git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@118 b0f79afe-0144-0410-b225-9a4edf0717df
2008-06-09 18:35:31 +00:00
Christoph Oelckers
2067574412 Update to ZDoom r1017:
- Fixed: MAPINFO's 'lookup' option should only work for actual strings but
  not for lump and file names.
- Added a few 'activator == NULL' checks to some ACS functions.
- Added line and vertex lists to polyobjects so that I can do some 
  changes that won't work with only a seg list being maintained.

(SBarInfo update #23)
- Fixed: Drawing the amount of an inventory item in the player's inventory did
  not work
- Added: PowerupTime to drawnumber and drawbar.  You must specify a
  powerupgiver.  Although drawnumber goes in seconds the powerup has left
  drawbar will use ticks for extra accuracy.
- I have increased cross-port compatibility with Skulltag.  If an unknown
  game mode is provided for sbarinfo's gamemode command it will ignore it and
  continue.
  
- Added an option to consider intermission screens gameplay for purposes of
  capturing the mouse.
- Changed: Telefragging should not thrust the victim if it isn't in precisely the
  same position as the killer.
- fixed: A_SpawnItemEx must call P_TeleportMove before checking the spawned
  object's position.
- Fixed: Ouch state was far to easy to achieve.
- Made all the basic texture classes local to their implementation.
  They are not needed anywhere else.
- Changed the HackHack hack for corrupt 256 pixel high textures that
  FMultiPatchTexture only calls a virtual function instead of doing any
  type checks of the patch itself.
- Cleaned up the constant definitions in doomdata.h.
- Moved the TEXTUREx structures from doomdata.h to multipatchtexture.cpp
  because they are used only in this one file.
- Removed some more typedefs from r_defs.h and doomdata.h
- Moved local polyobject data definitions from p_local.h to po_man.cpp.
- Renamed player_s to player_t globally to get rid of the duplicate names 
  for this class.
- Added coordinate range checking to DCanvas::ParseDrawTextureTags() to avoid
  potential crashes in the situation that con_scaletext is 2 and somebody
  uses a hud message as if a hud size was specified, but forgot to actually
  set the hud size.
- Consolidated the mug shot code shared by DSBarInfo and DDoomStatusBar
  into a single place.
- Fixed: Setting an invalid mug shot state crashed the game.
- Fixed my attempts to be clever with strings yesterday.
- If an actor's current target temporarily goes unshootable, its threshold
  is now reset to 0, so it will more readily switch back to it.
- Fixed: Deactivating the game no longer allows reverb effects to continue
  playing while the sound is paused.
- Fixed: S_StartNamedSound() looked for SECF_SILENT in MoreFlags instead of
  Flags.
- Fixed: DSBarInfo::updateState() and DDoomStatusBar::UpdateState() sprung
  leaks and didn't allocate enough space for the fullStateName string.
- Disabled DUMB's mono destination mixers. It's not like I'm ever going to
  target an original SoundBlaster, so they're a waste of space to have around.
  This trims resample.obj down to ~60k now.
- Fixed: PrtScn/SysRq key did not work on Linux.
- Added an alternate module replay engine that uses foo_dumb's replayer, a
  heavily customized version of DUMB (Dynamic Universal Music Bibliotheque).
  It has been slightly modified by me:
  * Added support for Ogg Vorbis-compressed samples in XM files ala FMOD.
  * Removed excessive mallocs from the replay core.
  * Rerolled the loops in resample.c. Unrolling them made the object file
    ~250k large while providing little benefit. Even at ~100k, I think it's
    still larger than it ought to be, but I'll live with it for now.
  Other than that, it's essentially the same thing you'd hear in foobar2000,
  minus some subsong detection features. Release builds of the library look
  like they might even be slightly faster than FMOD, which is a plus.
- Fixed: Timidity::font_add() did not release the file reader it created.
- Fixed: The SF2 loader did not free the sample headers in its destructor.


git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@113 b0f79afe-0144-0410-b225-9a4edf0717df
2008-06-03 21:48:49 +00:00
Christoph Oelckers
e304c4f717 - Last ZDoom update was incomplete. I forgot to copy one line of code in P_ChangeSector.
git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@109 b0f79afe-0144-0410-b225-9a4edf0717df
2008-05-23 20:31:37 +00:00
Christoph Oelckers
c266dc832c - Fixed: When walking on sloped 3D-floors, P_TryMove got the floor position from the
sector's actual floor instead from the 3D-floor.
- Fixed: Brightmaps were not disabled when fog was defined with a fadetable command in
  MAPINFO.

Update to ZDoom r994:

- Fixed: The compatibility searches for teleport destinations did not work
  properly when the teleporter had both a tid and a tag. Now, if a teleporter
  has a tag these are skipped because they are only present for Hexen
  compatibility.
- Fixed: The first texture in a TEXTURE1 lump, although invalid when used
  elsewhere, must be usable as sky (see Requiem.wad's SKY3.)
- Fixed: side_t::GetLightLevel relied on the global 'linedef' variable for
  automatic fake contrast.
- Changed: Fake contrast now uses the WALLF_AUTOCONTRAST globally instead
  of manipulating the sides' light values individually. This allows changing
  the fake contrast at run time and also allows adding individual relative
  lighting on top of it which is a planned UDMF feature.
- Fixed: ActorStencilColor() did not set the palette part of the actor's
  fill color, so it would always produce black for STYLE_Shaded.
- Added volume reduction for stereo sounds played in 3D to obtain levels
  closer to FMOD 3, which downmixed all stereo sounds to mono before
  playing them in 3D. Also added experimental 3D spread for stereo sounds
  so that you can actually hear them in stereo.
- Reworked a few options that previously depended on LEVEL_HEXENFORMAT
  (actors being forced to the ground by instantly moving sectors, strife
  railing handling and shooting lines with a non-zero but unassigned tag.)
  With UDMF such semantics have to be handled diffently. 
- finalized UDMF 1.0 implementation.
- Added Martin Howe's latest morph update.
- Fixed: When R_DrawTiltedPlane() calculates the p vector, it can overflow
  if the view is near the bounds of the fixed point coordinate system. This
  happens because it rotates the view position around (0,0) according to
  the current viewangle, so the resultant coordinate may be outside the
  bounds of fixed point. All important math in this function is now done
  entirely in floating point.
- Fixed: Slopes didn't draw right on 64-bit platforms.
- Fixed: With hardware 2D, the console and menu need not reimplement palette
  flashes to ensure their visibility.
- Fixed: DFlashFader::Destroy() did not call its super method.
- Fixed: If a player was morphed into a class with a taller view height,
  their perceived view height would not change until they walked up a step.
- Since KDIZD is the only mapset I know of that used reverb, and it didn't
  define any new ones of its own, I'm pre-emptively renaming the SNDEAX lump
  to REVERBS to remove any possible misunderstanding that this is something
  that requires EAX hardware support. (Ideally, it would have been REVERBDEF,
  but that's 10 characters long.) The eaxedit console command has also been
  renamed to reverbedit for the same reason.
- Fixed: The Palette part of FRemapTable was not initialized with alpha values
  other than 0. I'm not sure if it would be better to fix this in the game
  palette that it copies from or not, but right now, they get set
  unconditionally to 255.
- Fixed: M_DrawSave() and M_DrawLoad() need to use GetScaledWidth(), in case
  the texture is high-res.
- Replaced all instances of "flags +=" in sbarinfo_parser.cpp with "flags |="
  so that using the same flag multiple times will not have unexpected results.

(sbarinfo update #21)
- Added: sigil image type to correctly draw the sigil's icon.
- Added: Strife inventory bar style.  This is the only style that is radically
  different from the others.  First of all it changes the SELECTBO to be
  INVCURS and draws it before the icons.  Each box is changed to have a width
  of 35 pixels instead of 31 pixels.  And the INVCURS graphic is drawn at
  (x-6, y-2).
- Added: whennnotzero flag to drawnumber which will cause it to draw nothing if
  the value is 0.
- Fixed: New mugshot code would not leave the god state when it was supposed to
  enter the rampage state.
- Fixed: The ouch state was mostly broken.

(SBarInfo Update #20)
- Added: hasweaponpiece command to check for custom weapon pieces.
- Added: usessecondaryammo command to check if the current weapon has a second
  ammo type.
- Most of SBarInfo's mugshot scripting can be used with the default Doom status
  bar.
- Fixed: By default drawmugshot would never come out of normal god mode state.
  In addition the state change to and from god mode was not quite as responsive
  as the original code.

- Fixed: When FTextureManager::CheckForTexture finds a matching NULL texture
  it should always return 0, not the actual texture's index.
- Fixed coordinate checks for objects on 3DMidtex lines.
- Fixed: All translucent blending operations for CopyColors must treat an 
  alpha of 0 so that the pixel is not modified or texture composition as 
  intended will not work.
- Fixed: 3D hardware texture filling did not copy pixels with 0 alpha,
  preserving whatever was underneath in the texture box previously.
- Fixed: s_sound.cpp had its own idea of whether or not sounds were paused
  and did not entirely keep it in sync with the sound system's. This meant
  that when starting a new game from the menu, all sounds were played as
  menu sounds until you did something to pause the game, because s_sound.cpp
  thought sounds were unpaused, while the FMOD system thought they were.
- I finally managed to test the translucency options for composite texture
  definitions in HIRESTEX. The feature should be complete now.
- Fixed: A_CheckTargetInLOS used BAM angles instead of degrees which is the
  DECORATE convention.
- Added Snowkate709's A_CheckTargetInLOS addition.
- Added listmaps CCMD.
- Revised underwater effect now uses a lowpass filter in combination with an
  optional freeverb unit.
- Removed ResetEnvironment hack, since with software reverb, losing the
  existing reverb when focus is lost isn't a problem.
- Commented out the TiMidity FIXME messages.
- Fixed: FBarShader::GetColumn() passed incorrect information to the software
  renderer for horizontal bars.


git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@107 b0f79afe-0144-0410-b225-9a4edf0717df
2008-05-23 17:58:17 +00:00
Christoph Oelckers
1f492784df - Fixed dynamic light crash with respawning players.
Update to ZDoom r971:

- Changed: For actors not being spawned on the floor P_FindFloorCeiling should
  be used to prevent them from dropping through 3DMIDTEX textures.
- Fixed: AMageStaffFX2::IsOkayToAttack overwrote the projectile's angle variable.
- Changed the types of object hash indices in FArchive from size_t to DWORD.
  This seems to fix crashes on GCC 64-bit builds when saving games. Not sure
  if it was a GCC bug or my bug, since it worked fine with VC++, but since the
  code that calculates the index only returns a DWORD, storing it as a size_t
  was rather pointless.
- Added the C99 printf size specifiers 't' (ptrdiff_t) and 'z' (size_t) to
  FString::Format() so that I can fix all the problem printf strings that a
  64-bit GCC compile finds.
- Added Skulltag's PUFFGETSOWNER flag.
- Fixed: Parsing sector special bit masks must be done backwards so that later
  definitions take precedence.
- Added base translation tables for UDMF compatibility maps which only should
  handle the native line and sector types of each game.
- Turned the inactive SILENT_INSTANT_FLOORS define into a compatibility option
  so that it can be (un)set in a map definition and the menu.


git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@105 b0f79afe-0144-0410-b225-9a4edf0717df
2008-05-14 17:49:11 +00:00
Christoph Oelckers
7708436a98 - Fixed: The hitscan tracer had the current sector point to a temporary variable
when 3D floors were involved.

Update to ZDoom r965:
- Fixed: SPAC_AnyCross didn't work.
- Fixed: Pushable doors must also check for SPAC_MPush.
- Fixed: P_LoadThings2 did not adjust the byte order for the thingid field.
- Changed: HIRESTEX 'define' textures now replace existing textures
  of type MiscPatch with the same name.
- Added UDMF line trigger types MonsterUse and MonsterPush.
- Separated skill and class filter bits from FMapThing::flags so that
  UDMF can define up to 16 of each. Also separated easy/baby and
  hard/nightmare and changed default MAPINFO definitions.
- Fixed: FWadCollection::MergeLumps() did not initialize the flags for any
  marker lumps it inserted.
- Fixed: Need write barriers when modifying SequenceListHead.
- Added a new cvar: midi_timiditylike. This re-enables TiMidity handling of
  GUS patch flags, envelopes, and volume levels, while trying to be closer
  to TiMidity++ than original TiMidity.
- Renamed timidity_config and timidity_voices to midi_config and midi_voices
  respectively.
- Changed: Crosshair drawing uses the current player class's default health instead
  of 100 to calculate the color for the crosshair.
- Added SECF_NOFALLINGDAMAGE flag plus Sector_ChangeFlags to set it. Also separated
  all user settable flags from MoreFlags into their own Flags variable.
- Reduced volume, expression, and panning controllers back to 7 bits.
- Added very basic Soundfont support to the internal TiMidity. Things missing:
  filter, LFOs, modulation envelope, chorus, reverb, and modulators. May or
  may not be compatible with TiMidity++'s soundfont extensions.
- Changed all thing coordinates that were stored as shorts into fixed_t.
- Separated mapthing2_t into mapthinghexen_t and the internal FMapThing so
  that it is easier to add new features in the UDMF map format.
- Added some initial code to read UDMF maps.
- Added support for quoted strings to the TiMidity config parser.
- Split off the slope creation code from p_Setup.cpp into its own file.
- Separated the linedef activation types into a bit mask that allows combination
  of all types on the same linedef. Also added a 'first side only' flag. This
  is not usable from Hexen or Doom format maps though but in preparation of
  the UDMF format discussed here:
  http://www.doomworld.com/vb/source-ports/43145-udmf-v0-99-specification-draft-aka-textmap/
- Changed linedef's alpha property from a byte to fixed point after seeing that
  255 wasn't handled to be fully opaque.
- fixed a GCC warning in fmodsound.cpp
- Fixed: Warped textures didn't work anymore because the default speed was 0.
- Fixed: I had instrument vibrato setting the tremolo_sweep_increment value
  in the instrument loader, effectively disabling vibrato. 

git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@103 b0f79afe-0144-0410-b225-9a4edf0717df
2008-05-12 09:58:47 +00:00
Christoph Oelckers
28f28ed0bd - Update to ZDoom r924:
- Fixed: FBlockThingsIterator didn't set the current block coordinates if
  they were outside the blockmap. This could cause extreme delays if an
  iteration started outside the valid boundaries.
- Fixed: The music stream needs to zero the FMOD_REVERB_CHANNELPROPERTIES
  before sending it to Channel::getReverbProperties().
- Fixed: The earthquake effect did not play its sound as an actual looping
  sound. I'm a bit surprised this only recently started causing problems.
 

git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@96 b0f79afe-0144-0410-b225-9a4edf0717df
2008-04-19 00:59:34 +00:00
Christoph Oelckers
93df2a62bf Update to ZDoom r922:
- Added Martin Howe's fixes for morphing and DECORATE function prototypes.
- Minor fixes in texture code.
- Fixed: The FMOD::System object was never released, only closed, so
  snd_reset would eventually run into the hard limit on the total number
  of FMOD::System objects that can be created concurrently (currently 15).
- Added proper error checks to the FMOD initialization process.
- Updated fmod_wrap.h for FMOD 4.14.
- Set note velocity back to using a linear sounding volume curve, although
  it's now used to scale channel volume and expression, so recompute_amp()
  is still only doing one volume curve lookup.
- Fixed: TimidityMIDIDevice caused a crash at the end of a non-looping song.
- Made translation support for multipatch textures operational.
- Added support for the GUS patch format's scale_frequency and scale_factor
  parameters. These seem to be used primarily to restrict percussion
  instruments to specific notes.
- Changed note velocity to not use the volume curve in recompute_amp(), since
  this sounds closer to TiMidity++, although I don't believe it's correct
  MIDI behavior. Also changed expression so that it scales the channel volume
  before going through the curve.
- Reworked load_instrument() to be less opaque.
- Went through the TiMidity code and removed pretty much all of the SDL_mixer
  extensions. The only exception would be kill_others(), which I reworked
  into a kill_key_group() function, which should be useful for DLS
  instruments in the future.
- Added translation support to multipatch textures. Not tested yet!
- Added Martin Howe's morph weapon update.
- Changed true color texture creation to use a newly defined Bitmap class
  instead of having the copy functions in the frame buffer class.
- Fixed: The WolfSS didn't have its obituary defined.
- Added submission for ACS CheckPlayerCamera ACS function.
- Removed FRadiusThingsIterator after discovering that VC++ misoptimized
  it in P_CheckPosition. Now FBlockThingsIterator is used with the distance
  check being done manually.


git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@94 b0f79afe-0144-0410-b225-9a4edf0717df
2008-04-17 20:58:50 +00:00
Christoph Oelckers
f5930d3fb5 Update to ZDoom r905:
- Added Martin Howe's morph system update.
- Added support for defining composite textures in HIRESTEX. It is not fully tested
  and right now can't do much more than the old TEXTUREx method.
- Added a few NULL pointer checks to the texture code.
- Made duplicate class names in DECORATE non-fatal. There is really no stability
  concern here and the worst that can happen is that the wrong actor is spawned.
  This was a constant hassle when testing with WADs that contain duplicate resources.
- Removed some GCC warnings.
- Fixed: MinGW doesn't have _get_pgmptr(), so it couldn't compile i_main.cpp.
- Fixed: MOD_WAVETABLE and MOD_SWSYNTH are not defined by w32api, so MinGW
  failed compiling the new MIDI code.
- Fixed: LocalSndInfo and LocalSndSeq in S_Start() need to be const char
  pointers, since "" is a constant.
- Fixed: parsecontext.h was missing a newline at the end of the file.
- Fixed: Timidity::Channel::mono, rpn, and nrpn were not initialized. In
  particular, this meant that every channel was almost certainly in mono mode,
  which can sound pretty bad if the song isn't meant to be played that way.
- Added bank numbers to the MIDI precaching for Timidity, since I guess I do
  need to care about banks, if even the Duke MIDIs use various banks.
- Fixed: snd_midiprecache only exists in Win32 builds, so gameconfigfile.cpp
  shouldn't unconditionally link against it.
- Fixed: pre_resample() was still disabled, and it left two samples at the end
  of the new wave data uninitialized.
- Moved the xmap table from timidity/tables.cpp to playmidi.cpp. Now I can get
  rid of timidity/tables.cpp, which conflicts in name with the main Doom
  tables.cpp. (And interestingly, VC++ automatically renamed the object file,
  so I wasn't aware of the problem with GCC.)
- Added a Gets function to the FileReader class which I planned to use
  to enable Timidity to read its config and sound patches from Zips. 
  I put this on hold though after finding out that the sound quality 
  isn't even near that of Timidity++.
- GCC-Fixes (FString::GetChars() for Printf calls)
- Added a dummy Weapon.NOLMS flag so that Skulltag weapons using this flag
  can be loaded
- Changed the MIDIStreamer to send the all notes off controller to each
  channel when restarting the song, rather than emitting a single note off
  event which only has 1 in 127 chance of being for a note that's playing
  on that channel. Then I decided it would probably be a good idea to reset
  all the controllers as well.
- Increasing the size of the internal Timidity stream buffer from 1/14 sec
  (copied from the OPL player) improved its sound dramatically, so apparently
  Timidity has issues with short stream buffers. It's now at 1/2 sec in
  length. However, there seems to be something weird going on with
  corazonazul_ff6boss.mid near the beginning where it stops and immediately
  restarts a guitar on the exact same note.
- Added a new sound debugging cvar: snd_drawoutput, which can show various
  oscilloscopes and spectrums.
- Eliminated some more global variables (onmobj, DoRipping, LastRipped,
  MissileActor, bulletpitch and linetarget.)
- Internal TiMidity now plays music. Unfortunately, it doesn't sound right. :(
- Changed the progdir global variable into an FString.

git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@90 b0f79afe-0144-0410-b225-9a4edf0717df
2008-04-12 18:59:23 +00:00
Christoph Oelckers
b75a6dcea6 Update to ZDoom r898:
- Replaced P_PathTraverse with an FPathTraverse class, rewrote all code using
  P_PathTraverse and got rid of a lot of global variables in the process.
- Simplified the use of the checkarray in FBlockThingsIterator: Since the entire
  game runs single threaded there is no need for multiple check arrays if 
  recursive use occurs. Using the same array with a higher start index is 
  sufficient if the size is reset after finishing using the iterator.

April 9, 2008 (SBarInfo Update #17)
- Fixed: SBarInfo tried to calculate scaled offsets on unscaled status bars.
- Added: createpopup to SBarInfo.  No we don't have custom popups yet.  It only
  defines the transition effect.  Currently none or slideinbottom.
- Made the first argument of DrawMugShot optional (think of it as an overloaded
  function).  The use of the first argument is deprecated due to the event of
  per player class faces.
- More changes from DrawImage to screen->DrawTexture().  I guess I didn't get
  them all just yet.

- Added the FCriticalSection class in critsec.h to make it easier to
  use critical sections in other places besides the OPL player.
- Reimplemented snd_midiprecache, now for MIDI as well as MUS, and
  defaulting to false. 

git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@89 b0f79afe-0144-0410-b225-9a4edf0717df
2008-04-10 08:09:21 +00:00
Christoph Oelckers
700adbf82f Update to ZDoom r894:
- Eliminated all use of global variables used as output for P_CheckPosition
  and P_TryMove. Moved BlockingLine and BlockingMobj into AActor because 
  the global variables can be easily overwritten with certain DECORATE 
  constructs.
- Removed some unnecessary morphing code.
- Fixed some bugs in the HIRESTEX parser.
- Added floating point support and #include and #define tokens to 
  FParseContext  Not used yet.
- replaced the value scanning code in FParseContext::GetToken with
  calls to strtol.
- Changed XlatParseContext::FindToken to do a binary search over the
  valid token names.
- Fixed: The check arrays for BlockThingsIterators were not properly
  freed and each iterator allocated a new one as a result.
- Split the Xlat parser context class into a generic part that can be 
  used for other Lemon-based parsers in the future and a smaller
  Xlat-specific part.
- Changed: P_TeleportMove now always sets BlockingLine to NULL and
  P_FindFloorCeiling doesn't set it at all. The way it was set in 
  PIT_FindFloorCeiling didn't look correct. (Note: It's amazing how
  easy it is to break P_TryMove et.al. with DECORATE if you just know
  which combinations of code pointers will cause problems. This definitely
  needs to be addressed.)
- Changed P_FindFloorCeiling so that it doesn't need global variables 
  anymore. I also moved the code to set the calling actor's information
  into this function because that's all it is used for. This also fixes
  another bug:
- AInventory::BecomePickup called P_FindFloorCeiling to get
  proper position values for the item but never set the item's information
  to the return value of this call.
- Removed the check for Heretic when playing *evillaugh when using the 
  Chaos Device. This sound is not defined by the other games so it won't
  play by default.
- Added MORPH_UNDOMORPHBYTOMEOFPOWER and MORPH_UNDOMORPHBYCHAOSDEVICE flags
  for the morph style so that the special behavior of these two items
  can be switched on and off.
- Added Martin Howe's morph system enhancement.
- Removed PT_EARLYOUT from P_PathTraverse because it wasn't used anywhere.
- Rewrote BlockThingsIterator code not to use callbacks anymore.
- Fixed: PIT_FindFloorCeiling required tmx and tmy to be set but 
  P_FindFloorCeiling never did that.
- Merged Check_Sides and PIT_CrossLine into A_PainShootSkull.
- Replaced P_BlockLinesIterator with FBlockLinesIterator in all places it was
  used. This also allowed to remove all the global variable saving in
  P_CreateSecNodeList.
- Added a new FBlockLinesIterator class that doesn't need a callback
  function because debugging the previous bug proved to be a bit annoying
  because it involved a P_BlockLinesIterator loop.
- Fixed: The MBF code to move monsters away from dropoffs did not work as 
  intended due to some random decisions in P_DoNewChaseDir. When in the
  avoiding dropoff mode these are ignored now. This should cure the problem
  that monsters hanging over a dropoff tended to drop down.
- Added a NOTIMEFREEZE flag that excludes actors from being affected by
  the time freezer powerup.
- Changed: Empty pickup messages are no longer printed.
- Changed secret sector drawing in automap so that lines with the ML_SECRET
  flag are only drawn as part of a secret sector if that secret has already
  been found, even if the option is set to always show secret sectors. 

git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@88 b0f79afe-0144-0410-b225-9a4edf0717df
2008-04-08 22:32:52 +00:00
Christoph Oelckers
cabaf17cac - Fixed: The players were not added to FS's list of spawned things.
- Update to ZDoom r882
- Added the option to use $ as a prefix to a string table name everywhere in
  MAPINFO where 'lookup' could be specified so that there is one consistent
  way to do it.
- Externalized all default episode definitions. Added an 'optional' keyword
  to handle M4 and 5 in Doom and Heretic.
- Added P_CheckMapData function and replaced all calls to P_OpenMapData that
  only checked for a map's presence with it.
- Added Martin Howe's player statusbar face submission.
- Added an 'adddefaultmap' option for MAPINFO. This is the same as 'defaultmap'
  but keeps all existing information in the default and just adds to it. This
  is needed because Hexen and Strife set some information in their base
  MAPINFO and using 'defaultmap' in a PWAD would override that.
- Fixed: Using MAPINFO's f1 option could cause memory leaks.
- Added option to load lumps by full name to several places:
  * Finale texts loaded from a text lump
  * Demos
  * Local SNDINFOs
  * Local SNDSEQs
  * Image names in FONTDEFS
  * intermission script names
- Changed the STCFN121 handling. The character is not an 'I' but a '|' so
  instead of discarding it it should be inserted at position 124.
- Renamed indexfont.fon to indexfont so that I could remove a special case
  from V_GetFont that was just added for this one font.
- Added a 'dumpspawnedthings' CVAR that enables a listing of all things in 
  the map and the actor type they spawned.

SBarInfo Update #16
- Added: fillzeros flag for drawnumber.  When set the string will always have
  a length of the specified size and zeros will fill in for the missing places.
  If the number is negative the negative sign will take the place of the last
  digit.
- Added: globalarray type to drawnumber which will display the value in a
  global array with the index set to the player's number.  Untested.
- Added: isselected command to SBarInfo.
- Fixed: Bi and Tri colored numbers didn't work.
- Fixed: Crash when using nullimage as the last image in drawswitchableimage.
- Applied Graf suggestion to include the y coord when calulating heights to fix
  most of the gaps caused by round off errors.  At least for now anyways and it
  is only applied for drawimage.
- SBarInfo inventory bars have been converted to use screen->DrawTexture()
- Increased limit for demon/melee to 4.
- Fixed: P_CheckSwitchRange accessed invalid memory when testing a one-sided
  line.
- Fixed: P_SpawnPuff assumed that all melee attacks have the same range
  (MELEERANGE) and didn't set the puff to its melee state if the range
  was different. Even worse, it checked a global variable for this so
  the behavior was undefined when P_SpawnPuff was called from anywhere
  else but P_LineAttack. To reduce the amount of parameters I combined
  this information with the hitthing and temporary parameters into one
  flags parameter. Also changed P_LineAttack so that it gets passed
  an additional parameter that specifies whether the attack is a melee
  attack or not and set this to true in all calls that are to be considered
  melee attacks. I couldn't use the damage type because A_CustomPunch
  and A_CustomMeleeAttack allow passing any damage type they want.
- Added a sprite option as an alternative of particles for FX_ROCKET 
  and FX_GRENADE.
- Fixed: The minimum parameter count for ACS_Execute and ACS_ExecuteAlways for
  DECORATE was wrong (2 instead of 1.)
- Changed: Hexen set every cluster to be a hub if it hadn't been defined before
  a level using this cluster. Now it will only do that if HexenHack is true, 
  i.e. when original Hexen format MAPINFOs are parsed. For ZDoom format 
  MAPINFOs it will now be the same as for the other games which means that 
  'hub' has to be declared explicitly.
- Added an Idle state that is entered in place of the spawn state if a monster
  has to return to its inactive state if it can't find any more targets.
- Added MF5_NOINTERACTION flag which completely disables all physics related
  code for any actor with this flag. Mostly useful for particle effects where
  the actors just move a certain distance and then disappear.
- Removed the last remains of the antialias precalculation code from
  am_map.cpp because it was no longer used.
- Fixed: Two-sided lines bordering a secret sector were not drawn in the
  proper color
- Fixed: The automap didn't check ACS_LockedExecuteDoor for its lock color.
- Switched sounds local to the listener from head-relative 3D sounds to 2D
  sounds so stereo sounds have full separation. I tried using set3DSpread,
  but that still caused some blending of the channels.
- Changed FScanner so that opening a lump gives the complete wad+lump name
  rather than a generic one, so identifying errors among files that all have
  the same lump name no longer involves any degree of guesswork in
  determining exactly which file the error occurred in.
- Added a check to S_ParseSndSeq() for SNDSEQ lumps with unterminated final
  sequences.
- Fixed: Parts of s_sndseq.cpp that scan the Sequences array need NULL
  pointer checks, in case an improper sequence was encountered during
  parsing but not early enough to avoid creating a slot for it in the array.
- Added support for dumping from RAW/DRO/IMF files, so now anything that
  can be played as OPL can also be dumped.
- Removed the opl_enable cvar, since OPL playback is now selectable as just
  another MIDI device.
- Added support for DRO playback and dual-chip RAW playback.
- Removed MUS support from OPLMUSSong, since using the OPLMIDIDevice with
  MUSSong2 works just as well. There are still lots of leftover bits in
  the class that should probably be removed at some point, too.
- Added dual-chip dumping support for the RAW format.
- Added DosBox Raw OPL (.DRO) dumping support. For whatever reason,
  in_adlib calculates the song length for this format wrong, even though
  the exact length is stored right in the header. (But in_adlib seems buggy
  in general; too bad it's the only Windows version of Adplug that seems to
  exist.)
- Rewrote the OPL dumper to work with MIDI as well as MUS. 

git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@86 b0f79afe-0144-0410-b225-9a4edf0717df
2008-04-05 13:28:48 +00:00
Christoph Oelckers
44a4bd74ab - Update to ZDoom r862
git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@81 b0f79afe-0144-0410-b225-9a4edf0717df
2008-03-28 09:56:50 +00:00
Christoph Oelckers
69ffed978f - Update to ZDoom r860
git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@80 b0f79afe-0144-0410-b225-9a4edf0717df
2008-03-27 23:36:32 +00:00
Christoph Oelckers
f0ef4540b6 - Added ZDoom's new sound code now that $limit is working again
Update to ZDoom r853
- Increased the limit for 'imp/active' to 6. This sound definitely benefits  
  from a higher limit.
- Fixed: $limit should not apply to sounds played from the menu.
- Fixed: The SNDSEQ parser tried to set bDoorSound before actually creating
  the sound sequence data.
- Changed Lemon so that it always writes the header. It still kept recompiling
  the grammar over and over again once it had been changed locally.
- Fixed: ANIMATED allowed animations between different texture types.
- Added a debuganimated CCMD that can be used to output some information
  if a WAD shows broken animations.
- Removed xlat_parser.h from the repository. Lemon was always being run on
  xlat_parser.y because both files had the same time stamp after an update,
  and Lemon only rewrites the header file if it's changed.
- Added $volume SNDINFO command. This is multiplied with the volume the sound
  is played at to arrive at the final volume (before distance attenuation).
- Added the CHAN_AREA flag to disable 3D panning within the min distance of a
  sound. Sector sound sequences (except doors) use this flag.
- Added the CHAN_LOOP flag to replace the S_Looped* sound functions.
- Fixed: THe handling for enum values in Xlat was incorrect. The rule with 
  value assignment must set the counter one higher than the current value.
- Fixed: The definition of enums in the Xlat grammar was right-recursive
  which could create stack overflows in the parser. Made it left-recursive as
  recommended in Lemon's docs. 
- Added Thomas's submissions for decal assignment to puffs and NOINFIGHTING flag.
- Reverted changes of r715 in v_collection.cpp because they broke loading
  of status bar face graphics belonging to skins.
SBARINFO update #15
- Fixed: Monospacing fonts wasn't quite correct.
- Fixed: The new mug shot code forgot to use the first arg of drawmugshot (the
  one that picks the default sprite prefix).
- Added: lowerHealthCap variable to SBarInfo, which is set to true by default.
- Added: ininventory event to SBarInfo to detect if one or two items are in (or
  not in) the player's inventory.
- Added: The ability to print global vars using drawnumber.  I need someone to
  test it though.
- Added: aspectratio command to detect what the user's aspect ratio is.
- Added: missing spacing argument to drawstring.
- Changed the sbarinfo display routine for drawnumber to not use cmd.value to
  store what it is about to display.  Now it uses a new variable.
- More conversions from DrawImage to screen->DrawTexture.  I think only the
  inventory bar drawing functions have to be changed now.



git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@78 b0f79afe-0144-0410-b225-9a4edf0717df
2008-03-25 16:19:31 +00:00
Christoph Oelckers
6a9ef44181 - Added more options to Light_ForceLightning: Setting the first arg to 0
will behave as before, setting it to 1 will create exactly one lighting
  and setting it to 2 will terminate lightning for the current level
  completely. And it will also work on maps that don't have lightning set
  in MAPINFO now.
- Added: Sector movement that causes deep water to change its height now
  will trigger associated sector actions and adjust the actor's water level.
- Fixed: The serializer for side_t::part never read the texture information
  from a savegame.
- Fixed: side_t::StopInterpolation called setinterpolation instead of
  stopinterpolation. Also moved the clearinterpolation call in 
  P_SetupLevel after the P_FreeLevelData to make absolutely sure that
  nothing in there can leave an interpolator behind by accident.
- Applied Linux fixes by Jim.
SBARINFO update by Blzut3:
- Fixed: the playerclass command needed a null pointer check to prevent
  crashing on respawn.
- Fixed: Mug Shot states were not reset on respawn.
- Removed keepoffsets flag since apparently it was keeping the offsets by
  default.  The means that the only thing not affected by the offsets was using
  nullimage as a background.  Since I wasn't able to get a result I liked I'm
  going to say that if you want a black background with high res positioning
  you will have to create your own bar image.  Maybe I'll fix it some other
  time.
- Added: monospacefonts variable which allows for all of the fonts to be
  monospaced by a specified character (from their fontset of corse).
- Made SBarInfo recognize the bar names for the Strife popups but they don't
  do anything beyond that.  The names are: popuplog, popupkeys, and popupstatus.
- Started converting the drawing routine to be more flexable towards high
  resolution status bars.  (Only did one call so far.)

NOTE: ZDoom's new sound code is not in yet because it's still too broken for serious use.


git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@69 b0f79afe-0144-0410-b225-9a4edf0717df
2008-03-22 14:50:30 +00:00
Christoph Oelckers
3aabe2f752 Update to ZDoom r813, including:
- Added copyright/license headers to a few files.
- Fixed: ACS SetMugShotState needs to check the StatusBar pointer for the
  proper object type.
- Move SBarInfo loading code in d_main.cpp into a static method of DSBarInfo.
- Removed dobject.err from the repository. It only contained a list of compiler
  errors for some very old version of dobject.cpp.
- Fixed: A_JumpIfCloser was missing a z-check.
- Added Blzut3's SBARINFO update #13:
- Split sbarinfo.cpp into two files sbarinfo_display.cpp and sbarinfo_parser.cpp
- Rewrote the mug shot system for SBarInfo to allow for scripting and custom
  states for different means of death.
- SBarInfo now loads all SBarInfo lumps instead of just the last one.  Clashing
  status bar definitions will now be cleared before the bar is read.
- Fixed: When using transparency with bars the new drawing method (bg over fg)
  didn't work.  In the case that the border value is set to 0 it will revert to
  the old method (fg over bg).
- Fixed: drawbar lost any high res information it was given.
- Added: ACS command SetMugShotState(str state) which sets the mug shot state
  for the activating player.
- Added: keepoffsets flag to drawbar.  When set the offsets in the fg image will
  also be applied when displaying the bar.

- Fixed the TArray serializer declaration.
  (Thank you for your warnings, GCC! ;-)
- Changed root sector marking so that it can happen incrementally.
- Fixed: The TArray serializer needs to be declared as a friend of TArray
  in order to be able to access its fields.
- Since there are no backwards compatibility issues due to savegame version
  bumping I closed all gaps in the level flag set.
- Bumped min. Savegame version and Netgame version for 3dMidtex related
  changes.
- Changed Jump and Crouch DMFlags into 3-way switches:
  0: map default, 1: off, 2: on. Since I needed new bits the rest of
  the DMFlag bit values had to be changed as a result.
- fixed: PTR_SlideTraverse didn't check ML_BLOCKMONSTERS for sliding
  actors without MF3_NOBLOCKMONST.
- Added MAPINFO commands 'checkswitchrange' and 'nocheckswitchrange'
  that can enable or disable switch range checking globally per map.
- Changed ML_3DMIDTEX to force ML_CHECKSWITCHRANGE.
- Added a ML_CHECKSWITCHRANGE flag which allows checking whether the 
  player can actually reach the switch he wants to use.
- Made DActiveButton::EWhere global so that I can use it outside thr
  DActiveButton class.
- Changed P_LineOpening to pass its result in a struct instead of global
  variables.
- Added Eternity's 3DMIDTEX feature (no Eternity code used though.)
  It should be feature complete with the exception of the ML_BLOCKMONSTERS
  flag handling. That particular part of Eternity's implementation is
  sub-optimal because it hijacks an existing flag and doesn't seem to make
  much sense to me. Maybe I'll implement it as a separate flag later.


git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@62 b0f79afe-0144-0410-b225-9a4edf0717df
2008-03-19 11:19:03 +00:00
Christoph Oelckers
a1dff6d8a7 - Update to ZDoom r807.
- removed the FLAC subproject because it isn't used anymore.


git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@61 b0f79afe-0144-0410-b225-9a4edf0717df
2008-03-16 16:23:08 +00:00
Christoph Oelckers
e8e77c8122 - updated to ZDoom r791
- fixed: Mod playback through ModPlug only worked for music that was stored within Zips.


git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@53 b0f79afe-0144-0410-b225-9a4edf0717df
2008-03-09 16:01:55 +00:00
Christoph Oelckers
fc9c4a20d9 - Update to ZDoom r780.
git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@51 b0f79afe-0144-0410-b225-9a4edf0717df
2008-03-01 18:54:31 +00:00
Christoph Oelckers
0394c5d9a4 - Updated to ZDoom r744
- fixed: Fog didn't work with Line_Horizon
- fixed: Using ExtraFloor_LightOnly in a skybox with non-black fog caused rendering
- fixed: Apparently it is possible that AActor::Tick is called after the 3D floor data has been deleted.
- fixed: The desaturation shader must first desaturate and then light. It did it in reverse order.
- fixed: gl_billboard_mode used an incorrect default value.

git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@17 b0f79afe-0144-0410-b225-9a4edf0717df
2008-02-14 13:07:19 +00:00
Christoph Oelckers
6d6925dece - Added support for AttackZOffset to P_RailAttack.
- Fixed: ParseDrawTextureTags read DTA_RenderStyle as ERenderStyle, not FRenderStyle.
- Fixed: attached dynamic lights must not be reassigned by DObject::PointerSubstitution.


git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@12 b0f79afe-0144-0410-b225-9a4edf0717df
2008-01-30 19:00:45 +00:00
Christoph Oelckers
961fafbdb2 - Fixed several GCC warnings
- Fixed rounding error in texture scaling.
- Fixed: RenderStyle Stencil was always opaque


git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@9 b0f79afe-0144-0410-b225-9a4edf0717df
2008-01-27 23:11:51 +00:00
Christoph Oelckers
179ea921f9 - Update to ZDoom r718
- Added ModPlug as an option to play MOD music because FMOD is not that good for it.


git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@4 b0f79afe-0144-0410-b225-9a4edf0717df
2008-01-27 15:34:47 +00:00
Christoph Oelckers
72ae7fa01b Initial import - version 1.0.32
git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@1 b0f79afe-0144-0410-b225-9a4edf0717df
2008-01-27 11:25:03 +00:00