Quake1-16px.png

Hexen II.fgd

From Valve Developer Community
Jump to: navigation, search

Info icon
This page documents information about a third-party game running on a non-Valve engine. This information is documented here because it has technical and/or historical relevance to Valve's engines.
This FGD is provided in its unaltered form here, due to its historical relevance to Hammer Valve Hammer Editor.

Old FGD file for Hexen II Hexen II, as included in Hammer 3.x Worldcraft 1.6.

Tip.pngTip:This FGD is built for an old version of Worldcraft, and does not take advantage of features found in newer editors. Both J.A.C.K. J.A.C.K. and TrenchBroom TrenchBroom include updated versions of this FGD which take advantage of modern editor features.

FGD

This is a text file used internally by a Valve Valve Software technology, such as Source Source and GoldSrc GoldSrc Engine.
To open this file, copy the following text into a text editor such as Notepad++ Notepad++, and save it with "save as type" being "all files" and .FGD appended to the file name. Then open the file in the appropriate tool.
hexen2.fgd
Forge Game Data
// // Hexen 2 game definition file (.fgd) for WorldCraft 1.6 and above // version 1.00 latest update: 03 Sept 98 // (was 0.93 from Eutectic, 15 Mar 98) // For changes from 0.92 to 1.0, see hexen2.fgd.readme.txt, written // by Eutectic // // written by Autolycus / [email protected] // email with improvements and suggestions // Changes by Aenn Seidhe Priest - [email protected] // // revised by Eutectic / [email protected] // // // worldspawn // @SolidClass = worldspawn : "World entity" [ message(integer) : "Level name: line # in strings.txt" netname(string) : "Level name: text - 1.12 and up" worldtype(choices) : "World Type" : 0 = [ 0 : "Castle" 1 : "Egypt" 2 : "Mesoamerican" 3 : "Roman" ] CD(integer) : "CD track to play" : 2 midi(string) : "MIDI file to play" : "casa1" spawnflags(Flags) = [ 1 : "Portal of Praevus behaviour" : 0 ] ] // // base marker definitions // @baseclass = Appearflags [ spawnflags(Flags) = [ 256 : "Not in Easy" : 0 512 : "Not in Normal" : 0 1024 : "Not in Hard" : 0 2048 : "Not in Deathmatch" : 0 ] ] @baseclass = Targetname [ targetname(target_source) : "Targetname" ] @baseclass = Target [ target(target_destination) : "Target" ] // // player starts, deathmatch, coop, teleport // @baseclass base(Appearflags) size(-16 -16 -32, 16 16 32) color(0 255 0) = PlayerClass [] @PointClass base(PlayerClass, Targetname) = info_player_start : "Player 1 start" [] @PointClass base(PlayerClass, Targetname) = info_player_start2 : "Player 1 start" [] @PointClass base(PlayerClass) = info_player_deathmatch : "Player deathmatch start" [] @PointClass base(PlayerClass) = info_player_coop : "Player cooperative start" [] @PointClass base(PlayerClass, Targetname) = info_teleport_destination : "Teleport destination" [] // // Artifacts // @Baseclass base(Appearflags) size(-8 -8 -44, 8 8 20) = Artifact [ spawnflags(Flags) = [ 1 : "Floating" : 0 ] ] @PointClass base(Artifact) = art_blastradius : "Disc of Repulsion" [] @PointClass base(Artifact) = art_cubeofforce : "Cube of Force" [] @PointClass base(Artifact) = art_glyph : "Glyph of the Ancients" [] @PointClass base(Artifact) = art_haste : "Boots of Speed" [] @PointClass base(Artifact) = art_HealthBoost : "Quartz Flask" [] @PointClass base(Artifact) = art_invincibility : "Icon of the Defender" [] @PointClass base(Artifact) = art_invisibility : "Invisibility Sphere" [] @PointClass base(Artifact) = art_manaboost : "Krater of Might" [] @PointClass base(Artifact) = art_polymorph : "Seal of the Ovinomancer" [] @PointClass base(Artifact) = art_summon : "Stone of Summoning" [] @PointClass base(Artifact) = art_SuperHBoost : "Mystic Urn" [] @PointClass base(Artifact) = art_teleport : "Chaos Device" [] @PointClass base(Artifact) = art_tomeofpower : "Tome of Power" [] @PointClass base(Artifact) = art_torch : "Torch" [] @SolidClass base(Appearflags) = breakable_brush : "Breakable brush" [ spawnflags(Flags) = [ 1 : "Kill All" : 0 2 : "Hierarchy" : 0 4 : "No Link" : 0 8 : "Check Name" : 0 16 : "Ordered" : 0 32 : "Translucent" : 0 64 : "Invincible" : 0 128 : "Invisible" : 0 ] targetname(string) : "Targetname" killtarget(string) : "Killtarget" killtarget(string) : "Target" thingtype(choices) : "Material type" : 17 = [ 1 : "grey stone" 2 : "wood" 3 : "metal" 4 : "flesh" 5 : "soft stone" 6 : "clay" 7 : "green leaves" 8 : "hay" 9 : "brown stone" 10 : "red cloth" 11 : "wood & green leaves" 12 : "wood & metal" 13 : "wood & gray stone" 14 : "metal & gray stone" 15 : "metal & red cloth" 16 : "spider web" 17 : "glass (default)" 18 : "ice" 19 : "clear glass" 20 : "red glass" ] health(choices) : "Health" : 0 = [ 0 : "Based on material" ] abslight(string) : "Absolute light level" ] @SolidClass base(Appearflags) = brush_pushable : "Pushable brush" [ mass(integer) : "Mass" : 5 ] @SolidClass base(Appearflags, Targetname) = plaque : "Readable plaque" [ spawnflags(Flags) = [ 1 : "invisible" : 0 2 : "deactivated" : 0 4: "NOLINEOFSIGHT - PoP" : 0 8: "NOTSOLID - PoP": 0 ] message(integer) : "Message: line # in strings.txt" targetname(string) : "Targetname: for trigger_activate" noise1(string) : "Noise (dir/sound.wav)" wait(integer) : "Wait" ] // // Cute. Just target to a "target_null" entity and point your favourite // trigger to it and voila! Instant "out-of-body" experience. Eutectic // @PointClass base(Appearflags, Targetname) size(-8 -8 -8, 8 8 8) = camera_remote : "Camera Remote" [ target(string) : "Target (target_null)" targetname(string) : "Targetname" wait(integer) : "Time in camera mode" : 3 angles_x(integer) : "pitch (optional)" angles_y(integer) : "yaw (optional)" netname(string) : "Netname" health(integer) : "Health" ] @PointClass base(Appearflags, Targetname) size(-8 -8 -8, 8 8 8) = target_null : "Null target for camera" [] // // Traps // @PointClass base(Appearflags, Target, Targetname) size(-8 -8 -8, 8 8 8) = trap_fireball : "Fireball trap" [ spawnflags(Flags) = [ 1 : "Trigger-only" : 0 ] wait(integer) : "Time between shots" aflag(integer) : "Radius limiter" dmg(integer) : "Damage" ] @PointClass base(Appearflags, Target, Targetname) size(-8 -8 -8, 8 8 8) = trap_lightning : "Lightning" [ spawnflags(Flags) = [ 1 : "track" : 0 2 : "once" : 0 ] noise(choices) : "Sounds" : 2 = [ 1 : "no sound" 2 : "lightning" ] wait(integer) : "Time between shots" aflag(integer) : "Radius limiter" dmg(integer) : "Damage" ] @PointClass base(Appearflags, Targetname) size(-8 -8 -8, 8 8 8) = trap_shooter : "Shooter" [ spawnflags(Flags) = [ 1 : "super spike" : 0 2 : "laser" : 0 ] wait(integer) : "Time between shots" : 1 nextthink(integer) : "Delay before start" ] @PointClass base(Appearflags, Targetname) size(-8 -8 -8, 8 8 8) = trap_spikeshooter_spray : "Shooter" [ wait(integer) : "Time between shots" : 1 nextthink(integer) : "Delay before start" ] @PointClass base(Appearflags, Targetname) size(-8 -8 -8, 8 8 8) = trap_spikeshooter : "Shooter" [ wait(integer) : "Time between shots" : 1 nextthink(integer) : "Delay before start" ] // // Triggers. All except trigger_control (for ballista control) and // trigger_monsterjump. Eutectic // @BaseClass base(Appearflags, Targetname, Target) = Trigger [ killtarget(string) : "Killtarget" netname(string) : "Netname" aflag(integer) : "Order" wait(integer) : "Wait" health(integer) : "Health" delay(string) : "Delay before trigger" message(integer) : "Message: line # in strings.txt" ] // The silent flag actually works now (isn't that amazing?). Eutectic @SolidClass base(Appearflags, Targetname, Target) = trigger_teleport : "Trigger teleport" [ spawnflags(flags) = [ 1 : "player-only" : 0 2 : "silent" : 0 4 : "activate" : 0 ] ] @SolidClass base(Trigger) = trigger_check : "Check child entities" [ failtarget(string) : "On target fail - PoP" wait(integer) : "Wait" ] @SolidClass base(Trigger) = trigger_attack : "Trigger on weapon fire" [] @SolidClass base(Trigger) = trigger_combination_assign : "Assign combination to counter" [ spawnflags(Flags) = [ 1 : "no touch" : 0 2 : "monster touch" : 0 4 : "push touch" : 0 8 : "deactivated" : 0 16 : "remove puzzle" : 0 32 : "no puzzle" : 0 64 : "light start low" : 0 ] mangle(string) : "Mangle (x1 x2 x3)" : "0 0 0" ] // For ordered counting, count = (number of triggers - 1). For unordered // counting, count = number of triggers. @SolidClass base(Appearflags, Target, Targetname) = trigger_counter : "Counter" [ spawnflags(Flags) = [ 1 : "no message" : 0 2 : "ordered" : 0 4 : "always return" : 0 8 : "deactivated" : 0 ] killtarget(string) : "Killtarget" netname(string) : "Netname" aflag(integer) : "order" wait(integer) : "Wait" : -1 health(integer) : "Health" delay(string) : "Delay before trigger" message(integer) : "Message: line # in strings.txt" count(integer) : "number of triggers - 1" mangle(string) : "Mangle (x1 x2 x3)" ] @SolidClass base(Trigger) = trigger_counter_reset : "Counter reset" [ spawnflags(Flags) = [ 1 : "no touch" : 0 2 : "monster touch" : 0 4 : "push touch" : 0 8 : "deactivated" : 0 16 : "remove puzzle" : 0 32 : "no puzzle" : 0 64 : "light toggle" : 0 128 : "light start low" : 0 ] ] @SolidClass base(Trigger) = trigger_activate : "Activate target" [ spawnflags(Flags) = [ 1 : "once" : 0 2 : "relay" : 0 8 : "deactivated" : 0 ] ] @SolidClass base(trigger_activate) = trigger_deactivate : "Deactivate target" [] // Use this one only if you know what you're doing since it can kill the worldspawn // entity itself. EutecTic @SolidClass base(Appearflags, Targetname) = trigger_deathtouch : "Removes whatever it touches" [ th_die(integer) : "Death type" ] // Once triggered, keeps re-triggering its own target at pre-determined time intervals. // Use the wait key to set time interval between trigger firings. EutecTic @PointClass base(Trigger) size(-8 -8 -8, 8 8 8) = trigger_interval : "Automatic time interval retriggering" [] // When triggered, displays its message and transfers its target and targetname // values to the entities that it targets without actually "triggering" them. @SolidClass base(Appearflags, Targetname, Target) = trigger_message_transfer : "Target transferer" [ message(integer) : "Message: line # in strings.txt" ] @SolidClass base(Trigger) = trigger_multiple : "Multiple trigger" [ spawnflags(Flags) = [ 1 : "no touch" : 0 2 : "monster touch" : 0 4 : "push touch" : 0 8 : "deactivated" : 0 16 : "remove puzzle" : 0 32 : "no puzzle" : 0 64 : "light toggle" : 0 128 : "light start low" : 0 ] soundtype(choices) : "Sounds" : 0 = [ 0 : "no sound" 1 : "secret" 2 : "beep beep" 3 : "large switch" ] puzzle_piece_1(string) : "Puzzle Piece 1" puzzle_piece_2(string) : "Puzzle Piece 2" puzzle_piece_3(string) : "Puzzle Piece 3" puzzle_piece_4(string) : "Puzzle Piece 4" no_puzzle_msg(integer) : "Puzzle msg: line # in strings.txt" ] @SolidClass base(trigger_multiple) = trigger_once : "Single trigger" [ style(integer) : "Light toggle style (33 - 63)" lightvalue1(integer) : "Low light value" : 0 lightvalue2(integer) : "High light value" : 11 fadespeed(string) : "Fade speed" : "0.5" ] @SolidClass base(Appearflags, Targetname) = trigger_push : "Push" [ spawnflags(Flags) = [ 1 : "push once" : 0 ] speed(integer) : "Speed of push" ] @PointClass base(Trigger) size(-8 -8 -8, 8 8 8) = trigger_relay : "Relay" [] @SolidClass base(Trigger) = trigger_changelevel : "Changes level" [ spawnflags(Flags) = [ 1 : "no intermission" : 0 2 : "end of unit" : 0 4 : "end of episode" : 0 ] map(string) : "Map name" ] @SolidClass base(Trigger) = trigger_crosslevel : "Cross level trigger" [ spawnflags(Flags) = [ 1 : "trigger 1" : 0 2 : "trigger 2" : 0 4 : "trigger 3" : 0 8 : "trigger 4" : 0 16 : "trigger 5" : 0 32 : "trigger 6" : 0 64 : "trigger 7" : 0 128 : "trigger 8" : 0 ] ] @SolidClass base(trigger_crosslevel) = trigger_crosslevel_target : "Crosslevel trigger target" [] @SolidClass base(Appearflags) = trigger_hurt : "Hurt brush" [ dmg(integer) : "Damage" : 5 ] @PointClass base(Appearflags, Targetname, Target) size(-10 -10 -10, 10 10 10) = trigger_quake : "Quake! er...Earthquake!" [ spawnflags(Flags) = [ 1 : "do damage" : 0 2 : "multiple" : 0 ] items(integer) : "Radius of quake" dmg(integer) : "Damage" : 5 lifespan(integer) : "Duration" : 2 wait(integer) : "Delay before quake" : 1 ] @SolidClass = func_button : "Button" [ wait(choices) : "Wait" : 1 = [ 1 : "Wait one second" -1 : "Stay pressed" ] health(integer) : "Health" abslight(string) : "Absolute light value" soundtype(choices) : "Sounds" : 0 = [ 0 : "steam metal" 1 : "wooden clunk" 2 : "metallic click" 3 : "in-out" ] speed(integer) : "Speed" : 40 lip(integer) : "Lip" : 4 target(string) : "Target" targetname(string) : "Name" spawnflags(Flags) = [ 1 : "Deactivated" : 0 2 : "Fired only" : 0 4 : "Fire multiple" : 0 256 : "Not in Easy" : 0 512 : "Not in Normal" : 0 1024 : "Not in Hard" : 0 2048 : "Not in Deathmatch" : 0 ] ] @SolidClass base(func_button) = func_pressure : "Pressure plate - weight activated" [ spawnflags(Flags) = [ 2 : "" : 0 4 : "" : 0 ] mass(integer) : "Mass required" ] // Make your own guillotine. Save a dollar today! Perfect for nasty // surprises or working class revolutions. @SolidClass base(Appearflags, Targetname) = func_crusher : "Crusher" [ spawnflags(Flags) = [ 1 : "multiple" : 0 2 : "slide" : 0 4 : "start open" : 0 8 : "end open" : 0 ] speed(integer) : "Speed" : 150 dmg(integer) : "Damage" : 10 lip(integer) : "Lip" : 4 wait(integer) : "Wait" : 1 soundtype(choices) : "Sounds" : 1 = [ 1 : "base fast" 2 : "chain slow" 3 : "guillotine" ] ] // // Doors: they all work now. Eutectic // @BaseClass base(Appearflags, Targetname) = Door [ spawnflags(Flags) = [ 1 : "start open" : 0 2 : "reverse" : 0 4 : "dont link" : 0 ] message(integer) : "Message: line # in strings.txt" wait(choices) : "Wait" : 3 = [ 3 : "default (3)" -1 : "Never return" ] dmg(choices) : "Damage" : 2 = [ 2 : "default (2)" 666 : "instant kill (666)" ] soundtype(choices) : "Sounds" : 4 = [ 0 : "no sound" 1 : "big metal door, swinging" 2 : "big stone door, sliding" 3 : "big wood door, swinging" 4 : "normal wood door, swinging" 5 : "big wood door, sliding" 6 : "drawbridge" 7 : "rotating walkway" 8 : "big metal door, sliding" 9 : "pendulum swinging" ] puzzle_piece_1(string) : "Puzzle Piece 1" puzzle_piece_2(string) : "Puzzle Piece 2" puzzle_piece_3(string) : "Puzzle Piece 3" puzzle_piece_4(string) : "Puzzle Piece 4" no_puzzle_msg(integer) : "Puzzle msg: line # in strings.txt" ] @SolidClass base(Door) = func_door : "Door" [ spawnflags(Flags) = [ 1 : "start open" : 0 2 : "reverse" : 0 4 : "don't link" : 0 8 : "toggle" : 0 16 : "slide" : 0 32 : "normal move" : 0 64 : "remove puzzle" : 0 128 : "no puzzle" : 0 ] level(integer) : "movement level" wait(integer) : "waiting time" dmg(integer) : "damage" lip(integer) : "Lip" : 8 speed(integer) : "Speed" : 100 abslight(string) : "Absolute light value" target(string): "Target" targetname(string): "Targetname" close_target(string) : "Close target (PoP)" ] @SolidClass base(Door) = func_door_rotating : "Rotating door" [ spawnflags(Flags) = [ 8 : "remove puzzle" : 0 16 : "no puzzle" : 0 32 : "toggle" : 0 64 : "x axis" : 0 128 : "y axis" : 0 ] origin(string) : "Center of rotation" : "0 0 0" flags(integer) : "Degrees of rotation" flags2(integer) : "Damage when touched" speed(integer) : "Speed" : 100 abslight(string) : "Absolute light value" ] @SolidClass base(Door) = func_door_secret : "Secret door" [ spawnflags(Flags) = [ 1 : "open once" : 0 2 : "1st reverse" : 0 4 : "1st down" : 0 8 : "no shoot" : 0 16 : "always shoot" : 0 32 : "" : 0 64 : "remove puzzle" : 0 128: "no puzzle" : 0 ] t_width(integer) : "Override width" t_length(integer) : "Override length" ] // // Puzzle pieces for Doors and triggers. puzzle_id must be the name of an // existing .mdl file in the models/puzzle subdirectory in the pak0 or pak1 // files without the file extension. // @PointClass base(Appearflags, Target) size(-8 -8 -8, 8 8 16) = puzzle_piece : "Puzzle piece" [ spawnflags(Flags) = [ 1 : "spawn" : 0 2 : "floating" : 0 4 : "auto get" : 0 ] puzzle_id(string) : "Puzzle id" netname(string) : "Name of piece" ] @PointClass base(Appearflags) size(-8 -8 -8, 8 8 8) = puzzle_static_piece : "Static puzzle piece" [ puzzle_id(string) : "Puzzle id" lifespan(integer) : "Lifespan" ] @SolidClass base(Appearflags) = func_illusionary : "Illusionary brush" [ spawnflags(Flags) = [ 1 : "translucent" : 0 2 : "light" : 0 ] abslight(string) : "Absolute light value" ] @PointClass base(Appearflags) size(-16 -16 0, 16 16 56) = func_monsterspawn_spot : "Monster spawn spot - use with spawner" [ spawnflags(Flags) = [ 1 : "Imp" : 0 2 : "Archer" : 0 4 : "Wizard" : 0 8 : "Scorpion" : 0 16 : "Spider" : 0 64 : "quiet" : 0 ] aflag(integer) : "Spawn order" cnt(integer) : "Number of spawns" : 17 spawnername(string) : "Spawnername" wait(string) : "Time between spawns" : "0.5" ] @PointClass base(func_monsterspawn_spot) size(-16 -16 0, 16 16 56) = func_monsterspawner : "Monster spawner" [ spawnflags(Flags) = [ 32 : "on death" : 0 128 : "trigger only" : 0 ] targetname(string) : "Name" ] // // Platforms // @SolidClass base(Appearflags) = func_newplat : "New platform - non targetable" [ spawnflags(Flags) = [ 1 : "bottom start" : 0 2 : "return to start" : 0 4 : "continuous" : 0 ] speed(integer) : "Speed" : 150 height(integer) : "Height" soundtype(choices) : "Sounds" : 2 = [ 1 : "base fast" 2 : "chain slow" ] wait(integer) : "Wait before moving" : 3 ] @SolidClass base(Appearflags, Targetname) = func_plat : "Standard platform" [ spawnflags(Flags) = [ 1 : "trigger low" : 0 ] speed(integer) : "Speed" : 150 height(integer) : "Height" soundtype(choices) : "Sounds" : 2 = [ 1 : "pully" 2 : "chain" ] wait(integer) : "Wait before moving" : 3 ] // // Rotating stuff // @SolidClass base(Appearflags, Target, Targetname) = func_angletrigger : "rotating trigger" [ spawnflags(Flags) = [ 1 : "Reverse (neg)" : 0 2 : "X axis" : 0 4 : "Y axis" : 0 ] origin(string) : "Center of rotation" : "0 0 0" mangle(string) : "Mangle (Y Z X)" : "0 0 0" cnt(integer) : "Degrees per move" speed(integer) : "Speed" : 40 dmg(integer) : "Damage when blocked" : 2 netname(string) : "Netname" abslight(string) : "Absolute light value" ] @SolidClass base(Appearflags, Targetname) = func_rotating : "Rotating object" [ spawnflags(Flags) = [ 1 : "start on" : 0 2 : "reverse" : 0 4 : "x axis" : 0 8 : "y axis" : 0 16 : "break" : 0 32 : "gradual" : 0 64 : "toggle reverse" : 0 128 : "keep start" : 0 ] origin(string) : "Center of rotation" : "0 0 0" speed(integer) : "Speed" : 100 dmg(integer) : "Damage when blocked" : 2 lifetime(choices) : "Lifetime" : 0 = [ 0 : "Continuous" ] wait(integer) : "Time between lifetimes" : 3 thingtype(choices) : "Material type" : 2 = [ 1 : "grey stone" 2 : "wood (default)" 3 : "metal" 4 : "flesh" 5 : "soft stone" 6 : "clay" 7 : "green leaves" 8 : "hay" 9 : "brown stone" 10 : "red cloth" 11 : "wood & green leaves" 12 : "wood & metal" 13 : "wood & gray stone" 14 : "metal & gray stone" 15 : "metal & red cloth" 16 : "spider web" 17 : "glass" 18 : "ice" 19 : "clear glass" 20 : "red glass" ] health(choices) : "Health" : 0 = [ 0 : "Based on material" ] abslight(string) : "Absolute light value" anglespeed(integer) : "accel/decell time" : 10 ] // func_rotating_movechain is supposed to link rotating ents to moving ents. untested @SolidClass base(Appearflags, Targetname) = func_rotating_movechain : "move chain" [ spawnflags(Flags) = [ 1 : "No angle chain" : 0 ] netname(string) : "Netname" dmg(integer) : "Damage on touch" noise(string) : "Noise" noise1(string) : "Impact noise" wait(integer) : "Length of sound (for looping)" avelocity(string) : "Pitch/Yaw/Roll" : "0 0 0" ] // // Functional Train // // The good news: it's breakable and rotates. Multi-axis rotation is possible // although they can be a bit unpredictable in that respect // // The bad news: same old sound as Quake and same old kludge too. Don't // bother trying to trigger these unless you enjoy chewing // off pieces of your keyboard to vent frustration // @SolidClass base(Appearflags, Targetname) = func_train : "Functional train" [ spawnflags(Flags) = [ 1 : "glow" : 0 2 : "toggle" : 0 4 : "return" : 0 8 : "translucent" : 0 ] target(string) : "Spawn path_corner" origin(string) : "Center of rotation" : "0 0 0" speed(integer) : "Speed" : 100 dmg(integer) : "Damage when blocked" : 2 soundtype(choices) : "Sound" : 1 = [ 0 : "no sound" 1 : "ratchet metal" ] anglespeed(integer) : "Speed of rotation" : 100 pausetime(integer) : "Pause before explode" thingtype(choices) : "Material" : 1 = [ 1 : "grey stone (default)" 2 : "wood" 3 : "metal" 4 : "flesh" 5 : "soft stone" 6 : "clay" 7 : "green leaves" 8 : "hay" 9 : "brown stone" 10 : "red cloth" 11 : "wood & green leaves" 12 : "wood & metal" 13 : "wood & gray stone" 14 : "metal & gray stone" 15 : "metal & red cloth" 16 : "spider web" 17 : "glass" 18 : "ice" 19 : "clear glass" 20 : "red glass" ] abslight(string) : "Absolute light value" ] @PointClass base(Appearflags, Targetname) size(-8 -8 -8, 8 8 8) = path_corner : "Monster and Train path" [ spawnflags(Flags) = [ 1 : "Synch" : 0 ] target(string) : "Next path_corner" wait(choices) : "Wait between moves" : 0 = [ 0 : "no wait" -1 : "stop" -2 : "explode" ] speed(integer) : "Speed" angles(string) : "Rotation angle (Y Z X)" : "0 0 0" anglespeed(integer) : "Rotation speed" ] @SolidClass base(Appearflags, Targetname) = func_wall : "Wall" [ spawnflags(Flags) = [ 1 : "Translucent" : 0 ] abslight(string) : "Absolute light value" ] @PointClass base(Appearflags) = sound_ambient : "Ambient sound" [ soundtype(choices) : "Sound" : 4 = [ 1 : "windmill" 2 : "sewer water sound" 3 : "dripping water, no echo" 4 : "subtle sky/wind" 5 : "crickets / night sounds" 6 : "birds" 7 : "raven caw" 8 : "rocks falling" 9 : "lava bubble" 10 : "water gurgle" 11 : "metal" 12 : "pounding" 13 : "moans and screams" 14 : "creaking" 15 : "chain rattling" ] ] @PointClass base(Appearflags, Targetname) size(-10 -10 -8, 10 10 8) = sound_maker : "Triggerable sound" [ soundtype(choices) : "Sound" : 1 = [ 1 : "bell ringing" 2 : "organ music" 3 : "tomb sound" ] ] //Dehumaniser's little modifications @PointClass base(Appearflags) = tiglari_sound_ambient : "Sound generator" [ netname(string) : "Sound 'subdir/name.wav'" flags(integer) : "Max time between repeating" flags2(integer) : "Min time between repeating" ] //end Dehumaniser's little mod @PointClass base(Appearflags, Targetname) size(-8 -8 -8, 8 8 8) = fx_smoke_generator : "Smoke puffs" [ wait(integer) : "Time between puffs" : 2 thingtype(choices) : "Type of smoke" : 0 = [ 0 : "white puff" 1 : "red" 2 : "green" 3 : "grey" ] ] @SolidClass base(Appearflags) = weather_rain : "Rain area" [ spawnflags(Flags) = [ 1 : "fall straight" : 0 2 : "no splat" : 0 ] color(integer) : "Base color" : 414 counter(integer) : "Density" : 300 wait(string) : "Frequency" : "0.1" soundtype(choices) : "Sounds" : 1 = [ 0 : "rain" 1 : "drip" ] ] @PointClass base(Appearflags, Targetname, Target) = weather_lightning_start : "Beginning of lighting" [ spawnflags(Flags) = [ 1 : "start off" : 0 2 : "thunder sound" : 0 ] noise(choices) : "Sounds" : 2 = [ 1 : "no sound" 2 : "lightning" ] wait(choices) : "Time between strikes" : -1 = [ -1 : "triggerable" ] lifespan(integer) : "Duration" ] @PointClass base(Appearflags, Targetname) = weather_lightning_end : "End of lightning bolt" [] @PointClass base(Appearflags, Targetname, Target) = weather_sunbeam_start : "Start of sunbeam" [ spawnflags(Flags) = [ 1 : "start off" : 0 ] noise(choices) : "Sounds" : 2 = [ 1 : "no sound" 2 : "lightning" ] wait(choices) : "Time between strikes" : -1 = [ -1 : "triggerable" ] lifespan(integer) : "Duration" ] @PointClass base(Appearflags, Targetname) size(-8 -8 -8, 8 8 8) = weather_sunbeam_end : "End of sunbeam" [] @PointClass base(Appearflags) size(-16 -16 -16, 16 16 16) = info_intermission : "intermission camera" [ mangle(string) : "Pitch/Roll/Yaw" : "0 0 0" ] @PointClass base(Appearflags, Targetname) size(-4 -4 -4, 4 4 4) = info_null : "null target" [] @BaseClass base(Appearflags, Target) size(-8 -8 -20, 8 8 45) = Item [ spawnflags(Flags) = [ 1 : "floating" : 0 ] ] @PointClass base(Item) = item_armor_amulet : "Amulet" [] @PointClass base(Item) = item_armor_bracer : "Bracers" [] @PointClass base(Item) = item_armor_breastplate : "Breastplate" [] @PointClass base(Item) = item_armor_helmet : "Helmet" [] @PointClass base(Item) = item_health : "Healing Vial" [] @PointClass base(Item) = item_mana_both : "Combined Mana" [ spawnflags(Flags) = [ 2 : "big (30)" : 0 ] ] @PointClass base(item_mana_both) = item_mana_blue : "Blue Mana" [] @PointClass base(item_mana_both) = item_mana_green : "Green Mana" [] // No idea how this works @PointClass base(Item) = item_spawner : "generic item spawner" [] // // Lights. Can be faded on and off with a trigger. Cool! Doesn't work with // anything else than a straight light though. // @PointClass base(Appearflags, Target, Targetname) size(-8 -8 -8, 8 8 8) = light : "normal light" [ spawnflags(Flags) = [ 1 : "Start Low" : 0 ] light(integer) : "Brightness" : 300 style(integer) : "Style" : 0 ] @PointClass base(Appearflags, Target) size(-10 -10 -40, 10 10 40) = light_flame_large_yellow : "flame" [ light(integer) : "Brightness" : 300 style(integer) : "Style" : 0 dmg(integer) : "Damage, req. Hurt flag" : 0 spawnflags(Flags) = [ 2 : "hurt" : 0 ] ] @PointClass base(Appearflags, Target) size(-10 -10 -12, 12 12 18) = light_flame_small_yellow : "flame" [ light(integer) : "Brightness" : 300 style(integer) : "Style" : 0 dmg(integer) : "Damage, req. Hurt flag" : 0 spawnflags(Flags) = [ 2 : "hurt" : 0 ] ] @PointClass base(Appearflags, Target) size(-8 -8 -8, 8 8 8) = light_gem : "gem light" [ light(integer) : "Brightness" : 300 style(integer) : "Style" : 0 ] @PointClass base(Appearflags, Target) size(-10 -10 -20, 10 10 20) = light_torch_small_walltorch : "walltorch" [ light(integer) : "Brightness" : 200 style(integer) : "Style" : 0 dmg(integer) : "Damage, req. Hurt flag" : 0 spawnflags(Flags) = [ 2 : "hurt" : 0 ] ] @PointClass base(Appearflags, Target) size(-8 -8 -8, 8 8 8) = light_torch_castle : "castle torch" [ light(integer) : "Brightness" : 300 style(integer) : "Style" : 0 dmg(integer) : "Damage, req. Hurt flag" : 0 spawnflags(Flags) = [ 2 : "hurt" : 0 ] ] @PointClass base(light_torch_castle) = light_torch_meso : "meso torch" [] @PointClass base(light_torch_castle) = light_torch_rome : "roman torch" [] @PointClass base(light_torch_castle) = light_torch_egypt : "Egyptian torch" [] @PointClass base(Appearflags, Targetname) size(-8 -8 -8, 8 8 8) = light_thunderstorm : "Thunderstorm effect" [ spawnflags(Flags) = [ 1 : "lightning" : 0 ] light(integer) : "Brightness" : 300 wait(integer) : "Wait (1 - 100)" : 33 dmg(integer) : "Lightning frequency" : 10 lightvalue1(integer) : "Normal light value" : 11 frags(integer) : "Lightning area radius" : 1000 ] @PointClass base(Appearflags) size(-8 -8 -8, 8 8 8) = misc_fireball : "Blue(?) lava balls" [] @PointClass base(Appearflags) size(0 0 0, 32 32 32) = misc_fountain : "Fountain" [ angles(string) : "Direction (Y Z X)" : "0 0 0" movedir(string) : "Force (Y Z X)" : "1 1 1" color(integer) : "Color" : 256 cnt(integer) : "Number of particles" : 2 ] // // trigger: only one for ballista control // @SolidClass base(Appearflags, Target, Targetname) = trigger_control : "Ballista control" [ killtarget(string) : "Killtarget" netname(string) : "Netname" aflag(integer) : "order" wait(integer) : "Wait" health(integer) : "Health" delay(string) : "Delay before trigger" message(integer) : "Message: line # in strings.txt" ] // // objects!!! // @PointClass base(Appearflags, Targetname) size(-45 -45 0, 45 45 60) = obj_ballista : "Ballista" [ spawnflags(Flags) = [ 1 : "track" : 0 ] health(choices) : "Health" : 0 = [ 0 : "Indestructible" ] cnt(integer) : "degrees of pitch off start" : 30 count(integer) : "degrees per movement" : 5 dmg(integer) : "Damage of projectile" : 50 speed(integer) : "Delay between firings" : 5 ] @PointClass base(Appearflags) size(-13 -13 0, 13 13 36) = obj_barrel_indestructible : "Barrel" [ spawnflags(Flags) = [ 1 : "downhill" : 0 2 : "no drop" : 0 4 : "on side" : 0 8 : "sink in water" : 0 ] ] @PointClass base(obj_barrel_indestructible) = obj_barrel : "Barrel" [ health(integer) : "Health" : 25 ] @PointClass base(obj_barrel) = obj_barrel_exploding : "Barrel" [] @PointClass base(Appearflags) size(-10 -10 -5, 10 10 32) = obj_barstool : "Bar stool" [] @PointClass base(Appearflags) size(-16 -16 0, 16 16 40) = obj_beefslab : "Slab o' beef" [] @PointClass base(Appearflags) size(-100 -100 -210, 100 100 8) = obj_bell : "Bell" [] @PointClass base(Appearflags) size(-30 -30 0, 30 30 40) = obj_bench : "Bench" [] @PointClass base(Appearflags) size(-10 -10 0, 10 10 10) = obj_bonepile : "Pile o' bones" [] @PointClass base(Appearflags) size(-8 -8 0, 8 8 10) = obj_book_closed : "Closed book" [] @PointClass base(obj_book_closed) = obj_book_open : "Open book" [] @PointClass base(Appearflags) size(-16 -16 0, 16 16 40) = obj_bush1 : "Bush" [] @PointClass base(Appearflags) size(-36 -32 -10, 36 75 64) = obj_cart : "Cart" [] @PointClass base(Appearflags) size(-16 -16 0, 16 16 40) = obj_cauldron : "Cauldron" [] @PointClass base(Appearflags) size(-10 -10 -5, 10 10 40) = obj_chair : "Chair" [] @PointClass base(Appearflags) size(-100 -100 0, 100 100 200) = obj_chaos_orb : "Chaos Orb" [] @PointClass base(Appearflags) size(-16 -16 0, 16 16 32) = obj_chest3 : "Chest #3" [] @PointClass base(obj_chest3) = obj_chest1 : "Chest #1" [ skin(choices) : "Skin" : 0 = [ 0 : "generic texture" 1 : "roman texture" ] ] @PointClass base(obj_chest3) = obj_chest2 : "Chest #2" [ skin(choices) : "Skin" : 0 = [ 0 : "generic texture" 1 : "meso texture" 2 : "egypt texture" ] ] @PointClass base(Appearflags) size(-32 -32 0, 32 32 10) = obj_corpse1 : "Corpse #1" [ skin(choices) : "Skin" : 1 = [ 0 : "burnt, nude guy" 1 : "normal, nude guy" 2 : "yucky diseased, nude guy" 3 : "wound in back, has pants on" ] ] @PointClass base(obj_corpse1) = obj_corpse2 : "Corpse #2" [ skin(choices) : "Skin" : 1 = [ 0 : "shoulder and facial wounds" 1 : "clawed chest" 2 : "stomach wound" 3 : "just dead" 4 : "webbed" ] ] @PointClass base(Appearflags) size(-26 -26 0, 26 26 70) = obj_fence : "Fence" [] @PointClass base(Appearflags) size(-16 -16 0, 16 16 160) = obj_flag : "Flag" [] @PointClass base(Appearflags) size(-24 -24 0, 24 24 80) = obj_fountain : "Fountain" [] @PointClass base(Appearflags) size(-16 -16 0, 16 16 80) = obj_hedge1 : "X-Mas tree" [] @PointClass base(obj_hedge1) = obj_hedge2 : "Square, medium hedge" [] @PointClass base(obj_hedge2) = obj_hedge3 : "Tall, thin hedge" [] @SolidClass base(Appearflags) = obj_ice : "Ice" [ spawnflags(Flags) = [ 1 : "no translucency" : 0 ] health(integer) : "Health" : 20 friction(string) : "Friction (0 - 10)" : "0.2" abslight(string) : "Absolute light value" : "0.5" ] @PointClass base(Appearflags) size(-16 -40 0, 16 40 50) = obj_pew : "Pew" [] @PointClass base(Appearflags) size(-10 -10 0, 10 10 20) = obj_plant_generic : "Generic plant" [] @PointClass base(Appearflags) size(-10 -10 0, 10 10 40) = obj_plant_meso : "Meso plant" [] @PointClass base(Appearflags) size(-24 -24 0, 24 24 90) = obj_plant_rome : "Roman plant" [] @PointClass base(Appearflags) size(-8 -8 0, 8 8 16) = obj_playerhead_assassin : "Assassin head" [] @PointClass base(obj_playerhead_assassin) = obj_playerhead_crusader : "Crusader head" [] @PointClass base(obj_playerhead_assassin) = obj_playerhead_necromancer : "Necro head" [] @PointClass base(obj_playerhead_assassin) = obj_playerhead_paladin : "Paladin head" [] @PointClass base(Appearflags) size(-24 -24 0, 24 24 50) = obj_pot1 : "Pot #1" [] @PointClass base(obj_pot1) size(-16 -16 0, 16 16 40) = obj_pot2 : "Pot #2" [] @PointClass base(obj_pot2) = obj_pot3 : "Pot #3" [] @PointClass base(Appearflags) size(-8 -8 0, 8 8 32) = obj_seaweed : "Sea weed" [] @PointClass base(Appearflags) size(-8 -8 0, 8 8 16) = obj_skull : "Skull" [] @PointClass base(Appearflags) size(-16 -16 0, 16 16 40) = obj_skull_stick2 : "2 skulls on a stick" [] @PointClass base(obj_skull_stick2) = obj_skullstick : "1 skull on a stick" [] @PointClass base(Appearflags) size(-60 -60 0, 60 60 120) = obj_statue_angel : "Angel" [] @PointClass base(Appearflags) size(-30 -30 0, 30 30 90) = obj_statue_athena : "Athena" [] @PointClass base(Appearflags) size(-24 -24 0, 24 24 90) = obj_statue_caesar : "Caesar" [] @PointClass base(Appearflags) size(-30 -30 0, 30 30 120) = obj_statue_king : "King" [] @PointClass base(Appearflags) size(-56 -14 0, 56 14 60) = obj_statue_lion : "Lion" [] @PointClass base(Appearflags) size(-30 -30 0, 30 30 80) = obj_statue_mars : "Mars" [] @PointClass base(Appearflags) size(-16 -16 0, 16 16 160) = obj_statue_mummy : "Mummy" [] @PointClass base(Appearflags) size(-16 -16 -26, 16 16 160) = obj_statue_mummy_head : "Mummy head"[] @PointClass base(Appearflags) size(-30 -30 0, 30 30 100) = obj_statue_neptune : "Neptune" [] @PointClass base(Appearflags) size(-40 -40 0, 40 40 130) = obj_statue_olmec : "Olmec" [] @PointClass base(Appearflags) size(-16 -16 0, 16 16 80) = obj_statue_snake : "Snake" [] @PointClass base(Appearflags) size(-44 -44 0, 44 44 90) = obj_statue_snake_coil : "Coiling snake" [] @PointClass base(Appearflags) size(-36 -36 0, 36 36 248) = obj_statue_tut : "Tut" [] @PointClass base(Appearflags) size(-16 -16 -8, 16 16 8) = obj_sword : "Sword" [] @PointClass base(Appearflags) size(-24 -24 0, 24 24 60) = obj_tombstone1 : "Cross tombstone" [] @PointClass base(Appearflags) size(-16 -16 0, 16 16 40) = obj_tombstone2 : "Rounded tombstone" [] @PointClass base(Appearflags) size(-42 -42 0, 42 42 160) = obj_tree : "Leafless tree" [] @PointClass base(Appearflags) size(-140 -140 -16, 140 140 220) = obj_tree2 : "Normal tree" [] @PointClass base(Appearflags) size(-25 -25 -25, 25 25 25) = obj_webs : "Spider web" [ spawnflags(Flags) = [ 1 : "solid" : 0 2 : "animate" : 0 4 : "weak" : 0 8 : "touchmove" : 0 16 : "flat" : 0 32 : "no translucency" : 0 ] abslight(integer) : "Absolute light value" health(integer) : "Health" : 0 skin(choices) : "Skin" : 0 = [ 0 : "Many little webs" 1 : "corner web" 2 : "cobwebs" 3 : "giant web" 4 : "big ass web (15x)" ] scale(integer) : "Scale (0 - 2.5)" : 1 v_angle(string) : "Angle of web (Y Z X)" : "0 0 0" ] @PointClass base(Appearflags, Target) size(-8 -8 0, 8 8 32) = player_sheep : "Sheep" [ spawnflags(Flags) = [ 1 : "stationary" : 0 2 : "stuck" : 0 4 : "jump" : 0 8 : "play dead" : 0 16 : "dormant" : 0 32 : "no drop" : 0 ] ] // // Monsters // @BaseClass base(Appearflags, Target, Targetname) size(-16 -16 0, 16 16 50) = Monster [ spawnflags(Flags) = [ 1 : "ambush" : 0 2 : "stuck" : 0 4 : "jump" : 0 8 : "play dead" : 0 16 : "dormant" : 0 32 : "no drop" : 0 64 : "frozen" : 0 ] ] @PointClass base(Monster) = monster_archer : "Archer" [] @PointClass base(Monster) = monster_archer_lord : "Archer lord" [] // For some reason, Eidolon cannot be just inserted like a regular monster. // If anybody has info on this, email me. EutecTic @PointClass base(Appearflags, Targetname, Target) size(-100 -100 0, 100 100 666) = monster_eidolon : "Eidolon" [] @PointClass base(Monster) size(-14 -14 -41, 14 14 23) = monster_fallen_angel : "Fallen angel" [] @PointClass base(monster_fallen_angel) = monster_fallen_angel_lord : "Fallen angel lord" [] // Just a fish, doesn't bite. Only one skin BTW @PointClass base(Appearflags, Targetname, Target) size(-16 -16 -8, 16 16 8) = monster_fish : "Fish" [] @PointClass base(Appearflags, Targetname, Target) size(-64 -64 0, 64 64 194) = monster_golem_bronze : "Bronze golem" [ spawnflags(Flags) = [ 1 : "ambush" : 0 ] ] // The Crystal golem has to be trigered in order for the player to be able // kill it. @PointClass base(monster_golem_bronze) size(-32 -32 -24, 32 32 64) = monster_golem_crystal : "Crystal golem" [] @PointClass base(monster_golem_bronze) size(-55 -55 0, 55 55 120) = monster_golem_iron : "Iron golem" [] @PointClass base(monster_golem_bronze) size(-32 -32 0, 32 32 88) = monster_golem_stone : "Stone golem" [] @PointClass base(Appearflags, Targetname, Target) size(-40 -40 -42, 40 40 42) = monster_hydra : "Hydra" [ spawnflags(Flags) = [ 1 : "stand" : 0 2 : "hover" : 0 4 : "jump" : 0 8 : "play dead" : 0 16 : "dormant" : 0 ] ] // This one disappears a short while after spawning @PointClass base(Appearflags, Targetname, Target) = monster_imp_fire : "Fire imp" [ spawnflags(Flags) = [ 1 : "stand" : 0 2 : "hover" : 0 16 : "gargoyle" : 0 ] ] @PointClass base(monster_imp_fire) = monster_imp_ice : "Ice imp" [] @PointClass base(monster_imp_fire) = monster_imp_lord : "Lord imp" [] // Is there a difference between the green and red medusa? // If there is, I sure can't tell! EutecTic @PointClass base(Monster) = monster_medusa_green : "Green medusa" [ spawnflags(Flags) = [ 32 : "" : 0 64 : "" : 0 ] ] @PointClass base(monster_medusa_green) = monster_medusa_red : "Red medusa" [] @PointClass base(Appearflags, Targetname, Target) size(-16 -16 0, 16 16 55) = monster_mummy : "Mummy" [ spawnflags(Flags) = [ 1 : "Ambush" : 0 ] ] @PointClass base(Monster) = monster_mummy_lord : "Mummy lord" [ spawnflags(Flags) = [ 32 : "" : 0 64 : "" : 0 ] ] @PointClass base(Appearflags, Targetname, Target) size(-3 -3 0, 3 3 7) = monster_rat : "Rat" [ spawnflags(Flags) = [ 1 : "Ambush" : 0 ] ] @PointClass base(monster_rat) size(-20 -20 0, 20 20 10) = monster_ratnest : "Rat's nest" [] @PointClass base(Monster) = monster_raven : "Raven" [] @PointClass base(Appearflags, Targetname, Target) size(-10 -10 0, 10 10 64) = monster_scorpion_yellow : "Yellow scorpion" [ spawnflags(Flags) = [ 1 : "Ambush" : 0 ] ] @PointClass base(monster_scorpion_yellow) = monster_scorpion_black : "Black scorpion" [] @PointClass base(Appearflags, Targetname, Target) size(-24 -24 0, 24 24 64) = monster_skull_wizard : "Skull wizard" [ spawnflags(Flags) = [ 1 : "Ambush" : 0 ] ] @PointClass base(monster_skull_wizard) = monster_skull_wizard_lord : "Skull wizard lord" [] // The snake monster has to be triggered to come to life. Otherwise, it's just // a huge statue. It also goes back to sleep after a while. @PointClass base(Appearflags, Targetname, Target) size(-80 -80 0, 80 80 200) = monster_snake : "Snake" [ spawnflags(Flags) = [ 1 : "Ambush" : 0 ] ] @BaseClass base(Appearflags, Targetname, Target) = Spider [ spawnflags(Flags) = [ 1 : "ambush" : 0 2 : "stuck" : 0 4 : "jump" : 0 8 : "play dead" : 0 16 : "dormant" : 0 32 : "on wall" : 0 ] ] @PointClass base(Spider) size(-16 -16 0, 16 16 26) = monster_spider_red_large : "Big red bug" [] @PointClass base(Spider) size(-12 -12 0, 12 12 16) = monster_spider_red_small : "Small red bug" [] @PointClass base(Spider) size(-16 -16 0, 16 16 26) = monster_spider_yellow_large : "Big yellow bug" [] @PointClass base(Spider) size(-12 -12 0, 12 12 16) = monster_spider_yellow_small : "Small yellow bug" [] @PointClass base(Monster) = monster_werejaguar : "Werejaguar" [ spawnflags(Flags) = [ 32 : "" : 0 64 : "" : 0 ] ] @PointClass base(monster_werejaguar) = monster_werepanther : "Werepanther" [] // The riders and their related triggers, like Eidolon, can't simply be // popped in a map to work. How does one make them work? Good question! // E-mail me if you know. EutecTic @PointClass base(Appearflags, Targetname) size(-55 -55 -24, 55 55 100) = rider_death : "Death!" [ spawnflags(Flags) = [ 1 : "trigger wait" : 0 ] map(string) : "Next map after killing" target(string) : "Start spot on next map" ] @PointClass base(rider_death) = rider_famine : "Famine!" [] @PointClass base(rider_death) = rider_pestilence : "Pestilence!" [] @PointClass base(rider_death) size(-50 -50 -24, 50 50 100) = rider_war : "War!" [] @SolidClass base(Appearflags, Targetname) = rider_quake : "Rider quake" [] @PointClass base(Appearflags) = rider_quake_center : "Quake center" [] @SolidClass base(Appearflags) = rider_trigger_multiple : "Trigger multiple" [ rt_chance(integer) : "Chance of triggering (0 - 1)" : 1 ] @SolidClass base(rider_trigger_multiple) = rider_trigger_once : "Trigger once" [] // // One trigger for the monster trampoline act // @SolidClass base(Appearflags) = trigger_monsterjump : "Monster jumper" [ speed(integer) : "Speed forward" : 200 height(integer) : "Speed upwards" : 200 ] // // Rings // @PointClass base(Appearflags, Target) size(-8 -8 -44, 8 8 20) = Ring_Flight : "Ring o' flight" [ spawnflags(Flags) = [ 1 : "floating" : 0 ] ] @PointClass base(Ring_Flight) = Ring_Regeneration : "Ring o' regeneration" [] @PointClass base(Ring_Flight) = Ring_Turning : "Ring o' turning" [] @PointClass base(Ring_Flight) = Ring_WaterBreathing : "Ring o' water breathing" [] @PointClass base(Appearflags) = viewthing : "Debugging only, do not use" [] @PointClass base(Appearflags, Target) size(-8 -8 -44, 8 8 20) = wp_weapon2 : "Weapon 2" [ spawnflags(Flags) = [ 1 : "floating" : 0 ] ] @PointClass base(wp_weapon2) = wp_weapon3 : "Weapon 3" [] @PointClass base(wp_weapon2) = wp_weapon4_head : "Weapon 4 head" [] @PointClass base(wp_weapon2) = wp_weapon4_staff : "Weapon 4 staff" []