Commit Graph
7719 Commits
Author SHA1 Message Date
ac-stef 397c441fed more verbose error messages for disabled commands 2016-09-16 17:35:47 +02:00
ac-stef fc3c77868f add hardcoded stairs command for coop
stairs xs ys

  Places stairs in all selections. xs and ys determine the step width
  in x- and y-direction.

DOCREF stairs
2016-09-16 14:06:27 +02:00
ac-stef 4dc54e22b5 allow more edit commands in coop edit
The edit protocol now allows the following commands in multiplayer:

  arch, slope, edittag, edittagclip, selectionrotate, selectionflip

also:

  mapenlarge has been limited to size 10 in multiplayer

  entitiy undelete in multiplayer has been fixed

SV_EDITS, SV_EDITD and SV_EDITE are to be cleaned up with a protocol bump

DOCREF arch slope edittag edittagclip selectionrotate selectionflip
2016-09-16 14:06:27 +02:00
ac-stef 815f4aa764 add selectall command
selectall

  selects the whole map (minus the two cubes wide border)

DOCREF selectall
2016-09-16 14:06:26 +02:00
ac-stef c5904dc065 add stairs to edit menu 2016-09-16 14:06:26 +02:00
ac-stef 6b15891cfd undo changes back to a specific state
undolevel <level>

  Returns the number of undo steps that can be undone. If argument "level"
  is given, as many steps are undone, until "level" steps remain.

Example, during editing:

  echo (undolevel)
    prints number of previous editing steps, for example "55"

  ... do some editing ...

  undolevel 55
    undoes all changes to restore the previous state (if that state
    is still in memory... keep in mind, undo-space is limited, see
    "undomegs" parameter)

  Unless memory limits delete states, undolevel commands can be undone
  with "redo".

DOCREF undolevel
2016-09-16 14:06:26 +02:00
ac-stef 96a028c263 guess height for selections set by command 2016-09-15 18:15:51 +02:00
ac-stef 1b8eeac7ce font fixes 2016-09-14 20:35:13 +02:00
ac-stef 643328b5a1 properly compress chars_default.png
thx BrutalSystem
2016-09-13 21:28:47 +02:00
ac-stef 1a482e5394 final corner physics fix
if corner sliding doesn't work, try x- and y-slides as well
2016-09-13 21:17:07 +02:00
ac-stef a976e5b4ba map fix 2016-09-11 11:17:25 +02:00
ac-stef 29a3970b72 fix flyspeed
and a compiler optimisation error

(for clang >= 4, O3 may be reactivated in the makefile)
2016-09-09 22:22:55 +02:00
ac-stef 588e9f9de8 some fixes for OSX 2016-09-08 22:36:46 +02:00
ac-stef 123e2b2b12 cleanup 2016-09-08 01:20:45 +02:00
ac-stef 423df0c66f omit "./" prefix from media file paths in map config files
Ignore it, if "./" prefixes a media path given with a texture, mapmodel
or mapsound command. It's useless and prevents comparing path names.
2016-09-06 19:15:26 +02:00
ac-stef a5470d5ea0 really clear all binds during "resetbinds"
including self-assigned ones

_resetallbinds

  Clears _all_ binds for all keys and all modes. Do not use the command
  manually.

DOCREF _resetallbinds
2016-09-06 18:43:37 +02:00
ac-stef 27754f4a9b cleanup 2016-09-06 17:17:38 +02:00
ac-stef 40e8b1cf5e some map fixes 2016-09-05 20:42:56 +02:00
ac-stef 6de0af1b6f disable water reflection in editmode
with enabled reflection, the editing grid is not visible through the
water surface

as a side-effect also fixes #71
2016-09-04 22:00:57 +02:00
ac-stef cb630bde49 add per-map overrides to disable graphics features
The mapper has now the choice to disable several graphics features on
the client (for his map only, of course). The overrides are stored in
the map header.

mapoverride_nowaterreflect

  If "1", water reflection is disabled. Useful, when odd water colours
  are used to emulate other liquids that are not supposed to be that
  reflective.

mapoverride_limitwaveheight

  If "1", waveheight is capped at 0.1 max. Useful for small water
  areas (like puddles), where higher waves would look weird.

mapoverride_nostencilshadows

  If "1", stencil shadows are disabled. On clients, where stencil shadows
  are otherwise enabled, blob shadows are used instead. If shadows are
  disabled anyway, they stay disabled. Useful for dim maps, where hard
  shadows make no sense.


The player is free to ignore any of those overrides:

ignoreoverride_nowaterreflect

  If "1", mapoverride_nowaterreflect is ignored and regular client
  settings are used.

ignoreoverride_limitwaveheight

  If "1", mapoverride_limitwaveheight is ignored, and "waveheight" is
  used unchanged.

ignoreoverride_nostencilshadows

  If "1", mapoverride_nostencilshadows is ignored.


DOCREF mapoverride_nowaterreflect ignoreoverride_nowaterreflect
DOCREF mapoverride_limitwaveheight ignoreoverride_limitwaveheight
DOCREF mapoverride_nostencilshadows ignoreoverride_nostencilshadows
2016-09-04 17:44:22 +02:00
ac-stef bc2a091f95 show map timestamp in map info menu
also: more stuff in the map settings menu

getmaptimestamp fmt

  Returns the "last written" timestamp of the current map in the requested
  format. If fmt starts with "U", the time is given as UTC, otherwise
  as local time. If fmt is empty, or not given or just the "U", the format
  defaults to "YYYYMMDD_hh.mm.ss". Use "%c" to get something nicer.

DOCREF getmaptimestamp
2016-09-04 15:00:00 +02:00
ac-stef c7c02521ad add thread-safe variant of timestring() 2016-09-04 13:45:14 +02:00
ac-stef 9852b98bf3 unify screenshot code
no need to have the same code three times

also: have jpegenc use our stream lib
2016-09-04 04:42:59 +02:00
ac-stef 07b34ce42c fix mapshots
png and bmp images were mirrored

fix mapshot paths

fix jpeg crash on file creation failure
2016-09-04 01:50:53 +02:00
ac-stef ac4e2e60b4 optimised dev_dusk
* heightfield render errors fixed
* model-clipping simplified
* shadowyaw changed a little to avoid ugly artifacts
2016-09-04 00:52:20 +02:00
ac-stef 870900f92f new map settings menu
Containing all persistent per-map settings (stored in map config and
map header).

removed some random number nonsense
2016-09-03 22:48:49 +02:00
ac-stef 05e0bf5b30 new command to retrieve the water colour
getwatercolour

  Returns a string with the four components of the water colour, red,
  green, blue and alpha.

  Example: echo (getwatercolor)  --> 20 25 20 178

setwatercolour what value

  Allows setting the components of the water colour independently. "what"
  is either a keyword "red|green|blue|alpha" or the index number 0..3 and
  determines, which component is set to "value".

  Example:

    watercolour 0 0 0
      sets all colour components to zero

    setwatercolour red 200
      sets the red component to 200

DOCREF getwatercolour setwatercolour
2016-09-03 16:56:10 +02:00
ac-stef 3e7a0cfb10 added dev_dusk
"Dusk by A&D_Shadow"

initial commit, based on ac_dusk_2013, converted to map format 10
2016-09-03 14:35:33 +02:00
ac-stef 8f95b6d88e more map fixes 2016-09-03 01:42:34 +02:00
ac-stef a6bffc1858 new command looplisti
same as looplist, but it automatically counts the loops in "i", starting
with 0.

Example:

  a = [u v w] ; b = [x y z]
  looplisti $a m [echo $m (at $b $i) $i]

  u x 0
  v y 1
  w z 2

DOCREF looplisti
2016-09-02 21:58:39 +02:00
ac-stef a8db184eef use mapmrproper to optimise for filesize
needs further testing...

all dev_ maps have been optimised
2016-09-02 00:05:57 +02:00
ac-stef c2ca8706c5 add most visible textures menu
...including the option to sort the most visible textures to the default
slots for special uses (wall, floor, ceiling).

Also: add the information about default texture slots to the menus. Some
mappers may not know, yet.

Also: add a "Pick texture name" option to the edit texture slot menu.

The command sorttextureslots now allows to manually sort the first few
slots by adding the slot number to move to the slots #1, #2, #3...

DOCREF sorttextureslots
2016-09-01 22:59:08 +02:00
ac-stef 6cd5be6225 show how many uses of a texture slot are actually visible
The command textureslotusagelist now returns two values per slot: usage
and visibility. If given the argument "onlymostvisible", instead of the
regular list, a list of only the most used wall, floor, ceiling and upper
wall textures (alternating with the keywords) is returned.

Example:

  echo (textureslotusagelist onlymostvisible)
  --> wall 211 floor 45 ceiling 0 "upper wall" 79

DOCREF textureslotusagelist
2016-09-01 22:59:08 +02:00
ac-stef f65f943050 limit the optimisation of mapmrproper to 4x4 cubes
... which is quite limited, but anything more can trigger lighting
problems in the engine
2016-09-01 22:58:45 +02:00
ac-stef bfb8158069 add cubescript commands for binary arithmetic
The commands &b, |b, ^b and !b perform the operations and, or, xor and not
using binary arithmetic on integer values.

Please keep in mind, that integer values are 32-bit signed values, so
"echo (!b 1)" returns "-2", of course.

The new command "h0 precision value" is modeled after the existing "l0"
command and returns the given value as string of hexadecimal digits,
padded with leading zeros to a given minimum length ("precision").

Examples:

  echo (h0 2 1024)       ->  "400"
  echo (h0 4 1024)       ->  "0400"
  echo (h0 6 1024)       ->  "000400"
  echo (h0 0 (&b 0xe 0x3))  ->  "2"
  echo (h0 0 (|b 0xe 0x3))  ->  "f"
  echo (h0 0 (^b 0xe 0x3))  ->  "d"
  echo (h0 0 (!b 0xe))   ->  "fffffff1"
  echo (h0 0 (* -1 0xe))  ->  "fffffff2"  (for comparison)

Also, the commands for addition and multiplication of integer and float
values have been modified to accept more than two arguments.

Examples:

  echo (* 3 5)   -> "15"
  echo (* 3 5 2)   -> "30"
  echo (* 3 5 2 -1)   -> "-30"
  echo (* 3)   -> "0"  (for compatibility reasons)
  echo (+ 3 5)   -> "8"
  echo (+ 3 5 2)   -> "10"
  echo (+ 3 5 2 -1)   -> "9"
  echo (+f 3.0 5 1.9 -1)   -> "-28.5"
  echo (*f 3.0 5 1.9 -1)   -> "8.9"

DOCREF + * +f *f &b |b ^b !b h0
2016-09-01 15:47:09 +02:00
ac-stef 3e1628792f fix lighting on desert3
thx BrutalSystem
2016-08-31 23:08:49 +02:00
ac-stef f0dfe2d1a3 pass arguments to and deliver results from script files
When a script file is executed, any additional arguments are passed
as execarg1..execargX to the script. The number of arguments is in
execnumargs and if the script in the file sets the value of execresult,
the exec command returns that value.

Example:

If there is a file testscript.cfg with this content:

  execresult = (* $execarg1 $execarg2)

then the command

  echo (exec testscript.cfg 6 7)

will output "42".

DOCREF exec
2016-08-31 18:53:58 +02:00
ac-stef 75af444844 automatically fix world border violations
whenever the map is saved in edit mode
2016-08-31 17:21:10 +02:00
ac-stef 4b2767a96d cleanup
* removed convertcase
  use toupper (concat A B C D ....) instead

* moved several COMMAND macros to their function bodies

* cleaned up screenshot extension handling

* prefix screenshot argument with "screenshot/" and add correct extension
2016-08-31 17:20:28 +02:00
ac-stef 300d702619 add menu to set notexture
Allows to reset notexture, to set a high-contrast color to find and
fix the areas and to set to a useful default texture.

As useful textures, in addition to rock.jpg and concrete.jpg, the menu
lists the default wall, floor and ceiling textures of the current map,
and also the last watched texture from the texture menu.

Also adds a few checks to detect unconverted map config files and misuse
of the new bright highlight textures.
2016-08-30 22:57:03 +02:00
ac-stef 98605751f4 fix unconfigured textures on official maps
replaced by makke/rock.jpg, which is the base for the "missing content"
texture - so, only the text is missing...

on outpost, notexture was reset (since there's no use for it on official
maps)
2016-08-30 21:08:38 +02:00
ac-stef f8188df428 add menu to list mapmodels with unconfigured custom textures 2016-08-30 21:04:41 +02:00
ac-stef 1310516c14 keep track of map load errors
Collect warnings during load_world() and issue a warning at the end. Most,
but not all warnings already printed a message - which usually scrolls out
of the console quite fast.

The collected value is also given back by the loadmap command, which
allows batch editing scripts for maps stop at problematic maps.

Mapsound errors are not detected, if soundvol is zero. Missing textures are
not flagged, if notexture is set.

The error code is ored together from those elements:

0x0000001  entity attribute overflow
  One or more map entities had attribute values, that are no longer
  supported with map format 10. Rework manually.

0x0000010  map decoder error
  Indicates a damaged map file.

0x0000100  world error -1
  Map is completely solid. Very funny.

0x0000200  world error -2
  Map border is not solid. Fix manually.

0x0001000  missing skymap texture files
0x0002000  missing world texture files (only if no notexture is set)
0x0004000  missing mapmodel files
0x0008000  missing mapsound files

0x0010000  bad mapsound command in map config
0x0020000  bad mapmodel command in map config
0x0040000  bad texture command in map config
0x0080000  bad loadnotexture command in map config

0x0100000  error during loading of mapmodels (see earlier console output)

0x1000000  out of range integer value in map config (for example, "fog 0")
0x2000000  out of range float value in map config
0x4000000  generic cubescript error in map config

The command loadmap is now also available for non-debug builds.

DOCREF loadmap
2016-08-30 20:56:58 +02:00
aurhat 9c964d95b4 Improve converting paths in pre v.1.2 map configs
The script converted paths only when "mapmodel" or "texture"
strings were at beginning of the lines, now that is changed,
in order to paths will be converted also in, for example,
commented out lines.
Also changed name of the script to more proper.
2016-08-29 23:21:43 +02:00
ac-stef 778ad62629 fix rendering of some heightfield borders on lainio 2016-08-29 21:52:03 +02:00
ac-stef 4f6e58040b merge identical config slots of official maps
textures:
  cavern: 1 slot merged
  complex: 3 slots merged
  depot: 11 slots merged
  lainio: 1 slot merged
  mines: 1 slots merged
  swamp: 1 slot merged

mapmodels:
  swamp: 2 slots merged
  toxic: 3 slots merged
2016-08-29 15:47:46 +02:00
ac-stef 69518c5e50 sort config slots of official maps 2016-08-29 15:47:46 +02:00
ac-stef 91e7ff6e7f delete unconfigured mapmodel entities from official maps 2016-08-29 15:47:46 +02:00
ac-stef 28d63baeee sort entities on official maps 2016-08-29 15:47:46 +02:00
ac-stef 7cb9aa79c8 add access to entities with unassigned config slots to edit menus
Mapmodel and -sound entities which refer to unassigned slots are now
listed in the "edit slots" menus. From there, the entities can be visited
and manually corrected or deleted.
2016-08-29 15:47:46 +02:00