Dicembre 2013
-
Generale
Lunatic/m32: include the Lua bytecode into the binary, exit if setup failed.
-
add 'engine' module, currently allowing to create custom shade tables.
Mostra dettagli
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!
-
Generale
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.
-
Generale
In the no-netcode build, don't expose four internal engine functions.
Mostra dettagli
Also don't compile three multiplayer related OSD commands there.
-
Generale
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.
Mostra dettagli
BUILD_LUNATIC.
-
Generale
Remaining sanitizing of .yvel usage plus minor cleanup.
-
Generale
Clean up legacy ROR code and introduce LEGACY_ROR define in game.h.
Mostra dettagli
Also, bound-check two .yvel meant as sprite indices in actors.c.
-
Generale
Make a couple of player functions take player indices instead of DukePlayer_t *.
-
Generale
Guard retrieval of player index (.yvel) from APLAYER sprite.
Mostra dettagli
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.
-
Generale
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.
-
Generale
engine.c: clean up code related to ART loading. BUILD_LUNATIC.
-
Generale
Don't consider W_FORCEFIELD+2 (surgery instruments) a forcefield picnum.
-
Generale
Clean up code related to forcefield player damage etc.
-
Generale
Rename 'camsprite' to 'g_curViewscreen', other related cleanup.
-
Generale
Add helper utility lunatic/util/cmpart.lua.
-
swap con.insetsprite's 4th and 5th positional arguments.
-
expose player[].gotweapon, document it and *_weapon() methods.
-
Generale
Consolidate P_AddWeaponNoSwitch into an additional P_AddWeapon argument.
-
Generale
Minor stylistic tweaks of code related to weapon switching.
-
Generale
premap.c: stylistic cleanup in map loading code.
-
Generale
Factor some code in config.c into OSD_WriteAliases(), move symbol_t to osd.c.
-
Generale
Don't autoexec <mapname>.cfg files for clipshape maps.
-
don't allow starting demo recording, since gamevar diffing is NYI.
-
Generale
osd.c: patch up a possible oob access of osdtext[].
-
error on invalid static data read like 'sprite.picnum'.
-
Generale
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.
Mostra dettagli
Also add test/damagehplane.lua with these demonstrations: - custom breakable ceilings - breakable TROR glass
-
Generale
Generalize Sect_DamageCeiling to Sect_DamageCeilingOrFloor, use appropriately.
Mostra dettagli
- 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.
-
Generale
Minor no-functionality-changing tweaks.
Mostra dettagli
- 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
-
Generale
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.
-
Generale
Rewrite and unify the handling of the scrollwheel between layers, fixing it in the editor's 2D mode and tile selector under SDL.
Mostra dettagli
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.]
-
Generale
Various stylistic cleanup.
Mostra dettagli
- 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.
-
Generale
a.m32: don't clamp SE50 extra (=horiz) to [-500 500] with KP8/KP5.
-
fix parsing negated labels, getnumber* with neg. 'max'.
Mostra dettagli
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.
Mostra dettagli
And issue warnings whenever the assignment would fail (error) at game time.
-
add target 'print-compiler-options'.
Mostra dettagli
May come in handy at times. BUILD_LUNATIC.
-
Generale
Really fix the Pause key on Windows/SDL2.
Mostra dettagli
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.
-
Generale
Do not consider system gamearrays for updating from demos.
Mostra dettagli
This generally fixes demo playback. Before, tilesizx[]/tilesizy[] were written into twice as many bytes as needed. Now, don't do that at all.
-
Generale
Fix mouse buttons 4 and 5 on SDL2/Windows.
-
in fs.listpath() use FIND_NOCURDIR. Also document that function.
-
add FIND_NOCURDIR option to klistpath().