Merge remote-tracking branch 'origin/master' into sdl2-branch
This commit is contained in:
commit
d36dafa3fc
46 changed files with 357 additions and 138 deletions
5
.github/CONTRIBUTING.md
vendored
5
.github/CONTRIBUTING.md
vendored
|
|
@ -1,6 +1,11 @@
|
|||
Thanks for contributing to Chocolate Doom! Whatever your contribution,
|
||||
whether it's code or just a bug report, it's greatly appreciated.
|
||||
|
||||
The project is governed by the
|
||||
[Contributor Covenant](http://contributor-covenant.org/version/1/4/)
|
||||
version 1.4. By contributing to the project you agree to abide by its
|
||||
terms. To report violations, please send an email to fraggle@gmail.com.
|
||||
|
||||
### Reporting bugs
|
||||
|
||||
Before reporting a bug, it's worth checking if this really is a bug.
|
||||
|
|
|
|||
3
AUTHORS
3
AUTHORS
|
|
@ -2,4 +2,5 @@ Simon Howard <fraggle@gmail.com>
|
|||
James Haley <haleyjd@hotmail.com>
|
||||
Samuel Villarreal <svkaiser@gmail.com>
|
||||
Fabian Greffrath <fabian@greffrath.com>
|
||||
Jonathan Dowland <jon+github@alcopop.org>
|
||||
Jonathan Dowland <jon@dow.land>
|
||||
Alexey Khokholov <alexeytf2@gmail.com>
|
||||
|
|
|
|||
74
CODE_OF_CONDUCT.md
Normal file
74
CODE_OF_CONDUCT.md
Normal file
|
|
@ -0,0 +1,74 @@
|
|||
# Contributor Covenant Code of Conduct
|
||||
|
||||
## Our Pledge
|
||||
|
||||
In the interest of fostering an open and welcoming environment, we as
|
||||
contributors and maintainers pledge to making participation in our project and
|
||||
our community a harassment-free experience for everyone, regardless of age, body
|
||||
size, disability, ethnicity, gender identity and expression, level of experience,
|
||||
nationality, personal appearance, race, religion, or sexual identity and
|
||||
orientation.
|
||||
|
||||
## Our Standards
|
||||
|
||||
Examples of behavior that contributes to creating a positive environment
|
||||
include:
|
||||
|
||||
* Using welcoming and inclusive language
|
||||
* Being respectful of differing viewpoints and experiences
|
||||
* Gracefully accepting constructive criticism
|
||||
* Focusing on what is best for the community
|
||||
* Showing empathy towards other community members
|
||||
|
||||
Examples of unacceptable behavior by participants include:
|
||||
|
||||
* The use of sexualized language or imagery and unwelcome sexual attention or
|
||||
advances
|
||||
* Trolling, insulting/derogatory comments, and personal or political attacks
|
||||
* Public or private harassment
|
||||
* Publishing others' private information, such as a physical or electronic
|
||||
address, without explicit permission
|
||||
* Other conduct which could reasonably be considered inappropriate in a
|
||||
professional setting
|
||||
|
||||
## Our Responsibilities
|
||||
|
||||
Project maintainers are responsible for clarifying the standards of acceptable
|
||||
behavior and are expected to take appropriate and fair corrective action in
|
||||
response to any instances of unacceptable behavior.
|
||||
|
||||
Project maintainers have the right and responsibility to remove, edit, or
|
||||
reject comments, commits, code, wiki edits, issues, and other contributions
|
||||
that are not aligned to this Code of Conduct, or to ban temporarily or
|
||||
permanently any contributor for other behaviors that they deem inappropriate,
|
||||
threatening, offensive, or harmful.
|
||||
|
||||
## Scope
|
||||
|
||||
This Code of Conduct applies both within project spaces and in public spaces
|
||||
when an individual is representing the project or its community. Examples of
|
||||
representing a project or community include using an official project e-mail
|
||||
address, posting via an official social media account, or acting as an appointed
|
||||
representative at an online or offline event. Representation of a project may be
|
||||
further defined and clarified by project maintainers.
|
||||
|
||||
## Enforcement
|
||||
|
||||
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
||||
reported by contacting the project team at fraggle@gmail.com. All
|
||||
complaints will be reviewed and investigated and will result in a response that
|
||||
is deemed necessary and appropriate to the circumstances. The project team is
|
||||
obligated to maintain confidentiality with regard to the reporter of an incident.
|
||||
Further details of specific enforcement policies may be posted separately.
|
||||
|
||||
Project maintainers who do not follow or enforce the Code of Conduct in good
|
||||
faith may face temporary or permanent repercussions as determined by other
|
||||
members of the project's leadership.
|
||||
|
||||
## Attribution
|
||||
|
||||
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
|
||||
available at [http://contributor-covenant.org/version/1/4][version]
|
||||
|
||||
[homepage]: http://contributor-covenant.org
|
||||
[version]: http://contributor-covenant.org/version/1/4/
|
||||
63
NEWS
63
NEWS
|
|
@ -1,3 +1,66 @@
|
|||
HEAD:
|
||||
|
||||
General:
|
||||
* Bash completion scripts are included. (thanks Fabian)
|
||||
* Support the *.lmp file format in the OS X launcher (thanks Jon)
|
||||
* Added emulation for pitch-shifting as in early versions of Doom,
|
||||
Heretic, and Hexen. (thanks Jon)
|
||||
* Write out aspect-correct 1600×1200 PNGs. (thanks Jon)
|
||||
* OPL emulation is more accurate. (thanks Nuke.YKT)
|
||||
* Futher emulation of DMX bugs with GUS cards. (thanks Nuke.YKT)
|
||||
* Emulation of the disk icon has returned. (thanks Fabian, Jon)
|
||||
* Checksum calculations were fixed on big endian systems, allowing
|
||||
multiplayer games to be played in mixed little/big-endian
|
||||
environments. (thanks GhostlyDeath, njankowski)
|
||||
|
||||
Build systems:
|
||||
* Improved compatibility with BSD Make. (thanks R.Rebello)
|
||||
* “./configure --with-PACKAGE” checks were repaired to behave
|
||||
logically, rather than disabling the feature. (thanks R.Rebello)
|
||||
* Default to installing the games to ${bindir}, such as /usr/local/bin,
|
||||
rather than /usr/local/games. (thanks chungy)
|
||||
* Support Visual Studio 2015. (thanks Azarien)
|
||||
* Allow SDL headers and libraries to exist in the Microsoft Visual
|
||||
Studio project directory. (thanks Quasar)
|
||||
* Repaired the CodeBlocks projects by removing non-existent files from
|
||||
the project files (thanks krystalgamer)
|
||||
|
||||
Doom:
|
||||
* Chex Quest's level warp cheat (LEESNYDER##) was changed to behave
|
||||
like the original EXE. (thanks Nuke.YKT)
|
||||
* Allow starting multiplayer Chex Quest games.
|
||||
* Allow Freedoom: Phase 1 ≤ 0.10.1 to be loaded with mods, with
|
||||
-gameversion older than ultimate. (thanks Fabian, chungy)
|
||||
* Added safety checks against write failures when saving a game,
|
||||
such as when the directory is read-only. Try falling back to a
|
||||
temporary directory and reporting an error instead.
|
||||
(thanks terrorcide)
|
||||
* Versions 1.666, 1.7, and 1.8 are emulated. (thanks Nuke.YKT)
|
||||
|
||||
Heretic:
|
||||
* Added map names for Episode 6, fixing a crash after completing a
|
||||
level in this episode. (thanks J.Benaim)
|
||||
|
||||
Hexen:
|
||||
* The MRJONES cheat code returns an identical string as vanilla,
|
||||
and enables fully reproducable builds. (thanks Fabian)
|
||||
* Fixed an issue where the game crashed while killing the Wraithverge
|
||||
in 64-bit builds. (thanks J.Benaim)
|
||||
|
||||
Strife:
|
||||
* Support added for automatic loading of the IWAD from the GOG.com
|
||||
release of Strife: Veteran Edition on Windows. (thanks chungy)
|
||||
* Jumping can be bound to a mouse button. (thanks Gez)
|
||||
* Gibbing logic was changed to match vanilla behavior. (thanks Quasar)
|
||||
* Several constants differences from vanilla were fixed. (thanks
|
||||
Nuke.YKT, Quasar)
|
||||
* When using -iwad, voices.wad from the IWAD's directory is prefered
|
||||
over auto-detected DOS/Steam/GOG.com installs. (thanks Quasar)
|
||||
|
||||
libtextscreen:
|
||||
* Simplified the API for creating and managing tables and columns.
|
||||
* Allow cycling through tables with tab key.
|
||||
|
||||
2.2.1 (2015-09-10):
|
||||
|
||||
Chocolate Doom has not seen a great deal of "stable" patch
|
||||
|
|
|
|||
6
NOT-BUGS
6
NOT-BUGS
|
|
@ -18,7 +18,7 @@ the following:
|
|||
(read 106, should be 109)
|
||||
|
||||
*** You may need to upgrade your version of Doom to v1.9. ***
|
||||
See: http://doomworld.com/files/patches.shtml
|
||||
See: https://www.doomworld.com/classicdoom/info/patches.php
|
||||
This appears to be v1.6/v1.666.
|
||||
|
||||
This usually indicates that your IWAD file that you are using to play
|
||||
|
|
@ -130,9 +130,9 @@ this when trying to play an add-on level. The level you are trying to
|
|||
play is too complex; it was most likely designed to work with a limit
|
||||
removing source port.
|
||||
|
||||
More information can be found here:
|
||||
More information can be found here (archived link):
|
||||
|
||||
http://rome.ro/lee_killough/editing/visplane.shtml
|
||||
https://archive.is/s6h7V
|
||||
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
|
|
|
|||
2
README
2
README
|
|
@ -73,7 +73,7 @@ Here are some examples:
|
|||
* More information, including information about how to play various
|
||||
classic TCs, is available on the Chocolate Doom website:
|
||||
|
||||
http://www.chocolate-doom.org/
|
||||
https://www.chocolate-doom.org/
|
||||
|
||||
You are encouraged to sign up and contribute any useful information
|
||||
you may have regarding the port!
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ Timidity for MIDI playback, first download a sound font. An example of
|
|||
a good quality sound font is the eawpats font, which can be downloaded
|
||||
from the idgames archive as sounds/eawpats.zip:
|
||||
|
||||
http://www.doomworld.com/idgames/index.php?file=sounds/eawpats.zip
|
||||
https://www.doomworld.com/idgames/sounds/eawpats
|
||||
|
||||
Having installed a sound font, select "Native MIDI" in the sound
|
||||
configuration dialog in the setup tool, and use the "Timidity
|
||||
|
|
@ -39,7 +39,7 @@ Edition, these patches are included with its version of classic Doom,
|
|||
and are automatically detected. Otherwise, they can be downloaded
|
||||
from the idgames archive as music/dgguspat.zip:
|
||||
|
||||
http://www.doomworld.com/idgames/index.php?file=music/dgguspat.zip
|
||||
https://www.doomworld.com/idgames/music/dgguspat
|
||||
|
||||
Having downloaded the patches, select "GUS (emulated)" in the sound
|
||||
configuration dialog in the setup tool, and use the "GUS patch path"
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ PACKAGE_SHORTDESC="Conservative source port"
|
|||
PACKAGE_COPYRIGHT="Copyright (C) 1993-2015"
|
||||
PACKAGE_LICENSE="GNU General Public License, version 2"
|
||||
PACKAGE_MAINTAINER="Simon Howard"
|
||||
PACKAGE_URL="http://www.chocolate-doom.org/"
|
||||
PACKAGE_URL="https://www.chocolate-doom.org/"
|
||||
PACKAGE_ISSUES="https://github.com/chocolate-doom/chocolate-doom/issues"
|
||||
|
||||
AC_CONFIG_AUX_DIR(autotools)
|
||||
|
|
|
|||
|
|
@ -65,6 +65,7 @@ following names:
|
|||
tnt.wad (Final Doom: TNT: Evilution)
|
||||
plutonia.wad (Final Doom: Plutonia Experiment)
|
||||
chex.wad (Chex Quest)
|
||||
freedm.wad (FreeDM)
|
||||
#endif
|
||||
#if HERETIC
|
||||
heretic1.wad (Shareware Heretic)
|
||||
|
|
@ -81,7 +82,7 @@ following names:
|
|||
If you don't have a copy of a commercial version, you can download
|
||||
the shareware version of Doom (extract the file named doom1.wad):
|
||||
|
||||
* http://www.doomworld.com/idgames/index.php?id=7053
|
||||
* https://www.doomworld.com/idgames/idstuff/doom/win95/doom95
|
||||
(idstuff/doom/win95/doom95.zip in your nearest /idgames mirror)
|
||||
|
||||
#endif
|
||||
|
|
@ -195,7 +196,7 @@ are needed:
|
|||
* The IWAD file 'chex.wad', from the Chex Quest CD.
|
||||
|
||||
* The dehacked patch 'chex.deh', which can be found here:
|
||||
http://www.doomworld.com/idgames/?id=15420
|
||||
https://www.doomworld.com/idgames/utils/exe_edit/patches/chexdeh
|
||||
(utils/exe_edit/patches/chexdeh.zip in your nearest /idgames mirror)
|
||||
|
||||
Copy these files into a directory together and use the '-iwad' command
|
||||
|
|
|
|||
3
msvc/.gitignore
vendored
3
msvc/.gitignore
vendored
|
|
@ -5,3 +5,6 @@
|
|||
savegames
|
||||
strfsav*
|
||||
*.pcx
|
||||
SDL*
|
||||
begin_code.h
|
||||
close_code.h
|
||||
|
|
@ -157,8 +157,6 @@ static void AdvanceTime(unsigned int nsamples)
|
|||
|
||||
static void FillBuffer(int16_t *buffer, unsigned int nsamples)
|
||||
{
|
||||
unsigned int i;
|
||||
|
||||
// This seems like a reasonable assumption. mix_buffer is
|
||||
// 1 second long, which should always be much longer than the
|
||||
// SDL mix buffer.
|
||||
|
|
|
|||
|
|
@ -101,6 +101,11 @@
|
|||
[self->launcherManager addFileToCommandLine: fileName
|
||||
forArgument: @"-merge"];
|
||||
}
|
||||
else if (![extension caseInsensitiveCompare: @"lmp"])
|
||||
{
|
||||
[self->launcherManager addFileToCommandLine: fileName
|
||||
forArgument: @"-playdemo"];
|
||||
}
|
||||
else if (![extension caseInsensitiveCompare: @"deh"])
|
||||
{
|
||||
[self->launcherManager addFileToCommandLine: fileName
|
||||
|
|
|
|||
|
|
@ -51,6 +51,18 @@ Licensed under the GNU GPL v2.</string>
|
|||
<string>wad</string>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>CFBundleTypeName</key>
|
||||
<string>Doom demo recording</string>
|
||||
<key>CFBundleTypeIconFile</key>
|
||||
<string>wadfile.icns</string>
|
||||
<key>CFBundleTypeRole</key>
|
||||
<string>Viewer</string>
|
||||
<key>CFBundleTypeExtensions</key>
|
||||
<array>
|
||||
<string>lmp</string>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>CFBundleTypeName</key>
|
||||
<string>Doom Dehacked patch</string>
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ Name: @PACKAGE@
|
|||
Summary: @PACKAGE_SHORTDESC@
|
||||
Version: @VERSION@
|
||||
Release: 1
|
||||
Source: http://www.chocolate-doom.org/downloads/@VERSION@/@PACKAGE@-@VERSION@.tar.gz
|
||||
Source: https://www.chocolate-doom.org/downloads/@VERSION@/@PACKAGE@-@VERSION@.tar.gz
|
||||
URL: @PACKAGE_URL@
|
||||
Group: Amusements/Games
|
||||
BuildRoot: /var/tmp/@PACKAGE@-buildroot
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
|
||||
SUBDIRS = doom heretic hexen strife setup
|
||||
|
||||
execgamesdir = ${exec_prefix}/games
|
||||
execgamesdir = ${bindir}
|
||||
|
||||
execgames_PROGRAMS = @PROGRAM_PREFIX@doom \
|
||||
@PROGRAM_PREFIX@heretic \
|
||||
|
|
|
|||
|
|
@ -177,6 +177,14 @@ static registry_value_t root_path_keys[] =
|
|||
SOFTWARE_KEY "\\GOG.com\\Games\\1435848742",
|
||||
"PATH",
|
||||
},
|
||||
|
||||
// Strife: Veteran Edition
|
||||
|
||||
{
|
||||
HKEY_LOCAL_MACHINE,
|
||||
SOFTWARE_KEY "\\GOG.com\\Games\\1432899949",
|
||||
"PATH",
|
||||
},
|
||||
};
|
||||
|
||||
// Subdirectories of the above install path, where IWADs are installed.
|
||||
|
|
|
|||
10
src/d_mode.h
10
src/d_mode.h
|
|
@ -74,6 +74,16 @@ typedef enum
|
|||
exe_strife_1_31 // Strife v1.31
|
||||
} GameVersion_t;
|
||||
|
||||
// What IWAD variant are we using?
|
||||
|
||||
typedef enum
|
||||
{
|
||||
vanilla, // Vanilla Doom
|
||||
freedoom, // FreeDoom: Phase 1 + 2
|
||||
freedm, // FreeDM
|
||||
bfgedition, // Doom Classic (Doom 3: BFG Edition)
|
||||
} GameVariant_t;
|
||||
|
||||
// Skill level.
|
||||
|
||||
typedef enum
|
||||
|
|
|
|||
|
|
@ -26,19 +26,19 @@
|
|||
</description>
|
||||
<screenshots>
|
||||
<screenshot type="default">
|
||||
<image>http://www.chocolate-doom.org/wiki/images/9/97/GNOME_FreeDM_DEMO4.png</image>
|
||||
<image>https://www.chocolate-doom.org/wiki/images/9/97/GNOME_FreeDM_DEMO4.png</image>
|
||||
<caption>FreeDM, DM05: Metal</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>http://www.chocolate-doom.org/wiki/images/a/a6/GNOME_Doom_II_DEMO2.png</image>
|
||||
<image>https://www.chocolate-doom.org/wiki/images/a/a6/GNOME_Doom_II_DEMO2.png</image>
|
||||
<caption>Doom II, Level 5: The Waste Tunnels</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>http://www.chocolate-doom.org/wiki/images/4/41/GNOME_Doomsday_of_UAC.png</image>
|
||||
<image>https://www.chocolate-doom.org/wiki/images/4/41/GNOME_Doomsday_of_UAC.png</image>
|
||||
<caption>Doomsday of UAC (uac_dead.wad)</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>http://www.chocolate-doom.org/wiki/images/2/2a/GNOME_Freedoom_DTWID_DEMO3.png</image>
|
||||
<image>https://www.chocolate-doom.org/wiki/images/2/2a/GNOME_Freedoom_DTWID_DEMO3.png</image>
|
||||
<caption>Doom the Way id Did, on Freedoom. Level 3-2: City of Corpses</caption>
|
||||
</screenshot>
|
||||
</screenshots>
|
||||
|
|
|
|||
|
|
@ -119,9 +119,6 @@ boolean advancedemo;
|
|||
// Store demo, do not accept any inputs
|
||||
boolean storedemo;
|
||||
|
||||
// "BFG Edition" version of doom2.wad does not include TITLEPIC.
|
||||
boolean bfgedition;
|
||||
|
||||
// If true, the main game loop has started.
|
||||
boolean main_loop_started = false;
|
||||
|
||||
|
|
@ -413,7 +410,7 @@ boolean D_GrabMouseCallback(void)
|
|||
//
|
||||
void D_DoomLoop (void)
|
||||
{
|
||||
if (bfgedition &&
|
||||
if (gamevariant == bfgedition &&
|
||||
(demorecording || (gameaction == ga_playdemo) || netgame))
|
||||
{
|
||||
printf(" WARNING: You are playing using one of the Doom Classic\n"
|
||||
|
|
@ -582,7 +579,7 @@ void D_DoAdvanceDemo (void)
|
|||
|
||||
// The Doom 3: BFG Edition version of doom2.wad does not have a
|
||||
// TITLETPIC lump. Use INTERPIC instead as a workaround.
|
||||
if (bfgedition && !strcasecmp(pagename, "TITLEPIC")
|
||||
if (gamevariant == bfgedition && !strcasecmp(pagename, "TITLEPIC")
|
||||
&& W_CheckNumForName("titlepic") < 0)
|
||||
{
|
||||
pagename = DEH_String("INTERPIC");
|
||||
|
|
@ -815,16 +812,13 @@ void D_IdentifyVersion(void)
|
|||
|
||||
void D_SetGameDescription(void)
|
||||
{
|
||||
boolean is_freedoom = W_CheckNumForName("FREEDOOM") >= 0,
|
||||
is_freedm = W_CheckNumForName("FREEDM") >= 0;
|
||||
|
||||
gamedescription = "Unknown";
|
||||
|
||||
if (logical_gamemission == doom)
|
||||
{
|
||||
// Doom 1. But which version?
|
||||
|
||||
if (is_freedoom)
|
||||
if (gamevariant == freedoom)
|
||||
{
|
||||
gamedescription = GetGameName("Freedoom: Phase 1");
|
||||
}
|
||||
|
|
@ -847,16 +841,13 @@ void D_SetGameDescription(void)
|
|||
{
|
||||
// Doom 2 of some kind. But which mission?
|
||||
|
||||
if (is_freedoom)
|
||||
if (gamevariant == freedm)
|
||||
{
|
||||
if (is_freedm)
|
||||
{
|
||||
gamedescription = GetGameName("FreeDM");
|
||||
}
|
||||
else
|
||||
{
|
||||
gamedescription = GetGameName("Freedoom: Phase 2");
|
||||
}
|
||||
gamedescription = GetGameName("FreeDM");
|
||||
}
|
||||
else if (gamevariant == freedoom)
|
||||
{
|
||||
gamedescription = GetGameName("Freedoom: Phase 2");
|
||||
}
|
||||
else if (logical_gamemission == doom2)
|
||||
{
|
||||
|
|
@ -1129,7 +1120,7 @@ static void D_Endoom(void)
|
|||
static void LoadIwadDeh(void)
|
||||
{
|
||||
// The Freedoom IWADs have DEHACKED lumps that must be loaded.
|
||||
if (W_CheckNumForName("FREEDOOM") >= 0)
|
||||
if (gamevariant == freedoom || gamevariant == freedm)
|
||||
{
|
||||
// Old versions of Freedoom (before 2014-09) did not have technically
|
||||
// valid DEHACKED lumps, so ignore errors and just continue if this
|
||||
|
|
@ -1440,6 +1431,24 @@ void D_DoomMain (void)
|
|||
LoadIwadDeh();
|
||||
}
|
||||
|
||||
// Check which IWAD variant we are using.
|
||||
|
||||
if (W_CheckNumForName("FREEDOOM") >= 0)
|
||||
{
|
||||
if (W_CheckNumForName("FREEDM") >= 0)
|
||||
{
|
||||
gamevariant = freedm;
|
||||
}
|
||||
else
|
||||
{
|
||||
gamevariant = freedoom;
|
||||
}
|
||||
}
|
||||
else if (W_CheckNumForName("DMENUPIC") >= 0)
|
||||
{
|
||||
gamevariant = bfgedition;
|
||||
}
|
||||
|
||||
// Doom 3: BFG Edition includes modified versions of the classic
|
||||
// IWADs which can be identified by an additional DMENUPIC lump.
|
||||
// Furthermore, the M_GDHIGH lumps have been modified in a way that
|
||||
|
|
@ -1448,10 +1457,9 @@ void D_DoomMain (void)
|
|||
// We specifically check for DMENUPIC here, before PWADs have been
|
||||
// loaded which could probably include a lump of that name.
|
||||
|
||||
if (W_CheckNumForName("dmenupic") >= 0)
|
||||
if (gamevariant == bfgedition)
|
||||
{
|
||||
printf("BFG Edition: Using workarounds as needed.\n");
|
||||
bfgedition = true;
|
||||
|
||||
// BFG Edition changes the names of the secret levels to
|
||||
// censor the Wolfenstein references. It also has an extra
|
||||
|
|
@ -1599,7 +1607,7 @@ void D_DoomMain (void)
|
|||
}
|
||||
|
||||
// Check for -file in shareware
|
||||
if (modifiedgame)
|
||||
if (modifiedgame && (gamevariant != freedoom))
|
||||
{
|
||||
// These are the lumps that will be checked in IWAD,
|
||||
// if any one is not present, execution will be aborted.
|
||||
|
|
@ -1638,12 +1646,12 @@ void D_DoomMain (void)
|
|||
// Freedoom's IWADs are Boom-compatible, which means they usually
|
||||
// don't work in Vanilla (though FreeDM is okay). Show a warning
|
||||
// message and give a link to the website.
|
||||
if (W_CheckNumForName("FREEDOOM") >= 0 && W_CheckNumForName("FREEDM") < 0)
|
||||
if (gamevariant == freedoom)
|
||||
{
|
||||
printf(" WARNING: You are playing using one of the Freedoom IWAD\n"
|
||||
" files, which might not work in this port. See this page\n"
|
||||
" for more information on how to play using Freedoom:\n"
|
||||
" http://www.chocolate-doom.org/wiki/index.php/Freedoom\n");
|
||||
" https://www.chocolate-doom.org/wiki/index.php/Freedoom\n");
|
||||
I_PrintDivider();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -25,6 +25,7 @@
|
|||
GameMode_t gamemode = indetermined;
|
||||
GameMission_t gamemission = doom;
|
||||
GameVersion_t gameversion = exe_final2;
|
||||
GameVariant_t gamevariant = vanilla;
|
||||
char *gamedescription;
|
||||
|
||||
// Set if homebrew PWAD stuff has been added.
|
||||
|
|
|
|||
|
|
@ -56,11 +56,9 @@ extern boolean devparm; // DEBUG: launched with -devparm
|
|||
extern GameMode_t gamemode;
|
||||
extern GameMission_t gamemission;
|
||||
extern GameVersion_t gameversion;
|
||||
extern GameVariant_t gamevariant;
|
||||
extern char *gamedescription;
|
||||
|
||||
// If true, we're using one of the mangled BFG edition IWADs.
|
||||
extern boolean bfgedition;
|
||||
|
||||
// Convenience macro.
|
||||
// 'gamemission' can be equal to pack_chex or pack_hacx, but these are
|
||||
// just modified versions of doom and doom2, and should be interpreted
|
||||
|
|
|
|||
|
|
@ -2177,7 +2177,8 @@ void G_DoPlayDemo (void)
|
|||
"\n"
|
||||
"*** You may need to upgrade your version "
|
||||
"of Doom to v1.9. ***\n"
|
||||
" See: http://doomworld.com/files/patches.shtml\n"
|
||||
" See: https://www.doomworld.com/classicdoom"
|
||||
"/info/patches.php\n"
|
||||
" This appears to be %s.";
|
||||
|
||||
I_Error(message, demoversion, G_VanillaVersionCode(),
|
||||
|
|
|
|||
|
|
@ -16,11 +16,6 @@
|
|||
// Random number LUT.
|
||||
//
|
||||
|
||||
|
||||
#include <time.h>
|
||||
|
||||
#include "m_random.h"
|
||||
|
||||
//
|
||||
// M_Random
|
||||
// Returns a 0-255 number
|
||||
|
|
@ -66,13 +61,5 @@ int M_Random (void)
|
|||
|
||||
void M_ClearRandom (void)
|
||||
{
|
||||
prndindex = 0;
|
||||
|
||||
// Seed the M_Random counter from the system time
|
||||
|
||||
rndindex = time(NULL) & 0xff;
|
||||
rndindex = prndindex = 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -44,12 +44,19 @@ void P_SpawnMapThing (mapthing_t* mthing);
|
|||
//
|
||||
int test;
|
||||
|
||||
// Use a heuristic approach to detect infinite state cycles: Count the number
|
||||
// of times the loop in P_SetMobjState() executes and exit with an error once
|
||||
// an arbitrary very large limit is reached.
|
||||
|
||||
#define MOBJ_CYCLE_LIMIT 1000000
|
||||
|
||||
boolean
|
||||
P_SetMobjState
|
||||
( mobj_t* mobj,
|
||||
statenum_t state )
|
||||
{
|
||||
state_t* st;
|
||||
int cycle_counter = 0;
|
||||
|
||||
do
|
||||
{
|
||||
|
|
@ -72,6 +79,11 @@ P_SetMobjState
|
|||
st->action.acp1(mobj);
|
||||
|
||||
state = st->nextstate;
|
||||
|
||||
if (cycle_counter++ > MOBJ_CYCLE_LIMIT)
|
||||
{
|
||||
I_Error("P_SetMobjState: Infinite state cycle detected!");
|
||||
}
|
||||
} while (!mobj->tics);
|
||||
|
||||
return true;
|
||||
|
|
|
|||
|
|
@ -35,7 +35,9 @@
|
|||
typedef struct
|
||||
{
|
||||
char *patch_names[MAX_INSTRUMENTS];
|
||||
int used[MAX_INSTRUMENTS];
|
||||
int mapping[MAX_INSTRUMENTS];
|
||||
unsigned int count;
|
||||
} gus_config_t;
|
||||
|
||||
char *gus_patch_path = "";
|
||||
|
|
@ -109,6 +111,7 @@ static int SplitLine(char *line, char **fields, unsigned int max_fields)
|
|||
static void ParseLine(gus_config_t *config, char *line)
|
||||
{
|
||||
char *fields[6];
|
||||
unsigned int i;
|
||||
unsigned int num_fields;
|
||||
unsigned int instr_id, mapped_id;
|
||||
|
||||
|
|
@ -120,11 +123,33 @@ static void ParseLine(gus_config_t *config, char *line)
|
|||
}
|
||||
|
||||
instr_id = atoi(fields[0]);
|
||||
|
||||
// Skip non GM percussions.
|
||||
if ((instr_id >= 128 && instr_id < 128 + 35) || instr_id > 128 + 81)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
mapped_id = atoi(fields[MappingIndex()]);
|
||||
|
||||
free(config->patch_names[instr_id]);
|
||||
config->patch_names[instr_id] = M_StringDuplicate(fields[5]);
|
||||
config->mapping[instr_id] = mapped_id;
|
||||
for (i = 0; i < config->count; i++)
|
||||
{
|
||||
if (config->used[i] == mapped_id)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (i == config->count)
|
||||
{
|
||||
// DMX uses wrong patch name (we should use name of 'mapped_id'
|
||||
// instrument, but DMX uses name of 'instr_id' instead).
|
||||
free(config->patch_names[i]);
|
||||
config->patch_names[i] = M_StringDuplicate(fields[5]);
|
||||
config->used[i] = mapped_id;
|
||||
config->count++;
|
||||
}
|
||||
config->mapping[instr_id] = i;
|
||||
}
|
||||
|
||||
static void ParseDMXConfig(char *dmxconf, gus_config_t *config)
|
||||
|
|
@ -137,8 +162,11 @@ static void ParseDMXConfig(char *dmxconf, gus_config_t *config)
|
|||
for (i = 0; i < MAX_INSTRUMENTS; ++i)
|
||||
{
|
||||
config->mapping[i] = -1;
|
||||
config->used[i] = -1;
|
||||
}
|
||||
|
||||
config->count = 0;
|
||||
|
||||
p = dmxconf;
|
||||
|
||||
for (;;)
|
||||
|
|
@ -225,8 +253,8 @@ static boolean WriteTimidityConfig(char *path, gus_config_t *config)
|
|||
}
|
||||
|
||||
fprintf(fstream, "\ndrumset 0\n\n");
|
||||
|
||||
for (i = 128 + 25; i < MAX_INSTRUMENTS; ++i)
|
||||
|
||||
for (i = 128 + 35; i <= 128 + 81; ++i)
|
||||
{
|
||||
if (config->mapping[i] >= 0 && config->mapping[i] < MAX_INSTRUMENTS
|
||||
&& config->patch_names[config->mapping[i]] != NULL)
|
||||
|
|
|
|||
|
|
@ -25,19 +25,19 @@
|
|||
</description>
|
||||
<screenshots>
|
||||
<screenshot type="default">
|
||||
<image>http://www.chocolate-doom.org/wiki/images/9/93/GNOME_Heretic_E5M4.png</image>
|
||||
<image>https://www.chocolate-doom.org/wiki/images/9/93/GNOME_Heretic_E5M4.png</image>
|
||||
<caption>Level E5M4: Courtyard</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>http://www.chocolate-doom.org/wiki/images/1/14/GNOME_Heretic_Shareware_DEMO3.png</image>
|
||||
<image>https://www.chocolate-doom.org/wiki/images/1/14/GNOME_Heretic_Shareware_DEMO3.png</image>
|
||||
<caption>Shareware Level E1M9: The Graveyard</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>http://www.chocolate-doom.org/wiki/images/3/34/GNOME_Heretic_E4M1.png</image>
|
||||
<image>https://www.chocolate-doom.org/wiki/images/3/34/GNOME_Heretic_E4M1.png</image>
|
||||
<caption>Level E4M1: Catafalque</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>http://www.chocolate-doom.org/wiki/images/4/42/GNOME_Heretic_Shareware_DEMO1.png</image>
|
||||
<image>https://www.chocolate-doom.org/wiki/images/4/42/GNOME_Heretic_Shareware_DEMO1.png</image>
|
||||
<caption>Shareware Level E1M3: The Gatehouse</caption>
|
||||
</screenshot>
|
||||
</screenshots>
|
||||
|
|
|
|||
|
|
@ -83,7 +83,11 @@ char *LevelNames[] = {
|
|||
"E5M6: COLONNADE",
|
||||
"E5M7: FOETID MANSE",
|
||||
"E5M8: FIELD OF JUDGEMENT",
|
||||
"E5M9: SKEIN OF D'SPARIL"
|
||||
"E5M9: SKEIN OF D'SPARIL",
|
||||
// EPISODE 6: unnamed
|
||||
"E6M1: ",
|
||||
"E6M2: ",
|
||||
"E6M3: ",
|
||||
};
|
||||
|
||||
static int cheating = 0;
|
||||
|
|
|
|||
|
|
@ -25,19 +25,19 @@
|
|||
</description>
|
||||
<screenshots>
|
||||
<screenshot type="default">
|
||||
<image>http://www.chocolate-doom.org/wiki/images/0/0f/GNOME_Hexen_Guardian_of_Fire.png</image>
|
||||
<image>https://www.chocolate-doom.org/wiki/images/0/0f/GNOME_Hexen_Guardian_of_Fire.png</image>
|
||||
<caption>Level "Guardian of Fire"</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>http://www.chocolate-doom.org/wiki/images/5/5c/GNOME_Hexen_Effluvium.png</image>
|
||||
<image>https://www.chocolate-doom.org/wiki/images/5/5c/GNOME_Hexen_Effluvium.png</image>
|
||||
<caption>Level "Effluvium"</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>http://www.chocolate-doom.org/wiki/images/c/c1/GNOME_Hexen_Dragon_Chapel.png</image>
|
||||
<image>https://www.chocolate-doom.org/wiki/images/c/c1/GNOME_Hexen_Dragon_Chapel.png</image>
|
||||
<caption>Level "Dragon Chapel"</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>http://www.chocolate-doom.org/wiki/images/a/a7/GNOME_Hexen_Darkmere.png</image>
|
||||
<image>https://www.chocolate-doom.org/wiki/images/a/a7/GNOME_Hexen_Darkmere.png</image>
|
||||
<caption>Level "Darkmere"</caption>
|
||||
</screenshot>
|
||||
</screenshots>
|
||||
|
|
|
|||
|
|
@ -290,7 +290,7 @@ void D_IdentifyVersion(void)
|
|||
"You are trying to use the Hexen v1.0 IWAD. This isn't\n"
|
||||
"supported by " PACKAGE_NAME ". Please upgrade to the v1.1\n"
|
||||
"IWAD file. See here for more information:\n"
|
||||
" http://www.doomworld.com/classicdoom/info/patches.php");
|
||||
" https://www.doomworld.com/classicdoom/info/patches.php");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -403,7 +403,7 @@ static int GetMIDIChannel(int mus_channel, MEMFILE *midioutput)
|
|||
|
||||
// First time using the channel, send an "all notes off"
|
||||
// event. This fixes "The D_DDTBLU disease" described here:
|
||||
// http://www.doomworld.com/vb/source-ports/66802-the
|
||||
// https://www.doomworld.com/vb/source-ports/66802-the
|
||||
WriteChangeController_Valueless(channel_map[mus_channel], 0x7b,
|
||||
midioutput);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,4 @@
|
|||
|
||||
gamesdir = $(prefix)/games
|
||||
|
||||
AM_CFLAGS = @SDL_CFLAGS@ \
|
||||
@SDLMIXER_CFLAGS@ \
|
||||
-I$(top_srcdir)/textscreen -I$(top_srcdir)/src
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@
|
|||
|
||||
#include "compatibility.h"
|
||||
|
||||
#define WINDOW_HELP_URL "http://www.chocolate-doom.org/setup-compat"
|
||||
#define WINDOW_HELP_URL "https://www.chocolate-doom.org/setup-compat"
|
||||
|
||||
int vanilla_savegame_limit = 1;
|
||||
int vanilla_demo_limit = 1;
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@
|
|||
#include "display.h"
|
||||
#include "config.h"
|
||||
|
||||
#define WINDOW_HELP_URL "http://www.chocolate-doom.org/setup-display"
|
||||
#define WINDOW_HELP_URL "https://www.chocolate-doom.org/setup-display"
|
||||
|
||||
extern void RestartTextscreen(void);
|
||||
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@
|
|||
#include "txt_joyaxis.h"
|
||||
#include "txt_joybinput.h"
|
||||
|
||||
#define WINDOW_HELP_URL "http://www.chocolate-doom.org/setup-gamepad"
|
||||
#define WINDOW_HELP_URL "https://www.chocolate-doom.org/setup-gamepad"
|
||||
|
||||
typedef struct
|
||||
{
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@
|
|||
#include "joystick.h"
|
||||
#include "keyboard.h"
|
||||
|
||||
#define WINDOW_HELP_URL "http://www.chocolate-doom.org/setup-keyboard"
|
||||
#define WINDOW_HELP_URL "https://www.chocolate-doom.org/setup-keyboard"
|
||||
|
||||
int vanilla_keyboard_mapping = 1;
|
||||
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@
|
|||
#include "multiplayer.h"
|
||||
#include "sound.h"
|
||||
|
||||
#define WINDOW_HELP_URL "http://www.chocolate-doom.org/setup"
|
||||
#define WINDOW_HELP_URL "https://www.chocolate-doom.org/setup"
|
||||
|
||||
static const int cheat_sequence[] =
|
||||
{
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@
|
|||
#include "mode.h"
|
||||
#include "mouse.h"
|
||||
|
||||
#define WINDOW_HELP_URL "http://www.chocolate-doom.org/setup-mouse"
|
||||
#define WINDOW_HELP_URL "https://www.chocolate-doom.org/setup-mouse"
|
||||
|
||||
static int usemouse = 1;
|
||||
|
||||
|
|
|
|||
|
|
@ -34,10 +34,10 @@
|
|||
#include "net_io.h"
|
||||
#include "net_query.h"
|
||||
|
||||
#define MULTI_START_HELP_URL "http://www.chocolate-doom.org/setup-multi-start"
|
||||
#define MULTI_JOIN_HELP_URL "http://www.chocolate-doom.org/setup-multi-join"
|
||||
#define MULTI_CONFIG_HELP_URL "http://www.chocolate-doom.org/setup-multi-config"
|
||||
#define LEVEL_WARP_HELP_URL "http://www.chocolate-doom.org/setup-level-warp"
|
||||
#define MULTI_START_HELP_URL "https://www.chocolate-doom.org/setup-multi-start"
|
||||
#define MULTI_JOIN_HELP_URL "https://www.chocolate-doom.org/setup-multi-join"
|
||||
#define MULTI_CONFIG_HELP_URL "https://www.chocolate-doom.org/setup-multi-config"
|
||||
#define LEVEL_WARP_HELP_URL "https://www.chocolate-doom.org/setup-level-warp"
|
||||
|
||||
#define NUM_WADS 10
|
||||
#define NUM_EXTRA_PARAMS 10
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@
|
|||
#include "mode.h"
|
||||
#include "sound.h"
|
||||
|
||||
#define WINDOW_HELP_URL "http://www.chocolate-doom.org/setup-sound"
|
||||
#define WINDOW_HELP_URL "https://www.chocolate-doom.org/setup-sound"
|
||||
|
||||
typedef enum
|
||||
{
|
||||
|
|
|
|||
|
|
@ -26,19 +26,19 @@
|
|||
</description>
|
||||
<screenshots>
|
||||
<screenshot type="default">
|
||||
<image>http://www.chocolate-doom.org/wiki/images/b/b2/GNOME_Strife_Rowan.png</image>
|
||||
<image>https://www.chocolate-doom.org/wiki/images/b/b2/GNOME_Strife_Rowan.png</image>
|
||||
<caption>Talking to Rowan</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>http://www.chocolate-doom.org/wiki/images/1/1f/GNOME_Strife_Town.png</image>
|
||||
<image>https://www.chocolate-doom.org/wiki/images/1/1f/GNOME_Strife_Town.png</image>
|
||||
<caption>The Town</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>http://www.chocolate-doom.org/wiki/images/8/8a/GNOME_Strife_Opening.png</image>
|
||||
<image>https://www.chocolate-doom.org/wiki/images/8/8a/GNOME_Strife_Opening.png</image>
|
||||
<caption>Opening Cinematic</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>http://www.chocolate-doom.org/wiki/images/c/c4/GNOME_Strife_Sewage.png</image>
|
||||
<image>https://www.chocolate-doom.org/wiki/images/c/c4/GNOME_Strife_Sewage.png</image>
|
||||
<caption>In the sewage</caption>
|
||||
</screenshot>
|
||||
</screenshots>
|
||||
|
|
|
|||
|
|
@ -320,11 +320,10 @@ void AM_restoreScaleAndLoc(void)
|
|||
//
|
||||
void AM_addMark(void)
|
||||
{
|
||||
markpoints[markpointnum].x = m_x + m_w/2;
|
||||
markpoints[markpointnum].y = m_y + m_h/2;
|
||||
markpoints[markpointnum].x = plr->mo->x; // 20160306 [STRIFE]: use player position
|
||||
markpoints[markpointnum].y = plr->mo->y;
|
||||
//markpointnum = (markpointnum + 1) % AM_NUMMARKPOINTS;
|
||||
++markpointnum; // haleyjd 20141101: [STRIFE] does not wrap around
|
||||
|
||||
}
|
||||
|
||||
//
|
||||
|
|
|
|||
|
|
@ -832,49 +832,48 @@ void D_IdentifyVersion(void)
|
|||
// Load voices.wad
|
||||
if(isregistered)
|
||||
{
|
||||
char *name = D_FindWADByName("voices.wad");
|
||||
char *name = NULL;
|
||||
int p;
|
||||
|
||||
if(!name) // not found?
|
||||
// If -iwad was used, check and see if voices.wad exists on the same
|
||||
// filepath.
|
||||
if((p = M_CheckParm("-iwad")) && p < myargc - 1)
|
||||
{
|
||||
int p;
|
||||
char *iwad = myargv[p + 1];
|
||||
size_t len = strlen(iwad) + 1;
|
||||
char *iwadpath = Z_Malloc(len, PU_STATIC, NULL);
|
||||
char *voiceswad;
|
||||
|
||||
// haleyjd STRIFE-FIXME: Temporary?
|
||||
// If -iwad was used, check and see if voices.wad exists on the
|
||||
// same filepath.
|
||||
if((p = M_CheckParm("-iwad")) && p < myargc - 1)
|
||||
{
|
||||
char *iwad = myargv[p + 1];
|
||||
size_t len = strlen(iwad) + 1;
|
||||
char *iwadpath = Z_Malloc(len, PU_STATIC, NULL);
|
||||
char *voiceswad;
|
||||
|
||||
// extract base path of IWAD parameter
|
||||
M_GetFilePath(iwad, iwadpath, len);
|
||||
|
||||
// concatenate with /voices.wad
|
||||
voiceswad = M_SafeFilePath(iwadpath, "voices.wad");
|
||||
Z_Free(iwadpath);
|
||||
// extract base path of IWAD parameter
|
||||
M_GetFilePath(iwad, iwadpath, len);
|
||||
|
||||
if(!M_FileExists(voiceswad))
|
||||
{
|
||||
disable_voices = 1;
|
||||
Z_Free(voiceswad);
|
||||
}
|
||||
else
|
||||
name = voiceswad; // STRIFE-FIXME: memory leak!!
|
||||
}
|
||||
// concatenate with /voices.wad
|
||||
voiceswad = M_SafeFilePath(iwadpath, "voices.wad");
|
||||
Z_Free(iwadpath);
|
||||
|
||||
if(!M_FileExists(voiceswad))
|
||||
Z_Free(voiceswad);
|
||||
else
|
||||
disable_voices = 1;
|
||||
name = voiceswad; // STRIFE-FIXME: memory leak!!
|
||||
}
|
||||
|
||||
if(disable_voices) // voices disabled?
|
||||
// not found? try global search paths
|
||||
if(!name)
|
||||
name = D_FindWADByName("voices.wad");
|
||||
|
||||
// still not found? too bad.
|
||||
if(!name)
|
||||
{
|
||||
disable_voices = 1;
|
||||
|
||||
if(devparm)
|
||||
printf("Voices disabled\n");
|
||||
return;
|
||||
}
|
||||
|
||||
D_AddFile(name);
|
||||
else
|
||||
{
|
||||
// add it.
|
||||
D_AddFile(name);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2329,7 +2329,8 @@ void G_DoPlayDemo (void)
|
|||
"\n"
|
||||
"*** You may need to upgrade your version "
|
||||
"of Strife to v1.1 or later. ***\n"
|
||||
" See: http://doomworld.com/files/patches.shtml\n"
|
||||
" See: https://www.doomworld.com/classicdoom"
|
||||
"/info/patches.php\n"
|
||||
" This appears to be %s.";
|
||||
|
||||
I_Error(message, demoversion, STRIFE_VERSION,
|
||||
|
|
|
|||
|
|
@ -1240,7 +1240,7 @@ void A_ReaverAttack(mobj_t* actor)
|
|||
{
|
||||
int t = P_Random();
|
||||
angle_t shootangle = actor->angle + ((t - P_Random()) << 20);
|
||||
int damage = (P_Random() & 7) + 1;
|
||||
int damage = 3*((P_Random() & 7) + 1);
|
||||
|
||||
P_LineAttack(actor, shootangle, 2048*FRACUNIT, slope, damage);
|
||||
++i;
|
||||
|
|
@ -2211,7 +2211,7 @@ void A_ProgrammerMelee(mobj_t* actor)
|
|||
A_FaceTarget(actor);
|
||||
if(P_CheckMeleeRange(actor))
|
||||
{
|
||||
int damage = 8 * (P_Random() % 10 + 1);
|
||||
int damage = 6 * (P_Random() % 10 + 1);
|
||||
|
||||
S_StartSound(actor, sfx_mtalht);
|
||||
P_DamageMobj(actor->target, actor, actor, damage);
|
||||
|
|
@ -3177,7 +3177,10 @@ void A_TeleportBeacon(mobj_t* actor)
|
|||
// beacon no longer special
|
||||
actor->flags &= ~MF_SPECIAL;
|
||||
|
||||
// set color and flags
|
||||
// 20160306: set rebel threshold
|
||||
mobj->threshold = 100;
|
||||
|
||||
// set rebel color and flags
|
||||
mobj->flags |= ((actor->miscdata << MF_TRANSSHIFT) | MF_NODIALOG);
|
||||
mobj->target = NULL;
|
||||
|
||||
|
|
|
|||
|
|
@ -488,13 +488,13 @@ void P_TouchSpecialThing(mobj_t* special, mobj_t* toucher)
|
|||
break;
|
||||
|
||||
// missile
|
||||
case SPR_ROKT:
|
||||
case SPR_MSSL:
|
||||
if(!P_GiveAmmo(player, am_missiles, 1))
|
||||
return;
|
||||
break;
|
||||
|
||||
// box of missiles
|
||||
case SPR_MSSL:
|
||||
case SPR_ROKT:
|
||||
if(!P_GiveAmmo(player, am_missiles, 5))
|
||||
return;
|
||||
break;
|
||||
|
|
@ -852,9 +852,9 @@ void P_KillMobj(mobj_t* source, mobj_t* target)
|
|||
}
|
||||
}
|
||||
|
||||
target->flags &= ~MF_SOLID;
|
||||
//target->flags &= ~MF_SOLID;
|
||||
target->player->playerstate = PST_DEAD;
|
||||
target->player->mo->momz = 5*FRACUNIT; // [STRIFE]: small hop!
|
||||
target->player->mo->momz += 5*FRACUNIT; // [STRIFE]: small hop!
|
||||
P_DropWeapon(target->player);
|
||||
|
||||
if(target->player == &players[consoleplayer]
|
||||
|
|
@ -1352,7 +1352,7 @@ void P_DamageMobj(mobj_t* target, mobj_t* inflictor, mobj_t* source, int damage)
|
|||
if(target->player)
|
||||
{
|
||||
target->player->cheats |= CF_ONFIRE;
|
||||
target->player->powers[pw_communicator] = false;
|
||||
target->player->powers[pw_invisibility] = false;
|
||||
target->player->readyweapon = 0;
|
||||
P_SetPsprite(target->player, ps_weapon, S_WAVE_00); // 02
|
||||
P_SetPsprite(target->player, ps_flash, S_NULL);
|
||||
|
|
|
|||
|
|
@ -854,7 +854,7 @@ void A_FireSigil(player_t* player, pspdef_t* pspr)
|
|||
mo->health = -1;
|
||||
if(!linetarget)
|
||||
{
|
||||
an = player->pitch >> ANGLETOFINESHIFT;
|
||||
an = (unsigned int)player->pitch >> ANGLETOFINESHIFT;
|
||||
mo->momz += FixedMul(finesine[an], mo->info->speed);
|
||||
}
|
||||
break;
|
||||
|
|
|
|||
Loading…
Reference in a new issue