Build 3656
SVN-
fix stuff after last commits; translator: clean up -f parsing code.
Mostra dettagli
Also, implement 'cmenu' in LunaCON, make 'definequote' also allowed as inner command.
Nickname SVN e nomi Git sono unificati per persona.
fix stuff after last commits; translator: clean up -f parsing code.
Also, implement 'cmenu' in LunaCON, make 'definequote' also allowed as inner command.
Fix changing the max refresh rate in EDuke32 (it was already working correctly in Mapster32).
Add support for the versions of Duke it out in D.C., Duke Caribbean: Life's a Beach, and Duke: Nuclear Winter packaged with Duke Nukem 3D: Megaton Edition on Steam. This allows them to be launched directly from the startup window and also adds an "-addon" command line parameter that should allow the duke3d.exe included with Megaton Edition to be replaced with a copy of EDuke32.
replace DukePlayer_t set-member methods with metatable magic.
So that members needing it are checked when they're assigned to using the usual syntax. What kind of check to perform (sector, player, ... x whether negative values are allowed) is written in a declarative fashion inside the C declaration. Also, make Lunatic's MAXQUOTES be C's OBITQUOTEINDEX and bound-check an access of sprite[p->wackedbyplayer] in the C code.
get rid of some now unneeded set-member methods, add others.
a.m32: Don't reposition head light if in void space, fixing crash.
access to show2dsector[], fix some permit-negative bound checks.
Remove useless code setting show2dwall[] or show2dsprite[], as they're unused.
a.m32: Implement a Polymer "head light" emanating from your position in 3D mode.
Toggled with Ctrl+Shift+[KP-]. Variable 'headlight_range' controls its range. For the implementation, a new event EVENT_PREDRAW3DSCREEN was added.
Factor out displaying episode ending cutscenes into G_BonusCutscenes().
Also, - retire IFWITHIN() macro, preferring expanding it - fix _endofgame() in control.lua
gen. cleaner code, make actor[].movflag internal, update listglobals.sh
Define a macro LUNATIC_EXTERN that expands to 'static' in non-Lunatic builds.
Take over and use static assertion macro found in LuaJIT sources.
Support NVIDIA's adaptive vsync, you can enable it by setting r_swapinterval -1 in the console or by using the new third setting for the vsync menu option.
Prevent loading anything except the GRP from the Steam or GOG Duke3D install directories. Loading DUKE.RTS from those paths will be resolved later.
Fix savegamevar/readgamevar breakage from r3579
Fix handling of SE31 pointing upward. A bug was introduced in r2607.
Fix ART offset and face sprite flipping interaction.
Fix ART offset and sprite flipping interaction.
Fix activated MUSICANDSFX wrongly being looped, introduced in r3631.
Fix playing ambient sounds at max volume for split sec on entering their range.
This is done by always calling FX_PlayAuto3D() to play such sounds. It now additionally takes a third argument 'loophow', permissible values being FX_ONESHOT and FX_LOOP.
In 'tip' display code, extrapolate four more values of the y coord table.
Also, for tip_incs values greater or equal than the number of elements in this table, return early reporting that the hand has been drawn, so that the otherwise selected weapon is not drawn.
chaining of actor callback functions.
For events and actors, a flag can be now passed whether to chain the new function at the beginning or end of an already existing one, or to replace it entirely. Also, for the translator, add option -fno-error-nostate, disabled by default.
Add rudimentary sanity checks when playing ANM files.
- Don't attempt to play an ANM file if it is empty (warn) or too short (error). - If failing to read IVF file header or initializing VPX codec, don't play ANM. - Return early from gltexapplyprops() if not in GL modes.
Add some test CON files to source/lunatic/test.
The code is mostly by other people, who are credited in the CON files.
Return early from A_IncurDamage() if actor[].picnum ("htpicnum" in CON) is < 0.
With this change, it is impossible for negative values to be used as array indices inside this function, and I believe that it is also impossible that they escape to somewhere they might be used as such. For Lunatic, allow setting actor[].picnum to negative values and in the translator, add (commented out) code to warn whenever it is set to a constant negative value. Also, fix a _sound call in _addphealth in control.lua.
make the crash log file named eduke32_or_mapster32.crash.log.
Don't output an empty SelectedGRP entry into the cfg, fixing bare EDuke32 build.
factor out 3x computing "alwaysshowgray", but don't change anything.
Tweak the code that adds the Steam and GOG Duke3D paths a little. This changes things so that we add the DOSBox version provided on Steam as a source for the GRP instead of their main content dir, bypassing loading their screwed up duke3d.def.
Load def modules even if no root def exists. Print a message to the log for each def module that is loaded.
Fix a multi-line comment in cache1d.c.
Correct the capitalization of NAPALM.
Fix loading of a user's previous "SelectedGRP" file.
Don't continue animating Ripper, Shrinker, Expander and Freezethrower when the game is paused or the menu is up.
Read GOG.com and Steam Duke3D install paths from the registry instead of hard-coding the default paths.
Fix shrunk player fist animation speed as requested on the forums. I didn't test this against the DOS version but it seems about right according to my memory. Let me know if it's still wrong and you care that much about it.
MSVC build fixes. The change to Makefile.deps is slightly questionable but it's not really an issue.
Fix a case in minitext_() overlooked by r3608.
(This should fix the inventory item box in the statusbar.)
Properly implement rotatesprite16 by adding ROTATESPRITE_FULL16 to orientation.
Add "rotatespritea" to CON and M32script.
I hope I didn't bruise Lunatic too much.
Implement alpha into rotatesprite (rotatesprite_) on the engine side.
Add orientation bit 2048, enumerated as ROTATESPRITE_FULL16, which is a courtesy provided by the engine for the purpose of the game to internally force use of full 32-bit coordinates. With this bit set, all CON screen drawing commands can use rotatesprite16-like coordinates.
While the functionality was already internally in place for gametext as one of two hacks using ROTATESPRITE_MAX (the other still used by minitext_() to align with the statusbar) we must codify a bit in the engine for safe external use. (Otherwise, ROTATESPRITE_MAX could/would theoretically increase and leave modders high and dry.) (Dev note: In G_DrawTXDigiNumZ(), ROTATESPRITE_MAX was used to bitshift the value used to calculate digit spacing for no reason I can ascertain other than to introduce rounding errors into the zoom/textscale calculations. It was never used anywhere, so I removed it.) Bonus: The scaling code for digitalnumberz and gametextz has been modified so that the spacing is no longer affected by rounding errors. Try animating the zoom value and compare how the text used to jump but now does not.
Hackily implement spriteext.alpha into Classic by internally attaching 33% and 66% to the cstat bits.
Relax CAPITALIZATION restrictions.
fix assertion failure with overlong walls in rintersect().
Lunatic translator: proper Lua->CON line mapping for actor/event/etc. headers.
return early with 0 from cansee() if either sector is >= MAXSECTORS.
Previously, only the <0 condition was checked. However, the passed sectnums could be >= MAXSECTORS (at least in C-CON), for example when issuing 'canseespr' on a sprite not in the game world.
readarrayfromfile: fail silently if file can't be opened.