git-svn-id: https://svn.eduke32.com/eduke32@1653 1a8010ca-5511-0410-912e-c29ae57300e0

This commit is contained in:
terminx 2010-05-25 11:00:42 +00:00
parent ac7767986a
commit 1778d37b07
8 changed files with 1564 additions and 0 deletions

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,887 @@
// m32 script test & show-off file
// do "include a" in the console
include names.h
// flag 1: per-block (top-level, event, or state) variable
gamevar i 0 1
gamevar j 0 1
gamevar k 0 1
gamevar l 0 1
gamevar m 0 1
gamevar p 0 1
gamevar q 0 1
gamevar r 0 1
gamevar x 0 0
gamevar y 0 0
gamevar z 0 0
gamevar gi 0 0
gamevar gj 0 0
gamevar gk 0 0
gamevar dx 0 0
gamevar dy 0 0
gamevar dz 0 0
gamevar dang 0 0
gamevar tmp 0 0
gamevar cnt 0 0
gamevar davr 65536 0
gamevar dayx 65536 0
gamevar drawcol 9 0
define TQUOTE 3
definequote 0 OK
definequote 1 DAMN
definequote 2 BU:%d ABS:%d
definequote TQUOTE write on me!
definequote 4 ASPECT: VR=%d, YX=%d
definequote 5 ALPHA KEY: %d (SCANCODE: %d)
definequote 6 time: %d ms
definequote 7 door sector not an island sector!
definequote 8 door sector has no SE sprite!
//light sector x y z range r g b radi fade angle horiz mins maxs prio tile
definequote 9 light %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d
definequote 10 --PRLIGHTS--
definequote 11 --ENDPRLIGHTS--
definequote 12 RED:
definequote 13 GREEN:
definequote 14 BLUE:
definequote 15 x/yoffset: %d %d
definequote 16 (r/g/b)color: %d %d %d
definequote 17 PICNUM:
definequote 18 NUMBER KEY: %d (SCANCODE: %d)
// Corruption checker
definequote 19 PANIC!!! SECTOR OR WALL LIMIT EXCEEDED!!!
definequote 20 SECTOR[%d].WALLPTR=%d out of range: numwalls=%d!!!
definequote 21 SECTOR[%d].WALLPTR=%d inconsistent, expected %d!!!
definequote 22 SECTOR[%d]: wallptr+wallnum=%d out of range: numwalls=%d!!!
definequote 23 WALL[%d].POINT2=%d out of range: sector[%d].wallptr=%d, endwall=%d!!!
definequote 24 WALL[%d].NEXTWALL=%d out of range: numwalls=%d!!!
definequote 25 WALL[%d].NEXTSECTOR=%d out of range: numsectors=%d!!!
definequote 26 FLOAT ACCESS TEST
definequote 27 OVERRIDE POLYMER PARALLAX & SPECULAR: OFF
definequote 28 OVERRIDE POLYMER PARALLAX & SPECULAR: ON
definequote 29 PARALLAX SCALE: %f
definequote 30 PARALLAX BIAS: %f
definequote 31 SPECULAR FACTOR: %f
definequote 32 SPECULAR POWER: %f
define PRSCALE 1000
// NOTE: inline constants >=32768 are sometimes broken ATM (when loading a second time?).
// This should always work
define MAXSPECULAR 100000
gamearray ar 128
gamearray parm 8
// various tests of m32-script features
defstate tests
// array test
getarraysize ar tmp
resizearray ar 65536
getticks parm[2]
for j range 65536
set ar[j] j
set i 0
for j range 65536
add i ar[j]
getticks parm[3]
resizearray ar tmp
ife i 2147450880 quote 0 else quote 1
sub parm[3] parm[2]
qsprintf TQUOTE 6 parm[3]
quote TQUOTE
// iteration and break test
for i range 10
{
addlogvar i
ife i 5 break
}
ife i 5 quote 0 else quote 1
quote 26
set tmp pr_parallaxscale
set gi tmp set gj tmp set gk tmp
al gi al gj al gk
ftoi gi 20 ftoi gj 200 ftoi gk 2000
al gi al gj al gk
mul gk 2
itof gk 2000
ends
// prints out maphack light definitions based on SE lights in map
defstate printlights
print 10
for i allsprites, ifactor SECTOREFFECTOR, ifge .lotag 49, ifle .lotag 50
{
ife .lotag 50
{
set j 128, sub j .shade, shiftl j 1
set k j, mul k 3, div k 4
}
else
{
set j 0, set k 0
}
set l 0
ifand .cstat 2
{
ifand .cstat 512
set l 4
else
set l 2
}
qsprintf TQUOTE 9 .sectnum .x .y .z .hitag .xvel .yvel .zvel
j k .ang .extra .xoffset .yoffset l .owner
print TQUOTE
}
print 11
ends
// convenient polymer SE light manipulation with keypad keys
// when aiming at light SE (49 or 50):
// KP 4,5,6,8: angle/horiz
// KP 7,9: range
// KP+/-: radius
// KP 1,2,3: RGB color (Shift inverts)
//
// when aiming at wall or sector:
// KP/ enable/disable overrides
// when overrides are on:
// KP 4,7: parallaxscale
// KP 8,9: parallaxbias
// KP 1,2: specularfactor
// KP 3,6: specularpower
//
// Also try Shift and/or Ctrl modifiers for different increments
defstate fiddlewithlights
ife searchstat 3 nullop else
{
ifhitkey KEY_gSLASH
{
ife pr_overrideparallax 0
{
set pr_overrideparallax 1
set pr_overridespecular 1
quote 28
}
else
{
set pr_overrideparallax 0
set pr_overridespecular 0
quote 27
}
}
}
// if aiming at sector or wall
ife searchstat 3 nullop
else ifn pr_overrideparallax 0
{
// polymer override parallaxscale
set j 0 set k 0
ifhitkey KEY_KP4 set j -1
ifhitkey KEY_KP7 set j 1
ifn j 0 set k 1
ifhitkey KEY_KP8 set j -1
ifhitkey KEY_KP9 set j 1
ife k 0 ifn j 0 set k 2
ifhitkey KEY_KP1 set j -1
ifhitkey KEY_KP2 set j 1
ife k 0 ifn j 0 set k 3
ifhitkey KEY_KP3 set j -1
ifhitkey KEY_KP6 set j 1
ife k 0 ifn j 0 set k 4
ifeithershift mul j 2 else mul j 10
ifeitherctrl mul j 10
switch k
case 0: break;
case 1:
{
set k pr_parallaxscale
ftoi k PRSCALE // must convert to scaled integer, scale is 1:PRSCALE
add k j, clamp k -10000 10000
itof k PRSCALE // convert back
qsprintf TQUOTE 29 k, quote TQUOTE
set pr_parallaxscale k
break;
}
case 2:
{
set k pr_parallaxbias
ftoi k PRSCALE, add k j, clamp k -10000 10000, itof k PRSCALE
qsprintf TQUOTE 30 k, quote TQUOTE
set pr_parallaxbias k
break;
}
case 3:
{
set k pr_specularfactor
ftoi k PRSCALE, add k j, clamp k -10000 MAXSPECULAR, itof k PRSCALE
qsprintf TQUOTE 31 k, quote TQUOTE
set pr_specularfactor k
break;
}
case 4:
{
set k pr_specularpower
ftoi k PRSCALE, add k j, clamp k -10000 MAXSPECULAR, itof k PRSCALE
qsprintf TQUOTE 32 k, quote TQUOTE
set pr_specularpower k
break;
}
endswitch
}
// if aiming at an SE with lotag 49 or 50
ife searchstat 3 ife sprite[searchwall].picnum SECTOREFFECTOR
ifge sprite[searchwall].lotag 49 ifle sprite[searchwall].lotag 50
{
set i searchwall, seti i // set current sprite = targeted sprite
// horiz
ifeithershift set j 1 else set j 10
ifhitkey KEY_gUP add .extra j
else ifhitkey KEY_gKP5 sub .extra j
clamp .extra -500 500
// angle
set j 128
ifeitherctrl set j 4
ifeithershift { ifeitherctrl set j 1 else set j 32 }
ifhitkey KEY_gLEFT sub .ang j
else ifhitkey KEY_gRIGHT add .ang j
// range
ifeithershift set j 10
else ifeitherctrl set j 1000
else set j 100
ifhitkey KEY_gPGUP add .hitag j
else ifhitkey KEY_gHOME sub .hitag j
clamp .hitag 0 16000
// radius
ifeitherctrl
{
ifholdkey KEY_gMINUS add .shade 9
else ifholdkey KEY_gPLUS sub .shade 9
clamp .shade -118 117
}
// min/max shade
ifeithershift set j -1 else set j 1
ifeitherctrl
{
ifhitkey KEY_gSLASH
{
set .xoffset 0
set .yoffset 0
}
}
else
{
set k 0
ifhitkey KEY_gSLASH { add .xoffset j, set k 1 }
else ifhitkey KEY_gSTAR { add .yoffset j, set k 1 }
ife k 1
{
qsprintf TQUOTE 15 .xoffset .yoffset
quote TQUOTE
}
}
// color/picnum
ifeitheralt
{
ifhitkey KEY_gEND
{
getnumber256 .xvel 12 255
getnumber256 .yvel 13 255
getnumber256 .zvel 14 255
}
else ifhitkey KEY_gDOWN
{
getnumber256 .owner 17 -MAXTILES
}
}
else
{
ifeitherctrl set j 1 else set j 10
ifeithershift inv j
set k 0
ifhitkey KEY_gEND { add .xvel j, set k 1 }
ifhitkey KEY_gDOWN { add .yvel j, set k 1 }
ifhitkey KEY_gPGDN { add .zvel j, set k 1 }
ife k 1
{
clamp .xvel 1 255
clamp .yvel 1 255
clamp .zvel 1 255
qsprintf TQUOTE 16 .xvel .yvel .zvel
quote TQUOTE
}
}
}
ends
/*
defstate testkeyavail
for i range 27
{
ifholdkey alphakeys[i]
{
qsprintf TQUOTE 5 i alphakeys[i]
quote TQUOTE
}
}
for i range 10
{
ifholdkey numberkeys[i]
{
qsprintf TQUOTE 18 i numberkeys[i]
quote TQUOTE
}
}
ends
*/
// rotate highlighted sprites around selected (closest to mouse) sprite
// global parameter: dang
defstate rotselspr
ifg highlightcnt 0
ifge pointhighlight 16384, ifl pointhighlight 32768
{
ife dang 0 return
set p pointhighlight, and p 16383
add sprite[p].ang dang
for i selsprites, ifn i p
{
rotatepoint sprite[p].x sprite[p].y .x .y dang (x y)
add .ang dang
bsetsprite I x y .z
}
}
ends
onevent EVENT_PREKEYS2D
// state testkeyavail
set j 0
ifeitherctrl
{
ifhitkey KEY_COMMA set j -1
ifhitkey KEY_PERIOD set j 1
}
ifn j 0
{
mul j 512
set dang j
state rotselspr
}
endevent
onevent EVENT_PREKEYS3D
// state testkeyavail
state fiddlewithlights
endevent
defstate setas
set j dayx
mul j ydim mul j 8
div j xdim div j 5
setaspect davr j
ends
onevent EVENT_ENTER3DMODE
state setas
endevent
defstate cmp_by_lotag // comparator subroutine for sorting
set RETURN sprite[SV2].lotag
sub RETURN sprite[SV1].lotag
ends
onevent EVENT_DRAW2DSCREEN
ifl cursectnum 0 return
// connect LOCATORS in a sector by lines
getarraysize ar tmp
set j 0
for i spritesofsector cursectnum
{
ifge j tmp nullop else
ifactor LOCATORS
{
set ar[j] i
add j 1
}
}
set tmp j
sort ar tmp cmp_by_lotag
sub tmp 1
for i range tmp
{
set j ar[i]
set k i, add k 1, set k ar[k]
drawline16b sprite[j].x sprite[j].y sprite[k].x sprite[k].y drawcol
}
/*
set drawlinepat -1
for i allsprites
ifactor LIZTROOP
drawcircle16b sprite[i].x sprite[i].y 256 drawcol
*/
endevent
// LOCATORS auto-incrementer
onevent EVENT_INSERTSPRITE2D
set k I
set j -1
for i spritesofsector .sectnum
{
ifn i k, ifactor LOCATORS, ifg .lotag j
set j .lotag
}
ifg j -1
{
add j 1
set .lotag j
}
endevent
//////////////////// SPRITE DUPLICATORS ////////////////////
defstate transcnt
ifle cnt 0 { inv cnt, add cnt 128 }
ends
define DUP_ROT_MAGIC 123
// duplicates and rotates selected sprites around
// pivot sprite with fields
// .extra=123 (magic)
// .ang: angle delta
// .yrepeat*32: z delta (positive if pal!=0, i.e. going down)
// .shade: count (-128 to 0 -> 255 to 128)
defstate duprot
ifn searchstat 3 return
ifn sprite[searchwall].extra DUP_ROT_MAGIC return
set p searchwall // pivot sprite
set cnt sprite[p].shade, state transcnt
set sprite[p].extra -1
for i range cnt
{
for j selsprites, ifn j p
{
dupsprite j // duplicate sprite j, I becomes index of newly created sprite
set dang i, add dang 1, mul dang sprite[p].ang
rotatepoint sprite[p].x sprite[p].y .x .y dang (x y)
add .ang dang
set z i, add z 1, mul z sprite[p].yrepeat, shiftl z 5
ife sprite[p].pal 0, inv z
add z .z
bsetsprite I x y z
}
}
ends
// same as above but with tsprite[], as a kind of preview
defstate tduprot
ifn searchstat 3 return
ifn sprite[searchwall].extra DUP_ROT_MAGIC return
set p searchwall // pivot sprite
set cnt sprite[p].shade, state transcnt
for i range cnt
{
for j selsprites, ifn j p
{
set k spritesortcnt
tdupsprite j
set dang i, add dang 1, mul dang sprite[p].ang
rotatepoint sprite[p].x sprite[p].y tsprite[k].x tsprite[k].y dang (x y)
add tsprite[k].ang dang
set z i, add z 1, mul z sprite[p].yrepeat, shiftl z 5
ife sprite[p].pal 0 inv z
add z tsprite[k].z
set tsprite[k].x x
set tsprite[k].y y
set tsprite[k].z z
or tsprite[k].cstat 514
}
}
ends
define DUP_LIN_MAGIC 234
define DUP_LIN_MAGIC2 345
// duplicates and translates selected sprites in the direction between two
// reference sprites with fields
// .extra=234 (1st sprite), =345 (2nd, aimed at sprite)
// .shade: count (-128 to 0 -> 255 to 128)
defstate duplin
ifn searchstat 3 return
ifn sprite[searchwall].extra DUP_LIN_MAGIC2 return
set r searchwall // 2nd reference point
set cnt sprite[r].shade, state transcnt
set p -1 // 1st reference point
for i selsprites, ifn i r
{
ife .extra DUP_LIN_MAGIC { set p i, break }
}
ifl p 0 return
set sprite[p].extra -1
set sprite[r].extra -1
set dx sprite[r].x, sub dx sprite[p].x
set dy sprite[r].y, sub dy sprite[p].y
set dz sprite[r].z, sub dz sprite[p].z
for i range cnt
{
for j selsprites, ifn j r
{
dupsprite j
set x i, add x 1, mul x dx, add x .x
set y i, add y 1, mul y dy, add y .y
set z i, add z 1, mul z dz, add z .z
bsetsprite I x y z
}
}
ends
defstate tduplin
ifn searchstat 3 return
ifn sprite[searchwall].extra DUP_LIN_MAGIC2 return
set r searchwall // 2nd reference point
set cnt sprite[r].shade, state transcnt
set p -1 // 1st reference point
for i selsprites, ifn i r
{
ife .extra DUP_LIN_MAGIC { set p i, break }
}
ifl p 0 return
set dx sprite[r].x, sub dx sprite[p].x
set dy sprite[r].y, sub dy sprite[p].y
set dz sprite[r].z, sub dz sprite[p].z
for i range cnt
{
for j selsprites, ifn j r
{
set k spritesortcnt
tdupsprite j
set tmp i, add tmp 1, mul tmp dx
add tsprite[k].x tmp
set tmp i, add tmp 1, mul tmp dy
add tsprite[k].y tmp
set tmp i, add tmp 1, mul tmp dz
add tsprite[k].z tmp
or tsprite[k].cstat 514
// bsetsprite I x y z
}
}
ends
onevent EVENT_ANALYZESPRITES
state tduprot
state tduplin
/*
for i drawnsprites
{
set j tsprite[i].owner
switch sprite[j].picnum
case LIZTROOP spritepal 1 break
case PIGCOP spritepal 2 break
case BOSS1 spritepal 6 break
endswitch
}
*/
endevent
onevent EVENT_KEYS3D
// door sound tester
ife searchstat 0
ifholdkey KEY_SPACE
{
set k wall[searchwall].nextsector
ifl k 0 set k searchsector
ife sector[k].lotag 0 return
for i spritesofsector k
{
ifactor MUSICANDSFX
ifge .lotag 0 ifl .lotag MAXSOUNDS
{
getsoundflags .lotag m
ifand m 1 nullop else soundonce .lotag
}
}
}
// swinging doors tester -- hit space on a door wall
ife searchstat 0
ifhitkey KEY_SPACE // SE11 ST23 up:ccw
{
set k wall[searchwall].nextsector
ifl k 0 return
ifn sector[k].lotag 23 return
set tmp 0
for i loopofwall searchwall
{
ifl wall[i].nextsector 0 set tmp 1 else
ifn wall[i].nextsector k set tmp 1
}
// a weaker condition
// for i loopofwall wall[searchwall].nextwall
// {
// ifl wall[i].nextsector 0 set tmp 1 else
// ifn wall[i].nextsector searchsector set tmp 1
// }
ifn tmp 0
{
quote 7
return
}
set l -1
for i spritesofsector k
{
ifactor SECTOREFFECTOR ife sprite[i].lotag 11
{
set l i
ifn sprite[i].ang 512 ifn sprite[i].ang 1024 ifn sprite[i].ang 1536 set l -1
}
}
ifl l 0
{
quote 8
return
}
for tmp wallsofsector k
{
rotatepoint (sprite[l].x sprite[l].y) (wall[tmp].x wall[tmp].y) sprite[l].ang (i j)
dragpoint tmp i j
}
for tmp spritesofsector k
{
ifn tmp l
{
rotatepoint (sprite[l].x sprite[l].y) (sprite[tmp].x sprite[tmp].y) sprite[l].ang (i j)
bsetsprite tmp i j sprite[tmp].z
}
}
inv sprite[l].ang
}
// teleporter -- works on SE7 and SE17 (elevator)
ife searchstat 3
ifhitkey KEY_SPACE
{
ife sprite[searchwall].picnum SECTOREFFECTOR
{
set tmp 0
ife sprite[searchwall].lotag 7 set tmp 1
ife sprite[searchwall].lotag 17 set tmp 1
ife tmp 0 return
for i allsprites
{
ifn i searchwall, ifactor SECTOREFFECTOR, ife sprite[i].lotag sprite[searchwall].lotag
ife sprite[i].hitag sprite[searchwall].hitag
{
add posx sprite[i].x, sub posx sprite[searchwall].x
add posy sprite[i].y, sub posy sprite[searchwall].y
add posz sprite[i].z, sub posz sprite[searchwall].z
updatecursectnum
return
}
}
}
else ife sprite[searchwall].extra DUP_ROT_MAGIC
{
state duprot
}
else ife sprite[searchwall].extra DUP_LIN_MAGIC2
{
state duplin
}
}
ifholdkey KEY_0
// ife 0 1
{
ifeithershift sub davr 512 else add davr 512
ifl davr 32768 set davr 32768
ifg davr 256000 set davr 256000
setaspect davr yxaspect
qsprintf TQUOTE 4 davr yxaspect
quote TQUOTE
}
endevent
defstate replacestuff
for i spritesofsector searchsector
// ife sprite[i].picnum AMMO set sprite[i].picnum BATTERYAMMO
ifactor parm[0] cactor parm[1]
ends
defstate convlights // convert (0,0,0) lights to (255,255,255)-ones
for i allsprites ifactor 1 ifge .lotag 49 ifle .lotag 50 ife .xvel 0 ife .yvel 0 ife .zvel 0
{ set .xvel 255 set .yvel 255 set .zvel 255 }
ends
defstate resetallws // reset all sprites and walls to default repeat/panning
for i allsprites
{
set .xrepeat 64
set .yrepeat 64
}
for i allwalls
{
set wall[i].cstat 0
set wall[i].xpanning 0
set wall[i].ypanning 0
set wall[i].yrepeat 8
fixrepeats i
}
ends
defstate jumptosec // (tmp)
for i allsectors
{
ife i tmp
{
set j sector[i].wallptr
set posx wall[j].x
set posy wall[j].y
}
}
ends
// Map corruption checker
gamevar ewall 0 0
gamevar endwall 0 0
defstate corruptchk
ifle numsectors MAXSECTORS ifle numwalls MAXWALLS nullop else
{ quote 19 printmessage16 19 return }
set ewall 0 // expected wall index
for i allsectors
{
set k 1
ifge sector[i].wallptr 0 ifl sector[i].wallptr numwalls nullop else
{
qsprintf TQUOTE 20 i sector[i].wallptr numwalls
quote TQUOTE printmessage16 TQUOTE
set k 0
}
ifn ewall sector[i].wallptr
{
qsprintf TQUOTE 21 i sector[i].wallptr ewall
quote TQUOTE printmessage16 TQUOTE
set ewall sector[i].wallptr
}
add ewall sector[i].wallnum
set endwall sector[i].wallptr add endwall sector[i].wallnum
ifg endwall numwalls
{
qsprintf TQUOTE 22 i endwall numwalls
quote TQUOTE printmessage16 TQUOTE
set k 0
}
ifn k 0
{
for j wallsofsector i
{
ifge wall[j].point2 sector[i].wallptr ifl wall[i].point2 endwall nullop else
{
qsprintf TQUOTE 23 j wall[j].point2 i sector[i].wallptr endwall
quote TQUOTE printmessage16 TQUOTE
}
ifge wall[i].nextwall numwalls
{
qsprintf TQUOTE 24 j wall[j].nextwall numwalls
quote TQUOTE printmessage16 TQUOTE
}
ifge wall[i].nextsector numsectors
{
qsprintf TQUOTE 25 j wall[j].nextsector numsectors
quote TQUOTE printmessage16 TQUOTE
}
}
}
}
ends

View file

@ -0,0 +1,69 @@
// Duke Nukem 3D Sample Defs file
//
// For an explanation of the contents of this file, read releasenotes.html
// in the section titled "DEF-file Language"
include DEFS.CON
// These entries define Hightile tints
// definetint <pal> <r> <g> <b> <effects>
definetint 1 110 110 255 1
definetint 2 255 110 80 1
definetint 4 0 0 0 0
definetint 6 192 255 138 3
definetint 7 228 200 172 0
definetint 8 180 255 200 0
// This entry defines a texture replacement
// definetexture <tilenum> <pal> 0 0 -1 -1 <filename>
//definetexture FEMPIC7 0 0 0 -1 -1 "textures/rikaa.png"
// These entries demonstrate replacing the Pig Cop character with a model
// Editart tile indices:
// walk 2000-2019
// pump 2025-2027
// stand 2030-2034
// shoot 2035-2037
// dive 2040-2044
// dived 2045-2049
// dshoot 2050-2052
// hit 2055
// die 2056-2059
// dead 2060
// definemodel <filename> <scale> <shadeoffs>
// defineskin <palette> <filename>
// definemodelanim <startframe> <endframe> <fps> <flags>
// definemodelframe <framename> <starttile> <endtile>
definemodel "models/pigcop.md2" 1.30 0
definemodelskin 0 "models/pigcop.jpg"
definemodelanim "walk0" "walk13" 20 0
definemodelframe "walk0" 2000 2019
definemodelanim "pump0" "pump2" 10 1
definemodelframe "pump0" 2025 2027
definemodelframe "stand" 2030 2034
definemodelanim "shoot0" "shoot2" 10 1
definemodelframe "shoot0" 2035 2037
definemodelanim "dive0" "dive3" 8 1
definemodelframe "dive0" 2040 2044
definemodelframe "dive3" 2045 2049
definemodelanim "dshoot0" "dshoot2" 10 1
definemodelframe "dshoot0" 2050 2052
definemodelframe "die0" 2055 2055
definemodelanim "die1" "dead" 13 1
definemodelframe "die1" 2056 2059
definemodelframe "dead" 2060 2060
// These entries demonstrate voxel replacements
// definevoxel <filename>
// definevoxeltiles <starttile> <endtile>
//definevoxel "voxels/barstool.kvx"
//definevoxeltiles 1006 1006

View file

@ -0,0 +1,389 @@
// include this file at the top of your game.con or eduke.con
// Game Events
// SYNTAX:
//
// onevent <eventid>
// {
// ... actions
// }
// endevent
// Internal event IDs
/*
enum events {
EVENT_INIT,
EVENT_ENTERLEVEL,
EVENT_RESETWEAPONS,
EVENT_RESETINVENTORY,
EVENT_HOLSTER,
EVENT_LOOKLEFT,
EVENT_LOOKRIGHT,
EVENT_SOARUP,
EVENT_SOARDOWN,
EVENT_CROUCH,
EVENT_JUMP,
EVENT_RETURNTOCENTER,
EVENT_LOOKUP,
EVENT_LOOKDOWN,
EVENT_AIMUP,
EVENT_FIRE,
EVENT_CHANGEWEAPON,
EVENT_GETSHOTRANGE,
EVENT_GETAUTOAIMANGLE,
EVENT_GETLOADTILE,
EVENT_CHEATGETSTEROIDS,
EVENT_CHEATGETHEAT,
EVENT_CHEATGETBOOT,
EVENT_CHEATGETSHIELD,
EVENT_CHEATGETSCUBA,
EVENT_CHEATGETHOLODUKE,
EVENT_CHEATGETJETPACK,
EVENT_CHEATGETFIRSTAID,
EVENT_QUICKKICK,
EVENT_INVENTORY,
EVENT_USENIGHTVISION,
EVENT_USESTEROIDS,
EVENT_INVENTORYLEFT,
EVENT_INVENTORYRIGHT,
EVENT_HOLODUKEON,
EVENT_HOLODUKEOFF,
EVENT_USEMEDKIT,
EVENT_USEJETPACK,
EVENT_TURNAROUND,
EVENT_DISPLAYWEAPON,
EVENT_FIREWEAPON,
EVENT_SELECTWEAPON,
EVENT_MOVEFORWARD,
EVENT_MOVEBACKWARD,
EVENT_TURNLEFT,
EVENT_TURNRIGHT,
EVENT_STRAFELEFT,
EVENT_STRAFERIGHT,
EVENT_WEAPKEY1,
EVENT_WEAPKEY2,
EVENT_WEAPKEY3,
EVENT_WEAPKEY4,
EVENT_WEAPKEY5,
EVENT_WEAPKEY6,
EVENT_WEAPKEY7,
EVENT_WEAPKEY8,
EVENT_WEAPKEY9,
EVENT_WEAPKEY10,
EVENT_DRAWWEAPON,
EVENT_DISPLAYCROSSHAIR,
EVENT_DISPLAYREST,
EVENT_RESETPLAYER,
EVENT_INCURDAMAGE,
EVENT_AIMDOWN,
EVENT_GAME,
EVENT_PREVIOUSWEAPON,
EVENT_NEXTWEAPON,
EVENT_SWIMUP,
EVENT_SWIMDOWN,
EVENT_GETMENUTILE,
EVENT_SPAWN,
EVENT_LOGO,
EVENT_EGS,
EVENT_DOFIRE,
EVENT_PRESSEDFIRE,
EVENT_USE,
EVENT_PROCESSINPUT
};
*/
// Internal projectile stuff
/*
enum projectilelabels {
PROJ_WORKSLIKE,
PROJ_SPAWNS,
PROJ_SXREPEAT,
PROJ_SYREPEAT,
PROJ_SOUND,
PROJ_ISOUND,
PROJ_VEL,
PROJ_EXTRA,
PROJ_DECAL,
PROJ_TRAIL,
PROJ_TXREPEAT,
PROJ_TYREPEAT,
PROJ_TOFFSET,
PROJ_TNUM,
PROJ_DROP,
PROJ_CSTAT,
PROJ_CLIPDIST,
PROJ_SHADE,
PROJ_XREPEAT,
PROJ_YREPEAT,
PROJ_PAL,
PROJ_EXTRA_RAND,
PROJ_HITRADIUS,
PROJ_VEL_MULT,
PROJ_OFFSET,
PROJ_BOUNCES,
PROJ_BSOUND,
PROJ_RANGE
};
*/
// Variable definition Flags
#define GAMEVAR_FLAG_GLOBAL 0 // global variable (default)
#define GAMEVAR_FLAG_PERPLAYER 1 // per-player variable
#define GAMEVAR_FLAG_PERACTOR 2 // per-actor variable
// Weapon Flags
// 1 Holstering Clears Clip
// 2 Glows
// 4 Automatic
// 8 Fire Every other frame
// 16 Fire Every third frame
// 32 Random restart on automatic
// 64 Use Ammo per burst
// 128 Is a Bomb trigger
// 256 Using does NOT cause player to become 'visible'
// 512 Use 'throws' the 'shoots' item
// 1024 Check weapon availability at 'reload' time
// 2048 player should stop jumping
// 0 Spawn Type 1 (pistol shells)
// 4096 Spawn Type 2 (Shotgun shells)
// 8192 Spawn Type 3 (CHAINGUN shells)
// 16384 Semi-automatic
// 32768 Pistol reload sound hack
// 65536 Cycle kickback_pic back to 1 if fire is held down, else set to 0
// TRIPBOMB_CONTROL
// 1 Tripwire. Trip Bomb works with tripwire.
// 2 On timer. Trip Bomb works on timer
// PIPEBOMB_CONTROL
// 1 Detonator. Pipe Bomb works with detonator.
// 2 On timer. Pipe Bomb works on timer
gamevar WEAPON0_WORKSLIKE 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON0_CLIP 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON0_RELOAD 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON0_FIREDELAY 7 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON0_TOTALTIME 14 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON0_HOLDDELAY 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON0_FLAGS 292 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON0_SHOOTS 2521 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON0_SPAWNTIME 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON0_SPAWN 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON0_SHOTSPERBURST 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON0_INITIALSOUND 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON0_FIRESOUND 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON0_SOUND2TIME 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON0_SOUND2SOUND 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON0_RELOADSOUND1 4 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON0_RELOADSOUND2 5 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON1_WORKSLIKE 1 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON1_CLIP 12 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON1_RELOAD 27 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON1_FIREDELAY 2 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON1_TOTALTIME 5 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON1_HOLDDELAY 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON1_FLAGS 32768 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON1_SHOOTS 2595 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON1_SPAWNTIME 2 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON1_SPAWN 2533 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON1_SHOTSPERBURST 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON1_INITIALSOUND 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON1_FIRESOUND 3 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON1_SOUND2TIME 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON1_SOUND2SOUND 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON1_RELOADSOUND1 4 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON1_RELOADSOUND2 5 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON2_WORKSLIKE 2 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON2_CLIP 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON2_RELOAD 13 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON2_FIREDELAY 4 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON2_TOTALTIME 30 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON2_HOLDDELAY 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON2_FLAGS 1024 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON2_SHOOTS 2613 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON2_SPAWNTIME 24 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON2_SPAWN 2535 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON2_SHOTSPERBURST 7 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON2_INITIALSOUND 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON2_FIRESOUND 109 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON2_SOUND2TIME 15 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON2_SOUND2SOUND 169 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON2_RELOADSOUND1 4 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON2_RELOADSOUND2 5 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON3_WORKSLIKE 3 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON3_CLIP 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON3_RELOAD 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON3_FIREDELAY 3 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON3_TOTALTIME 12 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON3_HOLDDELAY 3 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON3_FLAGS 73812 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON3_SHOOTS 2536 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON3_SPAWNTIME 1 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON3_SPAWN 2533 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON3_SHOTSPERBURST 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON3_INITIALSOUND 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON3_FIRESOUND 6 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON3_SOUND2TIME 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON3_SOUND2SOUND 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON3_RELOADSOUND1 4 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON3_RELOADSOUND2 5 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON4_WORKSLIKE 4 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON4_CLIP 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON4_RELOAD 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON4_FIREDELAY 4 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON4_TOTALTIME 20 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON4_HOLDDELAY 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON4_FLAGS 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON4_SHOOTS 2605 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON4_SPAWNTIME 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON4_SPAWN 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON4_SHOTSPERBURST 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON4_INITIALSOUND 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON4_FIRESOUND 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON4_SOUND2TIME 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON4_SOUND2SOUND 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON4_RELOADSOUND1 4 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON4_RELOADSOUND2 5 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON5_WORKSLIKE 5 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON5_CLIP 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON5_RELOAD 30 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON5_FIREDELAY 6 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON5_TOTALTIME 19 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON5_HOLDDELAY 12 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON5_FLAGS 512 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON5_SHOOTS 26 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON5_SPAWNTIME 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON5_SPAWN 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON5_SHOTSPERBURST 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON5_INITIALSOUND 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON5_FIRESOUND 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON5_SOUND2TIME 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON5_SOUND2SOUND 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON5_RELOADSOUND1 4 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON5_RELOADSOUND2 5 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON6_WORKSLIKE 6 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON6_CLIP 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON6_RELOAD 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON6_FIREDELAY 10 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON6_TOTALTIME 12 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON6_HOLDDELAY 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON6_FLAGS 2 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON6_SHOOTS 2556 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON6_SPAWNTIME 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON6_SPAWN 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON6_SHOTSPERBURST 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON6_INITIALSOUND 11 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON6_FIRESOUND 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON6_SOUND2TIME 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON6_SOUND2SOUND 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON6_RELOADSOUND1 4 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON6_RELOADSOUND2 5 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON7_WORKSLIKE 7 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON7_CLIP 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON7_RELOAD 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON7_FIREDELAY 3 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON7_TOTALTIME 6 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON7_HOLDDELAY 5 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON7_FLAGS 72 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON7_SHOOTS 2605 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON7_SPAWNTIME 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON7_SPAWN 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON7_SHOTSPERBURST 2 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON7_INITIALSOUND 10 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON7_FIRESOUND 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON7_SOUND2TIME 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON7_SOUND2SOUND 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON7_RELOADSOUND1 4 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON7_RELOADSOUND2 5 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON8_WORKSLIKE 8 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON8_CLIP 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON8_RELOAD 16 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON8_FIREDELAY 3 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON8_TOTALTIME 16 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON8_HOLDDELAY 7 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON8_FLAGS 3072 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON8_SHOOTS 2563 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON8_SPAWNTIME 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON8_SPAWN 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON8_SHOTSPERBURST 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON8_INITIALSOUND 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON8_FIRESOUND 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON8_SOUND2TIME 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON8_SOUND2SOUND 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON8_RELOADSOUND1 4 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON8_RELOADSOUND2 5 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON9_WORKSLIKE 9 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON9_CLIP 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON9_RELOAD 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON9_FIREDELAY 3 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON9_TOTALTIME 5 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON9_HOLDDELAY 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON9_FLAGS 65536 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON9_SHOOTS 1641 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON9_SPAWNTIME 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON9_SPAWN 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON9_SHOTSPERBURST 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON9_INITIALSOUND 10 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON9_FIRESOUND 10 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON9_SOUND2TIME 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON9_SOUND2SOUND 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON9_RELOADSOUND1 4 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON9_RELOADSOUND2 5 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON10_WORKSLIKE 10 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON10_CLIP 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON10_RELOAD 10 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON10_FIREDELAY 2 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON10_TOTALTIME 10 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON10_HOLDDELAY 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON10_FLAGS 384 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON10_SHOOTS 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON10_SPAWNTIME 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON10_SPAWN 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON10_SHOTSPERBURST 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON10_INITIALSOUND 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON10_FIRESOUND 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON10_SOUND2TIME 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON10_SOUND2SOUND 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON10_RELOADSOUND1 4 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON10_RELOADSOUND2 5 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON11_WORKSLIKE 11 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON11_CLIP 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON11_RELOAD 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON11_FIREDELAY 4 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON11_TOTALTIME 5 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON11_HOLDDELAY 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON11_FLAGS 2 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON11_SHOOTS 2448 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON11_SPAWNTIME 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON11_SPAWN 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON11_SHOTSPERBURST 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON11_INITIALSOUND 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON11_FIRESOUND 388 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON11_SOUND2TIME 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON11_SOUND2SOUND 0 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON11_RELOADSOUND1 4 GAMEVAR_FLAG_PERPLAYER
gamevar WEAPON11_RELOADSOUND2 5 GAMEVAR_FLAG_PERPLAYER
gamevar GRENADE_LIFETIME 120 GAMEVAR_FLAG_PERPLAYER
gamevar GRENADE_LIFETIME_VAR 30 GAMEVAR_FLAG_PERPLAYER
gamevar STICKYBOMB_LIFETIME 120 GAMEVAR_FLAG_PERPLAYER
gamevar STICKYBOMB_LIFETIME_VAR 30 GAMEVAR_FLAG_PERPLAYER
gamevar TRIPBOMB_CONTROL 1 GAMEVAR_FLAG_PERPLAYER // set value to 2 for timed bomb
gamevar PIPEBOMB_CONTROL 1 GAMEVAR_FLAG_PERPLAYER // set value to 2 for grenade behavior

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,219 @@
// Mapster32 tile grouping configuration file
// Press T on the tile selection screen to access the tileset selection menu
#include "names.h"
tilegroup "Player"
{
hotkey "P"
// Colors are the colors for Blocking OFF and Blocking ON.
colors 2 2
tiles
{
APLAYER
}
}
tilegroup "Actors"
{
hotkey "A"
colors 31 31
tiles
{
LIZTROOP LIZTROOPRUNNING LIZTROOPSTAYPUT LIZTROOPSHOOT LIZTROOPJETPACK
LIZTROOPONTOILET LIZTROOPJUSTSIT LIZTROOPDUCKING
PIGCOP PIGCOPSTAYPUT PIGCOPDIVE
LIZMAN LIZMANSTAYPUT LIZMANSPITTING LIZMANFEEDING LIZMANJUMP
COMMANDER COMMANDERSTAYPUT
OCTABRAIN OCTABRAINSTAYPUT
ORGANTIC
DRONE
NEWBEAST NEWBEASTSTAYPUT NEWBEASTHANG NEWBEASTJUMP
EGG GREENSLIME ROTATEGUN RECON TANK BOUNCEMINE
FLOORFLAME
// FEMS
FEM1 FEM2 FEM3 FEM4 FEM5 FEM6 FEM7 FEM8 FEM9 FEM10 NAKED1
// Lil' critters
SHARK
// BIG critters
BOSS1 BOSS1STAYPUT BOSS1SHOOT BOSS1LOB
BOSS2
BOSS3
BOSS4 BOSS4STAYPUT
}
}
tilegroup "Doors"
{
hotkey "D"
tiles
{
DOORTILE1 DOORTILE2 DOORTILE3 DOORTILE4 DOORTILE5
DOORTILE6 DOORTILE7 DOORTILE8 DOORTILE9 DOORTILE10
312 313 314 345
DOORTILE22 DOORTILE18 DOORTILE19 DOORTILE20
450 455 457 458 459 469 470 477
DOORTILE14
719 735 771
DOORTILE16
843 858 883
DOORTILE15 DOORTILE21
1173
DOORTILE11 DOORTILE12
353 355
// Related items
DOORSHOCK ACCESSCARD
}
}
tilegroup "Effectors"
{
hotkey "E"
tilerange 1 10
colors 15 15
}
tilegroup "Switches"
{
hotkey "S"
tiles
{
ACCESSSWITCH ACCESSSWITCH2 ACCESSCARD SLOTDOOR LIGHTSWITCH SPACEDOORSWITCH SPACELIGHTSWITCH
FRANKENSTINESWITCH MULTISWITCH
DIPSWITCH DIPSWITCH2 DIPSWITCH3 TECHSWITCH
LIGHTSWITCH2 713 // LIGHTSWITCH2+1
POWERSWITCH1 LOCKSWITCH1 POWERSWITCH2 HANDSWITCH PULLSWITCH
ALIENSWITCH HANDPRINTSWITCH NUKEBUTTON
TARGET
4083 4954 // Busted switches (Atomic)
}
}
tilegroup "Items"
{
hotkey "I"
colors 24 24
tiles
{
// Ammo
AMMO SHOTGUNAMMO BATTERYAMMO RPGAMMO HEAVYHBOMB FREEZEAMMO GROWAMMO CRYSTALAMMO
DEVISTATORAMMO HBOMBAMMO
// Items (healthetc)
COLA SIXPAK FIRSTAID SHIELD STEROIDS AIRTANK JETPACK HEATSENSOR ACCESSCARD
BOOTS ATOMICHEALTH HOLODUKE
// Weapons
FIRSTGUNSPRITE CHAINGUNSPRITE RPGSPRITE FREEZESPRITE SHRINKERSPRITE
TRIPBOMBSPRITE SHOTGUNSPRITE DEVISTATORSPRITE
}
}
tilegroup "Respawn triggers"
{
hotkey "R"
tiles
{
CANWITHSOMETHING CANWITHSOMETHING2 CANWITHSOMETHING3 CANWITHSOMETHING4
// FEMS
FEM1 FEM2 FEM3 FEM4 FEM5 FEM6 FEM7 FEM8 FEM9 FEM10 NAKED1
}
}
tilegroup "Exploding stuff"
{
hotkey "X"
tiles
{
CRACK1 CRACK2 CRACK3 CRACK4
FIREEXT SEENINE OOZFILTER
EXPLODINGBARREL EXPLODINGBARREL2 FIREBARREL GUNPOWDERBARREL
REACTOR2SPARK BOLT1 SIDEBOLT1
CEILINGSTEAM
FIREVASE 2066 BURNING FIRE BURNING2 FIRE2
}
}
tilegroup "Letters and numbers"
{
hotkey "L"
tilerange 2822 2915
tilerange 2929 3022
tilerange 3072 3135
tilerange 3162 3165
tilerange 640 649
tilerange 2472 2481
}
// Alphabet configuration for text entry tool in 3D mode
// (press Ctrl-T on a wall-aligned letter)
// 32 alphabets max.
alphabet // blue font
{
maprange 33 126 STARTALPHANUM
offseta "^" 0 2
offseta "qQ;" 0 -1
}
alphabet
{
maprange 33 126 MINIFONT
maprangea "a" "z" 3104
// offset "\\" 0 3 doesn't work
offset 92 0 3
offseta "qQ" 0 -1
offseta ":" 0 1
offseta "'\"" 0 3
}
alphabet // red font
{
maprangea "0" "9" 2930
maprangea "A" "Z" BIGALPHANUM
maprangea "a" "z" BIGALPHANUM
mapa "-" 2929
mapa ".,!?;:/%" 3002
mapa "'" 3022
}
alphabet // silver font
{
maprangea "0" "9" 2992
maprangea "A" "Z" 2966
maprangea "a" "z" 2966
}
alphabet // yellow numbers 3x5
{
maprangea "0" "9" THREEBYFIVE
mapa ":/" 3020
offseta ":" 0 1
}
alphabet // silver numbers
{
maprangea "1" "9" W_NUMBERS
mapa "0" 649
}
alphabet
{
maprangea "0" "9" DIGITALNUM
}