- Fix signed/unsigned mismatch warned by GCC.
- Moved "Go away!" text into language.enu.
- In conjunction with all the below changes, attempt to fix A_CheckSightOrRange and A_CheckSight for multiplayer: They now always check through the eyes of every player. For players whose cameras are not players, they also check through the eyes of those cameras.
- Using spynext/spyprev to switch from a non-player to a player now writes a command to the network stream and lets Net_DoCommand() take care of it later. The logic here is that if a player is viewing from something that isn't another player, then every player needs to know about it for sync purposes. Consequently, when they stop viewing from a non-player and switch to a player, everybody needs to know about that too. But if they are viewing from a player, it doesn't matter which player it is, so they can spynext/spyprev all they want without letting the other players know about it (and without potentially breaking demos--due to the above-mentioned two codepointers--while doing it during demo playback).
- Replaced the instances of checking players[consoleplayer].camera for a valid pointer to ones that do it for every player.
- Fixed: Upon changing levels, all players but the consoleplayer would have their cameras NULLed.
- Fixed: player_t::FixPointers() needs to bypass the read barriers, or it won't be able to do substitutions of old objects that are pending deletion.
- Revised the fix from r3442: Make the line a nonrepeatable Door_Open instead of completely clearing the line's special.
git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@1315 b0f79afe-0144-0410-b225-9a4edf0717df
- Added Xaser's submission for accessing accuracy and stamina from DECORATE and ACS.
- Added DECORATE properties for accuracy and stamina.
- Since these changes move properties from player_t to AActor all savegame compatibility code was removed and the min. savegame version bumped.
git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@1307 b0f79afe-0144-0410-b225-9a4edf0717df
- ensured that all classes reach AActor's PostBeginPlay method. Some were missing a Super call.
git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@1302 b0f79afe-0144-0410-b225-9a4edf0717df
- Fixed compilation with FMOD 4.38+. The removal of hardware voices and EAX was a fairly major change, so I'm making no provisions for using older FMOD DLLs when compiled with the 4.38 API. However, sound positioning is still broken like in 4.28, so you are recommended to continue building with 4.26. Also, the Freeverb-based DSP unit is no longer present in FMOD, so the underwater effect is currently unavailable when using 4.38 until I can figure out how to make it work with the SFX Reverb unit instead. (And on that topic, the Freeverb DSP was officially only for stereo outputs, so I really shouldn't have been using it in the first place.)
- Since I would like to eventually figure out the sound positioning issues with the FMODs, the following have been added:
# snd_drawoutput now labels its outputs with the speakers they represent.
# DCanvas::DrawTextA was added as an alias for DrawText, since the Windows headers #define DrawText to a Unicode/non-Unicode variant.
# The loopsound console command was added to spawn an actor at the player's location and have it loop a sound infinitely.
Hopefully I can figure it out. FMOD's 3D example works, so I assume the problem lies with my code, though I don't really know where to begin looking for the problem.
- Fixed: Line type 49 was wrong for all games. Fixed by adding a new Ceiling_CrushAndRaiseDist special.
- Fixed: If an episode skips the skill menu, it should also skip the confirm skill menu if the default skill requests confirmation.
- Fixed: Episodes with NoSkillMenu defined had their own idea of default skill that differed from episodes with skill menus (and completely ignored whichever skill is explicitly defined as the default skill).
- Remove all restrictions on what you can do with tags as line special arguments in xlat. Something like 「(tag & 5) + (tag & 2) / 2」 is now a valid argument for a standard line translation.
- Added modulus to FParseContext/xlat.
- Fixed: Division of tag arguments for xlat was in the wrong order.
- Added more tag operators for xlat: * / & | ^
- Improve tag support for xlat: Any combination of arguments can now be tags, and you can add (or subtract) a constant to them. If you do wish to add a constant, tag must come first. e.g. tag+3 is good, but 3+tag will not work. (As a bonus, the parser is simpler, too.)
- Fixed: Totally freezing a player did not ignore crouch toggling.
git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@1283 b0f79afe-0144-0410-b225-9a4edf0717df
- Fixed: Must not try to draw null flats in the textured automap.
- Fixed: Player pitch limits were reset to 0 when changing levels and loading saved games.
git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@1280 b0f79afe-0144-0410-b225-9a4edf0717df
- Fixed: Pressing a key to advance an intermission screen only worked on the local computer.
- Be less verbose when attempting to play non-ZDoom demos.
- Do nothing in D_DoAdvanceDemo if gameaction is not ga_nothing.
- Need to bump demo/gameversion due to DEM_SETPITCHLIMIT. MINDEMOVERSION also needs to be touched, since the default limits are now 0.
- A_SetPitch now clamps the player's pitch within the valid range. It can be made to clamp other actors' pitches to within the range (-90,+90) degrees with the SPF_FORCECLAMP flag.
- Transmit the local viewpitch limits to the other players.
git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@1271 b0f79afe-0144-0410-b225-9a4edf0717df
- Added flag ALF_NOFRIENDS and a friend-basis pointer to P_AimLineAttack(). A_DeathBallImpact uses these to avoid aiming at friends when the death ball bounces. (The pointer is needed because the missile itself does the aiming, not the player that shot it, and missiles are nobody's friends.)
- Allow subclasses when checking for PowerWeaponLevel2.
- Fixed: Starting in a sector with a musinfo thing would not trigger the thing.
git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@1264 b0f79afe-0144-0410-b225-9a4edf0717df
- Added proper splash checks with 3D-floors.
- Fixed crash when trying to play a MIDI file with no notes.
- Fix warnings reported by gcc version 4.5.2 (Ubuntu/Linaro 4.5.2-8ubuntu4)
- Fixed MSVC warning.
- Adjust VisibleToPlayerClass to accept multiple classes as well as work with inheritance.
- Backported VisibleToTeam and VisibleToPlayerClass from Skulltag with some modifications.
- Backported kgsws's weapon dropitem changes from Skulltag.
- Fix more errors found with static code analysis.
- Fix uninitialized string buffer in bot code.
- Fixed some more potential NULL pointer accesses.
git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@1257 b0f79afe-0144-0410-b225-9a4edf0717df
Removed unneeded includes of r_local.h.
Removed more r_ header dependencies from the rest of the code.
took all includes of farchive.h out of headers. This file will have to be included explicitly in each source file that needs it.
Changed AlterWeaponSprite so that it doesn't take a full vissprite as parameter.
FCoverageBuffer is only used in r_things.cpp, so its declaration does not need to be in a global header that's included everywhere.
git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@1223 b0f79afe-0144-0410-b225-9a4edf0717df
- Removed some unnecessary r_ header #includes.
- Separated sprite and skin maintenance code from r_things.cpp into a separate file.
- Moved r_interpolate.cpp and r_translate.cpp to r_data.
- Merged r_jpeg.h into jpegtexture.cpp because that's the only place where it's ever used.
- Rename src/resources to src/r_data.
- Fixed: p_sectors.cpp wouldn't compile.
- Moved side_t::GetLightLevel out of software rendering code.
- Moved render style and border drawing code out of r_draw.cpp.
- Moved all code not specific to the software renderer out of r_bsp.cpp.
* Adapted GL files to changes.
git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@1222 b0f79afe-0144-0410-b225-9a4edf0717df
* Added "special" console command for executing action specials.
* Fixed buffer overflow attack for DEM_RUNSCRIPT(2).
* Fixed: FMODSoundRenderer::DrawWaveDebug() only allocated enough space for the wavearray based on the window_size, so for large numbers of output channels, it would not allocate enough space for the spectrum data (which is definied by SPECTRUM_SIZE, not the window_size) and write junk on the stack when drawing the spectrums, causing a crash.
* Merge voxels back into trunk. Even if it needs further tweaking, it should at least be stable now.
* Added 'player.flechettetype' property so that the appropriate flechette type can be set per player class.
* bumped savegame version for flechette type changes.
* Added Chris's KDE IWAD picker submission.
git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@1153 b0f79afe-0144-0410-b225-9a4edf0717df
- Added a 'restart' CCMD that allows restarting the engine with different WADs being loaded without quitting first
- Fixed handling of missing backgrounds for intermission text screens for real this time.
- Added automap patch to mark trigger lines.
- Fixed: The TouchedActors array in the Dehacked parser was not freed after parsing was done.
- Initialize the alt HUD explicitly in D_DoomMain.
- Don't let S_UnloadReverbDef leave a broken list of sound environments behind.
- Added more code to explicitly delete data before initializing it.
git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@1129 b0f79afe-0144-0410-b225-9a4edf0717df
- Added DavidPH's submission for specifying vertex heights directly in UDMF.
- Move static AM color initialization into the AM_StaticInit function.
- Move D_LoadWadSettings to keysections.cpp.
- Made some more data reloadable.
- Data structures filled by P_SetupLevel should be cleared before loading the level. They can remain non-empty in case of an error. There's probably more to fix here...
- Fixed: MidiDevices and MusicAliases were not cleared before reloading local SNDINFOs.
- Fixed signed/unsigned warnings in AddSwitchPair for real (GCC really allows -1u? MSVC prints a warning for that.)
- Fixed: GCC compiler warnings.
- Zipdir will no longer store files ending in '~' on Linux.
- Added st_oldouch which restores the old ouch face behavior of only showing when health increases by 20 while taking damage.
- Changed some data init code to delete the data it wants to initialize first.
- The 'savebuffer' variable still existed?
- Changed AInventory::Destroy to NULL SendItemUse and SendItemDrop if they point to the destroyed object. Although unlikely it can't be ruled out completely that this can happen with delayed CCMDs.
- Fixed: Starting a new game did not clear the hub statistics array.
- Cleaned up D_DoomMain a little. It's still far too large though.
- Added explicit initialization of console background texture instead of letting C_InitConsole doing it as needed.
- Added 'clearaliases' CCMD.
- Init bot specific actor properties right after parsing DECORATE, not when spawning the first bot (which is too late.)
- Changed automap initialization so that static data only gets initialized once upon startup instead of each time a level starts.
- Initialize AUTOPAGE only once when the level starts, not each time the automap is switched on.
- Cleaned up switch code and fixed several problems:
* savegames stored an index in the switch table and performed no validation when loading a savegame.
* setting of a random switch animation duration was broken.
* separated the 2 values stored in the Time variable into 2 separate variables.
* defining a switch with one texture already belonging to another switch could leave broken definitions in the switch table.
- Added function for serializing switch and door animation pointers.
- Bumped min. savegame versions due to changes to DButtonThinker and removed all current savegame compatibility code.
git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@1128 b0f79afe-0144-0410-b225-9a4edf0717df
* Use the so-called SafeTerminateProcess() function to kill the child TiMidity++ process instead of signaling an event. I would have preferred to use GenerateConsoleCtrlEvent(), but since it requires the caller be attached to the same console as the process it wants to kill, it's pretty much worthless. We will continue to look for the presence of the event name in the TiMidity++ binary despite no longer using it, because standard TiMidity++ builds do not write to stdout in binary mode on Windows systems.
* Tweaked jumpTics again. As before, it now counts down whenever it is non-zero. If the player is on the ground and it counts below -18, it is zeroed so that the player can jump again. This handles cases where either the player did not actually jump when they pressed +jump (because there was a ceiling in the way) or when they land on something other than the floor.
* Fixed: With the Buddha cheat active the health of the real player actor was not synchronized with the player data if a voodoo doll received damage that would have killed it.
* Fixed: The message for trying to quickload in netgames used the wrong display mode for the message menu.
* Fixed: AdjustPusher compared a sector's index with a tag to check for existing pushers in that sector.
git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@1070 b0f79afe-0144-0410-b225-9a4edf0717df
- Added a new AmbientSoundNoGravity actor with doomednum 14067. This is identical in every respect to the existing AmbientSound actor, except it also has the NOGRAVITY flag set.
- Fixed: Pressing left or right on a video mode option line should play "menu/cursor", not "menu/change".
- Modify AimingCamera so that it can pick up targets after spawning, since this is the only way for it to aim at players, who cannot be spawned with TIDs.
- Fixed: Options selected in Strife dialogues using the number keys were off by one.
- Fixed: The minimum velocity for player landing in effects in P_ZMovement should be -8, not -9.
- Revised usage of jumpTics. In Hexen, it went like this:
* When you jump, it gets set to 18.
* When you land, it gets set to 7.
* As long as it is non-zero, it counts down, and you cannot jump.
Of note here, is that setting it to 18 upon jumping seems useless, since you can't jump unless you're on the ground, and when you reach the ground, it will always be set to 7. With that in mind, the new behavior is:
* When you jump, it gets set to -1.
* When you land, if it is less than zero or you fall far enough to squat, jumpTics will
be set to 7. Otherwise, jumpTics is left alone.
* If jumpTics is positive, it will count down each tic.
* As long as JumpTics is non-zero, you cannot jump.
git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@1069 b0f79afe-0144-0410-b225-9a4edf0717df
* Fixed: The check for savegames without picture was reversed.
* Fixed: Savegames that were saved without picture did not display the 'No picture' message because the empty PNG container was still recognized as image.
* Added a NULL skins[] check to AActor::SetState().
* Fixed: ACS's GetActorX, GetActorY, GetActorZ, GetActorFloorZ, GetActorCeilingZ, GetActorAngle, and GetActorPitch did not have NULL pointer checks for the TID == 0 case.
* Fixed: GCC warnings.
* Fixed: The aspectratio SBarInfo command never ticked its contents.
* Fixed some texture priorititing problems with Hexen's player displays for the menu. The patches for these should not be placed in the TEX_WallPatch namespace because it's not what modders might expect from them.
* Added automatic centering of Hexen's skill menu so that it can adjust automatically to the different player classes.
git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@989 b0f79afe-0144-0410-b225-9a4edf0717df
- Fixed: The class selection menu crashed when no item in the menu was selected.
- Added Khamsin's fix for visible mouse cursors in Linux fullscreen mode with mouse disabled.
- Changed ACS's print n: cast to use an actor's tag for non-players instead of the class name.
- Added Spleen's fix for not running 2 frames of the weapon when the player spawns.
- Added Edward-san's 'changemus' submission for printing the currently playing music track.
- Fixed: Lines in the option menu that covered the same vertical space as the back button rendered the back button inoperable.
git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@961 b0f79afe-0144-0410-b225-9a4edf0717df
- Added the am_zoom command to zoom the automap by a specific step and set default mouse wheel bindings for it.
- Fixed: The mouse pointer stayed hidden on startup because the CursorState variable was not set until the mouse was grabbed.
- Disable framebuffer debug spew. All those OutputDebugString messages from DCanvas::DrawLine()'s Lock and Unlock calls were slowing things down extremely when looking at a software-drawn automap.
- Fixes to compile with GCC 4.5.0.
- Fix an ICE when compiling with GCC 4.5.0.
- Added drawshadow flag to drawstring.
- Added kgsws-cz's FBF_NOFLASH submission.
git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@929 b0f79afe-0144-0410-b225-9a4edf0717df
- BOOM compatibility fix: Allow voodoo dolls to spawn inside narrow pits.
- Added new sector special 195 to set the 'hidden' sector flag in non-UDMF maps.
git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@924 b0f79afe-0144-0410-b225-9a4edf0717df
- Merged USDF branch into trunk.
- Added USDF specs.
- Fixed: The check for old incompatible savegames with dialogues was wrong.
* Adjusted the SaveVersion number to its accurate value.
git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@901 b0f79afe-0144-0410-b225-9a4edf0717df
- Added an optional parameter to DamageScreenColor to scale the amount of damage for pain flash calculations. This can range from 0.0 to 1.0.
- Sounds that define a loop no longer play looped by default. They must be started with CHAN_LOOP so that the higher level sound code knows they loop and can handle them accordingly.
- Added support for a LOOP_BIDI tag. Set it to "1", "On", "True", or "Yes" to use a bidirectional loop. This only works with sounds and not music, because music is streamed so does not support them.
- Extended custom loop support to work with samples as well as music.
git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@839 b0f79afe-0144-0410-b225-9a4edf0717df
- Fixed: All melee attack functions only used the target acquired by P_AimLineAttack for all subsequent calculations, not the actual victim of the attack.
- Set +NEVERRESPAWN flag for several Strife monsters that should not respawn in Bloodbath skill.
- Fixed: Setting +NOCLIP for a player class did not work.
- Fixed: A_Print and related functions should not make a use state chain succeed.
- Fixed: APowerIronFeet must continuously reset the player's air supply.
- Fixed: Stopping music did not clear the variable used to restart the last played song.
- Fixed: Classes inherited from PowerScanner didn't work anymore.
- Added some options to A_CustomPunch, including calling Strife's dagger alert function.
- Added support for Risen3D/PrBoom+'s MUSINFO lump.
git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@816 b0f79afe-0144-0410-b225-9a4edf0717df
- fixed: Items spawned internally by ADehackedPickup::TryPickup must not count towards item statistics.
- fixed: The color sliders on the player setup menu were not disabled when a predefined colorset was selected.
- added a 'player.clearcolorset' property so that inherited color sets can be removed.
- fixed: Player color sets were not inheritable.
- Some minor changes to DUMB to match http://kode54.foobar2000.org/foo_dumb-dumb-lib_source.rar
dated 2009-10-18. This version also added DSMI AMF support, but since I can't find a single
song in this format, I'll hold off on including that unless somebody specifically requests it.
git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@746 b0f79afe-0144-0410-b225-9a4edf0717df
- let players check MF2_NOTRANSLATE so that mods can create player classes which are not subject to
default player color handling.
- fixed: The ChexPlayer was missing default colorset definitions.
- Final Doom needs its finale flats changed, too.
- It's "BGCASTCALL", not "BOSSBACK".
- Added BOOM/MBF BEX-style narrative background text substitution. There are two changes because
of this:
* A cluster's flat definition can now be preceded by a $ to do a string table lookup.
* Since the standard flat names are now in the LANGUAGE lump, the normal Dehacked substitution
for these is no longer handled specially and so will not be automatically disabled merely
by providing your own MAPINFO.
- Setting a Player.ColorRange now completely disables the translation rather than just
making it an identity map.
- Added support for the original games' player translations, including Hexen's table-based ones.
- Fixed: CheckActorClass needed a NULL check.
- Fixed: FFont::StringWidth() counted the ']' character of a named color escape sequence in
its width calculation.
- Fixed: FSinglePicFont should set the character size by the scaled size of the texture.
- Fixed: snd_musicvolume needs to check GSnd for NULL, since somebody might have set an
atexit for it, which gets executed after the sound system shuts down.
- Fixed: FPlayList::Backup() failed to wrap around below entry 0 because Position is
unsigned now.
git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@744 b0f79afe-0144-0410-b225-9a4edf0717df
Update to ZDoom r2113:
* Added full stops to more Strife messages.
* Change StrifePlayer's RunHealth to 15.
* Fixed: DORWS04 should not make a sound when it switches off.
* Fixed copy-paste fail for DoorCloseSmallWood.
* I guess I can't completely trust Strife1.exe's switch list. Not everything that plays the glass break sound is actually defined with it.
* Fixed: The MAPINFO keyword resetinventory only worked when traveling to a redirected map.
* Fixed: Two Strife pickup messages were off by one character each.
* Fixed: Macil2 and the Oracle need to be immune to SpectralLightningV2 as well as V1, since they are both created by the first-stage Sigil. AlienSpectre3 should have also been immune to them but was not. In addition, Macil1 was erroneously immune to V1, when he should not be immune to any spectral damage. (Though, since he's immortal, all that really amounts to is that he can enter his pain state.)
* Fixed: Don't color the teleporter beacon's rebels in single player.
* Fixed: I forgot to reimplement the number keys for Strife's dialogues when I redid the menus to work with controllers.
* Split conversation initiation out of P_UseTraverse() and into a separate function. It no longer piggy-backs off of Hexen's puzzle item traversal but instead works like Strife, using P_AimLineAttack() to find something to talk to and includes some slight left and right "autoaim". I can think of a few consequences of this:
o Using puzzle items on actors has been restored to its original range of 64.
o Since talking now depends on P_AimLineAttack() instead of a line use traversal, you can probably set up situations where you can talk to somebody that you couldn't talk to before because some special line was in the way.
o You don't need to stick a guard flush against the wall to block players from using a switch behind them, because now the autoaim will get the player.
* Corrected several Strife switches that had the wrong sounds.
* Fixed: Action Doom 2 and Harmony IWADs were missing the GI_MAPxx flag.
git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@716 b0f79afe-0144-0410-b225-9a4edf0717df
- Fixed: Decals could spread to walls which had a decal-less texture or
were flagged not to have decals.
- Fixed: DBaseDecal/DImpactDecal::CloneSelf never checked the return value
from their StickToWall call and left unplaced decals behind if that happened.
- Reintroduced Doom.exe's player_t::usedown variable so that respawning a
player does not immediately activate switches. oldbuttons was not usable
for this. This also required that CopyPlayer preserves this info.
- Fixed: When restarting the music there was a NULL pointer check missing
so it crashed when the game was started wi
- Fixed: If the Use key is used to respawn the player it must be cleared
so that it doesn't trigger any subsequent actions after respawning.
- Fixed: Resurrecting a monster did not restore flags5 and flags6.
- Fixed: Projectiles which killed a non-monster were unable to determine
what precisely they hit because MF_CORPSE is only valid for monsters.
A new flag, MF6_KILLED that gets set for all objects that die, was added
for this case.
- Added a generic A_Weave function that exposes all possible options of
A_BishopMissileWeave and A_CStaffMissileSlither. These 2 functions are
no longer needed from DECORATE and therefore deprecated.
- The options menu no longer scales up so quickly, so it can fit wider text
onscreen. In addition, it now uses the whole height available to it. Also,
at lower resolutions, items on the compatibility options menu now cut off
the beginning of the option label rather than the option setting, making
this menu useable where previously it was not.
- Added a channel parameter to the sector overload of SN_StopSequence() so
it can be properly paired with calls to SN_StartSequence().
- Fixed: P_CheckPlayerSprites() ignored the MF4_NOSKIN flag. It now also sets
the X scale, so switching skins while morphed does not produce weird
stretching upon unmorphing.
- Fixed: Calling S_ChangeMusic() with the same song but a different looping
flag now restarts the song so that the new looping setting can be applied.
(This was easier than modifying every music handler to support modifying
loop changes on the fly, which seems like overkill.)
- Fixed: savepatchsize was declared incorrectly in d_dehacked.cpp:DoInclude().
- Changed AFastProjectile::Effect() so that it sets the spawned trail to face
same direction as the projectile.
git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@672 b0f79afe-0144-0410-b225-9a4edf0717df
- Fixed: Morphed players tried endlessly to switch to a weapon they picked up.
- fixed: P_DamageMobj just set an ice corpse's velocity to 0 to make it shatter.
But that's insufficient because it doesn't factor in any subsequent velocity
change that happens between the damaging and the next call to A_FreezeDeathChunks.
- fixed: The TimeFreezer did not freeze other players' controls in a
multiplayer game.
- fixed: DECORATE's 'gravity' property incorrectly messed around with the
NOGRAVITY flag.
- fixed: Hitscan attacks didn't check the puff's replacement for damage types.
git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@661 b0f79afe-0144-0410-b225-9a4edf0717df
These are fully inheritable by subclasses unlike lights defined in GLDEFS.
The light itself still needs to defined the old way in GLDEFS though. It's only the
attachment that can now be done in DECORATE.
Update to ZDoom r1935:
- Removed the Actor uservar array and replaced it with user-defined variables.
A_SetUserVar/SetUserVariable/GetUserVariable now take a variable name
instead of an array index. A_SetUserArray/SetUserArray/GetUserArray
have been added to access elements in user-defined arrays.
- Rewrote wide sky texture scaling again. This time, it should work for any
size textures at any scale. I also tried doing sky scrolling on the sky
cylinder, but that didn't look so good, so I left it in screen space.
git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@577 b0f79afe-0144-0410-b225-9a4edf0717df
fixed: The Dehacked flags parser fix from May 31 (r1624) was undone by
yesterday's additions. Changed it so that the parser first checks for
the presence of a '-' sign before deciding whether to use strtol or
strtoul to convert the string into a number.
- Added PinkSilver's A_LookEx fix.
- added resources needed for MBF support.
- removed unused score items from DECORATE file.
- Fixed: Argument count for UsePuzzleItem was wrong.
- Added a few things from Gez's experimental build:
* MBF Dehacked emulation but removed the COMPATF_MBFDEHACKED flag because
it wouldn't work and is more or less useless anyway.
* MBF's dog (definition only, no sprites yet.)
* User variables. There's an array of 10. They can be set and checked in
both DECORATE and ACS.
* Made the tag name changeable but eliminated the redundancy of having
both the meta property and the individual actor's one. Having one is
fully sufficient. TO BE FIXED: Names are case insensitive but this
should better be case sensitive. Unfortunately there's currently nothing
better than FName to store a string inside an actor without severely
complicating matters. Also bumped savegame version to avoid problems
with this change.
* MBF grenade and bouncing code.
* several compatibility options.
* info CCMD to print extended actor information (not fully implemented yet)
* summonmbf CCMD.
* Beta BFG code pointer (but not the related missiles yet.)
* PowerInvisibility enhancements.
* ScoreItem with one significant change: Added a score variable that can be
checked through ACS and DECORATE. The engine itself will do nothing with it.
* Nailgun option for A_Explode.
* A_PrintBold and A_Log.
* A_SetSpecial.
* Beta Lost Soul (added DoomEdNum 9037 to it)
* A_Mushroom extensions
* Vavoom compatible MAPINFO keynames.
git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@452 b0f79afe-0144-0410-b225-9a4edf0717df
- Added player MugShotMaxHealth property. Negative values use the player's
max health as the mug shot max health, zero uses 100 as the mug shot max
health, and positive values used directly as the mug shot max health.
- Added buddha cheat.
- Added TELEFRAG_DAMAGE constant, and changed the two places that still used
1000 as the threshold for god mode damage to use it instead. (Players with
MF2_INVULNERABLE set already used 1000000 as their threshold.)
- Added MF6_NOTELEFRAG flag.
- Fixed: M_QuitResponse() tried to play a sound even when none was specified
in the gameinfo.
- Added Yes/No selections for Y/N messages so that you can answer them
entirely with a joystick.
- Fixed: Starting the menu at the title screen with a key other than Escape
left the top level menu out of the menu stack.
- Changed the save menu so that cancelling input of a new save name only
deactivates that control and does not completely close the menus.
- Fixed "any key" messages to override input to menus hidden beneath them and
to work with joysticks.
- Removed the input parameter from M_StartMessage and the corresponding
messageNeedsInput global, because it was redundant. Any messages that want
a Y/N response also supply a callback, and messages that don't care which
key you press don't supply a callback.
- Changed MKEY_Back so that it cancels out of text entry fields before
backing to the previous menu, which it already did for the keyboard.
- Changed the menu responder so that key downs always produce results,
regardless of whether or not an equivalent key is already down.
git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@412 b0f79afe-0144-0410-b225-9a4edf0717df
- ZDoom now disables the input method editor, since it has no east-Asian
support, and having it open a composition window when you're only expecting
a single keypress is not so good.
- Fixed: Setting intermissioncounter to false in gameinfo drew all the stats
at once, instead of revealing them one line at a time.
- Fixed: The border definition in MAPINFO's gameinfo block used extra braces.
- Added A_SetCrosshair.
- Added A_WeaponBob.
- Dropped the Hexen player classes' JumpZ down to 9, since the original value
now works as it originally did.
- MF2_NODMGTHRUST now works with players, too. (Previously, it was only for
missiles.) Also added PPF_NOTHRUSTWHILEINVUL to prevent invulnerable players
from being thrusted while taking damage. (Non-players were already
unthrusted.)
- A_ZoomFactor now scales turning with the FOV by default. ZOOM_NOSCALETURNING
will leave it unaltered.
- Added Gez's PowerInvisibility changes.
- Fixed: clearflags did not clear flags6.
- Added A_SetAngle, A_SetPitch, A_ScaleVelocity, and A_ChangeVelocity.
- Enough with this "momentum" garbage. What Doom calls "momentum" is really
velocity, and now it's known as such. The actor variables momx/momy/momz
are now known as velx/vely/velz, and the ACS functions GetActorMomX/Y/Z
are now known as GetActorVelX/Y/Z. For compatibility, momx/momy/momz will
continue to work as aliases from DECORATE. The ACS functions, however,
require you to use the new name, since they never saw an official release
yet.
- Added A_ZoomFactor. This lets weapons scale their player's FOV. Each weapon
maintains its own FOV scale independent from any other weapons the player
may have.
- Fixed: When parsing DECORATE functions that were not exported, the parser
crashed after giving you the warning.
- Fixed some improper preprocessor lines in autostart/autozend.cpp.
- Added XInput support. For the benefit of people compiling with MinGW,
the CMakeLists.txt checks for xinput.h and disables it if it cannot
be found. (And much to my surprise, I accidentally discovered that if you
have the DirectX SDK installed, those headers actually do work with GCC,
though they add a few extra warnings.)
git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@376 b0f79afe-0144-0410-b225-9a4edf0717df
- Swapped snes_spc out for the full Game Music Emu library.
- Fixed: The Hexen status bar still uses MAX_MANA for some calculations instead
of MaxAmount.
- Added Blzut3's submission for displaying underwater stats in SBARINFO.
- Added Gez's AMMO_CHECKBOTH submission.
- Added Gez's THRUSPECIES submission.
- Added loading directories into the lump directory.
- fixed: The Dehacked parser could not parse flag values with the highest bit
set because it used atoi to convert the string into a number.
- fixed: bouncing sounds were limited to inventory items.
- Rewrote IWAD detection code to use the ResourceFile classes instead of
reading the WAD directory directly. As a side effect it should now be
possible to use Zip and 7z for IWADs, too.
- Added 'EndTitle' nextmap option which goes to the regular title loop after
the game has finished.
- Added NOBOSSRIP flag. Note: we are now at flags6!
- Added SetSkyScrollSpeed(int skyplane, fixed speed) ACS function.
- Added THRUACTORS flag that disables all actor<->actor collision detection.
- Added DONTSEEKINVISIBLE flag for missiles that can't home in on invisible
targets.
- Added SFX_TRANSFERPITCH flag to A_SpawnItemEx.
- Added Ultimate Freedoom IWAD detection.
- Added GetAirSupply and SetAirSupply functions to ACS.
- Fixed: The *surface sound was not played when drowning was switched off
by setting the level's air supply to 0.
git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@338 b0f79afe-0144-0410-b225-9a4edf0717df
- Added ACS GetChar function.
- Added Gez's submission for polyobjects being able to crush corpses but made
it an explicit MAPINFO option only.
- Changed APlayerPawn::DamageFade to a PalEntry from 3 floats.
- Removed #pragma warnings from cmdlib.h and fixed the places where they were
still triggered.
These #pragmas were responsible for >90% of the GCC warnings that were not
listed in VC++.
- Fixed one bug in the process: DSeqNode::m_Atten was never adjusted when the
parameter handling of the sound functions for attenuation was changed.
Changed m_Atten to a float and fixed the SNDSEQ parser to set proper values.
Also added the option to specify attenuation with direct values in addition
to the predefined names.
- fixed a few Heretic actors:
* The pod generator's attacksound was wrong
* The teleglitter generators need different flags if they are supposed to work
with z-aware spawning of the glitter.
* The knight's axes need the THRUGHOST flag.
- Fixed non-POD passing in G_BuildSaveName() and other things GCC warned
about.
- Added support for imploded zips.
- Fixed: Some missile spawning functions ignored the FastSpeed setting.
- Fixed: P_CheckSwitchRange tried to access a line's backsector without
checking if it is valid.
- Fixed: Fast projectile could not be frozen by the Time freezer.
- Added several new ACS functions: GetActorMomX/Y/Z, GetActorViewHeight,
SetActivator, SetActivatorToTarget.
- Added Species property for actors and separated Hexen's Demon1 and Demon2
into different species.
- Added handling for UDMF user keys.
- Added support for ACS functions that can be defined without recompiling ACC.
- Fixed: The short lump name for embedded files must be cleared so that they
are not found by a normal lump search.
- Added AProp_Notarget actor property.
- Fixed: TraceBleed was missing a NULL pointer check,
- Fixed: P_RandomChaseDir could crash for friendly monsters that belong to
a player which left the game.
- Changed A_PodGrow so that it plays the generator's attack sound instead of
"misc/podgrow".
- Added transference of a select few flags from PowerProtection to its owner.
- Added actor type parameters to A_PodPain() and A_MakePod().
- The savegame path is now passed through NicePath(), since it's user-
specifiable.
- Added save_dir cvar. When non-empty, it controls where savegames go.
- SBARINFO update:
* Added the ability to center things with fullscreenoffsets enabled. Due
to some limitations the syntax is [-]<integer> [+ center].
* Fixed: the translucent flag on drawinventorybar didn't work quite right.
* Fixed: Extremely minor inaccuracy in the Doom SBarInfo code. The
fullscreen inventory bar wasn't scaled correctly.
- fixed: The CHECKSWITCHRANGE line flag was ignored for one sided lines.
- Added more compatibility settings, submitted by Gez.
- Fixed: Doom's fullscreen HUD was limited to 6 keys.
- Made 'next endgame' work again for cases where it is supposed to be
the same as 'next endgame4'.
- GCC nitpick fix: Classes being used as template parameters may not be
defined locally in a function. Fixed FWadFile::SetNamespace for that.
- Improved error reporting for incorrect textures in maps.
- Fixed: When music was stopped this was not set in the global music state.
- Fixed: Friendly monsters did not target enemy players in deathmatch.
- Fixed: Completely empty patches (8 0-bytes) could not be handled by the
texture manager. They now get assigned a new FEmptyTexture object
that is just a 1x1 pixel transparent texture.
- Fixed: Multiple namespace markers of the same type were no longer detected.
- Fixed sprite renaming.
- Maps defined with Hexen-style MAPINFOs now run their scripts in the proper
order.
- Fixed: FWadCollection::CheckNumForName() read the lump each iteration before
checking for the end marker. On 32-bit systems, this is -1, but on 64-bit
systems, it is a very large integer that is highly unlikely to be in mapped
memory.
git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@325 b0f79afe-0144-0410-b225-9a4edf0717df
- Moved weapon slot initialization into APlayerPawn::PostBeginPlay() so that
they can be initialized when players respawn in multiplayer.
- Added a Check for the Vavoom namespace to the UDMF parser. Functionally
it's 100% identical with ZDoom's own but needs to be checked for in
case Vavoom compatible UDMF maps are released.
- Added an SDL output plugin, so FMOD can produce sound using SDL's audio
support instead of its own OSS/ALSA/ESD support. This is selectable by
setting snd_output to "sdl".
- Fixed: On Linux systems with ALSA but no OSS support, trying to start
the sound system with snd_output "default" would fail instead of trying
to use ALSA.
- Added sdl_nokeyrepeat to disable key repeating in the menus and console
on Linux.
- Added support for zip/pk3 files with LZMA and bzip2 compression to ZDoom.
- Added more output to zipdir and a -q option to turn it off.
- Added -u option to zipdir to only recompress those files in a zip that have
changed.
- Added -d and -f options to zipdir. -d forces deflate compression, and -f
forces a write of the zip, even if it's newer than all the files it contains.
git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@307 b0f79afe-0144-0410-b225-9a4edf0717df
- fixed: Some of the dynamic light definitions for Hexen's switchable items were not correct.
- fixed: Weapon sprites were all drawn fullbright if only one of the layers was set to bright.
Update to ZDoom r1456 (2.3.0 plus one additional fix):
- Fixed: AActor::SetOrigin must call P_FindFloorCeiling to get the true
floor and ceiling heights. Otherwise the actor will fall right through
3DMidtex textures (and 3D-floors.)
- Fixed: The TeleporterBeacon tried to enter its See state rather than its
Drop state. Also changed it to fade out when it's done rather than
disappearing abruptly.
- Fixed: Strife's quest based line actions also work in Deathmatch.
- Fixed: Gravity application was not correct. For actors with no vertical
momentum the initial pull is supposed to be twice as strong as when
vertical movement already takes place.
- added invquery CCMD like in Strife. Also removed all underscores from the
tag strings so that they can be printed properly.
- Fixed: Skill baby was missing 'autousehealth' for all games.
- Added a new CVAR: sv_disableautohealth
- Autouse of health items is no longer hardwired to the default item classes.
There's a new property HealthPickup.Autouse. 0 means no autouse, 1 a small
Raven health item, 2 a large Raven health item and 3 a Strife item.
- Removed an early-out in wallscan_striped() that is invalid when drawing a
skybox.
- fixed: nextmap and nextsecret CCMDs set skill to 0.
- fixed: level.flags2 was not stored in savegames. Also bumped min. savegame
version and removed old compatibility handlings.
- The SFX Reverb unit is now moved so that it serves as an input to the water
effect rather than as an input to the ChannelGroup Target Unit. This means
the water effect is now applied after any room reverb, rather than in
parallel with it.
- Fixed: UI sounds should not have reverb applied to them.
- Removed the delay for starting all sounds from one tic at exactly the same
DSP position. Without also synchronizing the stopping of sounds, it can
cause problems with things like the chainsaw where the sound is stopped and
immediately restarted, causing occassional gaps between the stopping of the
sound and the starting of the new one. (I added the start synchronization to
combat flanging of paired moving polyobjects when moving around, but I think
just removing velocity from the player for sound calculations takes care of
that well enough.)
- Added GCC headers for intptr_t to tarray.h.
- Added MF5_PAINLESS flag for projectiles that don't make the target go into
the pain state.
- Changed DEM_ADDSLOTDEFAULT, DEM_ADDSLOT, and DEM_SETSLOT to be more space-
efficient.
- Fixed: player->oldbuttons was copied from the current button set at the end
of P_PlayerThink(), well before ACS could ever get at it with GetPlayerInput.
- Fixed: The map name display on the automap was incomplete.
- Added FakeInventory.Respawns DECORATe property
- Fixed: Unsetting the MF5_INCONVERSATION flag did not work when quitting the
conversation by pressing Escape.
- added ML_BLOCKPROJECTILE flag to lines.
- Fixed: With opl_onechip set the second OPL chip was never set to anything valid
so it contained an invalid pointer. There were also a few other places that
simply assumed that the second chip is set to something valid.
- Fixed: NPCs which are engaged in a conversation should not move.
- Fixed: Player movement animation was not stopped when starting a conversation.
- Added selective compression of network packets. Interestingly, most packets
don't actually compress all that well, even the ones that aren't too short
to possibly compress. (Maybe make the whole thing one long, never-ending
zlib data stream with Z_SYNC_FLUSH used to chunk things at packet
boundaries? That would probably help the compression ratio, but it would
require changing the way the netcode determines sequence, which would be
a much more invasive change.)
- Fixed: Heretic's fullscreen HUD crashed when the player had armor without
a valid icon.
- Fixed: The StrifePlayer was missing a RunHealth setting.
git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@303 b0f79afe-0144-0410-b225-9a4edf0717df
- Added MF5_CANTSEEK flag to prevent seeker missiles from homing in on
certain actors and added an option to APowerInvisibility to set this
flag when active.
- Added map specific automap backgrounds.
- Fixed: Voodoo dolls did not play a sound when dying.
- Added colorized error messages to DECORATE and made a few more error
conditions that do not block further parsing not immediately abort.
- Made all errors in CreateNewActor not immediately fatal so that the
rest of the DECORATE lump can be parsed normally to look for more errors.
- Fixed: Defining classes with the same name as their immediate base class
was legal. It should not be allowed that a class has another one with the
same name in its ancestry.
- Fixed: Formatting of the intermission screen on Heretic, Hexen and Strife
was broken. Changed it to use WI_Drawpercent which does it properly and
also allows showing percentage in these games now.
- Fixed: The MAPINFO parser ignored missing terminating braces of the last
block in the file.
- Moved the V_InitFontColors() call earlier in the startup sequence so that
colored error messages appear colored in the startup window. Also lightened
up the "Flat" red to contrast better on the startup background.
- Changed I_InitInput() to acquire the IDirectInput8A interface by using
DirectInput8Create() instead of CoCreateInstance(). This allows the Steam
GameOverlayRenderer.dll to properly hook it.
- Stopped sending double the number of wheel events as appropriate to the
console under Linux.
- Added middle mouse button selection pasting for X systems.
git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@301 b0f79afe-0144-0410-b225-9a4edf0717df