// Quoth 2.2 entity definitions // tested in Trenchbroom 2020.2 // some clutter is commented out // compiler-specific features are at the end @baseclass = Angle [ angle(integer) : "Angle" : 360 : "Yaw (-1 is up, -2 is down)" angles(string) : "Angle" : "0 360 0" : "Y Z X (Pitch Yaw Roll)" ] @baseclass = Flags [ spawnflags(flags) = [ 256: "Not on Easy" 512: "Not on Normal" 1024: "Not on Hard" 2048: "Not in Deathmatch" 4096: "Not in Coop" 8192: "Only in Coop" ] ] @baseclass = Target [ targetname(target_source) : "Name" target(target_destination) : "Target" killtarget(target_destination) : "Target to remove" message(string) : "Message to print" delay(integer) : "Pause before activation" // targetname2(target_source) : "Extra name" :: "Goes up to 4" target2(target_destination) : "Extra target" :: "Goes up to 4" ] @solidclass base(LightWorld) = worldspawn [ message(string) : "Map title" :: "\b toggles red text" worldtype(choices) : "World type" : 0 = [ 0: "Medieval" 1: "Metal (runekeys)" 2: "Base (keycards)" 3: "Elder (eyekeys)" ] sounds(integer) : "Music track" : 0 gravity(integer) : "Gravity" : 800 sky(choices) : "Skybox" = [ "bsea":"" "dawn":"" "day":"" "dusk":"" "epiphany":"" "fodrian":"" "graynight":"" "moon":"" "predator":"" "stars":"" "void":""] fog(string) : "Fog" : ".00 .0 .0 .0" : "Density R G B" skyfog(float) : "Sky fog" : "0.5" : "Partial fogging of the sky/skybox" wateralpha(string) : "Water opacity" :: "Defaults to player's r_wateralpha" lavaalpha(string) : "Lava opacity" :: "Defaults to player's r_lavaalpha" slimealpha(string) : "Slime opacity" :: "Defaults to player's r_slimealpha" telealpha(string) : "Portal opacity" :: "Defaults to player's r_telealpha" keep_keys(choices) : "Retain keys between levels" : 0 = [ 0: "Don't get or send" 1: "Send, don't get" 2: "Get, don't send" 3: "Send and get" ] reset_items(choices) : "Reset inventory" : 0 = [ 0: "Keep inventory" 1: "Reset to shotgun, 25 shells, 100 health" ] seamless(integer) : "Receive kill count" : 0 : "See trigger_changelevel" aflag(flags) = [ 1: "Lit ammo" : 0 : "Use combined .mdl model instead of .bsp" 2: "No head gibs" : 0 : "Replace unique monster head gibs" 4: "Fix item rotation" : 0 : "Resize rotated bounding boxes" 8: "Combine weapons" : 0 : "Combine ground and view models"] corpse_time(integer) : "Corpse removal delay" : 15 : "-1 = corpses stay" noise1(string) : "Precached sound" : "necros/drivshft.wav" noise2(string) : "Precached sound" noise3(string) : "Precached sound" noise4(string) : "Precached sound" ] // SPAWN POINTS @baseclass base(Angle,Flags,Target) model("progs/player.mdl") size(-16 -16 -24, 16 16 32) = Player [] @pointclass base(Player) = info_player_start : "Start point" [] @pointclass base(Player) = testplayerstart : "Start point override" [] @pointclass base(Player) = info_player_start2 : "Return point" [] @pointclass base(Player) = info_player_coop : "Additional start" [] @pointclass base(Player) = info_player_deathmatch : "Spawn point" [] //@pointclass base(Player) model({"path":"progs/player.mdl", "frame":frame}) // = viewthing : "Player model" [ frame(integer) : "Frame (0-142)" : 0 ] @pointclass base(Angle,Flags,Target) size(-16 -16 -24, 16 16 32) color(0 90 50) = info_teleport_destination : "Teleport destination" [] // ENEMIES @baseclass base(Angle,Flags,Target) size(-16 -16 -24, 16 16 40) = Monster [ spawnflags(flags) = [ 1: "Ambush" : 0 : "Don't wake up indirectly" 32: "Spawn silently" : 0 : "No effects on triggered spawn" 64: "Delayed spawn" : 0 : "Don't spawn until triggered" 128: "Spawn alerted" : 0 : "Spawn angry at the player"] spawndelay(integer) : "Delay spawn" : 0 : "Set to -1 for a random delay" corpse_time(integer) : "Corpse removal override" ] @baseclass base(Monster) size(-32 -32 -24, 32 32 64) = MonsterBig [] @pointclass base(Monster) model("progs/soldier.mdl") = monster_army : "Grunt" [] @pointclass base(Monster) model("progs/enforcer.mdl") = monster_enforcer : "Enforcer" [] @pointclass base(Monster) model({"path":"progs/knight.mdl", "skin":skin}) = monster_knight : "Knight" [ skin(choices) : "Appearance" : 0 = [0: "Beige" 1: "Red"] ] //@pointclass base(Monster) model("progs/hknight.mdl") // = monster_hell_knight : "Death Knight" [] //same as monster_death_knight @pointclass base(Monster) model("progs/wizard.mdl") = monster_wizard : "Scrag" [] @pointclass base(Monster) model("progs/tarbaby.mdl") = monster_tarbaby : "Spawn" [] @pointclass base(Monster) model({"path":"progs/zombie.mdl", "skin":skin}) = monster_zombie : "Zombie" [ spawnflags(flags) = [1: "Crucified" 2: "Ambush"] skin(choices) : "Appearance" : 0 = [0: "Zombie" 1: "Mummy"] ] @pointclass base(MonsterBig) model("progs/demon.mdl") = monster_demon1 : "Fiend" [] @pointclass base(MonsterBig) model("progs/ogre.mdl") = monster_ogre : "Ogre" [] //@pointclass base(MonsterBig) model("progs/ogre.mdl") // = monster_ogre_marksman : "Ogre (mute)" [] //doesn't infight in Quoth @pointclass base(MonsterBig) model("progs/shambler.mdl") = monster_shambler : "Shambler" [] @pointclass base(MonsterBig) model("progs/shalrath.mdl") = monster_shalrath : "Vore" [] @pointclass base(Monster) size(-16 -16 -24, 16 16 24) model("progs/fish.mdl") = monster_fish : "Rotfish" [] @pointclass base(Monster) size(-32 -32 -24, 32 32 40) model("progs/dog.mdl") = monster_dog : "Rottweiler" [] @pointclass base(Monster) size(-128 -128 -24, 128 128 256) model("progs/boss.mdl") = monster_boss : "Chthon" [] @pointclass base(Monster) size(-160 -128 -24, 160 128 256) model("progs/oldone.mdl") = monster_oldone : "Shub-Niggurath" [] @pointclass base(Monster) model("progs/bob.mdl") = monster_bob : "Bob" [] @pointclass base(Monster) model({"path":"progs/soldier.mdl", "skin":1}) = monster_army_rocket : "Rocketeer" [] @pointclass base(Monster) model({"path":"progs/enforcer.mdl", "skin":1}) = monster_defender: "Defender" [] @pointclass base(Monster) model({"path":"progs/enforcer.mdl", "skin":2}) = monster_pyro: "Pyro" [] @pointclass base(Monster) model({"path":"progs/enforcer.mdl", "skin":3}) = monster_eliminator: "Eliminator" [] @pointclass base(Monster) model({"path":"progs/sentinel.mdl", "skin":{{spawnflags & 4 -> 1,0}} }) = monster_sentinel: "Sentinel" [ spawnflags(flags) = [4: "Nails"] ] @pointclass base(MonsterBig) model("progs/scor.mdl") = monster_scourge: "Centroid" [] @pointclass base(MonsterBig) model("progs/edie.mdl") = monster_edie: "Edie" [] @pointclass base(MonsterBig) model({"path":"progs/ogre.mdl", "skin":1}) = monster_ogre_flak: "Flak Ogre" [] @pointclass base(Monster) model({"path":"progs/voreling.mdl", "frame":{{dangle & 1 -> 14,0}} }) = monster_voreling: "Voreling" [ dangle(flags) = [1: "Dangling"] ] @pointclass base(Monster) model({"path":"progs/polyp.mdl", "skin":skin, "frame":{{startonground & 1 -> 0,153}} }) = monster_polyp: "Polyp" [ startonground(flags) = [1: "On ground"] skin(choices) : "Appearance" : 0 = [0: "Green" 1: "Beige"] ] @pointclass base(Monster) model("progs/hknight.mdl") = monster_death_knight : "Death Knight" [] @pointclass base(Monster) model("progs/dguard.mdl") = monster_death_guard : "Death Guard" [] @pointclass base(Monster) model({"path":"progs/hknight.mdl", "skin":1}) = monster_death_lord : "Death Lord" [] @pointclass base(MonsterBig) model({"path":"progs/gaunt.mdl", "frame":{{perch & 1 -> 0,24}} }) = monster_gaunt: "Gaunt" [ perch(flags) = [1: "Perched"] ] @pointclass base(MonsterBig) model("progs/drole.mdl") = monster_drole: "Drole" [] @pointclass base(MonsterBig) model("progs/gug.mdl") = monster_gug: "Gug" [] @pointclass base(Monster) size(-64 -64 -448, 64 64 256) model({"path":"progs/vermis.mdl","skin":skin,"frame":{{coiled&1 -> 2,52}}}) = monster_vermis: "Vermis" [ coiled(flags) = [1: "Coiled up"] skin(choices) : "Appearance" : 0 = [0: "Regular" 1: "Dark" 2: "Slime" 3: "Lava"] ] // PICKUPS @baseclass base(Angle,Flags,Target) size(0 0 0, 32 32 56) = ItemBase [ ritem(choices) : "Respawn item" : 0 = [0: "Off" 1: "On"] respawndelay(integer) : "Respawn timer" :: "Requires 'ritem'" respawncount(integer) : "Respawn count" :: "Requires 'ritem'" ] @pointclass base(ItemBase) model({{spawnflags & 1 -> "maps/b_bh10.bsp", spawnflags & 2 -> "maps/b_bh100.bsp", "maps/b_bh25.bsp"}}) = item_health : "Medikit" [ spawnflags(flags) = [1 : "Rotten" 2 : "Mega"] ] @baseclass base(ItemBase) = Ammo [spawnflags(flags) = [1 : "Large" : 0]] @pointclass base(Ammo) model({{spawnflags & 1 -> "maps/b_shell1.bsp", "maps/b_shell0.bsp"}}) = item_shells : "Shells" [] @pointclass base(Ammo) model({{spawnflags & 1 -> "maps/b_nail1.bsp", "maps/b_nail0.bsp"}}) = item_spikes : "Nails" [] @pointclass base(Ammo) model({{spawnflags & 1 -> "maps/b_rock1.bsp", "maps/b_rock0.bsp"}}) = item_rockets : "Rockets" [] @pointclass base(Ammo) model({{spawnflags & 1 -> "maps/b_batt1.bsp", "maps/b_batt0.bsp"}}) = item_cells : "Cells" [] @baseclass base(ItemBase) size(-16 -16 -24, 16 16 32) = Item [] @pointclass base(Item) model("progs/w_s_key.mdl") = item_key1 : "Silver key" [] @pointclass base(Item) model("progs/w_g_key.mdl") = item_key2 : "Gold key" [] @pointclass base(Item) model({{ spawnflags & 2 -> "progs/end2.mdl", spawnflags & 4 -> "progs/end3.mdl", spawnflags & 8 -> "progs/end4.mdl", "progs/end1.mdl"}}) = item_sigil : "Rune" [ spawnflags(flags) = [ 1: "Earth Magic" 2: "Black Magic" 4: "Hell Magic" 8: "Elder Magic"] ] @pointclass base(Item) model("progs/suit.mdl") = item_artifact_envirosuit : "Biosuit" [] @pointclass base(Item) model("progs/quaddama.mdl") = item_artifact_super_damage : "Quad Damage" [] @pointclass base(Item) model("progs/invulner.mdl") = item_artifact_invulnerability : "Pentagram of Protection" [] @pointclass base(Item) model("progs/invisibl.mdl") = item_artifact_invisibility : "Ring of Shadows" [] @pointclass base(Item) model("progs/cross.mdl") = item_artifact_cross : "Cross of Deflection" [] @pointclass base(Item) model("progs/trinity.mdl") = item_artifact_trinity : "Trinity" [] @baseclass base(ItemBase) size(-16 -16 0, 16 16 56) = Item2 [] @pointclass base(Item2) model("progs/armor.mdl") = item_armor1 : "Green armor" [] @pointclass base(Item2) model({"path":"progs/armor.mdl", "skin":1}) = item_armor2 : "Yellow armor" [] @pointclass base(Item2) model({"path":"progs/armor.mdl", "skin":2}) = item_armorInv : "Red armor" [] @pointclass base(Item2) model("progs/flashlight.mdl") = item_flashlight : "Flashlight" [] @pointclass base(Item2) model("progs/g_shot.mdl") = weapon_supershotgun [] @pointclass base(Item2) model("progs/g_nail.mdl") = weapon_nailgun [] @pointclass base(Item2) model("progs/g_nail2.mdl") = weapon_supernailgun [] @pointclass base(Item2) model("progs/g_rock.mdl") = weapon_grenadelauncher [] @pointclass base(Item2) model("progs/g_rock2.mdl") = weapon_rocketlauncher [] @pointclass base(Item2) model("progs/g_light.mdl") = weapon_lightning [] @pointclass base(Item2) model("progs/g_ham.mdl") = weapon_hammer [] @pointclass base(Item2) model("progs/g_lance.mdl") = weapon_plasmagun [] @pointclass base(Item2) model("progs/g_bomb.mdl") = weapon_bomb [] // PROPS & TRAPS @baseclass size(8 8 8) color(50 255 50) = Dummy [] @baseclass base(Dummy,Angle,Flags,Target) color(200 0 0) = Trap [ deathtype(string) : "Custom death message" ] @pointclass base(Dummy,Flags) color(200 0 0) = air_bubbles : "Air bubbles" [] @pointclass base(Flags) model("progs/lavaball.mdl") = misc_fireball : "Lava ball" [ speed(integer) : "Speed" : 1000 ] @pointclass base(Trap) = info_bomb : "Massive explosion (512 radius)" [] @pointclass base(Trap) = info_screenshake : "Earthquake" [ ltime(integer) : "Duration" : 1 height(integer) : "Strength" : 500 multiplier(integer) : "Strength multiplier" : 1 lip(float) : "Update frequency" : "0.01" noise(string) : "Loop sound" : "misc/quake.wav" noise1(string) : "Stop sound" : "misc/quakeend.wav" ] @pointclass base(Trap) = info_rubble : "Spawn rubble" [ preset(choices): "Preset" : 0 = [ 0: "Rock" 1: "Wood" 2: "Flesh" 3: "Machine" 4: "Glass" 5: "Brick 8" 6: "Brick 16" 7: "Brick 32" 8: "Metal" 9: "Circuit" ] ritem(integer): "Appearance" :: "The skin to use for debris models" noise(choices) : "Breaking sound" = ["":"Preset" "impact/rockbrk.wav":"" "impact/wood_bk.wav":"" "player/gib.wav":"" "impact/mach_bk.wav":"" "impact/glass_bk.wav":"" "impact/metal_bk.wav":"" ] noise1(choices) : "Bounce sound 1" = [ "":"Preset" "impact/wood_i1.wav":"" "impact/glass_i1.wav":"" "zombie/z_miss.wav":"" "impact/rock1.wav":"" "impact/metal_i1.wav":"" ] noise2(choices) : "Bounce sound 2" = [ "":"Preset" "impact/wood_i2.wav":"" "impact/glass_i2.wav":"" "impact/gib_i2.wav":"" "impact/rock2.wav":"" "impact/metal_i2.wav":"" ] noise3(choices) : "Bounce sound 3" = [ "":"Preset" "impact/wood_i3.wav":"" "impact/glass_i3.wav":"" "impact/gib_i3.wav":"" "impact/rock3.wav":"" "impact/metal_i3.wav":"" ] noise4(choices) : "Bounce sound 4" = [ "":"Preset" "impact/wood_i4.wav":"" "impact/glass_i4.wav":"" "impact/gib_i4.wav":"" "impact/rock4.wav":"" "impact/metal_i4.wav":"" ] modelpath(choices) : "Custom debris" = ["":"Preset" "progs/brick.mdl":"" "progs/gib.mdl":"" "progs/glass.mdl":"" "progs/metal.mdl":"" "progs/plank.mdl":"" "progs/rock.mdl":"" "progs/wreckage.mdl":"" ] count(integer) : "Number of fragments" : 0 dmg(integer) : "Damage inflicted by rubble" : 0 rsize(integer) : "Debris model frame (see t_width)" t_width(integer) : "Randomize model frame (rsize..t_width)" ] @pointclass base(Trap) = info_effect_pulse : "Dynamic light emitter" [ speed(integer) : "Travel speed" : 400 wait(integer) : "Refire delay" : 1 : "-1 = no refire" delay(float) : "Initial delay" : "0.1" ] @baseclass base(Trap) = Zap [ dmg(integer) : "Damage" : 30 duration(float) : "Duration" : "0.1" noise(string) : "Sound" : "weapons/lhit.wav" coiled(integer) : "Force silent" style(choices) : "Girth" : 0 = [0: "Player" 1: "Shambler"] spawnflags(flags) = [2: "Thunder"] ] @pointclass base(Zap) = trap_lightning : "Continuous lightning" [ spawnflags(flags) = [1: "Random" : 0 : "Refire varies between 0 and wait"] nextthink(integer) : "Initial delay" wait(integer) : "Refire delay" : 1 ] @pointclass base(Zap) = trap_lightning_switched : "Toggleable lightning" [ spawnflags(flags) = [1: "Random" : 0 : "Refire varies between 0 and wait"] nextthink(integer) : "Initial delay" wait(integer) : "Refire delay" : 1 state(choices) : "State" : 0 = [0: "Start off" 1: "Start on"] ] @pointclass base(Zap) = trap_lightning_triggered : "Triggered lightning" [] @pointclass base (Trap) = info_trap : "Custom shooter" [ preset(choices) : "Preset" : 0 = [ 0:"None" 1:"Rockets" 2:"Grenades" 3:"Plasma" 4:"Nails" 5:"Super Nails"] wait(integer) : "Refire delay" : 1 delay(integer) : "Initial delay" speed(integer) : "Projectile speed" : 400 modelpath(string) : "Projectile model" : "progs/s_light.spr" tracking(choices) : "Tracking" = [0: "None" 1: "Full" 2: "Slight"] style(choices) : "Trajectory" = [0: "Straight" 1: "Ballistic" 2: "Bounce"] mindamage(integer) : "Minimum projectile damage" : 1 maxdamage(integer) : "Maximum projectile damage" dmg(integer) : "Radius of blast" : 0 noise(string) : "Firing sound" noise1(string) : "Impact sound" noise2(string) : "Bounce sound" duration(integer) : "Grenade fuse" : 5 multiplier(integer) : "Breakable damage multiplier" flashlight(choices) : "Glow" = [0: "Off" 1: "On"] deathtype(string) : "Custom death message" ] @pointclass base(Trap) = trap_spikeshooter : "Triggered shooter" [ spawnflags(flags) = [1: "Super" 2: "Laser"] ] @pointclass base(Trap) = trap_shooter : "Continuous shooter" [ spawnflags(flags) = [1: "Super" 2: "Laser"] nextthink(integer) : "Initial delay" wait(integer) : "Refire delay" : 1 ] @pointclass base(Flags,Target) model("progs/teleport.mdl") = misc_teleporttrain : "Moving teleporter" [speed(integer) : "Speed" : 100] @pointclass base(Angle,Flags,Target) size(0 0 0, 32 32 64) model("maps/b_explob.bsp") = misc_explobox : "Exploding box" [] @pointclass base(Angle,Flags,Target) size(0 0 0, 32 32 32) model("maps/b_exbox2.bsp") = misc_explobox2 : "Small exploding box" [] @pointclass base(misc_explobox) model("progs/b_bio_l.bsp") = misc_biobox_l : "Biohazard container" [] @pointclass base(misc_explobox2) model("progs/b_bio_s.bsp") = misc_biobox_s : "Small biohazard container" [] @pointclass base(misc_explobox) model("progs/b_plas_l.bsp") = misc_plasmabox_l : "Plasma container" [] @pointclass base(misc_explobox2) model("progs/b_plas_s.bsp") = misc_plasmabox_s : "Small plasma container" [] @pointclass base(Dummy,Angle,Flags,Target) color(255 0 255) model({"path":model, "skin":skin, "frame":frame}) = mapobject_custom: "Custom object (.mdl/.bsp/.spr)" [ model(string) : "Model" : "progs/tree1.mdl" : "tree1.mdl,reed1.mdl,veg.spr" skin(integer) : "Skin" frame(integer) : "Frame" alpha(integer) : "Opacity" avelocity(integer) : "Simple rotation" ] @pointclass base(Angle,Flags,Target) size(-4 -32 -144, 0 32 0) model({"path": "progs/waterfall.mdl", "skin":skin}) = mapobject_waterfall: "Waterfall" [ skin(choices) : "Appearance": 0 = [0: "Clean" 1: "Dirty" 2: "Slime" 3: "Blood" 4: "Lava"] spawnflags(flags) = [4: "Initially dry"] sounds(flags) = [1: "Sounds on"] frame(integer) : "Initial frame (0-25)" alpha(integer) : "Opacity" noise(string) : "Start/loop sound" : "misc/wfstart.wav" noise1(string) : "Stop sound" : "misc/wfstop.wav" speed(integer) : "Sound attenuation" : 2 volume(integer) : "Volume" : 1 ] @baseclass base(Angle,Flags) size(0 -8 -40, 8 8 -8) = Corpse1 [] @baseclass base(Angle,Flags) size(-8 -8 -64, 8 8 0) = Corpse2 [] @baseclass base(Angle,Flags) size(-16 -8 -16, 16 8 0) = Corpse3 [] @baseclass base(Angle,Flags) size(-12 -8 0, 12 8 16) = Corpse4 [] @baseclass base(Angle,Flags) size(-6 -8 -32, 2 8 16) = Corpse5 [] @baseclass base(Angle,Flags) size(-8 -8 -24, 8 8 24) = Corpse6 [] @baseclass base(Angle,Flags) size(-4 -8 -80, 4 8 0) = Corpse7 [] @pointclass model({"path":"progs/corpse_imp.mdl","skin":7,"frame":9}) base(Corpse1) = corpse_crucified1 [] @pointclass model({"path":"progs/corpse_imp.mdl","skin":8,"frame":10}) base(Corpse1) = corpse_crucified2 [] @pointclass model({"path":"progs/corpse_flay.mdl"}) base(Corpse2) = corpse_flayed1 [] @pointclass model({"path":"progs/corpse_flay.mdl","skin":1}) base(Corpse2) = corpse_flayed2 [] @pointclass model({"path":"progs/corpse_flay.mdl","skin":2,"frame":2}) base(Corpse2) = corpse_flayed3 [] @pointclass model({"path":"progs/corpse_flay.mdl","skin":1,"frame":1}) base(Corpse2) = corpse_flayed4 [] @pointclass model({"path":"progs/corpse_imp.mdl"}) base(Corpse3) = corpse_impaled_back1 [] @pointclass model({"path":"progs/corpse_imp.mdl","skin":1}) base(Corpse3) = corpse_impaled_back2 [] @pointclass model({"path":"progs/corpse_imp.mdl","skin":2,"frame":1}) base(Corpse3) = corpse_impaled_back3 [] @pointclass model({"path":"progs/corpse_imp.mdl","skin":0,"frame":2}) base(Corpse4) = corpse_impaled_front1 [] @pointclass model({"path":"progs/corpse_imp.mdl","skin":1,"frame":2}) base(Corpse4) = corpse_impaled_front2 [] @pointclass model({"path":"progs/corpse_imp.mdl","skin":3,"frame":3}) base(Corpse4) = corpse_impaled_front3 [] @pointclass model({"path":"progs/corpse_imp.mdl","skin":0,"frame":4}) base(Corpse5) = corpse_impaled_horizontal1 [] @pointclass model({"path":"progs/corpse_imp.mdl","skin":1,"frame":4}) base(Corpse5) = corpse_impaled_horizontal2 [] @pointclass model({"path":"progs/corpse_imp.mdl","skin":4,"frame":5}) base(Corpse5) = corpse_impaled_horizontal3 [] @pointclass model({"path":"progs/corpse_imp.mdl","skin":5,"frame":6}) base(Corpse5) = corpse_impaled_horizontal4 [] @pointclass model({"path":"progs/corpse_imp.mdl","skin":0,"frame":7}) base(Corpse6) = corpse_impaled_vertical1 [] @pointclass model({"path":"progs/corpse_imp.mdl","skin":1,"frame":7}) base(Corpse6) = corpse_impaled_vertical2 [] @pointclass model({"path":"progs/corpse_imp.mdl","skin":6,"frame":8}) base(Corpse6) = corpse_impaled_vertical3 [] @pointclass model({"path":"progs/corpse_lynch.mdl"}) base(Corpse7) = corpse_lynched1 [] @pointclass model({"path":"progs/corpse_lynch.mdl","skin":1}) base(Corpse7) = corpse_lynched2 [] @pointclass model({"path":"progs/corpse_lynch.mdl","skin":2,"frame":1}) base(Corpse7) = corpse_lynched3 [] //@baseclass base(Angle,Flags) size(16 16 16) color(0 50 0) = Grill //[ spawnflags(flags) = [2: "Solid"] //] //@pointclass base(Grill) = mapobject_grill: "Vanilla-compatible sprite fence" //[ model(string) : "Model" // frame(string) : "Frame" //] //@pointclass base(Grill) = mapobject_grill64 [frame(integer) : "Appearance"] //@pointclass base(mapobject_grill64) = mapobject_grill128 [] // HELPER OBJECTS @baseclass base(Dummy,Flags,Target) color(0 200 200) = Helper [] @baseclass base(Helper) color(100 40 200) = Sensor [] @pointclass base(Helper,Trigger) = trigger_relay : "Relay" [] @pointclass base(Helper,Trigger) = trigger_counter : "Counter" [ spawnflags(flags) = [1: "No Message" 2: "Broadcast"] count(integer) : "Number of inputs" : 2 ] @pointclass base(Dummy) = info_null : "Dummy (self-removing)" [ targetname(target_source) : "Name" ] @pointclass base(Dummy,Angle,Flags,Target) = info_notnull : "Dummy" [ use(string) : "Use function (spawn as)" touch(string) : "Touch function" think(string) : "Think function" nextthink(integer) : "Think interval" ] @pointclass base(Helper) color(0 90 50) = path_corner_contact : "Monster waypoint" [] @pointclass base(path_corner_contact) = path_corner_precise : "Monster waypoint, advanced" [ wait(integer) : "Pause" : 0 : "-1 to wait indefinitely" angle(integer) : "Angle" : 360 : "Look in this direction while waiting" ] @pointclass base(path_corner_contact) = path_corner : "Waypoint" [ wait(integer) : "Pause" : 0 : "Incompatible with 'event'" speed(integer) : "Override speed for next move" duration(integer) : "Auto-calculate speed for next move" event(target_source) : "Event to trigger on arrival" ] @pointclass base(Helper,Flags) = info_intermission : "Intermission camera" [ mangle(string) : "Y Z X (Pitch Yaw Roll)" message(string) : "Intermission text" ] //@pointclass base(Dummy,Flags,Target) = event_lightning: "Chthon lightning" [] @pointclass base(Sensor) = info_logic_insolid : "Trigger when occupied" [] @pointclass base(Sensor) = info_logic_inopen : "Trigger when not occupied" [] @pointclass base(Helper) = info_logic_random : "Trigger sometimes" [ chance(float) : "Chance to fire targets" : "0.5" // spawnflags(flags) = [1: "Branch"] // killtargets the player! ] @pointclass base(Helper) = info_endgate : "Trigger on the EXACT mapindex" [ mapindex(integer) : "Number of bitflags" :: "Sum and compare to mapindex" spawnflags(flags) = [1: "Invert" : 0 : "Trigger on ANY OTHER mapindex"] ] @pointclass base(Helper) = info_mapgate : "Trigger UNLESS a bitflag matches" [ mapindex(flags) = [] spawnflags(flags) = [1: "Invert" : 0 : "Trigger ONLY if a bitflag matches"] ] @pointclass base(Sensor) = info_gug_seismometer: "Earthquake detection" [ health(string): "Damage threshold" ] @pointclass base(Helper) = info_command: "Execute a console command" [ message(string) : "Console command" spawnflags(flags) = [ 2: "Contact only" : 0 : "Don't send to other players" 4: "Set onload" : 0 : "Replace the 'onload' variable" 8: "No \n" : 0 : "Require manual line termination" ] ] @pointclass base(info_command) = info_command_spawn : "Commands on spawn" [] @pointclass base(Helper) = info_command_server : "Execute a server command" [ message(string) : "Console command" ] @baseclass base(Angle,Flags,Target) size(32 32 48) color(140 0 0) = Spawner [ spawnclassname(string) : "Entity classname (required)" spawnfunction(string) : "Entity classname (required)" count(integer) : "Number of entities to spawn" : 1 awake(integer) : "Spawn enemies alerted" corpse_time(integer) : "Corpse removal override" startonground(flags) = [1: "On ground" : 0 : "Flag for polyps"] ] @pointclass base(Spawner) = info_multispawn : "Chain-spawn entities" [ wait(integer) : "Spawn interval" : 0 : "-1 = trigger each spawn" ] @pointclass base(Spawner) = info_groupspawn : "Grid-spawn entities" [ lip(integer) : "Spacing" : 64 t_width(integer) : "Side" : 192 ] @pointclass base(info_null) color(0 90 50) = info_rotate : "Rotation dummy" [] @pointclass base(path_corner_contact) = path_rotate : "Rotation path corner" [ spawnflags(flags) = [ 1: "Rotation" 2: "Angles" 4: "Stop" 8: "Stop rotate" 16: "Damage on self" 32: "Speed sets duration" 64: "Damage on targets"] speed(integer) : "Speed/duration for next move" :: "-1 = Instant" rotate(string) : "Rotation speed" : "0 0 0" : "Y Z X" angles(string) : "Resulting rotation" : "0 0 0" : "Y Z X" wait(integer) : "Pause" : 0 event(target_source) : "Event on arrival" noise(string) : "Stop sound" noise1(string) : "Start sound" dmg(integer) : "Damage" ] @pointclass base(Helper) = func_rotate_entity : "Idle rotation controller" [ spawnflags(flags) = [1: "Toggle" 2: "Start on"] target(target_destination) : "Target (rotate_object & func_movewall)" rotate(string) : "Rotation speed" : "0 0 0" : "Y Z X" speed(integer) : "Acceleration time" noise(string) : "Stop sound" noise1(string) : "Start sound" deathtype(string) : "Custom death message" ] @pointclass base(Helper) = func_rotate_door : "Door rotation controller" [ spawnflags(flags) = [1: "Stay open"] group(string) : "Shared group name" :: "Link doors to react together" target(target_destination) : "Target (rotate_object & func_movewall)" rotate(string) : "Rotation axes" : "0 0 0" : "Y Z X" angles(string) : "Rotation distance" : "0 0 0" : "Y Z X" speed(integer) : "Rotation time" dmg(integer) : "Damage when blocked" : 2 : "-1 = no damage" deathtype(string) : "Custom death message" sounds(choices) : "Sound" : 0 = [0: "None" 1: "Chain" 2: "Air" 3: "Base"] noise2(string) : "Start sound" noise3(string) : "Stop sound" ] @pointclass base(Helper) = func_rotate_train : "Train rotation controller" [ spawnflags(flags) = [1: "Stay open"] target(target_destination) : "Target (rotate_object & func_movewall)" path(target_destination) : "First path_rotate" dmg(integer) : "Damage" deathtype(string) : "Custom death message" sounds(choices) : "Sound" : 0 = [0: "Silent" 1: "Ratchet" 9: "Custom"] noise(string) : "Stop sound" noise1(string) : "Start sound" ] @pointclass base(Dummy,rotate_object) model({"path":model}) color(255 0 255) = rotate_object_point : "External rotating model" [model(string) : "Model"] // LIGHTS @pointclass base(LightSource) = light [] @pointclass base(LightSource) = light_fluoro : "Light with a sound" [] @pointclass base(LightSource) = light_fluorospark : "Light with a sound" [] @pointclass base(LightSource) size(24 24 24) = light_globe : "Globe light" [ color(choices) : "Globe color" : 0 : "Overwrites _color in EricWTools!" = [0: "Gold" 1: "Red" 2: "Green" 3: "Blue" 4: "White" 5: "Evil" 6: "Face"] ] @pointclass base(LightSource) size(24 24 24) = light_marsh : "Marsh lights" [ frame(choices) : "Floater color" = [0:"White" 1:"Blue" 2:"Dark blue" 3:"Yellow" 4:"Orange" 5:"Red" 6:"Purple"] ] @pointclass base(LightSource) model("progs/flame.mdl") size(-2 -2 -14, 2 2 20) = light_torch_small_walltorch : "Torch" [] @pointclass base(LightSource) model("progs/flame2.mdl") size(-4 -4 -12, 4 4 8) = light_flame_small_yellow : "Small flame" [] //@pointclass base(light_flame_small_yellow) = light_flame_small_white [] @pointclass base(LightSource) model({"path":"progs/flame2.mdl", "frame":1}) size(-6 -6 -12, 6 6 18) = light_flame_large_yellow : "Large flame" [] @pointclass base(LightSource) size(-4 -4 -32, 4 4 4) model({"path": "progs/lightpost.mdl", "skin":skin}) = light_postlight : "Post light" [ skin(choices) : "Appearance" : 0 = [0: "Beige" 1: "Blue" 2: "Red" 3: "Off"] ] @pointclass base(light_postlight) size(-4 -4 -32, 4 4 16) model({"path": "progs/lighttube.mdl", "skin":skin}) = light_tubelight : "Tube light" [] @pointclass base(LightSource) size(-4 -2 -48, 8 2 8) model("progs/longtrch.mdl") = light_torch_long_walltorch : "Long torch" [] @pointclass base(LightSource) size(-8 -8 -16, 8 8 16) model({"path": "progs/brazshrt.mdl", "skin":skin}) = light_flame_brazier_short : "Short brazier" [ skin(choices) : "Appearance" : 0 = [0: "Knave" 1: "Rust" 2: "Red" 3: "Copper" 4: "Altar" 5: "Wizmet"] ] @pointclass base(LightSource) size(-8 -8 -64, 8 8 16) model({"path": "progs/braztall.mdl", "skin":skin}) = light_flame_brazier_tall : "Tall brazier" [ skin(choices) : "Appearance" : 0 = [0: "Knave" 1: "Rust" 2: "Red" 3: "Copper" 4: "Altar" 5: "Wizmet"] ] // SOUNDS @baseclass base(Flags) size(12 12 4) color(50 50 200) = Sound [] @pointclass base(Sound) = ambient_suck_wind : "Sound: wind" [] @pointclass base(Sound) = ambient_drone : "Sound: droning pulse" [] @pointclass base(Sound) = ambient_flouro_buzz : "Sound: sparking wires" [] @pointclass base(Sound) = ambient_drip : "Sound: dripping water" [] @pointclass base(Sound) = ambient_comp_hum : "Sound: computer beeps" [] //@pointclass base(Sound) = ambient_thunder : "Sound: thunder - not looped!" [] @pointclass base(Sound) = ambient_light_buzz : "Sound: continuous buzz" [] @pointclass base(Sound) = ambient_swamp1 : "Sound: swamp fauna" [] //@pointclass base(Sound) = ambient_swamp2 : "Basically ambient_swamp1" [] //@pointclass base(Sound) = misc_noisemaker : "Debug: spam sounds" [] @pointclass base(Sound) = ambient_generalpurpose : "Sound: custom loop" [ noise(string) : "Sound file to play" speed(integer) : "Attenuation" : 0 : "-1 = global, no attenuation" volume(integer) : "Volume" : 1 ] @pointclass base(Sound,Target) = ambient_triggered : "Sound: triggered loop" [ noise(string) : "Sound file to play" :: "Needs precaching, see worldspawn" ] @baseclass base(Sound,Target) = SoundTriggered [ noise(string) : "Sound file to play" speed(integer) : "Attenuation" : 0 : "-1 = global, no attenuation" volume(integer) : "Volume" : 1 impulse(integer) : "Channel" : 0 : "0-7" target(string) : "Play sound at this target" ] @pointclass base(SoundTriggered) = play_sound_triggered : "Sound: triggered" [ wait(integer) : "Repeat interval" : 0 : "0 = play once" spawnflags(flags) = [1: "Toggle" : 0 : "Requires non-zero 'wait'"] ] @pointclass base(SoundTriggered) = play_sound : "Sound: custom repeated" [ wait(integer) : "Random interval" : 20 : "-1 = not random" delay(integer) : "Minimum interval" : 2 ] // TRIGGERS @baseclass = Relay [spawnflags(flags) = [1: "No touch" : 0 : "Act as a relay"]] @baseclass base(Flags,Target) = Trigger [ sounds(choices) : "Sound" : 0 = [0: "None" 1: "Secret" 2: "Beep beep" 3: "Large switch" 4: "Custom"] noise(string) : "Custom sound" spawnflags(flags) = [2: "Broadcast" : 0 : "to server"] ] @solidclass base(Trigger,Relay) = trigger_once : "Trigger: single use" [ angles(string) : "Facing angle" : "0 360 0" : "Y Z X (Pitch Yaw Roll)" health(integer) : "Health (shootable)" : 0 ] @solidclass base(Trigger,Relay) = trigger_multiple : "Trigger: repeated" [ angles(string) : "Facing angle" : "0 360 0" : "Y Z X (Pitch Yaw Roll)" health(integer) : "Health (shootable)" : 0 wait(float) : "Reset delay" : "0.2" : "-1 = single use" ] @solidclass base(Trigger,Relay) = trigger_secret : "Trigger: secret found" [ sounds(choices) : "Sound" : 1 = [0: "Secret" 1: "Secret" 2: "Beep beep" 3: "Large switch" 4: "Custom"] ] @solidclass base(Trigger) = trigger_teleport : "Trigger: teleport" [ spawnflags(flags) = [1: "Player only" 2: "Silent"] monstersonly(integer) : "Only monsters" // onlymonster in the docs notelefrag(integer) : "Wait until vacant" state(integer) : "No nudge on arrival" ] @solidclass base(Trigger) = trigger_changelevel : "Trigger: change level" [ map(string) : "Destination" spawnflags(flags) = [1: "Skip intermission"] startdisabled(choices) : "Needs activation" : 0 = [0: "Off" 1: "On"] mapindex(flags) = [] // docs are wrong: mapindex ALWAYS gets added! seamless(integer) : "Send kill count" : 0 : "See worldspawn" ] @solidclass base(Flags,Target) = trigger_push : "Trigger: push" [ angles(string) : "Push angle" : "0 360 0" : "Y Z X (Pitch Yaw Roll)" speed(integer) : "Speed" : 1000 spawnflags(flags) = [1: "Push once"] noise(string) : "Push sound" ] @solidclass base(Trigger) = trigger_hurt : "Trigger: hurt" [ dmg(integer) : "Damage per interval" : 5 wait(integer) : "Damage interval" : 1 cnt(integer) : "Count before deactivation" deathtype(string) : "Custom death message" ] @solidclass base(Trigger) = trigger_setskill : "Trigger: set difficulty" [ message(choices) : "Difficulty" : 1 = [0: "Easy" 1: "Normal" 2: "Hard" 3: "Nightmare"] ] @solidclass base(Trigger) = trigger_onlyregistered : "Trigger: registered" [] @solidclass base(Trigger,Angle) = trigger_monsterjump : "Trigger: monster jump" [ speed(integer) : "Thrown forward" : 200 height(integer) : "Thrown upwards" : 200 ] @solidclass base(trigger_monsterjump) = trigger_drolejump : "Drole jump" [] @solidclass base(Trigger) = trigger_void : "Trigger: void" [ deathtype(string) : "Custom death message" : "was lost to the void" ] @solidclass base(Trigger) = trigger_damagethreshold : "Trigger: destructible" [ health(integer) : "Health" spawnflags(flags) = [ 1: "Multi-use" 2: "Invisible" ] ] @solidclass base(Trigger) = trigger_setgravity : "Trigger: gravity" [ gravity(integer) : "Gravity" : 100 : "Only affects Player1" ] @solidclass base(Trigger) = trigger_command : "Trigger: Console command" [ message(string) : "Console command" spawnflags(flags) = [ 1: "No touch" : 0 : "Act like a point entity" 2: "Contact only" : 0 : "Don't send to other players" 4: "Set onload" : 0 : "Replace the 'onload' variable" 8: "No \n" : 0 : "Require manual line termination" ] ] @solidclass base(trigger_command) = trigger_command_contact : "Trigger: Console command volume (no spam)" [] @solidclass base(Flags) = trigger_ladder : "Trigger: ladder" [ noise(string) : "Climbing noise" : "player/ftladmet.wav" noise1(string) : "Attach noise" : "player/ftladmet.wav" angle(integer) : "Jump off direction" ] // MOVERS @solidclass base(Angle,Flags,Target,LightBModels) = func_door : "Door" [ spawnflags(flags) = [1: "Start open" 4: "Don't link" 8: "Gold" 16: "Silver" 32: "Toggle"] health(integer) : "Health (shootable)" : 0 speed(integer) : "Speed" : 100 message(string) : "Locked message" wait(integer) : "Wait before returning (-1 = never return)" : 3 lip(integer) : "Lip remaining at end of move" : 8 dmg(integer) : "Damage when blocked" : 2 sounds(choices) : "Sound" : 0 = [0: "None" 1: "Stone" 2: "Hydro" 3: "Chain" 4: "Screechy" 5: "Pillar" 6: "Elder" 9: "Custom"] noise1(string) : "Custom stop sound" noise2(string) : "Custom move sound" noise3(string) : "Custom try sound" noise4(string) : "Custom use sound" deathtype(string) : "Custom death message" ] @solidclass base(Angle,Flags,Target,LightBModels) = func_button : "Button" [ speed(integer) : "Speed" : 40 wait(integer) : "Wait before returning (-1 = never return)" : 1 lip(integer) : "Lip" : 4 health(integer) : "Health (shootable)" : 0 sounds(choices) : "Sounds" = [0: "Steam" 1: "Wood" 2: "Metal" 3: "In-out" 9: "Custom"] noise(string) : "Custom sound" ] @solidclass base(Flags,Target,LightBModels) = func_door_secret : "Secret door" [ spawnflags(flags) = [ 1: "Stay open" 2: "Left first" 4: "Down first" 8: "Not shootable" 16: "Force shootable" ] wait(integer) : "Wait before returning (-1 = never return)" : 5 angle(integer) : "Second move angle" angles(string) : "Second move angle" : "0 360 0" : "Y Z X (Pitch Yaw Roll)" t_width(integer) : "First move" t_length(integer) : "Second move" dmg(integer) : "Damage when blocked" : 2 sounds(choices) : "Sound" : 3 = [1: "Chain" 2: "Air" 3: "Base" 9: "Custom"] noise1(string) : "Custom start sound" noise2(string) : "Custom move sound" noise3(string) : "Custom stop sound" deathtype(string) : "Custom death message" ] @solidclass base(Flags,Target,LightBModels) = func_train : "Train" [ speed(integer) : "Speed" : 100 target(target_source) : "First waypoint (min coords)" dmg(integer) : "Damage when blocked" : 2 sounds(choices) : "Sound" : 0 = [0: "Silent" 1: "Ratchet" 9: "Custom"] noise(string) : "Custom stop sound" noise1(string) : "Custom move sound" deathtype(string) : "Custom death message" duration(integer) : "Auto-calculate speed" count(integer) : "Number of clones at path_corners" spawnflags(flags) = [ 1: "Smooth" : 0 : "Doesn't pause, does no damage" 2: "Blockable" : 0 : "Does damage when 'smooth'" ] ] @solidclass base(Flags,Target,LightBModels) = func_plat : "Platform" [ spawnflags(flags) = [1: "No top trigger"] height(integer) : "Distance" :: "Default is to leave a lip of 8" speed(integer) : "Speed" : 150 sounds(choices) : "Sound" : 0 = [0: "Chain" 1: "Base" 2: "Chain" 9: "Custom"] noise(string) : "Custom move sound" noise1(string) : "Custom stop sound" deathtype(string) : "Custom death message" ] @solidclass base(Flags,LightBModels) = func_bossgate : "Boss gate" [] @solidclass base(Flags,LightBModels) = func_episodegate : "Episode gate" [ spawnflags(flags) = [ 1: "Episode 1" : 1 2: "Episode 2" : 0 4: "Episode 3" : 0 8: "Episode 4" : 0 ] ] @solidclass base(func_button) = func_door_button : "Elevator button" [ bind(target_source) : "Door to bind to" ] @solidclass base(LightBModels) = rotate_object : "Rotating visible object" [ targetname(target_source) : "Name (same as func_movewall)" target(target_destination) : "Dummy (info_rotate)" ] @solidclass base(LightBModels) = func_movewall : "Rotating collision fragment" [ targetname(target_source) : "Name (same as rotate_object)" spawnflags(flags) = [1: "Visible" 2: "Damage on touch" 4: "Non-solid"] dmg(integer) : "Damage" ] @solidclass base(info_rubble,LightBModels) = func_breakable : "Breakable" [ spawnflags(flags) = [1: "Explode"] health(integer) : "Health" : 1 ] //@solidclass = func_particlefield : "Particle flash (variable colors)" //[ targetname(target_source) : "Name" // event(string) : "Shared group name" // cnt(integer) : "Index within group" // wait(float) : "Delay between flashes" : "0.2" // color(integer) : "Particle color" : 192 : "Quake palette index" // count(integer) : "Particle density" : 2 //] @solidclass base(Target) = func_togglewall : "Force field" [ spawnflags(flags) = [1: "Start off" 2: "Particles" 4: "Line of sight"] noise(string) : "Toggle off sound" noise1(string) : "Toggle on sound" noise2(string) : "Damage sound" : "weapons/lhit.wav" wait(float) : "Damage interval" : "0.5" dmg(integer) : "Damage on contact" : 0 speed(integer) : "Particle speed" : 75 style(integer) : "Particle density" : 0 color(integer) : "Particle color" : 0 : "Quake palette index" worldtype(choices) : "Particle direction" = [ 0: "Z+" 1: "Z-" 2: "Y+" 3: "Y-" 4: "X+" 5: "X-" ] deathtype(string) : "Custom death message" ] @solidclass base(Flags,Target,LightBModels) = func_wall : "Doesn't seal, block visibility, or split world faces, toggleable texture, killable" [] @solidclass base(LightBModels) = func_illusionary : "No collision, doesn't seal or block visibility" [] // QBSP (EricW-Tools 0.18.1) @solidclass base(LightBModels) = func_group : "Functionally identical to worldspawn, but doesn't inherit lighting settings" [] @solidclass base(LightBModels) = func_detail: "Doesn't seal or block visibility, but does split and clip away world faces" [] @solidclass base(LightBModels) = func_detail_wall : "Doesn't seal, block visibility, or split world faces, but does clip them away" [] @solidclass base(LightBModels) = func_detail_fence : "Doesn't seal, block visibility, split or clip away world faces" [] @solidclass base(LightBModels) = func_detail_illusionary : "No collision, doesn't seal, block visibility, or split world faces" [] @solidclass base(LightBModels) = func_illusionary_visblocker : "No collision, doesn't seal, but splits world faces and blocks visibility" [] @pointclass color(255 0 255) = misc_external_map : "Brush prefab" [ _external_map(string) : "Filename" :: "A .map file to import" _external_map_classname(string) : "Classname" :: "Import as this class" _external_map_angle(integer) : "Angle" :: "Yaw" _external_map_angles(string) : "Angle" :: "Y Z X (Pitch Yaw Roll)" _external_map_scale(string) : "Scale" :: "X Y Z" ] // LIGHT (EricW-Tools 0.18.1) @baseclass = LightBModels [ alpha(integer) : "Opacity" : 1 _mirrorinside(choices) : "Texture both sides" : 0 = [0: "Off" 1: "On"] _phong(choices) : "Smooth shading" : 0 = [0: "Off" 1: "On"] _phong_angle(integer) : "Phong threshold" : 89 _phong_angle_concave(integer) : "Concave angle" : 0 : "0 = same as convex" _dirt(choices) : "Ambient occlusion" : 0 = [0 : "Use global" 1 : "Force on" -1 : "Force off"] _minlight(integer) : "Minlight" : 0 _minlight_color(color255) : "Minlight color" : "255 255 255" // _lightignore(choices) : "Minlight only" : 0 = [0: "Off" 1: "On"] // _minlight_exclude(string) : "Exclude texture" :: "Faces with the given texture are excluded from receiving minlight" _shadow(choices) : "Cast shadows. Implies _selfshadow" : 0 = [0: "Default" 1: "Force on" -1: "Force off"] _selfshadow(choices) : "Self-shadowing" : 0 = [0: "Off" 1: "On"] // _shadowworldonly(choices) : "Don't cast shadow on other bmodels" : 0 = // [0: "Off" 1: "On"] // _switchableshadow(choices) : "Scriptable shadow" : 0 = // [0: "Off" 1: "On"] // _lmscale(integer) : "Lightmap scale" :: "Generates an LMSHIFT bspx lump for use by a light util. Note that both scaled and unscaled lighting will normally be used." // model(string) : "External model: use as a point entity" // frame(integer) : "External model animation frame" ] @baseclass = LightWorld [// light(integer) : "Global minlight (use _minlight for clarity)" _minlight(integer) : "Global minlight" : 0 _minlight_color(color255) : "Minlight color" : "255 255 255" _sunlight(integer) : "Sunlight" _sunlight_color(color255) : "Sun color" : "255 255 255" _sun_mangle(string) : "Sun angle" : "0 -90 0" : "Z Y X (Yaw Pitch Roll)" _sunlight_penumbra(integer) : "Soft shadows" : 0 : "Penumbra, in degrees" // _anglescale(float) : "Sun angle scale" : "0.5" : "The influence of the angle of incidence with a surface" _bounce(choices) : "Bounce lighting" : 0 = [ 0 : "Off" 1 : "On" ] _bouncescale(integer) : "Bounce scale" : 1 : "Bounce contribution scale" _bouncecolorscale(choices) : "Bounce color" : 0 : "Surface textures color the bounced light" = [ 0 : "Off" 1 : "On" ] _bouncestyled(choices) : "Bounce styled" : 0 : "Bounce animated lights" = [ 0 : "Off" 1 : "On" ] _phong(choices) : "Smooth shading" : 0 = [ 0 : "Off" 1 : "On" ] _phong_angle(integer) : "Phong threshold" : 89 _phong_angle_concave(integer) : "Concave angle" : 0 : "0 = same as convex" _sunlight2(integer) : "Sky light" : 0 : "Upper hemisphere ambient light" _sunlight2_color(color255) : "Sky color" : "255 255 255" _sunlight3(integer) : "Sky light" : 0 : "Lower hemisphere ambient light" _sunlight3_color(color255) : "Sky color" : "255 255 255" _dirt(choices) : "Global ambient occlusion" : -1 : "Enables dirtmapping on all lights. Note that this is the opposite of how AO is 'supposed' to be used. For AO to be 'realistic' you would only apply it to minlight, ambient fill lights and to sunlight2 at most." = [ -1 : "Disabled" 1 : "Enabled" ] _minlight_dirt(choices) : "Minlight ambient occlusion" : 0 = [0 : "Use global" 1 : "Force on" -1 : "Force off"] _sunlight_dirt(choices) : "Sun ambient occlusion" : 0 = [0 : "Use global" 1 : "Force on" -1 : "Force off"] _sunlight2_dirt(choices) : "Upper sky ambient occlusion" : 0 = [0 : "Use global" 1 : "Force on" -1 : "Force off"] _sunlight3_dirt(choices) : "Lower sky ambient occlusion" : 0 = [0 : "Use global" 1 : "Force on" -1 : "Force off"] // _dirtmode(choices) : "AO mode" : 0 = [0: "Ordered" 1: "Randomized"] // _dirtscale(integer) : "AO scale" : 1 // _dirtgain(integer) : "AO contrast" : 1 // _dirtdepth(integer) : "AO depth" : 128 : "Maximum depth" // _dirtangle(integer) : "AO angle" : 88 : "Lower to avoid unwanted dirt" // _dist(integer) : "Global fade distance scale" : 1 _gamma(integer) : "Adjust brightness of final lightmap" : 1 _range(float) : "Global brightness range scale" : "0.5" // _lightmap_scale(integer) : "Forces all surfaces+submodels to use this specific lightmap scale. Removes LMSHIFT field." ] @baseclass size(8 8 8) color(200 200 0) = LightSource [ targetname(target_source) : "Name" spawnflags(flags) = [1: "Start off"] light(integer) : "Intensity" : 300 _color(color255) : "Color" : "255 255 255" delay(choices) : "Attenuation" : 0 = [ 0 : "Linear" 1 : "Inverse" 2 : "Inverse squared (hotspot)" 5 : "Inverse squared (sharp peak)" 3 : "No falloff" 4 : "No falloff minlight" ] style(choices) : "Animation" : 0 = [ 0 : "Normal" 1 : "Flicker 1" 6 : "Flicker 2" 2 : "Pulse (full)" 5 : "Pulse (bright)" 11: "Pulse (dim)" 10: "Fluoro 1" 3 : "Fluoro 2" 7 : "Fluoro 3" 8 : "Fluoro 4" 4 : "Strobe fast" 9 : "Strobe slow" ] target(target_destination) : "Spotlight target" :: "Point at an info_null to turn the light into a spotlight. The other way is to use mangle" mangle(string) : "Spotlight direction" :: "Z Y X (Yaw Pitch Roll). Turns the light into a spotlight. The other way is to use an info_null target" angle(integer) : "Spotlight cone angle" : 40 : "Set mangle first" _softangle(integer) : "Spotlight inner cone" :: "Angle of the inner cone, with fading intensity toward the outer cone" wait(integer) : "Attenuation multiplier" : 1 // _falloff(integer) : "Forced falloff" :: "Fade to zero at this distance. Only for 'delay 0', ignores 'wait'" _deviance(integer) : "Light size" :: "Split up the light into a sphere of randomly positioned lights within the specified radius for a softer penumbra" _samples(integer) : "Deviance sampling" : 16 : "Number of lights to use for _deviance" _dirt(choices) : "Ambient occlusion" : 0 = [0 : "Use global" 1 : "Force on" -1 : "Force off"] // _dirtscale(integer) : "AO scale" :: "Override the global _dirtscale" // _dirt_off_radius(integer) : "No dirt radius" :: "Start of the gradient" // _dirt_on_radius(integer) : "Full dirt radius" :: "End of the gradient" // _bouncescale(integer) : "Bounce scale" : 1 : "Scale or disable bounce contributions of this light" // _anglescale(float) : "Angle scale" : "0.5" : "The influence of the angle of incidence with a surface" // _surface(string) : "Surface light" :: "Attach this light to every surface with the specified texture name" // _surface_offset(integer) : "Surface light offset" : 2 : "Offset from the surface in map units" // _surface_spotlight(integer) : "Surface spotlight" :: "Turns every copy of this light into a spotlight pointed along the surface normal" // _project_texture(string) : "Project texture" :: "Project the specified texture. Must be used elsewhere in the map." // _project_mangle(string) : "Projection direction" :: "Z Y X (Yaw Pitch Roll). Overrides 'mangle'" // _project_fov(integer) : "Projection FOV" : 90 : "Specifies the field of view angle for a texture projection." // _sun(choices) : "Sun" :: "Turn the light into a sun proxy. Place anywhere, point at an info_null to set direction. Intensity, color, deviance, dirt and anglescale get inherited" = [0: "Off" 1: "On"] ]