Commit graph

491 commits

Author SHA1 Message Date
Randy Heit
8d5402cec2 - Added "\c" support to ParseCommandLine() when it parses quoted strings.
- Fixed: When changing your name from the menu, you got an extra " appended
  to your name if it ended with a backslash.
- Added escape sequences for user info strings, so now they can contain
  embedded backslashes.
- Fixed an array-out-of-bounds access when drawing the player setup menu with
  an invalid team number.


SVN r598 (trunk)
2007-12-15 03:27:40 +00:00
Randy Heit
f618134f15 - Fixed: The MAPINFO flags that control jumping, crouching, and freelook,
rather than overriding the dmflags values, actually overwrote the dmflags
  values, so they would continue to be in effect on later maps that didn't
  explicitly specify them.


SVN r595 (trunk)
2007-12-11 04:03:40 +00:00
Randy Heit
acbe3a191e - Fixed: Redefining a decal did not rebind any old references to the decal, so
they would be left pointing at invalid data.


SVN r594 (trunk)
2007-12-11 03:29:31 +00:00
Randy Heit
e666cde418 - Fixed some more GCC warnings.
- Updated project files for nasm 2.0, which is now named nasm.exe for the
  Windows version, rather than nasmw.exe. Also fixed the annoying new warnings
  it generated.


SVN r593 (trunk)
2007-12-11 02:38:38 +00:00
Christoph Oelckers
7d63937d7d - Fixed: M_VerifyNightmare must use the selected skill level to start the
game, not always 4.


SVN r592 (trunk)
2007-12-10 08:21:25 +00:00
Christoph Oelckers
b8827b1b86 - Fixed: There was no working means to pass 'no state' to A_Chase.
Now 0 or an empty string will do that.
- Copied the empty string fix for SC_CheckNumber to SC_CheckFloat.

SVN r591 (trunk)
2007-12-09 09:54:58 +00:00
Randy Heit
6a00173a12 - Fixed: SECSPAC_EyesSurface and SECSPAC_EyesDive did not trigger due to
crouching motion.
- Fixed: The keypress for nightmare mode verification appeared in the console
  if the fullscreen console was open while using the menu.
- Added support for scaling down large console fonts in the customize
  controls menu.
- Fixed: Joining a negative team was possible.


SVN r590 (trunk)
2007-12-09 03:40:02 +00:00
Randy Heit
1225071f78 - Fixed: Skill level confirmation only worked with Doom. Also fixed parsing
of MustConfirm: It looked for TK_String when it should have used TK_StringConst.
- Fixed: When travelling to a new non-hub map, any items being carried with
  amounts of 0 would be upped to 1.


SVN r589 (trunk)
2007-12-09 02:27:02 +00:00
Randy Heit
a849564d62 - Fixed: When the game starts with the net pane open, the abort button
receives the input focus. When the pane is closed, the focus doesn't
  return to any window, so even though the window is still active, it no
  longer has the focus and does not receive input events.
- Fixed: The network synch timer was still left running after the game
  started. (Windows only)
- Fixed: When a player leaves the game at the exact moment they are being
  damaged, the game could crash because their actor still had a valid player
  pointer, but the player's mo pointer had been NULLed.


SVN r588 (trunk)
2007-12-09 01:14:35 +00:00
Randy Heit
282e9f5f01 - Fixed: MAPINFO is parsed before the text colors are read, so the TextColor
option for skills wouldn't work.


SVN r587 (trunk)
2007-12-08 22:57:55 +00:00
Randy Heit
351ed8dcd1 - Changed the PowerTimeFreezer "blink" effect back to checking against
EffectTics (now + 1), because I wasn't convinced of the correctness of
  using level.time.
- Fixed: SC_CheckNumber() considered the empty string "" as the number 0.


SVN r586 (trunk)
2007-12-08 22:29:59 +00:00
Randy Heit
f76ef6ffc2 - Reverted the 'None' name change from r569.
SVN r585 (trunk)
2007-12-08 22:17:48 +00:00
Randy Heit
cc9dc13f55 - Fixed the PowerTimeFreezer, too. It got easier once I realized that I only
need to be concerned about changing the flag on odd tics, since A_Tracer()
  is called every two tics, not four.


SVN r584 (trunk)
2007-12-07 05:12:30 +00:00
Randy Heit
0adaaeb5d7 - Fixed: Using the freeze command would make the Revenant missiles switch
their seekingness. The only sane way to deal with this seemed to be to
  sync the freeze changes with the timer check in A_Tracer(), so that's what
  I did: Freeze mode only changes every four tics now.


SVN r583 (trunk)
2007-12-06 23:17:38 +00:00
Randy Heit
7f52e6537b - Added IWAD-based [*.Autoload] ini support for games that have more than one
IWAD. They are:
  * [Doom1.Autoload]
  * [Doom2.Autoload]
  * [Plutonia.Autoload]
  * [TNT.Autoload]
  * [HexenDK.Autoload]
  These are loaded after the more general game-specific [Doom.Autoload] and
  [Hexen.Autoload] sections if those are present.
- Changed the banner texts for the Final Doom IWADs to identify them as Final
  Doom rather than as DOOM 2. I know this differs from the original behavior,
  but they're marketed as Final Doom, not Doom 2.


SVN r582 (trunk)
2007-12-06 22:38:45 +00:00
Randy Heit
1dede60c5c - New: On Windows, the game now checks the registry to see if you have Steam
installed. If so, it checks your SteamApps directory for any IWADs you may
  have purchased through Steam and adds any it finds to the list of available
  IWADs you can play. This means that if you bought your id games through
  Steam, you can just extract ZDoom anywhere you like and run it without doing
  any additional setup.


SVN r581 (trunk)
2007-12-06 19:15:07 +00:00
Randy Heit
1eca84d644 - Fixed: The FLAC/makefile.mgw should use md5.o as an OBJ, not md5.c.
- Fixed: The Linux makefile probably shouldn't be using the bundled zlib headers,
  either.


SVN r580 (trunk)
2007-12-06 17:38:05 +00:00
Christoph Oelckers
1af122142b - Added Karate Chris's submission for scoreboard enhancement.
SVN r579 (trunk)
2007-12-06 14:33:28 +00:00
Christoph Oelckers
47dafa3824 - Fixed: A_PainDie and A_DualPainAttack could fail to spawn the correct actor
if the first spawned one died and executed some code in its death state.
- Added Karate Chris's submission for 'allowrespawn' MAPINFO option.
- Added Karate Chris's submission for customizable skill confirmation text.
- Fixed: Doom's statusbar only checked for primary attacks, not secondary ones when
  setting Doomguy's face. (Thanks to Karate Chris for the fix.)
- added Skulltag's FORCEYBILLBOARD and FORCEXYBILLBOARD flags to the DECORATE parser.
  Even though the software renderer has no use for them it is necessary to support them
  so that mods can use these flags without becoming incompatible with ZDoom.


SVN r576 (trunk)
2007-12-06 08:55:17 +00:00
Randy Heit
2e56925c36 - Fixed: The Linux makefile should use the include files for the system FLAC
installation, not the bundled copies which might not match what is installed.
- Upgraded bundled FLAC from version 1.1.2 to version 1.2.1.


SVN r575 (trunk)
2007-12-06 04:10:26 +00:00
Christoph Oelckers
aeee07218c - after looking at the most recent Vavoom update I realized that A_FastChase should not
use the multi-purpose special2 as counter for strafing so I added a new variable
  for this purpose.
- forgot to save p_lnspec.cpp before last commut.


SVN r574 (trunk)
2007-11-28 13:53:55 +00:00
Christoph Oelckers
0c5731223c - added Floor_MoveToValue and Ceiling_MoveToValue action specials.
SVN r572 (trunk)
2007-11-28 09:11:35 +00:00
Christoph Oelckers
e1abe4b380 - Changed first name from 'none' to ''. The internal constant is still NAME_None,
though.
- Fixed: Picking up a backpack incorrectly set the maximum amount for any ammo
  type that didn't have a BackpackMaxAmount to 0.


SVN r569 (trunk)
2007-11-19 20:32:39 +00:00
Christoph Oelckers
ba61c60d52 - Fixed: When the DONTMOVE flag for A_Chase was used, movecount was not decreased
resulting in missile attacks not working.
- Fixed: Hitscan attacks used the puff's position to calculate the trajectory for
  weapon kickback.


SVN r568 (trunk)
2007-11-19 08:13:23 +00:00
Christoph Oelckers
912f8666d7 November 11, 2007 (Changes by Graf Zahl)
- Fixed: The FMOD stream player must specify whether it wants to play the
  sound looped or not when playback is started, not when the stream is created.
- Fixed: A_Saw didn't use the puff's damage type.
- Fixed: The AxeBlood's death state was using the wrong sprite frame.
- Fixed: The Mancubus had an attack sound defined even though it shouldn't.


SVN r565 (trunk)
2007-11-11 09:02:04 +00:00
Christoph Oelckers
c9aaf8460b Forgot to save rh-log.txt before committing (again...)
SVN r564 (trunk)
2007-11-08 09:22:46 +00:00
Christoph Oelckers
621fe2ed98 - Changed PowerFlight so that Hexen's infiniteness is not controlled by being
in a hub but by a level flag instead.
- Fixed: Floor and ceiling huggers must set themselves to floor and ceiling each
  time they move.
- Added a LEVEL_NOMONSTERS flag so that G_ChangeLevel doesn't have to mess with
  the dmflags CVAR to start the level without monsters.


SVN r563 (trunk)
2007-11-08 09:22:06 +00:00
Christoph Oelckers
8f5dd5d028 - Fixed: Backpacks didn't increase the ammo capacity to BackpackMaxAmount if
an ammo type's BackpackAmount was 0.
- Fixed some minor bugs in custom skill code.

SVN r562 (trunk)
2007-11-04 08:39:05 +00:00
Christoph Oelckers
659107cacf - Added text color options to menu code so that the skill definitions can set
the color of the menu's text.
- Externalized skill settings to ZDoom.pk3


SVN r559 (trunk)
2007-11-03 11:41:42 +00:00
Christoph Oelckers
52e5f8b8e1 - Added skill definitions to MAPINFO.
SVN r558 (trunk)
2007-11-02 22:03:03 +00:00
Christoph Oelckers
170b633e91 - added two new things which can set a sector's color without the need of tags
or scripts. ColorSetter (#9038) sets the sector's color and FadeSetter (#9039)
  sets the fog color.
- added new flags MF5_ALWAYSFAST and MF5_NEVERFAST. These flags unconditionally
  enable or disable fast movement logic, regardless of skill settings.
- added an abstraction layer for skill related settings. This is a preparation
  for implementing custom skill definitions but right now all it does is
  returning the original values but keeping the related information all in one
  place


SVN r557 (trunk)
2007-10-29 22:15:46 +00:00
Christoph Oelckers
ab9a6623fd Forgot to save rh-log.txt for 555.
SVN r556 (trunk)
2007-10-29 20:29:07 +00:00
Christoph Oelckers
b15767c26f - Fixed: The pointer cleanup code must also check a sector's sky box pointers.
- Fixed: Right after teleporting P_SlideMove could cause player movement.
  Added a check for reactiontime to prevent that.
- Fixed: PainChances and Damagefactors were never freed.
- Added option to A_Chase that prevents the monster from moving.
- Fixed: The stained glass shards were missing the HEXENBOUNCE flag.
- Added some NULL pointer checks to AActor::GiveAmmo.
- Fixed: The FSwordMissile was missing the special damage handling that
  reduces damage when hitting a player.

SVN r555 (trunk)
2007-10-29 20:27:40 +00:00
Christoph Oelckers
3b477d7022 - Fixed: POwered up weapons with a different ready state than their base
weapon didn't change back when the powerup expired.
- Fixed: The powered up version of Heretic's Gauntlets missed the proper
  state assignments for Ready, Lower and Raise.
- Fixed: The Strife player was missing its pain state.
- Fixed: Revenant missiles couldn't home in on targets with a height lower than
  40.
- Fixed: The code which checked for hitscan traces hitting actors from above
  and below must test whether the calculated hit position is actually inside 
  the actor being checked. If it crosses the top/bottom plane outside the
  bounding box there can't be a hit.
- Changed: State labels in code pointer calls must now be enclosed in quotation marks.
  This was done to ensure compatibility with parsers that will parse these as
  identifier-aware script code later.


SVN r554 (trunk)
2007-10-19 08:49:02 +00:00
Christoph Oelckers
c81fe8d061 - Fixed: The code that checked hitscans entering an actor from above and below
calculated the hit position wrong.


SVN r553 (trunk)
2007-10-08 09:54:00 +00:00
Christoph Oelckers
90db40c70f - Fixed: Tne Imp's raise state sequence was wrong due to a typo.
- Fixed: The shotgun had spawn ID 21 instead of 27.
- Fixed: All 3 states in the DoomUnusedStates actor need to end with a 'stop'.
- Fixed: The DECORATE TakeInventory functions didn't check the IF_KEEPDEPLETED
  flag.
- Fixed: ClearInventory should leave ammo in the inventory because it might be
  referenced by undroppable weapons.
- Fixed: Several functions in a_artifacts.cpp were missing a check for a valid
  owner.
- Fixed: sc_man counted lines wrong when ungetting strings but getting tokens
  next.



SVN r552 (trunk)
2007-10-05 08:04:38 +00:00
Christoph Oelckers
e016a66dc0 - Fixed: When I changed the scaling of textures to full fixed point precision
I forgot to change the call that draws the automap marker numbers.
- Fixed: The chaingun-flash-checking code always checked the first player,
  not the calling one.
- Fixed: Hitscan traces didn't hit actors when entering from above or below


SVN r551 (trunk)
2007-09-27 14:08:45 +00:00
Christoph Oelckers
333ef105f7 - Fixed: The DECORATE expression evaluator was reading the operator token
from the wrong variable in a few places resulting in incorrect calculations.
- Fixed: MP3/OGG music always looped because the looping flag was always
  set when FMOD was called to play it.
- Removed upper limit of 1 for an actor's gravity factor.
- Fixed: A_VileTarget spawned the fire at coordinate (target->x, target->x)
  instead of (target->x, target->y). (Old vanilla bug.)


SVN r550 (trunk)
2007-09-27 11:30:23 +00:00
Christoph Oelckers
f94d971c06 - Fixed: F_StartFinale shouldn't get the information if the game is about
to end from level.nextmap. For example, this check is wrong for a secret
  exit.

SVN r549 (trunk)
2007-09-26 21:50:05 +00:00
Christoph Oelckers
09f5bbc2d3 - Fixed: AActor::CopyFriendliness must not copy the target if it has the
MF3_NOTARGET flag set.
- Fixed: Picking up weapons in deathmatch gives 2.5 times as much ammo as
  in other modes.


SVN r547 (trunk)
2007-09-25 23:31:27 +00:00
Christoph Oelckers
f62032ac6a - fixed: The #include command in DECORATE always tried to look up the name
as a normal WAD lump name. It only should do that if the name is not longer
  than 8 characters and doesn't contain any '/'-characters.

SVN r546 (trunk)
2007-09-23 08:02:57 +00:00
Christoph Oelckers
e8875041ca - fixed: THe Timidity player didn't close its temporary files and left them
behind because it couldn't delete them.
- added a $MidiDevice option to SNDINFO which can either set the preferred
  MIDI device for a song to Timidity or Windows' standard MIDI device.
  The reason for this: About 80% of my MIDI music collection sounds better
  with Timidity and the other 20% with Windows' standard synth and I'd like
  to be able to use each with the one that sounds better. For MUS files you
  can also force the use of OPL playback.
- added telefrag option to A_SpawnItemEx.


SVN r545 (trunk)
2007-09-12 00:20:11 +00:00
Christoph Oelckers
d0c3ebb5c2 - Fixed: Several options while changing maps only worked for the regular exit
but caused problems when used with the secret exit. Rewrote the code to
  set the next map at the beginning and removed all subsequent parts that
  tried to resolve it from the original data again.

SVN r544 (trunk)
2007-09-06 09:54:57 +00:00
Christoph Oelckers
c06bd09ee7 - Fixed: dumpmap crashed when used outside a map.
- Exported A_DeQueueCorpse to DECORATE. It seems I forgot this when exporting
  A_QueueCorpse.



SVN r542 (trunk)
2007-09-02 09:57:08 +00:00
Christoph Oelckers
6a3a47d77a - Moved setting of gameskill from M_ChooseSkill to G_DoNewGame because it
doesn't work in M_ChooseSkill when the full console is open.


SVN r541 (trunk)
2007-08-09 08:42:15 +00:00
Christoph Oelckers
5e2e389bd1 - fixed: The BFGBall's explosion sequence was missing a state.
- fixed: The brown Chaos Serpent in Hexen had an incorrect sprite for its
  ice death sequence set.
- fixed: Ammo upon game start does not get multiplied when on easy skill.
  Implementing this as an inventory flag IF_IGNORESKILL also allows to create
  ammo/weapon/backpack types that don't multiply the ammo given when on this
  skill.
- moved Doom exit sounds into SNDINFO as $random definitions.
- Fixed: Dying Lost Souls could be reset to their see state if they slammed into
  something.

SVN r540 (trunk)
2007-07-28 12:38:10 +00:00
Christoph Oelckers
2829361c5c - Added DTA_TopOffset and DTA_LeftOffset values to the automap background drawer.
- Fixed: DECORATE color translations with explicit colors didn't work because the
  code treated byte values as fixed point.
- Fixed: LEVEL_NOALLIES must clear MF_FRIENDLY off any spawned actor except players.
  Otherwise it doesn't work properly.
- Fixed: Entering a backslash in the player's name box caused a crash because 
  the code analyzing the string was missing a NULL pointer check.
- Fixed: Thing_Hate and Teleport_ZombieChanger unconditionally made state jumps,
  even for dead monsters.
- Fixed: The palette flash for item pickup was not reset upon a player's death.
- Fixed: P_DamageMobj tried to get damage multiplier information from the
  damage inflictor, not the attacker.
- Fixed: PowerTimeFreezer::DoEffect did not call its superclass method.
- fixed: When morphed monsters died they tried to set MF3_STAYMORPHED for the
  attacker, not themselves. This caused a crash when they were killed by a crusher.


SVN r539 (trunk)
2007-07-12 15:15:57 +00:00
Christoph Oelckers
8f6fdc1d21 - Split thingdef.cpp into several files so that the state and property code
no longer gets in the way of the main parser.
- Changed A_MissileAttack, A_MeleeAttack and A_ComboAttack so that they use
  metadata. Now all the hack code associated with these functions can be removed.


SVN r538 (trunk)
2007-05-28 22:18:51 +00:00
Christoph Oelckers
50f75b6e8a - Fixed: deadthings.txt contained a superfluous ';' which created parsing errors
with my changed code.
- Cleaned up DECORATE parser a little - moved the old style parsing code into its 
  own file and rearranged a few things.
- Made ProcessStates non-static so that it doesn't need to be passed as an argument
  to all functions in the DECORATE parser.
- Moved DECORATE parser files into their own subdirectory.
- Optimization: SC_GetToken no longer sets sc_name for identifiers. In most cases
  this creates needless overhead by adding a potentially unneeded name to the name
  table and looking up the name. In almost all cases where a name is needed it's as
  easy to assign sc_String to the name variable.
- Added enum definitions to DECORATE.


SVN r537 (trunk)
2007-05-28 14:46:49 +00:00
Christoph Oelckers
91241eb96e - Fixed: Hirestex replacements for sprites didn't work properly due to some
incorrect calculations in R_ProjectSprite.


SVN r536 (trunk)
2007-05-27 15:33:05 +00:00
Christoph Oelckers
2345a1a5f0 - Fixed: The speed definition of PowerSpeed used PROP_SpeedFixed instead of
PROP_SpeedLong.
- Fixed: The Chainsaw's kickback was initialized to the default - not 0.


SVN r535 (trunk)
2007-05-27 12:16:43 +00:00
Christoph Oelckers
87383a32c6 - Fixed: Resurrecting a player must set mo->special1 to 0 because it is used
as a counter by the Hexen fighter's fist weapon.
- Fixed: The Wraithwerge's spirits shouldn't attack friends.
- Fixed: The Heresiarch's balls must not adjust their z-position after the
  Heresiarch dies.
- Added damage type specific pain chances and an MF5_NOPAIN flag that can be used
  to suppress entering the pain state altogether.
- Changed font initialization so that you can define replacements for the default
  fonts in FONTDEFS.
- Removed the 'add a bot' menu option since bots are beyond repair and therefore
  mostly useless.
- Fixed: Hitscan attacks must always spawn a puff so that it and its properties
  can be used as damage inflictor.


SVN r534 (trunk)
2007-05-26 10:50:32 +00:00
Christoph Oelckers
f4dcfad331 - Copied railgun sound fix from Skulltag.
- Made infighting a level flag. The old method still exists but the level flags
  will take precedence if set.



SVN r532 (trunk)
2007-05-20 11:08:36 +00:00
Christoph Oelckers
ea2ea7dbf0 - fixed: meleethreshold only has meaning when the attacking monster actually
has a melee attack.
- copied a colormap fix from Skulltag.


SVN r531 (trunk)
2007-05-13 20:21:26 +00:00
Christoph Oelckers
a6a5821f04 - Added a compatibility option to restore the original behavior of the Invisibility
powerup.
- Changed: Weapons are no longer checked for the EXTREMEDEATH and NOEXTREMEDEATH flags.
  For all damage related actions it will always be the projectile (or puff for hitscan
  attacks) that is treated as the damage inflictor.
- Fixed: Hexen's fourth weapons made extreme death depend on the weapon the player
  is holding, not the projectile that did the kill. The WIF_EXTREME_DEATH flag
  no longer exists as a result.
- Expanded PowerSpeed so that subclasses can be derived that alter the speed factor.
- Added an MF5_USESPECIAL flag that allows using things to execute their specials.
- added MF4_FORCERADIUSDMG flag so that exploding items can be created which
  are able to hurt boss monsters.
- moved ML_BLOCK_PLAYERS to the value 0x4000 to bring it in line with Skulltag's 
  implementation.


SVN r530 (trunk)
2007-05-12 11:14:09 +00:00
Christoph Oelckers
d60a5ee1b9 - added Skulltag's custom F1 help screen MAPINFO option.
- Fixed: Resurrecting a player must restore all flags words, not just the first one.
- Fixed: APowerWeaponLevel2::EndEffect must check PendingWeapon for WP_NOCHANGE.
- added Skulltag's high jump rune as a powerup
- Added Skulltag's Drain and Regeneration runes as powerups and used specific player
  sounds for their sound effects instead of using misc/i_pkup.
  (If I ever decide to implement runes it will be in a way that can use the regular
  powerups instead of having to define specific classes for them.)
- Added Skulltag's PowerQuadDamage and PowerQuarterDamage as more customizable
  PowerDamage and PowerProtection. These new powerups allow free customization of
  the damage modification per damage type by inheriting from these classes and
  setting specific values. Such derived damage/protection powerups will be considered
  as separate powers so that for example a QuadDamage and a DoubleDamage item can be
  stacked which would result in 8x damage.
- merged player_t::cheats and player_t::Powers into one variable.


SVN r529 (trunk)
2007-05-10 22:22:38 +00:00
Christoph Oelckers
12c122a7dd - Fixed: player_t::Powers was not saved in a savegame.
- Removed all unused PW_* player power flags.
- Added Skulltag's TimeFreezer powerup.


SVN r527 (trunk)
2007-05-01 15:09:44 +00:00
Christoph Oelckers
f11525f90f - Moved most of the menu strings (except options and player setup menu) into the
string table.


SVN r525 (trunk)
2007-05-01 07:57:08 +00:00
Christoph Oelckers
6fad457592 - Fixed: GetLumpOffset must call SetLumpAddress when being called for uncompressed
Zip entries.
- Fixed: Some of Doom's weapon obituaries didn't have the $-prefix that indicates a 
  reference to the string table.
- Fixed: The check for a valid weapon's spawn state for weapon dropping was incorrect.


SVN r523 (trunk)
2007-04-30 08:09:51 +00:00
Christoph Oelckers
e08da03a3d - Increased precision of texture scaling factors to full fixed point. In the process
I got rid of the old tx and ty CVARs because they made the texture scaling
  much more complicated than it was actually needed (and besides, they were completely
  useless except for testing purposes anyway.)


SVN r522 (trunk)
2007-04-29 12:07:27 +00:00
Christoph Oelckers
6e5b1f1182 - Added a simple check for abstract weapon classes so that I can properly define
the DoomWeapon base class.
- Fixed: When the Tome of Power runs out it must also set any pending weapon
  back to their regular state.


SVN r521 (trunk)
2007-04-29 08:44:32 +00:00
Christoph Oelckers
ea4f160e35 - Added damage factors that allows to make monsters more or less resistant
to specific damage types.
- Changed Dehacked parser to use the DECORATE symbol tables for code pointers
  instead of creating its own ones.
- Removed the HandleNoSector hack and changed A_Look so that it uses the sector's
  sound target for actors with MF_NOSECTOR regardless of compatibility settings.
- Moved initialization of weapon slots after the actor initialization.
  With default weapons exported to DECORATE it can't be done earlier.
- Converted Doom weapons to DECORATE.
- Changed backpack definition so that Doom's backpack is no longer the base
  class that implements its functionality. Now there is an abstract base class
  all backpack-like items derive from. Also moved the actual definition of Doom's
  backpack to DECORATE.


SVN r519 (trunk)
2007-04-28 09:06:32 +00:00
Christoph Oelckers
9deec29b34 - added a CANUSEWALLS flag which allows a monster to activate 'use' specials
like doors. This flag is on by default for any monster which was the
  previous behavior.
- Optimized the DECORATE flag parser so it can more efficiently handle
  the deprecated flags. As a side effect of this optimization the deprecated
  flags became usable in A_ChangeFlag again.
- Changed LONGMELEERANGE flag into a MeleeThreshold property.
- Changed SHORTMISSILERANGE flag into a MaxTargetRange property.
- Added Thing_Stop action special.


SVN r517 (trunk)
2007-04-22 21:01:35 +00:00
Christoph Oelckers
8c7d4fb393 - Changed ACS's SetActorState so that it isn't limited to only one sublabel.
This change also enables the implicit mapping of the old special death
  state names.


SVN r515 (trunk)
2007-04-22 09:06:29 +00:00
Christoph Oelckers
a370ea70c6 - Fixed: ShowErrorPane deleted the StartScreen instead of just calling
NetDone.
- moved the DIM_MAP define into v_palette.h so that it can be accessed
  from outside the status bar code.
- Fixed: The check for non-swimmable water in UpdateWaterLevel checked for
  SECF_UNDERWATER instead of SECF_UNDERWATERMASK.


SVN r514 (trunk)
2007-04-22 07:45:18 +00:00
Randy Heit
f48ad6c4c3 - Switched ACS world and global arrays to the TMap class instead of
TAutoGrowArray. A map can handle a wide range of key values better than
  an array.
- Added a templated associative array class, TMap, that uses Lua's "chained
  scatter table with Brent's variation" algorithm. I had considered using
  hash_map until I discovered that it's not standard STL, and there are two
  major but incompatible implementations of it. So I rolled my own, and Lua
  seemed like a good place to go to for an efficient algorithm, since it
  makes heavy use of tables.


SVN r513 (trunk)
2007-04-12 23:00:52 +00:00
Randy Heit
f6dd9be993 - Fixed some const char * -> char * conversions flagged by GCC 4.2.0 in the
Win32-specific code.


SVN r508 (trunk)
2007-03-29 01:03:50 +00:00
Randy Heit
97ad5a0d6b - Adding blinky text to the ENDOOM screen.
SVN r507 (trunk)
2007-03-29 00:35:34 +00:00
Randy Heit
1f242fa79e - Changed MakeKey's hash algorithm from a CRC32 to Paul Hsieh's SuperFastHash.
SVN r506 (trunk)
2007-03-24 14:59:28 +00:00
Randy Heit
490742cf46 - Moved the implementation for the Thing_Damage special into another function
so that I can create the ACS function Thing_Damage2. It's exactly the same as
  Thing_Damage, except the damage type is specified by name. When I did this,
  I noticed that it didn't do anything useful for a TID of 0, so I made it
  affect the activator in that case.
- Added a new SetActorState ACS function:
    int SetActorState (int tid, str statename, optional bool exact);
  If tid is 0, it affects the script activator, otherwise it affects all the
  matching actors. Statename is the name of the state you want to put the
  actor in. The final parameter, exact, specifies whether or not partial
  state name matches are accepted. If you don't specify it or set it to
  false, if you try to do something like:
    SetActorState (0, "Foo.Bar");
  And the actor has a Foo state but no Foo.Bar state, it will enter the Foo
  state. If you set exact to true:
    SetActorState (0, "Foo.Bar", true);
  Then the actor must have a Foo.Bar state, or it will not change state at
  all, even if it has a Foo state.
  The return value for this function is the number of actors that successfully
  changed state. Note that you should refrain from using this function to
  enter special states such as Death, or unpredictable results could occur.


SVN r505 (trunk)
2007-03-23 22:26:14 +00:00
Randy Heit
38c821a96e - Fixed: Morphed players did not regain their innate armor when unmorphing.
(Only Hexen has players with innate armor, under normal conditions.)


SVN r504 (trunk)
2007-03-14 01:48:19 +00:00
Randy Heit
b49d4333b0 - Changed the default player.startitem amount from 0 to 1.
SVN r503 (trunk)
2007-03-13 00:59:29 +00:00
Randy Heit
453a6250a5 - Converted the TTY startup screen to a class for Linux.
SVN r502 (trunk)
2007-03-10 01:53:52 +00:00
Randy Heit
802a6f3138 - Increased the limit for the SorcererBallPop to 3 to be inline with the
other Heresiarch ball sounds.


SVN r500 (trunk)
2007-03-08 23:38:45 +00:00
Randy Heit
1a72c5f7b9 - Fixed: In Strife, using the shadow armor a second time while it is still
active should make you completely invisible and your first-person weapon
  inverse grayscale.


SVN r499 (trunk)
2007-03-08 23:34:54 +00:00
Randy Heit
72643bece6 - Changed P_SpawnPlayerMissile() to use the same height calculation as
P_(Aim)LineAttack().
- Added an AttackZOffset to PlayerPawn. This is the offset from the
  center of the player at which their attacks are fired and scales
  according to their crouched height.
- Changed the version of P_SpawnPlayerMissile() that takes coordinates
  to use that location as an offset from the standard attack location
  rather than as an explicit attack location.


SVN r498 (trunk)
2007-03-07 17:31:40 +00:00
Randy Heit
e01ff5707c - Added an IF_KEEPDEPLETED flag for inventory items to keep them in the
player's inventory even when they have been used up. If the item also
  has an inventory bar icon, it will be drawn darkened when it is
  depleted.


SVN r497 (trunk)
2007-03-07 02:24:24 +00:00
Randy Heit
560d4f8140 - Fixed: Thing_ProjectileAimed did not set the missile's speed correctly.
- The net start pane is now given focus when it is created, so it can
  receive keyboard input.
- Added playback of the "WeaponPickup" sound when a Hexen net game starts.
- Separated the different startup screens into classes for better
  modularization (which I should have done in the first place). (Sorry,
  have not done it for Linux yet, so that won't compile as-is.)


SVN r496 (trunk)
2007-03-06 01:33:18 +00:00
Randy Heit
3f1a681451 - Changed the net start pane to open underneath the existing window instead
of scrunching the startup screen up to make room for it.
- Added the red net notches for Hexen's startup screen.
- Added hprintf and status simulation for Heretic's startup screen.


SVN r495 (trunk)
2007-02-28 19:08:02 +00:00
Randy Heit
eef025dd4e - Fixed: When I converted the P_Thing_Projectile() code for target leading
to use the new vector routines, I had made dist calculate the squared
  length of the aim vector instead of the correct length.


SVN r494 (trunk)
2007-02-28 17:38:56 +00:00
Randy Heit
1ca9b88b11 - Fixed: When starting a new game from the menu while the fullscreen console
was open, the game was frozen before its initial setup tick until the
  console was closed. The most obvious result of this is that your view was
  stuck on the floor until the console closed.
- Fixed: Pressing ESC while editing your player name completely cleared the
  menus instead of simply canceling the name change.
- Fixed: The status bar still showed the rampage face if you held the fire
  button down while frozen.


SVN r493 (trunk)
2007-02-28 16:49:19 +00:00
Randy Heit
94ffa6d5ae - Added << operators for FString that function exactly like +=, except they
are left-associative, so you can use them like you would with an ostream
  and append to a string in a single expression without any overhead from
  allocating temporary strings as would happen if you used the + operator.
  In other words, instead of this:
     string += "Some string " + "that is assembled" + " in parts";
  You can do this and be more efficient while still being just as readable:
     string << "Some string " << "that is assembled" << " in parts";
- Changed PCD_PRINTBIND to include the command in its output if it isn't
  bound.
- Fixed: ACS_ExecuteWithResultValue could not be used inside a script because
  DLevelScript::RunScript() was not reentrant, thanks to having a global stack.
  The stack should be local to each instance of RunScript.
- Fixed: rt_draw4cols() could get stuck in rare situations where it thinks it
  should be drawing something but doesn't. Since long-term I plan to just
  replace all the masked drawing the variants of maskwallscan, I'm not going
  to try and find the real cause and fix it there. Instead, it just detects
  the situation and bails out when it finds it.


SVN r492 (trunk)
2007-02-24 17:56:43 +00:00
Christoph Oelckers
d26824e5d1 - Fixed: In the Doom2 cast finale it was impossible to toggle the console.
- Added APROP_Friendly actor property for ACS.
- Added a new flag, MF2_DONTREFLECT that prevents missiles from being reflected.
- Fixed: ALoreShot::DoSpecialDamage must check whether the shooter is still
  present. If it had been removed before the projectile hits its target
  a crash could occur.
- Fixed: GetPlayerInfo was missing breaks and always returned 0 as a result.
- Added Grubber's submission for printing key bindings in ACS.


SVN r491 (trunk)
2007-02-24 12:09:36 +00:00
Randy Heit
8682f37b24 - Fixed: $Ambient SNDINFO commands zeroed the AmbientSound structure, which
is a no-no when using FString.


SVN r490 (trunk)
2007-02-20 00:25:26 +00:00
Randy Heit
4de9e98fd1 - Fixed: DEM_WIPEON/OFF commands should be ignored during demo playback and
not pause the game, or the whole thing will be out of sync.


SVN r489 (trunk)
2007-02-20 00:05:42 +00:00
Randy Heit
99df21c901 - Fixed: Playing a demo in windowed mode no longer grabs the mouse.
SVN r487 (trunk)
2007-02-19 23:48:52 +00:00
Randy Heit
ecc45d5d6e - Added two new net commands: DEM_WIPEON and DEM_WIPEOFF. They keep track of
when a player is going through a screen wipe and act like a pause, so the
  game doesn't run several tics afterward to catch up with it.


SVN r485 (trunk)
2007-02-15 00:01:21 +00:00
Randy Heit
01cd91fd9e - Fixed: EV_Teleport() did not set players to their idle state, so if they
were running when the teleported, they would still be running afterward
  even though they weren't moving anywhere. Normally, P_XYMovement() does
  this when they stop due to friction.
- Fixed: AActor::TakeSpecialDamage() completely bypassed the standard rules
  for target switching on actors with MF5_NODAMAGE set.
- Changed the return values of the ACS spawn, spawnspot, and spawnspotfacing
  commands to be the total count of things spawned, rather than a pretty
  much useless reference to the actor spawned at the last map spot.
- Fixed: DLevelScript::DoSpawn() takes a byte angle, but DoSpawnSpotFacing()
  passed it a full-length angle.
- Fixed: When MF_SKULLFLY is removed because an actor slams into something,
  it was set to a see or spawn state, resetting its tic count and bypassing
  the effectiveness of the MF2_DORMANT flag. While I was at it, I decided
  dormant skulls shouldn't do slamming damage, either.
- Fixed: P_Thing_Spawn() returned success only if all thing instances were
  successfully spawned. As long as at least one thing was spawned, it should
  be considered a success.
- Fixed: Flipped single rotation sprites were only flipped every other 22.5
  degree interval.


SVN r484 (trunk)
2007-02-14 22:47:01 +00:00
Randy Heit
58d4c4f9ae - Fixed: S_ClearSoundData() did not stop any channels before freeing the
samples, a problem for the alternate sound renderer if it happened to be
  playing any sounds at the time, since it would try to keep on playing them.

SVN r483 (trunk)
2007-02-14 20:18:22 +00:00
Randy Heit
dea5cf9ba4 - Added two new cvars (win_x and win_y) that keep track of the window
position when not playing in fullscreen mode.
- Changed the upper-left window positioning that was always used in debug
  builds into a command line option (-0), so debug and release builds behave
  the same.


SVN r482 (trunk)
2007-02-13 00:10:16 +00:00
Christoph Oelckers
8ca5f3821d - Changed earthquake code to not add all the intensities but use the maximum
in DEarthQuake::StaticGetQuakeIntensity. The reason for this: Quakes were
  never supposed to be additive. Many maps, including Hexen's own have placed
  quake spots so that they cover a larger area but the areas covered by the
  single spots overlap. On such maps the view will shake like crazy and
  render the map nearly unplayable.


SVN r480 (trunk)
2007-02-10 21:22:31 +00:00
Christoph Oelckers
0320057260 - Fixed: The powered up Mace was missing its HoldAtkState.
- Added: Using "*" with ACS's music commands will play the level's default music set in MAPINFO.


SVN r478 (trunk)
2007-02-04 10:20:25 +00:00
Randy Heit
7c2fc08f35 - Added two new MAPINFO flags to control what actor activates impact lines:
* MissileShootersActivateImpactLines - the current behavior.
    * MissilesActivateImpactLines - the original Hexen behavior.


SVN r477 (trunk)
2007-02-04 02:12:54 +00:00
Randy Heit
26b886b960 - Fixed: The changecamera special should remove "past viewer" information
from the renderer in case the camera changed position or direction since
  the last time it was looked through. Otherwise, the renderer will
  interpolate from its previous view for one frame when it is switched to.
- Fixed non-POD parameter passing for GCC introduced in the previous commit.

SVN r476 (trunk)
2007-02-04 01:12:50 +00:00
Randy Heit
4a6fa7f2a3 - Removed the 63-character limit on sound names.
SVN r475 (trunk)
2007-02-04 00:33:17 +00:00
Randy Heit
b361ba05d8 - Reduced the rate at which drowning damage increases.
- Added more player water sounds:
    *dive - Played when your head goes below water.
    *surface - Played when your head goes back above water.
    *gasp - Played when you were drowning and get your air back.
  If your head surfaces and you were drowning, only *gasp plays, not both.
- Added damage-specific player death sounds, in the same fashion as the
  damage-specific player pain sounds. It looks for a sound with a name like
  "*death-damagetype" first and then "*death" if the first sound didn't exist.
- Removed the constraint that player sounds must be reserved before they can
  be assigned. Hence, the $playerreserve command has been eliminated, because
  it is no longer needed and it was never accessible from user wads, so I
  don't need to worry about breaking anything by removing it.


SVN r474 (trunk)
2007-02-04 00:22:56 +00:00
Randy Heit
ea0c7395de - Added a new fixrtext tool that sets the IMAGE_SCN_MEM_WRITE flag for
.rtext files in the assembly object files. Now I can avoid doing this at
  runtime, which means that ZDoom is now UPX-compatible if anyone wants to
  pack it.
  
  You will need to do a rebuild or manually delete the old assembly .obj files
  for the first build from this revision to succeed, since there are no
  changes to the assembly files themselves, and the build process will not be
  able to automatically detect that they need to be rebuilt.


SVN r473 (trunk)
2007-02-03 02:51:13 +00:00
Randy Heit
bac407c543 - Fixed: The SafeDivScales used a signed shift for their if test. This fails
when a == 0x80000000, because the result of abs will still be negative as
  long as we use signed math.
- Fixed: SafeDivScale31 performed DivScale32 instead.
- Fixed: R_DrawSpanP_ASM had a short jump into a different section.


SVN r472 (trunk)
2007-02-02 23:41:51 +00:00
Randy Heit
0b7b527ac2 - Fixed: When quiting from fullscreen mode, RestoreConView() did not ungrab
the mouse.
- Fixed an old Doom bug: Firing the chaingun with only one bullet still made
  it play its sound twice.


SVN r471 (trunk)
2007-01-31 00:52:33 +00:00
Randy Heit
095b11bc36 - Added an operator += for FString that takes an FName as input, since GCC
is unable to synthesize one.
- Converted xlatcc to use lemon during its build process. Now you don't need
  bison to rebuild everything anymore.


SVN r470 (trunk)
2007-01-31 00:30:42 +00:00