Build 3913
SVN-
General
Fix loading maps in Mapster32, introduced in r3911.
Show details
Also, get rid of the strange filename[len]=255 hack in loadboard() and make its file name arg const char* at last.
SVN handles and Git names are merged into one person.
Fix loading maps in Mapster32, introduced in r3911.
Also, get rid of the strange filename[len]=255 hack in loadboard() and make its file name arg const char* at last.
New command 'screensound', unconditionally playing a session-wide sound.
Mapster32/Lunatic: ask when a <V10 map would be overwritten with a map-text one.
Also, clean up the saving/loading logic a bit: - On load failure, display message with purple color. - Take over the current file name ('boardfilename') only on success. - Check SaveBoard() return values in various places.
merge updatesector and ~breadth, making the former accept a flag.
retire 'geom' module, putting vector types into xmath.
allow serialization of tables in more general cases.
consider a point inside() a sector in all border cases (literally).
In other words, for a test rectangular sector, a sprite would be inside the sector in on all 4 edges and all 4 corners. Previously, it would have been the lower right portion only (*excluding* LL and UR corners), which led to map editing issues.
engine.c: apply "usual readability transformations" on inside() and comment it.
The main thing to note is the "half-open" nature of the x/y range checks.
Substitute some symbolic SE_x_* labels for literal SE numbers that were missed.
document vector types, add forgotten warning icon.
various minor tweaks and fixes.
- Pass original module name (dot=dirsep) to module via our require() - geom.lua: fix some operations using the vector type constructor - geom.lua: provide constructor for ivec3, useable like vec3
player method fadecol(), an improved palfrom.
Also, an external 'minitext' with optional shade and pal. args and documentation for ps:padecol().
Don't register "savestate" and "restorestate" OSD commands even in debug builds.
They don't get registered on Windows for some reason, and mapstate debugging is best carried out using scripting code, anyway.
major overhaul of gamevar serialization for savegames.
- Handle local gamevars. - Restore gamevars from require('end_gamevars').
Lunatic 'geom': retire tovec2 and tovec3, make vec2 and vec3 accept cdata, too.
fix random angle movflag, Windows build; write more documentation.
prevent a SIGFPE when attempting to draw p'lax with nonexistent tile.
write more documentation, handle randomangle movflag in a:set_move().
Lunatic savegames: store g_playerWeapon[][], fix 'require' with submodules.
check reserved bits for sound and ai movement flags.
make mail, money, paper be affected by tile remapping, fix one printf.
cache1d.c: cover up preceding assertion failure by bumping size of lzwrawbuf[].
It's hard to call this a fix, since ideally, buffer sizes like these would be only as large as needed in the worst case.
cache1d.c: prettify compression functions, add one currently failing assertion.
clean up 'geom' module, make walls readable with pseudo-member 'z'.
rename spriteext[].*off->mdoff.*, actor[].actorstayput->stayputsect.
make gameactor and gameevent be "table-called" functions.
implement qgetsysstr/STR_VOLUMENAME.
Propagate potentially remapped CON defines to the control module.
(This is the module that implements much of the "hard-coded" functionality formerly on the C side.)
Fix one-sided y-flipped floor-aligned sprites, introduced in r3776.
Add a test case in test_tileoffsets.map.
commit preliminary, unfinished documentation written in AsciiDoc.
Don't (yet?) commit the generated HTML.
make require() translate dots to dir separators, make those illegal.
However, from the command line, reverse the situation: dirseps must be passed as '/', dots are forbidden (except in the trailing ".lua").
add projectile member .userdata and predefined label PROJ_USERDATA.
It is a 32-bit signed integer. No version bump necessary, although CON code accessing this new member will not work with earlier revisions (obviously).
bound-check defineprojectile tile/sound members.
Also from Lunatic, make these members read-only and provide methods that allow setting them to either -1 or a number in [0..MAX{TILES,SOUNDS}-1].
rename bitint members to *bits instead of *x.
Fix accessing the wrong animation indices with negative viewtypes.
(I think; untested.)
strip dir prefixes on file-not-found; _getpname, ud.m_player_skill.
showview and showviewunbiased.
keep status number symbols in actor.STAT instead of gv.STAT_*.
Allow negating an action's viewtype 5 or 7, meaning to x-flip the shown sprite.
add preliminary helper code for local gamevar saving.
fix current incarnation of gamevar saving/restoration.
prettify listglobals.sh output.
properly generate references to gamevars named like Lua keywords.
don't write an int32_t where a char is expected.
game.c: fix out-of-bounds write in G_GetSubString().
tweak sector.STAT.* and other names a little.
proper handling of dynamic remappings with weapon defaults.
That is, the gamevars named WEAPONx_* in CON will now have the remapped value if they were not overridden from CON ('gamevar' at file scope). For C-CON, everything except signaling an override from the CON parser is in place.
hook up dynamicsoundremap.
Make S_MenuSound() use stack'd array to get rid of S_StaticToDynamicMenuSound().
hook up qstrdim and screentext.
Also add some recent keywords to the list in con_lang.lua which I had forgotten all along.
sector[].ceiling/.floor gets a reference to a ceiling-or-floor struct.
Also, make sector[].*stat a bitint type. Now, a piece of code could look like this: local sec = sector[i] local ceil = sec.ceiling ceil.statx:flip(sector.STAT.SMOOSH)
fix a couple of oversights, tweak some stuff.
real user per-player vars.
The previous behavior was to translate them as global gamevars, since LunaCON currently has no support for multiplayer. However, then some errors would be missed where such gamevars are accessed in no-player context (e.g. EVENT_ENTERLEVEL). On by default, disabled with -fno-playervar.
also reset per-actor gamevars from spawns originating from C.
Take care not to do it twice. Still untested though.
split 'replace' option for actor chaining flags into soft/hard.
Hard replacement reassigns the tile flags, while soft replacement bitwise ORs them, as in CON (since some flags might already have been set using commands like spritenoshade).
reset per-actor gamevars on actor spawn, untested.
Compile DEF progress meter only on Windows or if having the startup window.
The latter checked with #defined HAVE_GTK2, which is probably not correct for every platform. In builds without a startup window, the periods get mingled with stdout output otherwise.
implement 'definegametype', allow writing userdef.level_number.
Also, allow (implicit) actor index -1 to 'sound' like in C-CON and fix MULTIMODE gamevar definition (was 0, not 1).
Fix potential oob access when flipping the floor [F] in 2D mode.
Replace inline "qsetmode==200" checks with in3dmode().
Analogously for the negation; remove a couple of redundant decls of "qsetmode".
Make deletion of an ambient sound MUSICANDSFX sprite stop its sound again.
Add a test case source/lunatic/test/delmusicsfx.lua.
add actor.delete() and various 'length' methods to geom.vec3/ivec3.
remove "found `gettspr' outside of EVENT_ANIMATESPRITES" warning.
Because one may obviously use gettspr/settspr in states called from that event.
fix 'zadd' DEF token handling. (Polymer has it right.)
With DNCOORDS display, print number of sprites currently on the screen.
Only in debugging builds.
add a couple of ud members, gamevars; handle 'dynamicremap' only once.
Also, allow MAXVOLUMES+1 to first arg of 'music'.
-Wchained-loadactor option for LunaCON, clear errors on restart.
The last only in release builds.
implement dragpoint, clipmove*; fix gamearray serialization.
don't extern 'clipmovetraceboxnum', add a new func. clipmovex() instead.
The 'x' is for "extended", since its last arg is a switch of whether to disable sliding. Use that from gameexec.c.
fix 'copy' on 64-bit archs.
LunaCON standalone: don't try default path on file-not-found for root names.
fix possible NULL pointer dereference in polymer_getbuildmaterial().