January 2014
December 2013
-
General
Lunatic/m32: include the Lua bytecode into the binary, exit if setup failed.
-
add 'engine' module, currently allowing to create custom shade tables.
Show details
Available in the game and editor. Provide test/shadexfog.lua, containing a function to creating a set of 32 shade tables corresponding to different shades of the same fog palookup table, together with some tests and convenience functions. Also, - Add gv.LUNATIC_CLIENT{,_EDUKE32,_MAPSTER32} - Add LUNATIC_FIRST_TIME in the global env for the game - defs_m32.lua: add reload() convenience function - Failed attempt at recreating the base shade table. It is NOT a linear ramp of the base palette colors to (0,0,0). That is, it's not created by build/util/transpal.exe!
-
General
build.lua: add a flag toggling multiplication of the color components by 4.
-
fix setup under Mapster32, remove a few obsolete lines in defs_common.lua.
-
General
In the no-netcode build, don't expose four internal engine functions.
Show details
Also don't compile three multiplayer related OSD commands there.
-
General
defs.c: in '2dcol' DEF token, clamp R, G, B values to [0 .. 63].
-
run EVENT_INIT after initial Lua state creation.
-
allow access to sprite[].yvel through set_yvel() member, document.
Show details
BUILD_LUNATIC.
-
General
Remaining sanitizing of .yvel usage plus minor cleanup.
-
General
Clean up legacy ROR code and introduce LEGACY_ROR define in game.h.
Show details
Also, bound-check two .yvel meant as sprite indices in actors.c.
-
General
Make a couple of player functions take player indices instead of DukePlayer_t *.
-
General
Guard retrieval of player index (.yvel) from APLAYER sprite.
Show details
It is unacceptable that yvel is on one hand modifiable without restriction from scripting, but can be used as an array index without prior bound check in the C code. Because that member has an overloaded meaning and is also used for innocuous purposes such as the green color intensity of an SE light, it's infeasible to restrict access from scripting. Consequently, we must add bound checks on the C side. This is the first part of the effort to make .yvel safe, adding two functions P_Get() and P_GetP(). There are a couple of other uses as some kind of index.
-
General
Reserve 16 tiles from the end of MAXTILES, don't allow as user tiles from ART/DEF.
-
add example toggling forcefield wall to test.lua.
-
General
engine.c: clean up code related to ART loading. BUILD_LUNATIC.
-
General
Don't consider W_FORCEFIELD+2 (surgery instruments) a forcefield picnum.
-
General
Clean up code related to forcefield player damage etc.
-
General
Rename 'camsprite' to 'g_curViewscreen', other related cleanup.
-
General
Add helper utility lunatic/util/cmpart.lua.
-
swap con.insetsprite's 4th and 5th positional arguments.
-
expose player[].gotweapon, document it and *_weapon() methods.
-
General
Consolidate P_AddWeaponNoSwitch into an additional P_AddWeapon argument.
-
General
Minor stylistic tweaks of code related to weapon switching.
-
General
premap.c: stylistic cleanup in map loading code.
-
General
Factor some code in config.c into OSD_WriteAliases(), move symbol_t to osd.c.
-
General
Don't autoexec <mapname>.cfg files for clipshape maps.
-
don't allow starting demo recording, since gamevar diffing is NYI.
-
General
osd.c: patch up a possible oob access of osdtext[].
-
error on invalid static data read like 'sprite.picnum'.
-
General
Pass RETURN to EVENT_DAMAGEHPLANE in the 'dist' arg to allow chained callbacks.
-
add ceiling-or-floor method set_picnum(). BUILD_LUNATIC.
-
Add EVENT_DAMAGEHPLANE and document it in Lunatic doc Appendix B.
Show details
Also add test/damagehplane.lua with these demonstrations: - custom breakable ceilings - breakable TROR glass
-
General
Generalize Sect_DamageCeiling to Sect_DamageCeilingOrFloor, use appropriately.
Show details
- in the function itself: for floor, currently, do nothing (but this commit is in preparation of the next one, again) - In Proj_MaybeDamageCF(), Proj_MaybeDamageCF2() and the A_RadiusDamage() use if the function, generalize to floors, but with the special case that parallaxed floors keep blocking projectiles, as before (in constrast to parallaxed ceilings). However, Sect_DamageCeilingOrFloor() is only called for non-parallaxed ceilings *and* floors.
-
General
Minor no-functionality-changing tweaks.
Show details
- factor out: G_WallSpriteDist() - factor out: Proj_MaybeDamageCF() and Proj_MaybeDamageCF2() in preparation for the next commit - Make PROJ_DECAYVELOCITY macro take an arg for readability's sake
-
General
sector.c: in ST9 handling code, prevent oob for improperly constructed doors.
-
fix a couple of spelling mistakes in the doc, found using Emacs ispell.
-
expose "con.shoot(tilenum, i [, zvel])". Document and add example.
-
General
Rewrite and unify the handling of the scrollwheel between layers, fixing it in the editor's 2D mode and tile selector under SDL.
Show details
The scrollwheel is unique among PC input because it has no innate "hold length". Previously, the layers gave the mousewheel a fake hold length to allow the not-necessarily-synchronous game/editor code to pick up the input before the layers marked it as "no longer pressed". This passed under Windows, but it didn't slide under SDL. Besides the two problems listed above, it also potentially limited the rate of weapon selection, where scrolling too fast would not register every clicks. [Unrelatedly, this is still the case when you scroll faster than the game's own tickrate, but addressing that would require rewriting input handling to go through a list of "events" for each tic instead of looking at overall pressed/unpressed states.]
-
General
Various stylistic cleanup.
Show details
- Move ARRAY_SIZE() macro to compat.h, add another one ARRAY_SSIZE() - In A_RadiusDamage(): note maybe-unaligned access issue, prevent unlikely oob - sector.c: use SPRITES_OF* macros where appropriate
-
add "for s, what in sectorsofbunch(bunchnum, gv.BOTH_CF)" iterator.
-
General
a.m32: don't clamp SE50 extra (=horiz) to [-500 500] with KP8/KP5.
-
fix parsing negated labels, getnumber* with neg. 'max'.
Show details
Exposed by this snippet from a.m32: getnumber256 .owner "OWNER (projection picnum): " -MAXTILES Now, Alt+KP2 works as expected in 3D mode.
-
statically check some member assignments with literal numbers.
Show details
And issue warnings whenever the assignment would fail (error) at game time.
-
add target 'print-compiler-options'.
Show details
May come in handy at times. BUILD_LUNATIC.
-
General
Really fix the Pause key on Windows/SDL2.
Show details
This requires enabling the same workaround as for Linux. Maybe it's not system-dependent at all.
-
invalidate a wall when its sector's visibility has changed.