tesseract/data/stdedit.cfg

313 lines
8.2 KiB
INI

// implements some editing commands
//////// Entity Editing ///////////////
=enttype = [
|| [strcmp * $arg1] [strcmp (enttype) $arg1]
]
=entattr = [
|| [strcmp * $arg2] [= (entattr $arg1) $arg2]
]
// clear ents of given type
clearents = [
if $editing [
entcancel
entselect [ =enttype $arg1 ];
echo Deleted (enthavesel) $arg1 entities;
delent
]
]
// replace all ents that match current selection
// with the values given
replaceents = [
if $editing [
do [
entfind @(entget)
entset @(loopconcat i $numargs [result $[arg@(+ $i 1)]])
]
echo Replaced (enthavesel) entities
]
]
selentedit = [ saycommand ( concatword "/entset " (entget) ) ]
selreplaceents = [ saycommand ( concatword "/replaceents " (entget) ) ]
selentfindall = [ do [ entfind @(entget) ] ]
// modify given attribute of ent by a given amount
// arg1 attribute
// arg2 value
entproperty = [
entattr $arg1 (+ (entattr $arg1) $arg2)
]
enttypelist = [
light mapmodel playerstart envmap particles sound
shells bullets rockets riflerounds grenades cartridges
health healthboost greenarmour yellowarmour quaddamage
teleport teledest
jumppad
base
spotlight
flag
]
enttypeselect = [
enttypelength = (listlen $enttypelist)
next = (mod (+ (indexof $enttypelist (enttype)) $arg1) $enttypelength)
if (< $next 0) [ next = (+ $next $enttypelength) ]
do [entset @(listsplice (entget) (at $enttypelist $next) 0 1)]
]
////// Entity primary actions /////////
ent_action_base = [ entproperty 0 ( * $arg1 1 ) ]
ent_action_teleport = [ entproperty 0 ( * $arg1 1 ) ]
ent_action_teledest = [ entproperty 1 ( * $arg1 1 ) ]
ent_action_mapmodel = [ entproperty 0 ( * $arg1 1 ) ]
ent_action_spotlight = [ entproperty 0 ( * $arg1 5 ) ]
ent_action_light = [ entproperty 0 ( * $arg1 5 ) ]
ent_action_jumppad = [ entproperty 0 ( * $arg1 5 ) ]
ent_action_playerstart = [ entproperty 0 ( * $arg1 15 ) ]
ent_action_envmap = [ entproperty 0 ( * $arg1 5 ) ]
ent_action_particles = [ entproperty 0 ( * $arg1 1 ) ]
ent_action_sound = [ entproperty 0 ( * $arg1 1 ) ]
ent_action_cycle = [ entset ( if ( > $arg1 -1 ) [ result $arg2 ] [ result $arg3 ] ) ]
ent_action_shells = [ ent_action_cycle $arg1 bullets quaddamage ]
ent_action_bullets = [ ent_action_cycle $arg1 rockets shells ]
ent_action_rockets = [ ent_action_cycle $arg1 riflerounds bullets ]
ent_action_riflerounds = [ ent_action_cycle $arg1 grenades rockets ]
ent_action_grenades = [ ent_action_cycle $arg1 cartridges riflerounds ]
ent_action_cartridges = [ ent_action_cycle $arg1 quaddamage grenades ]
ent_action_quaddamage = [ ent_action_cycle $arg1 shells cartridges ]
ent_action_health = [ ent_action_cycle $arg1 healthboost yellowarmour ]
ent_action_healthboost = [ ent_action_cycle $arg1 greenarmour health ]
ent_action_greenarmour = [ ent_action_cycle $arg1 yellowarmour healthboost ]
ent_action_yellowarmour = [ ent_action_cycle $arg1 health greenarmour ]
//////// Copy and Paste //////////////
// 3 types of copying and pasting
// 1. select only cubes -> paste only cubes
// 2. select cubes and ents -> paste cubes and ents. same relative positions
// 3. select only ents -> paste last selected ent. if ents are selected, replace attrs as paste
opaquepaste = 1
entcopybuf = ""
entreplace = [
do [
if (enthavesel) [] [ newent @entcopybuf ]
entset @entcopybuf
]
]
editcopy = [
if (|| [havesel] [! (enthavesel)]) [
entcopybuf = ""
entcopy
copy
] [
entcopybuf = (entget)
]
]
editpaste = [
cancelpaste = (! (|| [enthavesel] [havesel]));
if (strcmp "" $entcopybuf) [
pastehilite
reorient // temp; real fix will be in octaedit
onrelease [
if $opaquepaste delcube
paste
entpaste
if $cancelpaste [ cancelsel ]
]
] [
entreplace
if $cancelpaste [ cancelsel ]
]
]
/////// Selection ///////////////
// select ents with given properties
// '*' is wildcard
entfind = [
if (= $numargs 0) [
entselect 1
] [
entselect (concat [ && [=enttype @@arg1] ] (loopconcat i (- $numargs 1) [
result [ [=entattr @@i @@[arg@(+ $i 2)]] ]
]))
]
]
entfindinsel = [
if (= $numargs 0) [
entselect [ insel ]
] [
entselect (concat [ && [insel] [=enttype @@arg1] ] (loopconcat i (- $numargs 1) [
result [ [=entattr @@i @@[arg@(+ $i 2)]] ]
]))
]
]
lse = [
line = ""
count = 0
entloop [
line = ( concatword $line (entget) " " )
count = ( + $count 1 )
if (> $count 4) [
echo $line
line = ""
count = 0
]
]
if (> $count 0 ) [ echo $line ]
echo (enthavesel) entities selected
]
enttoggle = [ entmoving 1; entmoving 0; ]
entaddmove = [ entmoving 2 ]
grabbing = 0
drag = [ dragging 1; onrelease [ dragging 0 ] ]
corners = [ selectcorners 1; dragging 1; onrelease [ selectcorners 0; dragging 0 ] ]
entadd = [ entaddmove; entmoving 0; ]
editmove = [ moving 1; onrelease [ moving 0 ]; result $moving ]
entdrag = [ entaddmove; onrelease [entmoving 0]; result $entmoving ]
editdrag = [ cancelsel; || [entdrag] [ drag ] ]
selcorners = [ if $hmapedit [ hmapselect ] [ cancelsel; || [entdrag] [ corners ] ] ]
editextend = [ || [entdrag] [ selextend; reorient; editmove ] ]
editmovewith = [
if (havesel) [
|| [editmove] [ @arg1 ]
onrelease [ moving 0; dragging 0 ]
] [
@arg1
]
]
editmovecorner = [ editmovewith selcorners ]
editmovedrag = [ editmovewith editdrag ]
////// Other Editing commands /////////
editfacewentpush = [
if (|| [havesel] [! (enthavesel)] ) [
if $moving [
pushsel $arg1
] [
entcancel
editface $arg1 $arg2
]
] [
if $entmoving [ entpush $arg1 ] [ ent_action_@(enttype) $arg1 ]
]
]
entswithdirection = [playerstart teledest mapmodel]
entdirectionprop = [0 0 1]
entdirection = [
if ( && [enthavesel] [ = (havesel) 0 ] ) [
entdiridx = (indexof $entswithdirection (enttype))
if (>= $entdiridx 0) [
entdirprop = (at $entdirectionprop $entdiridx)
if (> $arg1 0) [
entproperty $entdirprop $arg2
if (> (entattr $entdirprop) 360) [ entproperty $entdirprop -360 ]
] [
entproperty $entdirprop (- 0 $arg2)
if (< (entattr $entdirprop) 0) [ entproperty $entdirprop 360 ]
]
]
result 1
] [
result 0
]
]
editdel = [ if (! (enthavesel)) [delcube]; delent ]
editflip = [ flip; entflip ]
editrotate = [
|| [ entdirection $arg1 15 ] [
rotate $arg1
entrotate $arg1
]
]
editcut = [
hadselection = (havesel)
moving 1
if $moving [
copy; entcopy
delcube; delent
onrelease [
moving 0
paste
entpaste
if ( ! $hadselection ) [ cancelsel ]
]
]
]
passthrough = [
passthroughsel $arg1;
if $arg1 [
passthroughcube_bak = $passthroughcube
passthroughcube 1
] [
passthroughcube $passthroughcube_bak
]
entcancel
if $setting_entediting [ entediting ( ! $arg1 ) ]
]
edithud = [
if (enthavesel) [concatword (entget) " : " (enthavesel) " selected"]
]
entcomplete = [ listcomplete $arg1 $enttypelist ]
entcomplete newent
entcomplete entfind
entcomplete clearents
listcomplete editmat "air water clip glass noclip lava gameclip death alpha"
air = [ editmat air $arg1 ]
loop i 4 [
[water@(? $i (+ $i 1))] = [ editmat water@(? $i (+ $i 1)) $arg1 ]
[lava@(? $i (+ $i 1))] = [ editmat lava@(? $i (+ $i 1)) $arg1 ]
[glass@(? $i (+ $i 1))] = [ editmat glass@(? $i (+ $i 1)) $arg1 ]
]
clip = [ editmat clip $arg1 ]
noclip = [ editmat noclip $arg1 ]
gameclip = [ editmat gameclip $arg1 ]
death = [ editmat death $arg1 ]
alpha = [ editmat alpha $arg1 ]
blendpaintmodes = ["off" "replace" "dig" "fill" "inverted dig" "inverted fill"]
setblendpaintmode = [
if (> $numargs 0) [blendpaintmode $arg1] [blendpaintmode 0]
echo "blend paint mode set to:" (at $blendpaintmodes $blendpaintmode)
]
scrollblendbrush = [
if (> $numargs 0) [nextblendbrush $arg1] [nextblendbrush]
echo "blend brush set to:" (getblendbrushname (curblendbrush))
]
minimaphere = [minimapheight (at (getcampos) 2)]
getsundir = [sunlightyaw (getcamyaw); sunlightpitch (getcampitch)]