------------------------------------------------------------------------------
CLED v4.88 - a commandline editor for DOOM Copyright 1998 Jim Flynn Freeware
------------------------------------------------------------------------------

CLED is a tool for patching or inspecting a DOOM level, without the
side effects associated with opening and closing many editors. CLED
will leave the current BLOCKMAP, NODES, and REJECT untouched, and
therefore the changes must not invalidate these resources unless the
wad is rebuilt with other tools afterwards. Since CLED runs from the
DOS command line it is suitable for batch fixes to levels and wads.

Note: CLED can now be used with DOOM 1 or Ultimate DOOM. This is done
by using /DOOM on the command line and where a level number is required
use xy for ExMy, i.e. 13 for E1M3.

======
Syntax
======

Any level objects properties may be read or changed, one at a time,
with the following syntax

  CLED [/DOOM] wadname[.wad] LEVOBJ(m,n).FIELD[=VALUE]

    LEVOBJ is one of THING, VERTEX, LINEDEF, SIDEDEF, SECTOR, or
    an initial substring of one. It identifes the type of object
    that will be operated on.

    Note spaces and tabs are NEVER allowed in object equations

    m is the map number within wadname, in which the LEVOBj is to be found
    to specify E3M5, use 35, and similarly for other DOOM level names

    n is the object number within the wad resource

    FIELD is the name of the property of the LEVOBJ that is to be
    changed. Each LEVOBJ has its own set of properties:

       THING: X, Y, TYPE, ANGLE, FLAGS
       VERTEX: X, Y
       LINEDEF: FROM, TO, FLAGS, TYPE, TAG, RSID, LSID
       SIDEDEF: XOFF, YOFF, UPPER, LOWER, NORMAL, SECT
       SECTOR: FHGT, CHGT, FLOOR, CEILING, LIGHT, TYPE, TAG

    Initial substrings of fieldnames may be used.

    If a value is specified the object specified is changed accordingly,
    otherwise the current value of the object is reported.

    Examples:

       CLED MYWAD.WAD THING(3,435).TYPE=BLUEBOTTLE   "change Th#435 Map03 type"
       CLED MYWAD.WAD TH(3,435).TY                   "verify change"

       CLED /DOOM MYWAD.WAD TH(34,435).TY=CANDLE     "change Th#435 E3M4 type"

A set of related level objects can be dumped to the console with one
of the syntaxes:

  CLED [/DOOM] wadname[.wad] LEVOBJ[(m[,n])][.FIELD]

    Examples:

       CLED MYWAD.WAD THING(3,435).TYPE   "report one thing, one property"
       CLED MYWAD.WAD TH(3,435)           "report one thing, all properties"
       CLED MYWAD.WAD TH(3).TYPE          "report one level, one property"
       CLED MYWAD.WAD TH(3)               "report one level, all properties"
       CLED MYWAD.WAD TH.TYPE             "report all levels, one property"
       CLED MYWAD.WAD TH                  "report all levels, all properties"

The set of level objects that have a given value can be reported to
the console with the syntax:

  CLED [/DOOM] wadname[.wad] LEVOBJ[(m[,n])][.FIELD]==value

    Examples:

     CLED MYWAD.WAD THING(3).ANGLE==N  "list north-facing things map03"
     CLED MYWAD SECTOR.TYPE==960       "list sectors with type 960, all maps"

The set of level objects that have a given value can be changed to
another value and reported to the console with the syntax:

  CLED [/DOOM] wadname[.wad] LEVOBJ[(m[,n])][.FIELD]==value#newvalue

    Examples:

     CLED MYWAD.WAD THING(3).ANGLE==N#S  "change north things to south, map03"
     CLED MYWAD SECTOR.TYPE==19#18       "change sector types 19 to 18 all maps"

====================
Value specification
====================

All non-texture parameters can be specified as numbers. Some
parameters have a more logical optional syntax to help you set them.

THING ANGLES: N NE E SE S SW W NW

THING FLAGS: EzMdHdDf~S~D~C

LINE FLAGS: ImMo2SUpLwSeSoInMaPt

SECTOR TYPES: Normal, Random, FBlnk, SBlnk, DamBlk, Dam10, Dam5
              Oscillate, Secret, Close, DamExit, FSync, SSync,
              Open, Dam20, Flicker

*Note only regular sector types have names, generalized sectors must
be input and output as numbers

THING TYPES NAMES and NUMBERS (either can be used):

AMMOCLIP                        2007
BFG9000                         2006
ARACHNOTRON                     68
ARCHVILE                        64
ARMORHELMET                     2015
BACKPACK                        8
BARON                           3003
BARREL                          2035
BERSERKPACK                     2023
BLOODPOOL                       24
BLUEARMOR                       2018
BLUEBOTTLE                      2014
BLUECARD                        5
BLUESKULL                       40
BLUESPHERE                      2013
BLURSPHERE                      2024
BOSSBRAIN                       88
BOSSSHOOTER                     89
BOXAMMO                         2048
BOXROCKETS                      2046
BOXSHELLS                       2049
BRAINSTEM                       81
BURNINGBARREL                   70
CACODEMON                       3005
CANDLE                          34
CANDELABRA                      35
CELLBATTERY                     2047
CELLPACK                        17
CHAINGUN                        2002
CHAINSAW                        2005
COLONGIBS                       79
COMMANDO                        65
COMPUTERMAP                     2026
CYBERDEMON                      16
DEADCACO                        22
DEADDEMON                       21
DEADIMP                         20
DEADPLAYER                      15
DEADSARGE                       19
DEADSOUL                        23
DEADTROOPER                     18
DEMON                           3002
DMSTART                         11
EXPLPLAYER1                     10
EXPLPLAYER2                     12
EYESYMBOL                       41
FLAMESKULL                      42
FLOORLAMP                       2028
GOGGLES                         2045
GRAYTREE                        43
GREENARMOR                      2017
HANGARMOUT1                     50
HANGARMOUT2                     59
HANGAVGUTBRN                    74
HANGAVNOBRN                     78
HANGAVNOGUT                       73
HANGAVOPNSKULL                  76
HANGAVTORSODN                   75
HANGAVTORSOUP                   77
HANGCUTLEG1                     53
HANGCUTLEG2                     62
HANGINGKEEN                     72
HANGNOLEG1                      49
HANGNOLEG2                      63
HANGONELEG1                     51
HANGONELEG2                     60
HANGUPSIDE1                     52
HANGUPSIDE2                     61
HELLKNIGHT                      69
HIBLUSTICK                      44
HIGRNSTICK                      45
HIREDSTICK                      46
HITECHCOL                       48
IMP                             3001
IMPALED                         25
INVULNERABILITY                 2022
LARGEBRNTREE                    54
LAUNCHER                        2003
LOBLUSTICK                      55
LOGRNSTICK                      56
LOREDSTICK                      57
LOSTSOUL                        3006
LOWBRNSCRUB                     47             
LOWGRNHEART                     36
LOWGRNPILL                      31
LOWREDPILL                      33
LOWREDSKULL                     37
MANCUBUS                        67
MEDIKIT                         2012
MEGASPHERE                      83
MT_PUSH				5001
MT_PULL				5002
NOTHING                         0
PAINELEMENTAL                   71
PLASMARIFLE                     2004
PLAYER1                         1
PLAYER2                         2
PLAYER3                         3
PLAYER4                         4
RADIATIONSUIT                   2025
REDCARD                         13
REDSKULL                        38
REVENANT                        66
ROCKET                          2010
SARGEANT                        9
SHELLS                          2008
SHORTLAMP                       86
SHOTGUN                         2001
SKULLPOLE                       27
SKULLABOB                       28
SKULLCANDLE                     29
SMALLBLOODPOOL                  80
SPAWNSPOT                       87
SPECTRE                         58
SPIDERDEMON                     7
STIMPACK                        2011
SUPERSHOTGUN                    82
TALLGRNPILL                     30
TALLLAMP                        85
TALLREDPILL                     32
TPDEST                          14
TROOPER                         3004
TWITCHING                       26
WOLFSOLDIER                     84
YELLOWCARD                      6
YELLOWSKULL                     39

============
Applications
============

1) Patching an already released wad at the downloader's site with CLED
and a batch file. Documentation on changes is also provided this way.
This can be to fix bugs, or simply rearrange matters for variety in
an old wad. Older batch files can simply be appended to, running the
same changes twice does no harm.

2) Identification of level version thru peeking at differentiating
locations.

=================
Future Directions
=================

Extend CLED to a simple language for evaluation of wad expressions, and
conditionally listing or operating on level objects with io to disk and
console. 

=============
CLED Examples
=============

---------
EXAMPLES
---------

1) In a wad MYWAD.WAD, turn on the Secret attribute in sector 14 of Map03:

  CLED MYWAD SECTOR(3,14).TYPE=SECRET

  or equivalently

  CLED MYWAD SE(3,14).T=SE

2) In the same level, read the attributes of linedef #1001

  CLED MYWAD LINEDEF(3,1001).FLAGS

3) Change the attributes of the same line to no longer be Invisible

  CLED MYWAD LINE(3,1001).FL=Im+Mo	(assumes Im+Mo+In was returned above)

4) Point thing number 345 in Level 17 of BIGWAD.WAD to the northwest

  CLED BIGWAD THING(17,345).ANGLE=NW

  or equivalently

  CLED BIGWAD T(17,345).A=135 (degrees)

5) Make the same thing a Revenant

  CLED BIGWAD T(17,345).TYP=Rev

