Build 4873
SVN-
General
engine.c: fix clipmove() against floor-aligned sprites.
Show details
Introduced in r3207. Oops.
-
General
engine.c: prevent an oob read of spriteext[] in drawsprite_classic().
SVN handles and Git names are merged into one person.
engine.c: fix clipmove() against floor-aligned sprites.
Introduced in r3207. Oops.
engine.c: prevent an oob read of spriteext[] in drawsprite_classic().
sounds.c: don't crash S_PlayMusic() if passed null pointer for 'fn'.
This may happen if no title/end music is defined from CON. Thanks to Zaxtor for the bug report.
Amend r4862 so that touch devices, which do not display the crosshair as a cursor, are not completely prevented from using touch input by the lack of a crosshair tile.
Fix the Screen Size slider so that it works properly after the screen size has been modified in-game with [-]/[+].
Fix selecting "None" for Anisotropy.
Fix opening a MenuEntryOptionList when the option's value is "Custom".
Convert MenuRange*_t's "displaytype" field to "flags", add a flag to enforce clamping to the defined intervals, and apply this flag to the Screen Size slider.
Mouse controls now respect MenuEntry_t's disabled flag.
actors.c: replace hard-coded list with missing check for SFLAG_NODAMAGEPUSH.
In A_RadiusDamage(). The code snippet that is disabled for such actors increases the damaged actor's .xvel by (4 times the) damage amount and is responsible for the strange effect of enemies becoming faster TOWARDS the player on being hit with an RPG frontally. Thanks to Fox for a keen eye.
disable mouse pointer if CROSSHAIR is void. DONT_BUILD.
In G_HandleMirror(), consult g_mirrorCount instead of gotpic[] w/ MIRROR.
DONT_BUILD.
Lunatic translator: add stand-alone option -fnames, generating names.h file.
Fix playing end-of-episode ANMs.
If you save over an autonamed savegame and change the name, don't overwrite your edit with another autofill.
Enumify the "status" parameter of M_MenuText into MenuTextFlags_t.
Implement mouse/touch/pointer controls for all widgets.
Replace the "disabled" member of MenuEntry_t with "flags" so that the other 31 bits can be utilized.
Disable normal left-click/touch menu functionality when the mouse is active.
Add the necessary plumbing to sdlayer to detect mousedown, mouseup, and dragging.
fix 'writearraytofile' for 64-bit platforms.
Tweak the behavior of viewscreens to what is more logical IMO.
- At a given time, at most one viewscreen may display TILE_VIEWSCR, namely that one which is g_curViewscreen - sync kinds of distance to compare against VIEWSCREEN_ACTIVE_DISTANCE (was Manhattan vs. dist(), now both the latter) - fix resetting to VIEWSCREEN tile when player is greater from it than that distance. When the player is closer to it again, it is *not* reset to TILE_VIEWSCR. - more sync'd g_curViewscreen and sprite[i].yvel (for 'i' being the viewscreen sprite) Note: in a multiplayer context, this needs to be thought about once more.
engine.c: clamp all indices for distrecip[] access, as more OOBs were observed.
allow passing more than one flag to the 'spriteflags' directive.
These will be bitwise-OR'd.
gamedef.c: factor out some dup'd code into C_BitOrNextValue(), C_FinishBitOr().
include wall[].ypanning in wall invalidation logic.
Fixes bug reported here: http://forums.duke4.net/topic/1348-mapster32-problems-and-bugs/page__view__findpost__p__213759
menus.c: Reset next-viewscreen-redraw counter from M_CloseMenu().
Minor cleanup around security cameras / viewscreens. DONT_BUILD.
The only semantic change is that an out-of-sync instance of a distance to check (viewscreen sprite <-> player sprite) is changed in actors.c:G_MoveStandables(), from 2048 (as in Duke3D 1.5) to 8192, now represented by the define VIEWSCREEN_ACTIVE_DISTANCE. I have not yet observed any change in behavior regarding this change (but there ought to be one). Also, in DNCOORDS display, print 'totalclock' count, too.
don't draw masked walls with void tile. DONT_BUILD.
This prevents displaying W_FORCEFIELD+1 masks (as e.g. in front of viewscreens) completely black with ART mapping. The old behavior, which is inconsistent with classic, is kept for one-sided masked walls, though.
sync MAXJOYAXES, add lunatic/test/sprite_addtv.con. DONT_BUILD.
Display all hat directions in the joystick buttons menu instead of just up.
Bump MAXJOYAXES to 9 to avoid menu corruption, and fix _functio.h, CONFIG_FunctionNameToNum, CONFIG_AnalogNameToNum, so that this does not crash.
Fix the MAXJOYBUTTONS discrepancy between _control.h and gamedefs.h.
Add non-interactive cases to wm_msgbox and wm_ynbox.
Output and package the binary as .dol instead of .elf.
Polish up the video menu a bit.
Fix "bright red" player color.
Add a custom exception handler that saves the crash information to the log and directs the user to submit it to us. DONT_BUILD.
Add a console to display startup messages to the screen instead of showing the user a black screen while the game initializes. DONT_BUILD.
Work around a performance regression caused by r4080. DONT_BUILD.
expose more members, properly handle setting ud.screen_size.
BUILD_LUNATIC.
fix handling of 'remappal' attribute for 'makepalookup'.
Pull setting g_noFloorPal[] further down, into makepalookup().
Now passed as last arg 'noFloorPal' to makepalookup(). Used as follows: - from loadlookups(): *false*, i.e. do take over floor pal. - from generatefogpals() [default fog pals] and fillemptylookups(): *true*, i.e. don't take over floor pal - from DEF 'fogpal': true - from DEF 'makepalookup': take over flag from pal from which we are remapping, or set to true if remapping from pal 0 - (CROSSHAIR_PAL: true) This should make the issue reported in http://forums.duke4.net/topic/775-eduke32-20-and-polymer/page__view__findpost__p__197583 resolve in a natural manner.
Move g_noFloorPal[] to the engine side and adapt other stuff accordingly.
- 'nofloorpalrange' DEF token: now handled for both game and editor (for the latter, it's effective only for "shade preview" mode, [']+[X]). - in generatefogpals(), assign g_noFloorPal[] = 1 for every generated (default) fog pal; get rid of its return value / g_firstFogPal
engine.c: prevent an oob access of uwall[] in ceilspritescan().
voxmodel.c: fix Polymost rendering of voxels.
This reverts/corrects two semantic changes of r4639 as far as what is now voxmodel.c (formerly part of mdsprite.c) is concerned. One correction ends up having no effect (m->bscale is always 1.f for voxel models, as far as I can see), but is the proper rewrite. Also, in osdcmds.c:registerosdcommands(), tweak two help strings.
fix tilesizx[]/tilesizy[] access. Can also 'copy' from them.
M32Script cleanup. Fixes at least one non-minor and one minor bug.
engine.c: minor stylistic changes. DONT_BUILD.
Since we're targeting C99/C++ now, we can finally declare variables as close to their use as possible.
fix actor[] and player[] indexing after LuaJIT bugfix 66515a054c0826ce.
implement 'qstrncat' command.
Add dummy command line parameters to allow us to serve as a drop-in replacement for the NAM Steam release's dosbox.exe
Detect installation paths of 3DR's Duke Nukem 3D package, the 3DR Anthology, and the NAM Steam release.
Remove the structure fields in grpscan.c that blocked my code for allowing NAM, NAPALM, and WWII GI to fall back to GAME.CON.
Remove the blackout when starting a new game on episode 4.
Fix USE_OPENGL=0 build error in r4779.
Fix EVENT_ANIMATESPRITES.
Fix warnings with VS2013 update 4. DONT_BUILD.
Open the load and save menus with the last used slot highlighted. DONT_BUILD.
Fix names of savegames. DONT_BUILD.
Fix displaying a savegame preview shot when in OpenGL and/or when the selected slot is empty. DONT_BUILD.
Fix the crash in the ASM relating to the dynamic allocation of ylookup.
Make sure the mouse is captured when the main menu transitions into MODE_GAME. DONT_BUILD.
Fix mousewheel under SDL 1.2. DONT_BUILD.
Restore SDL 1.2 on Windows to a working state. DONT_BUILD.
Fix POLYMER=0 GTK C++ build. DONT_BUILD.
astub.c: fix warnings with CPLUSPLUS=1 related to forgotten TrackerCast().
Fix taking over floor pal in the unlikely event that no fog pals are defined.
This DOES NOT fix the more complex issue discussed at the forums.
on 'clean' target, unconditionally rm -f game Lunatic objects.
The 'clean' and 'veryclean' targets are usually run without environment options. It is preferable if they clean out all object files that are possible with any.
add actor.move() static function and documentation stub.
For usermaps, save and restore currently playing music index with savegames.
The volume and level number for the music are stored in the last two bytes of the board file name array. No version bump is required.
Fix USE_OPENGL=0 build.
implement 'qsubstr' command. Add source/lunatic/test/qsubstr.con.
In C-CON's qsubstr, error if <start> is not in [0 .. MAXQUOTELEN-1] or <length> is negative.
Fix crash using INTERNAL DEFAULTS after CON error when CON modules were given.
ignore internal flag in gamevar redef check; allow "Pals" member.
demote wall check "corruptions" introduced in r4569 to level 2.
The winding of a loop -- with clockdir() -- is determined by examining the two line segments spanned between the points following a leftmost point of the loop. If the loop contains a leftmost point that belongs to the "right" side (as can happen with sliding door constructions), there's a chance that an outer loop is misclassified.
Amend r4378 to hopefully make "stuck in water" fix work properly.
NOTE: lizmen may walk on water. I don't yet know why.