OctaCore/config/stdedit.cfg

242 lines
6.6 KiB
INI

///////////////////////////////////////////////////////////////////////////////
// Entity primary actions //
///////////////////////////////////////////////////////////////////////////////
=enttype = [|| (=s * $arg1) [=s (enttype) $arg1]]
=entattr = [|| (=s * $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 1 $numargs [result $[arg@i]])
]
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 spotlight decal
teleport teledest jumppad
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)]
]
///////////////////////////////////////////////////////////////////////////////
// Copy & 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
entcopymode = 0
editcopy = [
if (|| (havesel) [! (enthavesel)]) [
entcopymode = 0
entcopy
copy
] [
entcopymode = 1
entcopy
]
]
editpaste = [
cancelpaste = (! (|| (enthavesel) [havesel]));
if $entcopymode [
entreplace
if $cancelpaste [cancelsel]
] [
pastehilite
reorient // temp; real fix will be in octaedit
onrelease [
if $opaquepaste delcube
paste; entpaste
if $cancelpaste [cancelsel]
]
]
]
///////////////////////////////////////////////////////////////////////////////
// Selection //
///////////////////////////////////////////////////////////////////////////////
// select ents with given properties
// '*' is wildcard
entfind = [
if $numargs [
entselect (concat [&& [=enttype @@arg1]] (loopconcat i (- $numargs 1) [
result [[=entattr @@i @@[arg@(+ $i 2)]]]
]))
] [entselect 1]
]
entfindinsel = [
if $numargs [
entselect (concat [&& insel [=enttype @@arg1]] (loopconcat i (- $numargs 1) [
result [[=entattr @@i @@[arg@(+ $i 2)]]]
]))
] [entselect insel]
]
drag = [dragging 1; onrelease [dragging 0]]
corners = [selectcorners 1; dragging 1; onrelease [selectcorners 0; dragging 0]]
editmove = [moving 1; onrelease [moving 0]; result $moving]
entdrag = [entmoving 1; onrelease [entmoving 0]; result $entmoving]
editdrag = [cancelsel; || (entdrag) [drag]]
selcorners = [if $hmapedit [hmapselect] [cancelsel; || (entdrag) [corners]]]
editextend = [|| (entdrag) [if (havesel) [selextend; reorient; editmovecut] [drag]]]
editmovewith = [
if (havesel) [
|| (editmove) [arg1]
onrelease [moving 0; dragging 0]
] [
arg1
]
]
editmovecorner = [editmovewith selcorners]
editmovedrag = [editmovewith editdrag]
///////////////////////////////////////////////////////////////////////////////
// Miscellaneous Editing Commands //
///////////////////////////////////////////////////////////////////////////////
editfacewsel = [
if (|| havesel [! (enthavesel)]) [
if $moving [pushsel $arg1] [
entcancel
editface $arg1 $arg2
]
]
]
entswithdirection = [playerstart teledest mapmodel decal]
entdirectionprop = [0 0 1 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
]
]
selmovecut = 1
toggleeditmovecut = [
selmovecut = (! $selmovecut)
echo (? $selmovecut "Move Selection" "Cut Selection")
]
editmovecut = [
if $selmovecut [editmove] [editcut]
]
editdel = [if (! (enthavesel)) [delcube]; delent]
editflip = [flip; entflip]
editrotate = [|| (entdirection $arg1 15) [rotate $arg1; entrotate $arg1]]
editcut = [
if (moving 1) [
if (= $moving 1) [selsave]
onrelease [
moving 0
if (selmoved) [
selswap
copy; entcopy
delcube; delent
selrestore
paste; entpaste
]
]
]
]
setting_entediting = 1
passthrough = [
passthroughsel $arg1;
if $arg1 [
passthroughcube_bak = $passthroughcube
passthroughcube 1
] [
passthroughcube $passthroughcube_bak
]
entcancel
if $setting_entediting [entediting (! $arg1)]
]
entcomplete = [listcomplete $arg1 $enttypelist]
entcomplete newent
entcomplete entfind
entcomplete clearents
listcomplete editmat "air water clip glass noclip lava gameclip death nogi alpha"
air = [ editmat air $arg1 ]
looplist i ["" 2 3 4] [
[water@i] = [editmat water@i $arg1]
[lava@i] = [editmat lava@i $arg1]
[glass@i] = [editmat glass@i $arg1]
]
clip = [editmat clip $arg1]
noclip = [editmat noclip $arg1]
gameclip = [editmat gameclip $arg1]
death = [editmat death $arg1]
nogi = [editmat nogi $arg1]
alpha = [editmat alpha $arg1]
blendpaintmodes = ["off" "replace" "dig" "fill" "inverted dig" "inverted fill"]
minimaphere = [minimapheight (at (getcampos) 2)]
getsundir = [sunlightyaw (getcamyaw); sunlightpitch (getcampitch)]
defvarp editfloatspeed 1 1000 10000
makeitsnow = [newent particles 13 364 70 0xAAA 550] // derp