Build 4237
SVN-
run EVENT_INIT after initial Lua state creation.
SVN handles and Git names are merged into one person.
run EVENT_INIT after initial Lua state creation.
don't allow starting demo recording, since gamevar diffing is NYI.
statically check some member assignments with literal numbers.
And issue warnings whenever the assignment would fail (error) at game time.
disable some player members, tweak decls of others.
The ones disabled are because they were found to not be used in any mod I tested. Exposing members directly is rarely good API. - bool toggle_key_flag -> const uint8_t ... (because value 2 is used) - make scream_voice, cheat_phase read-only
fix assignment to projectile sound/bsound/isound.
implement 'setcfgname'.
Factor out a block of code into C_SetCfgName() and use that from lunacon.lua.
on 'starttrack' with null music, issue a 'soft' error.
That is, one that doesn't break the control flow.
implement NORESET flag for gamevars.
very primitive gamevar handling logic for {save,load}mapstate.
in {save,load}mapstate, warn that saving/restoring gamevars is NYI.
implement NODEFAULT flag (1024) as session variables.
This is in contrast to C-CON, where the implications are not clearly obvious. See this discussion/monologue: http://forums.duke4.net/topic/955-eduke32-scripting/page__view__findpost__p__159613 Currently not implemented for session gamevars: - per-player, will be made a global one instead - per-actor, will be made a plain per-actor one instead DONT_BUILD.
add necessary identifier-is-not-gamevar check.
r/w gamearrays in binary mode, checks for mapdiff.sh, add test/gamearray.con.
in control.lua, use C's fwrite() to write gamearray to disk, fix typo.
allow a certain type error present in 1.3D GAME.CON to pass.
create game Lua state just before EVENT_NEWGAME, not in G_EnterLevel().
add -ftrapv, -fwrapv opts, providing trapping/wrapping arith semantics.
Currently only for multiplication.
add forgotted "screensound" to keyword list in con_lang.lua.
Also, fix 'spriteflags' directive.
implement 'tossweapon'.
handle system gamearrays for some array commands.
- 'copy' may have them as source, 'getarraysize' works fine - 'setarray' and 'resizearray' are obviously forbidden - 'readarrayfromfile' and 'writearrayfromfile' is not implemented for them (use case?) Also, in the Makefile: don't use realpath on directories. It may give an empty string.
various unrelated changes and more documentation.
- check map-text version on load - LunaCON: don't allow (back)slash as identifier char - LunaCON stand-alone: don't resort to default directory for root file names - document non-local control flow functions and for LunaCON, ambigious lexical elements
on palfrom from CON or C, set palsfade{speed,next} and regard prio.
various tweaks and fixes.
- fix getv movflags handling in VM_Move() - add actor.fall() - LunaCON: sanity-check some action members
require'CON.ACTION' etc. gets composites from CON; add actor.MOVFLAGS.
begin writing LunaCON documentation.
major overhaul of gamevar serialization for savegames.
- Handle local gamevars. - Restore gamevars from require('end_gamevars').
check reserved bits for sound and ai movement flags.
make mail, money, paper be affected by tile remapping, fix one printf.
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.)
provide CON-defined labels in read-only table require("CON.DEFS").
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].
strip dir prefixes on file-not-found; _getpname, ud.m_player_skill.
showview and showviewunbiased.