Day of Defeat.fgd

From Valve Developer Community
Jump to: navigation, search

This is the latest official FGD for Day of Defeat Day of Defeat. For an updated FGD that adds the additional entity game_player_equip, see Day of Defeat 4.1.fgd.

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.
Day of Defeat.fgd
Forge Game Data
// --------------------------------------------------------------------------------- // Day of Defeat 1.0 game definition file (.fgd) // Version 4.0 // For Worldcraft 3.3 and above, and Half-Life 1.0.0.9 and above // --------------------------------------------------------------------------------- // Based on the original by Justin DeJong aka "N0TH1NG" R.I.P. // modified from code by Chris Bokitch aka "autolycus" // --------------------------------------------------------------------------------- // Various content contributions by... // Morlam ([email protected]) // Matt Boone aka "Mugsy" // Tim Holt aka "Waldo" // Brandon Russell aka "Axis" // --------------------------------------------------------------------------------- @SolidClass = worldspawn : "World entity" [ message(string) : "Map Description / Title" skyname(string) : "environment map (Sky name)" light(integer) : "Default light level" WaveHeight(string) : "Default Wave Height" MaxRange(string) : "Max viewable distance" : "4096" newunit(choices) : "Flush global entities?" : 0 = [ 0 : "No, keep global ents" 1 : "Yes, flush global ents" ] ] // --------------------------------------------------------------------------------- // BaseClasses // --------------------------------------------------------------------------------- // --------------------------------------------------------------------- // These are the possible hint types currently suported by // the HL code. Note that very few monsters actually support // them, but anyone editing custom monster AI could easily // utilize them. // // Bullsquid will trigger selected activity if node is marked with... // World Human Blood // // Houndeye will trigger selected activity if node is marked with... // World Machinery // Blinking Light // Human Blood // Alien Blood // // Basically to override the default monster behaviour (which is to // ignore all hint types), a monster's code needs to override the // default method FValidateHintType, and return TRUE if the hint type // passed is "interesting", or FALSE if it is not "interesting" // // Note that the values below MUST match the enum set defined in // nodes.h // // Tim Holt ("Waldo") // --------------------------------------------------------------------- @BaseClass = HintTypeChoices [ hinttype(Choices) : "Hint Type" : 0 = [ 0 : "None" 1 : "World Door" 2 : "World Window" 3 : "World Button" 4 : "World Machinery" 5 : "World Ledge" 6 : "World Source" 7 : "World Source" 8 : "World Blinking Light" 9 : "World Bright Colors" 10 : "World Human Blood" 11 : "World Alien Blood" 100 : "Tactical Exit" 101 : "Tactical Vantage" 102 : "Tactical Ambush" 300 : "Stuka Perch" 301 : "Stuka Landing" ] ] // --------------------------------------------------------------------- // These are the possible activity values that are shared by all // monsters. Note that not all monsters can do all activities! // // These activity values must NOT be changed as they must reflect the // values set in an enum in activity.h // // Tim Holt ("Waldo") // --------------------------------------------------------------------- @BaseClass = ActivityTypeChoices [ activity(Choices) : "Hint Activity" : 0 = [ 0 : "Reset" 1 : "Idle" 2 : "Guard" 3 : "Walk" 4 : "Run" 5 : "Fly" 6 : "Swim" 7 : "Hop" 8 : "Leap" 9 : "Fall" 10 : "Land" 11 : "Strafe Left" 12 : "Strafe Right" 13 : "Roll Left" 14 : "Roll Right" 15 : "Turn Left" 16 : "Turn Right" 17 : "Crouch" 18 : "Crouch Idle" 19 : "Stand" 20 : "Use" 21 : "Signal 1" 22 : "Signal 2" 23 : "Signal 3" 24 : "Twitch" 25 : "Cower" 26 : "Small Flinch" 27 : "Big Flinch" 28 : "Range Attack 1" 29 : "Range Attack 2" 30 : "Melee Attack 1" 31 : "Melee Attack 2" 32 : "Reload" 33 : "Arm" 34 : "Disarm" 35 : "Eat" 36 : "Die Simple" 37 : "Die Backward" 38 : "Die Forward" 39 : "Die Violent" 40 : "Barnacle Hit" 41 : "Barnacle Pull" 42 : "Barnacle Chomp" 43 : "Barnacle Chew" 44 : "Sleep" 45 : "Inspect Floor" 46 : "Inspect Wall" 47 : "Idle Angry" 48 : "Walk Hurt" 49 : "Run Hurt" 50 : "Hover" 51 : "Glide" 52 : "Fly Left" 53 : "Fly Right" 54 : "Detect Scent" 55 : "Sniff" 56 : "Bite" 57 : "Threat Display" 58 : "Fear Display" 59 : "Excited" 60 : "Special Attack 1" 61 : "Special Attack 2" 62 : "Combat Idle" 63 : "Walk Scared" 64 : "Run Scared" 65 : "Victory Dance" 66 : "Die Headshot" 67 : "Die Chestshot" 68 : "Die Gutshot" 69 : "Die Backshot" 70 : "Flinch Head" 71 : "Flinch Stomach" 72 : "Flinch Left Arm" 73 : "Flinch Right Arm" 74 : "Flinch Left Leg" 75 : "Flinch Right Leg" ] ] @BaseClass = Angles [ angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" ] @BaseClass = Targetname [ targetname(target_source) : "Name" ] @BaseClass = Target [ target(target_destination) : "Target" ] @BaseClass = MoveWith [ movewith(target_destination) : "Moves with" ] @BaseClass = Master [ //* To invert the master relationship (that is, to disable this entity whenever the master <u>is</u> on), //* add a tilde (~) at the start of the master's name. master(string) : "Master" ] @BaseClass = DoDCam [ zoomlevel(integer): "Zoom FOV (scope=20, binoc=50, normal=90)" : 110 cam_overlay(choices) : "dod_camera View" : 3 = [ 0: "normal" 1: "Scope (20)" 2: "Binoculars (50)" 3: "Widescreen (110)" ] cam_fade(choices) : "dod_camera Fade" : 0 = [ 0: "normal" 1: "black (instant fade out)" 2: "fast fade out (2 sec)" 3: "fast fade in (2 sec)" 4: "slow fade out (4 sec)" 5: "slow fade in (4 sec)" ] subtitle(integer) :"Subtitle" : 0 ] @BaseClass = CPMaster [ spawn_cp_master(string) : "Master Control Point " : "" spawn_cp_neutral(choices) : "Active if neutral?" : 0 = [ 0 : "No" 1 : "Yes" ] spawn_cp_incontrol(choices) : "Active if in control?" : 0 = [ 0 : "No" 1 : "Yes" ] spawn_cp_notincontrol(choices) : "Active if not in control?" : 0 = [ 0 : "No" 1 : "Yes" ] ] @BaseClass base(Target) = Targetx [ delay(string) : "Delay before trigger" : "0" killtarget(target_destination) : "KillTarget" ] @BaseClass size(-16 -16 0, 16 16 32) color(0 0 200) base(Targetname, Angles) = Weapon [] @BaseClass = RenderFxChoices [ renderfx(choices) :"Render FX" : 0 = [ 0: "Normal" 1: "Slow Pulse" 2: "Fast Pulse" 3: "Slow Wide Pulse" 4: "Fast Wide Pulse" 9: "Slow Strobe" 10: "Fast Strobe" 11: "Faster Strobe" 12: "Slow Flicker" 13: "Fast Flicker" 5: "Slow Fade Away" 6: "Fast Fade Away" 7: "Slow Become Solid" 8: "Fast Become Solid" 14: "Constant Glow" 15: "Distort" 16: "Hologram (Distort + fade)" ] ] @BaseClass base(RenderFxChoices) = RenderFields [ rendermode(choices) : "Render Mode" : 0 = [ 0: "Normal" 1: "Color" 2: "Texture" 3: "Glow" 4: "Solid" 5: "Additive" ] renderamt(integer) : "FX Amount (1 - 255)" rendercolor(color255) : "FX Color (R G B)" : "0 0 0" ] @BaseClass size(-16 -16 -36, 16 16 36) color(0 255 0) base(Angles) = PlayerClass [] @BaseClass size(-16 -16 -16, 16 16 16) base(Targetname, Angles, MoveWith) = gibshooterbase [ m_iGibs(integer) : "Number of Gibs" : 3 delay(string) : "Delay between shots" : "0" m_flVelocity(integer) : "Gib Velocity" : 200 m_flVariance(string) : "Course Variance" : "0.15" m_flGibLife(string) : "Gib Life" : "4" spawnflags(Flags) = [ 1 : "Repeatable" : 0 ] ] @BaseClass = Light [ _light(color255) : "Brightness" : "255 255 128 200" style(Choices) : "Appearance" : 0 = [ 0 : "Normal" 10: "Fluorescent flicker" 2 : "Slow, strong pulse" 11: "Slow pulse, noblack" 5 : "Gentle pulse" 1 : "Flicker A" 6 : "Flicker B" 3 : "Candle A" 7 : "Candle B" 8 : "Candle C" 4 : "Fast strobe" 9 : "Slow strobe" 12: "Underwater" ] // ------------------------------------------------------------------------------ // This field will have no effect on a static (i.e. nameless) light. // 'a' is dark, 'm' is normal brightness, 'z' is full brightness. // There's no support for a light to have a custom appearances when it's in a // state other than 'on'. See @trigger_lightstyle if you need this effect. // ------------------------------------------------------------------------------ pattern(string) : "Custom Appearance (on)" m_iOnStyle(Choices) : "Appearance (on)" : 0 = [ 0 : "Normal (on)" 13: "Off" 10: "Fluorescent flicker" 2 : "Slow, strong pulse" 11: "Slow pulse, noblack" 5 : "Gentle pulse" 1 : "Flicker A" 6 : "Flicker B" 3 : "Candle A" 7 : "Candle B" 8 : "Candle C" 4 : "Fast strobe" 9 : "Slow strobe" 12: "Underwater" ] m_iTurnOnTime(integer) : "Time taken to turn on (secs)" : 0 // This field will have no effect on a static (i.e. nameless) light. m_iTurnOnStyle(Choices) : "Appearance (turn on)" : 0 = [ 0: "Normal (off)" 20: "On" 10: "Fluorescent flicker" 2 : "Slow, strong pulse" 11: "Slow pulse, noblack" 5 : "Gentle pulse" 1 : "Flicker A" 6 : "Flicker B" 3 : "Candle A" 7 : "Candle B" 8 : "Candle C" 4 : "Fast strobe" 9 : "Slow strobe" 12: "Underwater" ] m_iTurnOffTime(integer) : "Time taken to turn off (secs)" : 0 m_iTurnOffStyle(Choices) : "Appearance (turn off)" : 0 = [ 0 : "Normal (on)" 13: "Off" 10: "Fluorescent flicker" 2 : "Slow, strong pulse" 11: "Slow pulse, noblack" 5 : "Gentle pulse" 1 : "Flicker A" 6 : "Flicker B" 3 : "Candle A" 7 : "Candle B" 8 : "Candle C" 4 : "Fast strobe" 9 : "Slow strobe" 12: "Underwater" ] _fade(integer) : "Fade (ZHLT Only)" _falloff(integer) : "Falloff 1-2 (ZHLT Only)" ] @BaseClass base(Targetname) = Breakable [ target(target_destination) : "Target on break" health(integer) : "Strength" : 1 material(choices) :"Material type" : 0 = [ //* <b>Gibs:</b> models/glassgibs.mdl //* <b>Break noise:</b> debris/bustglassX.wav //* <b>Bounce noise:</b> debris/glassX.wav 0: "Glass" //* <b>Gibs:</b> models/woodgibs.mdl //* <b>Break noise:</b> debris/bustcrateX.wav //* <b>Bounce noise:</b> debris/woodX.wav 1: "Wood" //* <b>Gibs:</b> models/metalplategibs.mdl //* <b>Break noise:</b> debris/bustmetalX.wav //* <b>Bounce noise:</b> debris/metalX.wav 2: "Metal" //* <b>Gibs:</b> models/fleshgibs.mdl //* <b>Break noise:</b> debris/bustfleshX.wav //* <b>Bounce noise:</b> debris/fleshX.wav 3: "Flesh" //* <b>Gibs:</b> models/cindergibs.mdl //* <b>Break noise:</b> debris/bustconcreteX.wav //* <b>Bounce noise:</b> debris/concreteX.wav 4: "Cinder Block" //* <b>Gibs:</b> models/ceilinggibs.mdl //* <b>Break noise:</b> debris/bustceilingX.wav //* <b>Bounce noise:</b> none 5: "Ceiling Tile" //* <b>Gibs:</b> models/computergibs.mdl //* <b>Break noise:</b> debris/bustmetalX.wav //* <b>Bounce noise:</b> debris/woodX.wav //* <b>Note:</b> Generates sparks when damaged. 6: "Computer" //* <b>Gibs:</b> models/glassgibs.mdl //* <b>Break noise:</b> debris/bustglassX.wav //* <b>Bounce noise:</b> debris/glassX.wav //* <b>Note:</b> Makes ricochet noises when damaged. 7: "Unbreakable Glass" //* <b>Gibs:</b> models/rockgibs.mdl //* <b>Break noise:</b> debris/bustconcreteX.wav //* <b>Bounce noise:</b> debris/concreteX.wav 8: "Rocks" ] explosion(choices) : "Gibs Direction" : 0 = [ 0: "Random" 1: "Relative to Attack" ] delay(string) : "Delay before fire" : "0" gibmodel(studio) : "Gib Model" : "" spawnobject(choices) : "Spawn On Break" : 0 = [ 0: "Nothing" ] explodemagnitude(integer) : "Explode Magnitude (0=none)" : 0 zhlt_lightflags(choices) :"Light Flags (Zhlt 2.2+)" : 0 = [ 0: "Normal" 1: "Embedded Fix" 2: "Opaque (Blocks Light)" 3: "Opaque + Embedded Fix" 6: "ConcaveFix (6)" ] ] @BaseClass base(Targetname, RenderFields, Angles, MoveWith, Master) = Door [ killtarget(target_destination) : "KillTarget" speed(integer) : "Speed" : 100 // ----------------------------------------------------------------- // The number against each sound corresponds to the wav file played. // e.g. Vacuum (4) plays "doors/doormove4.wav". // ----------------------------------------------------------------- movesnd(choices) : "Move Sound" : 0 = [ 0: "No Sound" 1: "Servo (Sliding)" 2: "Pneumatic (Sliding)" 3: "Pneumatic (Rolling)" 4: "Vacuum" 5: "Power Hydraulic" 6: "Large Rollers" 7: "Track Door" 8: "Snappy Metal Door" 9: "Squeaky 1" 10: "Squeaky 2" ] // ----------------------------------------------------------------- // The number against each sound corresponds to the wav file played. // e.g. Chunk (4) plays "doors/doorstop4.wav". // ----------------------------------------------------------------- stopsnd(choices) : "Stop Sound" : 0 = [ 0: "No Sound" 1: "Clang with brake" 2: "Clang reverb" 3: "Ratchet Stop" 4: "Chunk" 5: "Light airbrake" 6: "Metal Slide Stop" 7: "Metal Lock Stop" 8: "Snappy Metal Stop" ] // ----------------------------------------------------------------- // Setting wait to -1 also prevents the door from reversing when it comes into // contact with the player, as seen on the bunker door in Crossfire. // This setting isn't recommended if the door is using MoveWith. // ----------------------------------------------------------------- wait(integer) : "delay before close, -1 stay open " : 4 lip(integer) : "Lip" dmg(integer) : "Damage inflicted when blocked" : 0 message(string) : "Message if triggered" // ----------------------------------------------------------------- // This delay only applies to the Target, not the Fire on Open/Close // fields. // ----------------------------------------------------------------- target(target_destination) : "Target" delay(integer) : "Delay before fire" netname(string) : "Fire on Close" health(integer) : "Health (shoot open)" : 0 //DoD - AXIS TeamDoors(choices) : "Team Specific Door" : 0 = [ 0: "Both Teams" 1: "Allies Only" 2: "Axis Only" ] spawnflags(flags) = [ 1 : "Starts Open" : 0 4 : "Don't link" : 0 8: "Passable" : 0 32: "Toggle" : 0 256:"Use Only" : 0 1024: "Force Touchable" : 0 // ----------------------------------------------------------------- // A synchronised door is different from an unsynchronised door in // two ways: // Firstly it'll trigger its targets as soon as it starts to // move, instead of waiting until it finishes moving. // Secondly, instead of sending USE_TOGGLE, it sends USE_ON // and USE_OFF as appropriate. It also responds appropriately // to USE_ON and USE_OFF. // The main function for synchronised doors is as double doors; // that is, make two synchronised doors which target each other, // and the doors will then open and close as one. This flag // should probably be split into two, but I've run out of flags // to use. :( // ----------------------------------------------------------------- 2048: "Synch movement" : 0 ] locked_sound(choices) : "Locked Sound" : 0 = [ 0: "None" 2: "Access Denied" 8: "Small zap" 10: "Buzz" 11: "Buzz Off" 12: "Latch Locked" ] unlocked_sound(choices) : "Unlocked Sound" : 0 = [ 0: "None" 1: "Big zap & Warmup" 3: "Access Granted" 4: "Quick Combolock" 5: "Power Deadbolt 1" 6: "Power Deadbolt 2" 7: "Plunger" 8: "Small zap" 9: "Keycard Sound" 10: "Buzz" 13: "Latch Unlocked" ] locked_sentence(choices) : "Locked Sentence" : 0 = [ 0: "None" 1: "Gen. Access Denied" 2: "Security Lockout" 3: "Blast Door" 4: "Fire Door" 5: "Chemical Door" 6: "Radiation Door" 7: "Gen. Containment" 8: "Maintenance Door" 9: "Broken Shut Door" ] unlocked_sentence(choices) : "Unlocked Sentence" : 0 = [ 0: "None" 1: "Gen. Access Granted" 2: "Security Disengaged" 3: "Blast Door" 4: "Fire Door" 5: "Chemical Door" 6: "Radiation Door" 7: "Gen. Containment" 8: "Maintenance area" ] _minlight(string) : "Minimum light level" ] @BaseClass base(Targetname, Target, RenderFields, Angles, MoveWith, Master) = BaseTank [ spawnflags(flags) = [ 1 : "Active" : 0 16: "Line of Sight" : 0 32: "Controllable" : 0 64: "Laser Spot" : 0 128: "Match Target" : 1 ] yawrate(string) : "Yaw rate" : "30" yawrange(string) : "Yaw range" : "180" yawtolerance(string) : "Yaw tolerance" : "15" pitchrate(string) : "Pitch rate" : "0" pitchrange(string) : "Pitch range" : "0" pitchtolerance(string) : "Pitch tolerance" : "5" barrel(string) : "Barrel Length" : "0" barrely(string) : "Barrel Horizontal" : "0" barrelz(string) : "Barrel Vertical" : "0" spritesmoke(sprite) : "Smoke Sprite" : "" spriteflash(sprite) : "Flash Sprite" : "" spritescale(string) : "Sprite scale" : "1" rotatesound(sound) : "Rotate Sound" : "" firerate(string) : "Rate of Fire" : "1" bullet_damage(string) : "Damage Per Bullet" : "0" persistence(string) : "Firing persistence" : "1" firespread(choices) : "Bullet accuracy" : 0 = [ 0: "Perfect Shot" 1: "Small cone" 2: "Medium cone" 3: "Large cone" 4: "Extra-large cone" ] minRange(string) : "Minmum target range" : "0" maxRange(string) : "Maximum target range" : "0" _minlight(string) : "Minimum light level" m_iClass(choices) : "Behave as" : 0 = [ 0 : "Normal" //* Likes players and barneys; hates Human Military and most aliens; scared of Alien Military and Bullsquids. 14 : "Allied Friendly" //* Likes Allied players, hates everyone else 15: "Axis Friendly" //* Like Axis players, hates everyone else ] ] @BaseClass = PlatSounds [ movesnd(choices) : "Move Sound" : 0 = [ 0: "No Sound" 1: "big elev 1" 2: "big elev 2" 3: "tech elev 1" 4: "tech elev 2" 5: "tech elev 3" 6: "freight elev 1" 7: "freight elev 2" 8: "heavy elev" 9: "rack elev" 10: "rail elev" 11: "squeek elev" 12: "odd elev 1" 13: "odd elev 2" ] stopsnd(choices) : "Stop Sound" : 0 = [ 0: "No Sound" 1: "big elev stop1" 2: "big elev stop2" 3: "freight elev stop" 4: "heavy elev stop" 5: "rack stop" 6: "rail stop" 7: "squeek stop" 8: "quick stop" ] volume(string) : "Sound Volume 0.0 - 1.0" : "0.85" ] @BaseClass base(Targetname, RenderFields, PlatSounds) = Trackchange [ height(integer) : "Travel altitude" : 0 spawnflags(flags) = [ 1: "Auto Activate train" : 0 2: "Relink track" : 0 8: "Start at Bottom" : 0 16: "Rotate Only" : 0 64: "X Axis" : 0 128: "Y Axis" : 0 ] rotation(integer) : "Spin amount" : 0 train(target_destination) : "Train to switch" toptrack(target_destination) : "Top track" bottomtrack(target_destination) : "Bottom track" speed(integer) : "Move/Rotate speed" : 0 ] @BaseClass base(Target, Targetname, MoveWith) = Trigger [ killtarget(target_destination) : "Kill target" netname(target_destination) : "Target Path" style(integer) : "Style" : 32 master(string) : "Master" sounds(choices) : "Sound style" : 0 = [ 0 : "No Sound" ] delay(string) : "Delay before trigger" : "0" message(string) : "Message (set sound too)" spawnflags(flags) = [ 4: "Pushables": 0 ] ] @BaseClass = ZhltLightFlags [ zhlt_lightflags(choices) :"Light Flags (Zhlt 2.2+)" : 0 = [ 0: "Normal" 1: "Embedded Fix" 2: "Opaque (Blocks Light)" 3: "Opaque + Embedded Fix" 6: "ConcaveFix (6)" ] light_origin(string) : "Light Origin (Zhlt 2.2+)" ] @BaseClass = BeamStartEnd [ LightningStart(target_destination) : "Start Entity" LightningEnd(target_destination) : "Ending Entity" ] @BaseClass base(Targetname, Angles, RenderFields) color(0 200 200) = Monster [ target(string) : "Patrol Path" //* If you just want a monster to be ignored, use the "Prisoner" flag instead. m_iClass(choices) : "Behave as" : 0 = [ 0 : "Normal" //* Likes players and barneys; hates Human Military and most aliens; scared of Alien Military and Bullsquids. 3 : "Scientist" //* Likes players and scientists; dislikes Machines, Human Military, and all aliens. 11: "Barney" //* Dislikes scientists and most aliens. Hates players, barneys and Alien Military. 4 : "Human Military" //* Machines go clang when hit, and never gib. Bioweapons (Snarks and Hornets) ignore them. //* Otherwise, they're pretty much like Human Military. 1 : "Machine (Human Military)" //* Hates players and Human Military. Dislikes Machines, scientists and barneys. 5 : "Alien Military" //* Dislikes Machines and all humans. 7 : "Other Alien" //* Dislikes all humans. Scared of Bullsquids. 8 : "Headcrab" //* Hates Headcrabs. Dislikes humans and other Bullsquids. 9 : "Bullsquid" ] TriggerTarget(String) : "TriggerTarget" TriggerCondition(Choices) : "Trigger Condition" = [ 0 : "No Trigger" 1 : "See Player, Mad at Player" 2 : "Take Damage" 3 : "50% Health Remaining" 4 : "Death" 7 : "Hear World" 8 : "Hear Player" 9 : "Hear Combat" 10: "See Player Unconditional" 11: "See Player, Not In Combat" ] spawnflags(Flags) = [ //* Don't attack the player until s/he can see us. 1 : "WaitTillSeen" : 0 //* Don't speak except when in combat. Don't make "idle" noises. 2 : "Gag" : 0 //* If ticked, the monster can't enter a func_monsterclip area. 4 : "Monster Clip" : 0 //* If ticked, the monster will ignore all other monsters and vice versa. 16: "Prisoner" : 0 //* The dreaded yellow blobs appear for a good reason; they show a monster is stuck //* in a wall and unable to move. Only tick this if you're happy for it to be stuck. 128: "No yellow blobs" : 0 512: "Fade Corpse" : 0 //* Prevents the monster from attacking the player. The monster's relationships with //* other monsters won't change. (If you set "behaves as" to Scientist or Barney, this //* flag will <u>make</u> the monster attack the player.) 2048: "Player Ally" : 0 ] ] @BaseClass = TalkMonster [ //* The sentence (see sound/sentences.txt) to speak when the player tells us to follow UseSentence(String) : "Use Sentence" //* The sentence to speak when the player tells us to stop following UnUseSentence(String) : "Un-Use Sentence" //* The sentence to speak when refusing to follow the player RefusalSentence(String) : "Refusal Sentence" //* While locked by the master, this monster will refuse to follow the player. master(String) : "Master (prevents following)" //* Mostly provided for mod-makers. In the standard sentences.txt, valid settings for this are BA //* (speak as a Barney) and SC (speak as a Scientist). SpeakAs(string) : "Speech Group" spawnflags(Flags) = [ //* Unless given a Master, a pre-disaster monster will refuse to follow the player. 256: "Pre-Disaster" : 0 //* Makes the monster attack the player. The monster's relationships with //* other monsters won't change. (If you set "behaves as" to a class which usually //* attacks the player, this flag will instead <u>prevent</u> the monster from attacking.) 2048: "Attacks Player" : 0 ] ] // =================================================================================================== // DoD specific entities // =================================================================================================== @PointClass base(Targetx, Targetname, DoDCam) iconsprite("sprites/DoD/TriggerCamera.spr") = dod_camera : "DoD Camera" [ wait(integer) : "Hold time" : 10 triggerstart(string) : "Trigger on start" : "" triggerend(string) : "Trigger on end" : "" moveto(string) : "Path Corner" spawnflags(flags) = [ 1: "Start At Player" : 1 2: "Follow Player" : 1 4: "Freeze Player" : 0 ] speed(string) : "Initial Speed" : "0" acceleration(string) : "Acceleration units/sec^2" : "500" deceleration(string) : "Stop Deceleration units/sec^2" : "500" teambound(choices) : "Team that is bound to" : 3 = [ 1 : "Allies" 2 : "Axis" 3 : "Both" ] ] @PointClass studio("models/tnt.mdl") base(Targetname,Target, MoveWith) iconsprite("sprites/DoD/Enigma.spr") = dod_object : "Object Objective" [ model(studio) : "Model" : "models/Tnt.mdl" object_name(string) : "Objects Name" : "" object_owner(choices) : "Team that can pick up" : 0 = [ 0 : "Both" 1 : "Allies" 2 : "Axis" ] object_group(string) : "Group Name" : "" object_takesound(sound) : "Sound when taken" object_capsound(sound) : "Sound when captured" object_dropsound(sound) : "Sound when dropped" object_returnsound(sound) : "Sound when returned" object_carryspeed(string) : "Carry speed (this*speed)" : "0.5" object_resetontouch(choices) : "Reset on touch" : 1 = [ 0 : "No" 1 : "Yes" ] object_resettime(integer) : "Reset time (secs, max. 600)" : 60 object_cappoints(integer) : "Points to capturer" : 10 object_otherpoints(integer) : "Points for teammates" : 5 object_donetarget(string) : "Target When Complete" : "" object_player_sprite(sprite) : "Sprite to show above player if carried" : "sprites/obj_tnt_sm.spr" object_hud_sprite(sprite) : "Sprite to show on HUD if carried" : "sprites/obj_tnt.spr" master(string) : "Master" spawnflags(flags) = [ 1 : "Report pickups and Drops" : 0 ] ] // Capture points @SolidClass base(Targetname,Target, MoveWith) = dod_object_goal : "Object Capturepoint" [ spawnflags(flags) = [ 1 : "Dont Multicap" : 0 2 : "Cap once per round" : 0 ] capobj_group(string) : "Group Name" : "" capobj_donetarget(string) : "Target When Complete" : "" capobj_hud_sprite(sprite) : "Sprite to show on HUD if in zone without object" : "sprites/obj_tnt.spr" master(string) : "Master" ] // Scoring events @PointClass base(Targetname,Target) iconsprite("sprites/DoD/PrimaryScore.spr") = dod_score_ent : "Used for done sequences" [ team(choices) : "For Team" : 0 = [ 0 : "Both" 1 : "Allies" 2 : "Axis" ] score_points(integer) : "Points" : 10 score_resetitemtime(integer) : "Reset Items Time (0 = none)" : 3 score_resetplayerstime(integer) : "Reset Players Time (0 = none)" : 3 noise(string) : "Reset Group (blank for all)" : "" noise2(choices) : "End game?" : 0 = [ 0 : "No" 1 : "Yes" ] message(string) : "Message" : "" score_nextmap(string) : "Move to Next Map" : "" score_nextmapdelay(integer) : "Change level delay ( 0 = none )" : 3 ] // Territorial Control Objectives - by Mugsy @PointClass base(Targetname,Target) iconsprite("sprites/DoD/ControlPointMaster.spr") = dod_control_point_master : "Control Point Master" [ point_give_delay_time(integer) : "Time between point gives ( seconds )" : 20 allies_capture_target(string) : "Target when allies capture" : "" axis_capture_target(string) : "Target when axis capture" : "" master(string) : "Master" : "" cpm_group(string) : "Group Name" : "" ] @PointClass base(MoveWith,Master) iconsprite("sprites/DoD/ControlPoint.spr") = dod_location : "Location" [ location_name(string) : "Name of this location" : "" ] @PointClass studio("models/mapmodels/flags.mdl") base(Targetname,Target,MoveWith) iconsprite("sprites/DoD/ControlPoint.spr") = dod_control_point : "Control Point" [ spawnflags(flags) = [ 1: "Hide Control Point on HUD" : 0 ] point_name(string) : "Control Point Name" : "a control point" point_can_allies_touch(choices) : "Can Allies Touch This Point?" : 0 = [ 0 : "Yes" 1 : "No" ] point_can_axis_touch(choices) : "Can Axis Touch This Point?" : 0 = [ 0 : "Yes" 1 : "No" ] point_pointvalue(integer) : "Time based points value" : 1 point_points_for_cap(integer) : "Points given to capturer" : 1 point_team_points(integer) : "Points given to Team" : 0 point_default_owner(choices) : "Default Owner of the control point" : 0 = [ 0 : "Neither" 1 : "Allies" 2 : "Axis" ] point_axis_capsound(sound) : "Sound Made when Axis captures" : "" point_allies_capsound(sound) : "Sound Made when Allies captures" : "" point_resetsound(sound) : "Sound Made when point resets" : "" point_allies_model(string) : "Model when allies capture" : "models/w_aflag.mdl" point_allies_model_bodygroup(integer) : "Allies model bodygroup" : 0 point_axis_model(string) : "Model when axis capture" : "models/w_gflag.mdl" point_axis_model_bodygroup(integer) : "Axis model bodygroup" : 0 point_reset_model(string) : "Model when point reset" : "models/w_wflag.mdl" point_reset_model_bodygroup(integer) : "Reset model bodygroup" : 0 point_hud_icon_neutral(choices) : "Hud icon when noone owns point" : 0 = [ 0 : "Neutral Flag" 3 : "Neutral Artillery" 6 : "Neutral Bridge" 9 : "Neutral Radio" 12 : "Neutral Docs" 15 : "Neutral Truck" 18 : "Neutral Custom1" 21 : "Neutral Custom2" 24 : "Neutral Custom3" ] point_hud_icon_axis(choices) : "Hud icon when Axis own point" : 0 = [ 2 : "Axis Flag" 5 : "Axis Artillery" 8 : "Axis Bridge" 11 : "Axis Radio" 14 : "Axis Docs" 17 : "Axis Truck" 20 : "Axis Custom1" 23 : "Axis Custom2" 26 : "Axis Custom3" ] point_hud_icon_allies(choices) : "Hud icon when Allies own point" : 0 = [ 1 : "Allied Flag" 4 : "Allied Artillery" 7 : "Allied Bridge" 10 : "Allied Radio" 13 : "Allied Docs" 16 : "Allied Truck" 19 : "Allied Custom1" 22 : "Allied Custom2" 25 : "Allied Custom3" 27 : "British Flag" ] point_allies_target(string) : "Target when allies capture" : "" point_axis_target(string) : "Target when axis capture" : "" point_reset_target(string) : "Target when point reset" : "" point_win_string(string) : "String to Show when capped (vars)" : "" point_group(string) : "Group Name" : "" master(string) : "Master" : "" point_index(integer) : "Index of this point ( unique )" : -1 point_allies_win_string(string) : "Localized Allies Cap String" : "" point_axis_win_string(string) : "Localized Axis Cap String" : "" ] @SolidClass base(Targetname,Target,MoveWith,Master) = dod_trigger_sandbag : "Sandbag Trigger" [ sandbag_range(integer) : "Degrees in either direction" : 15 ] @SolidClass base(Targetname,Target,MoveWith,Master) = dod_capture_area : "Capture Area" [ area_allies_cancap(choices) : "Can Allies Cap?" : 1 = [ 1 : "Yes" 0 : "No" ] area_axis_cancap(choices) : "Can Axis Cap?" : 1 = [ 1 : "Yes" 0 : "No" ] area_allies_numcap(integer) : "Number of Allies to cap" : 1 area_axis_numcap(integer) : "Number of Axis to cap" : 1 area_time_to_cap(integer) : "Time to cap (sec)" : 5 area_allies_startcap(string) : "Target when allies start capture" : "" area_allies_breakcap(string) : "Target when allies cap is broken" : "" area_allies_endcap(string) : "Target when allies complete capture" : "" area_axis_startcap(string) : "Target when axis start capture" : "" area_axis_breakcap(string) : "Target when axis cap is broken" : "" area_axis_endcap(string) : "Target when axis complete capture" : "" area_hud_sprite(sprite) : "Sprite to show on HUD" : "" area_object_group(string) : "Requires Object from this group:" : "" ] // ammo_depot_teams(choices) : "Depot works for which teams" : 6 = // [ // 2 : "Allies Only" // 4 : "Axis Only" // 6 : "Both Teams" // ] // master(string) : "Master" // ] @PointClass base(Master) = info_doddetect : "DoD Gamerules" [ detect_allies_infinite(choices) : "Give Allie team infinite respawns" : 1 = [ 2 : "No" 1 : "Yes" ] detect_axis_infinite(choices) : "Give Axis team infinite respawns" : 1 = [ 2 : "No" 1 : "Yes" ] detect_axis_paras(choices) : "Make Axis team paratroopers" : 0 = [ 0 : "No" 1 : "Yes" ] detect_allies_paras(choices) : "Make Allie team paratroopers" : 0 = [ 0 : "No" 1 : "Yes" ] detect_allies_country(choices) : "Country for Allied team" : 0 = [ 0 : "United States" 1 : "British" ] detect_points_axiseliminated(integer) : "Points given for wiping out Axis team": 5 detect_points_allieseliminated(integer) : "Points given for wiping out Allies team": 5 detect_target_allieseliminated(string) : "Target when allies are eliminated" : "" detect_target_axiseliminated(string) : "Target when axis are eliminated" : "" detect_use_timer(choices) : "Use built-in timer?" : 0 = [ 0 : "No" 1 : "Yes" ] detect_target_timerexpired(string) : "Target when the built-in timer expires" : "" detect_timer_team(choices) : "Which team wins when timer expires" : 0 = [ 0 : "Neither" 1 : "Allies" 2 : "Axis" ] detect_points_timerexpired(integer) : "Points given when timer expires": 5 detect_allies_respawnfactor(string) : "Allies Respawn delay factor" : "1.0" detect_axis_respawnfactor(string) : "Axis Respawn delay factor" : "1.0" detect_wind_velocity_x(string) : "Wind X velocity" : "0.0" detect_wind_velocity_y(string) : "Wind X velocity" : "0.0" detect_weather_type(choices) : "Weather Type" : 0 = [ 0 : "None" 1 : "Rain" 2 : "Snow" ] ] @PointClass base(Targetname,Target) iconsprite("sprites/DoD/PointRelay.spr") = dod_point_relay : "Capture Relay" [ dod_relay_team(choices) : "Relay triggers point with which team" : 1 = [ 1 : "Allies" 2 : "Axis" 0 : "Reset Point" ] ] @PointClass base(Targetname,Target) iconsprite("sprites/DoD/RoundTimer.spr") = dod_round_timer : "DoD Timer" [ spawnflags(flags) = [ 1 : "Shown On HUD" : 1 2 : "Start Off" : 0 ] master(string) : "Master" round_timer_length(integer): "Timer Length( in seconds )" : 60 ] @PointClass studio("models/player/us-inf/us-inf.mdl") base(Master,CPMaster) size(-16 -16 -36, 16 16 36) color(0 255 0) = info_player_allies : "Allies team start" [ ] @PointClass studio("models/player/axis-inf/axis-inf.mdl") base(Master,CPMaster) size(-16 -16 -36, 16 16 36) color(255 0 0) = info_player_axis : "Axis team start" [ ] @PointClass base(Master,CPMaster) size(-16 -16 -36, 16 16 36) color(0 0 255) iconsprite("sprites/DoD/ObserverStart.spr") = info_player_observer : "Observer start" [ ] // =================================================================================================== @PointClass base(Targetname) iconsprite("sprites/DoD/AmbientGeneric.spr") = ambient_generic : "Universal Ambient" [ message(sound) : "Path/filename.wav of WAV" health(integer) : "Volume (10 = loudest)" : 10 preset(choices) :"Dynamic Presets" : 0 = [ 0: "None" 1: "Huge Machine" 2: "Big Machine" 3: "Machine" 4: "Slow Fade in" 5: "Fade in" 6: "Quick Fade in" 7: "Slow Pulse" 8: "Pulse" 9: "Quick pulse" 10: "Slow Oscillator" 11: "Oscillator" 12: "Quick Oscillator" 13: "Grunge pitch" 14: "Very low pitch" 15: "Low pitch" 16: "High pitch" 17: "Very high pitch" 18: "Screaming pitch" 19: "Oscillate spinup/down" 20: "Pulse spinup/down" 21: "Random pitch" 22: "Random pitch fast" 23: "Incremental Spinup" 24: "Alien" 25: "Bizzare" 26: "Planet X" 27: "Haunted" ] volstart(integer) : "Start Volume" : 0 fadein(integer) : "Fade in time (0-100)" : 0 fadeout(integer) : "Fade out time (0-100)" : 0 pitch(integer) : "Pitch (> 100 = higher)" : 100 pitchstart(integer) : "Start Pitch" : 100 spinup(integer) : "Spin up time (0-100)" : 0 spindown(integer) : "Spin down time (0-100)" : 0 lfotype(integer) : "LFO type 0)off 1)sqr 2)tri 3)rnd" : 0 lforate(integer) : "LFO rate (0-1000)" : 0 lfomodpitch(integer) : "LFO mod pitch (0-100)" : 0 lfomodvol(integer) : "LFO mod vol (0-100)" : 0 cspinup(integer) : "Incremental spinup count" : 0 spawnflags(flags) = [ 1: "Play Everywhere" : 0 2: "Small Radius" : 0 4: "Medium Radius" : 1 8: "Large Radius" : 0 16:"Start Silent":0 32:"Is NOT Looped":0 ] ] @PointClass base(Targetname, Angles) iconsprite("sprites/DoD/CyclerSprite.spr") = cycler_sprite : "Sprite Cycler" [ model(sprite) : "Sprite" framerate(integer) : "Frames per second" : 10 renderfx(choices) :"Render FX" : 0 = [ 0: "Normal" 1: "Slow Pulse" 2: "Fast Pulse" 3: "Slow Wide Pulse" 4: "Fast Wide Pulse" 9: "Slow Strobe" 10: "Fast Strobe" 11: "Faster Strobe" 12: "Slow Flicker" 13: "Fast Flicker" 5: "Slow Fade Away" 6: "Fast Fade Away" 7: "Slow Become Solid" 8: "Fast Become Solid" 14: "Constant Glow" 15: "Distort" 16: "Hologram (Distort + fade)" ] rendermode(choices) : "Render Mode" : 0 = [ 0: "Normal" 1: "Color" 2: "Texture" 3: "Glow" 4: "Solid" 5: "Additive" ] renderamt(integer) : "FX Amount (1 - 255)" rendercolor(color255) : "FX Color (R G B)" : "0 0 0" ] @PointClass sprite() base(Targetname, RenderFields, Angles) size(-4 -4 -4, 4 4 4) = cycler_wreckage : "Wreckage" [ framerate(string) : "Framerate" : "10.0" model(sprite) : "Sprite Name" : "sprites/fire.spr" scale(integer) : "Scale" : 1 spawnflags(flags) = [ 32: "Toggle" : 0 64: "Start ON" : 0 ] ] // // Environmental effects // @PointClass base(Targetname) = env_fade : "Screen Fade" [ spawnflags(flags) = [ 1: "Fade From" : 0 2: "Modulate" : 0 4: "Activator Only" : 0 ] duration(string) : "Duration (seconds)" : "2" holdtime(string) : "Hold Fade (seconds)" : "0" renderamt(integer) : "Fade Alpha" : 255 rendercolor(color255) : "Fade Color (R G B)" : "0 0 0" ] @PointClass studio() base(Targetname, Angles, MoveWith, RenderFields) = env_model : "New alternative to cyclers" [ model(studio) : "Model name" skin(integer) : "Skin" : 0 body(integer) : "Body" : 0 m_iszSequence_On(string) : "Sequence when on" m_iAction_On(choices) : "Behaviour when on" : 0 = [ 0: "Freeze when sequence ends" 1: "Loop" 2: "Change state when sequence ends" ] m_iszSequence_Off(string) : "Sequence when off" m_iAction_Off(choices) : "Behaviour when off" : 0 = [ 0: "Freeze when sequence ends" 1: "Loop" 2: "Change state when sequence ends" ] spawnflags(flags) = [ 1: "Initially Off" : 0 2: "Drop to Floor" : 0 ] ] // ------------------------------------------------------------------------------------------ // Essentially, this produces a shifting group of parallel beams. I've called it // env_rain because that's the most-requested use for it. // For a sunbeam effect, try Drip Speed = 0, Drip Width = 30, Drip Brightness = 25, // Drip Color = 255 255 255, Time between updates = 0, Drip Sprite = sprites/laserbeam.spr. // For snow, try Drip Speed = 20, Drip Width = 20, Drip Color = 255 255 255, // Drip Sprite = sprites/rain.spr. // FROM SPIRIT // ------------------------------------------------------------------------------------------ @SolidClass base(Targetname) = env_rain : "Rain Effect" [ //* Set this to (for example) "70 0 0" to make slanted rain. angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" //* Negative numbers will make the rain fall upwards. //* This is an average; each drip will move at between 75%-125% of this speed. m_dripSpeed(integer) : "Drip Speed" : 40 m_dripSize(integer) : "Drip Width" : 5 m_brightness(integer) : "Drip Brightness (1 - 255)" : 128 rendercolor(color255) : "Drip Color (R G B)" : "64 128 255" m_burstSize(integer) : "Number of drips (per update)" : 2 //* If 0, no updates; all the beams will appear as soon as it's created. //* Each beam lasts for three updates. m_flUpdateTime(string) : "Time between updates" : "0.5" texture(sprite) : "Drip Sprite" : "sprites/rain.spr" spawnflags(Flags) = [ 1 : "Start Off" : 0 ] ] @PointClass base(Targetname, BeamStartEnd, RenderFxChoices) size(-16 -16 -16, 16 16 16) = env_beam : "Energy Beam Effect" [ renderamt(integer) : "Brightness (1 - 255)" : 100 rendercolor(color255) : "Beam Color (R G B)" : "0 0 0" Radius(integer) : "Radius" : 256 life(string) : "Life (seconds 0 = infinite)" : "1" BoltWidth(integer) : "Width of beam (pixels*0.1 0-255)" : 20 NoiseAmplitude(integer) : "Amount of noise (0-255)" : 0 texture(sprite) : "Sprite Name" : "sprites/laserbeam.spr" TextureScroll(integer) : "Texture Scroll Rate (0-100)" : 35 framerate(integer) : "Frames per 10 seconds" : 0 framestart(integer) : "Starting Frame" : 0 StrikeTime(string) : "Strike again time (secs)" : "1" damage(string) : "Damage / second" : "0" spawnflags(flags) = [ 1 : "Start On" : 0 2 : "Toggle" : 0 4 : "Random Strike" : 0 8 : "Ring" : 0 16: "StartSparks" : 0 32: "EndSparks" : 0 64: "Decal End" : 0 128: "Shade Start" : 0 256: "Shade End" : 0 ] ] @PointClass base(Targetname, Angles) size(-4 -4 -4, 4 4 4) = env_beverage : "Beverage Dispenser" [ health(integer) : "Capacity" : 10 skin(choices) : "Beverage Type" : 0 = [ 0 : "Coca-Cola" 1 : "Sprite" 2 : "Diet Coke" 3 : "Orange" 4 : "Surge" 5 : "Moxie" 6 : "Random" ] ] @PointClass base(Targetname, Angles) size(-16 -16 -16, 16 16 16) color(255 0 0) = env_blood : "Blood Effects" [ color(choices) : "Blood Color" : 0 = [ 0 : "Red (Human)" ] amount(string) : "Amount of blood (damage to simulate)" : "100" spawnflags(flags) = [ 1: "Random Direction" : 0 2: "Blood Stream" : 0 4: "On Player" : 0 8: "Spray decals" : 0 ] ] @SolidClass base(Targetname) = env_bubbles : "Bubble Volume" [ density(integer) : "Bubble density" : 2 frequency(integer) : "Bubble frequency" : 2 current(integer) : "Speed of Current" : 0 spawnflags(Flags) = [ 1 : "Start Off" : 0 ] ] @PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = env_explosion : "Explosion" [ iMagnitude(Integer) : "Magnitude" : 100 spawnflags(flags) = [ 1: "No Damage" : 0 2: "Repeatable" : 0 4: "No Fireball" : 0 8: "No Smoke" : 0 16: "No Decal" : 0 32: "No Sparks" : 0 ] ] @PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = env_funnel : "Large Portal Funnel" [ spawnflags(flags) = [ 1: "Reverse" : 0 ] ] @PointClass base(Targetname) iconsprite("sprites/DoD/EnvGlobal.spr") color(255 255 128) = env_global : "Global State" [ globalstate(string) : "Global State to Set" triggermode(choices) : "Trigger Mode" : 0 = [ 0 : "Off" 1 : "On" 2 : "Dead" 3 : "Toggle" ] initialstate(choices) : "Initial State" : 0 = [ 0 : "Off" 1 : "On" 2 : "Dead" ] spawnflags(flags) = [ 1 : "Set Initial State" : 0 ] ] @PointClass sprite() base(Targetname, RenderFields, MoveWith) size(-4 -4 -4, 4 4 4) color(30 100 0) = env_glow : "Light Glow/Haze" [ model(sprite) : "model" : "sprites/glow01.spr" scale(integer) : "Sprite Scale" : 1 ] @PointClass base(Targetname, RenderFxChoices, Angles) size(-16 -16 -16, 16 16 16) = env_laser : "Laser Beam Effect" [ LaserTarget(target_destination) : "Target of Laser" renderamt(integer) : "Brightness (1 - 255)" : 100 rendercolor(color255) : "Beam Color (R G B)" : "0 0 0" width(integer) : "Width of beam (pixels*0.1 0-255)" : 20 NoiseAmplitude(integer) : "Amount of noise (0-255)" : 0 texture(sprite) : "Sprite Name" : "sprites/laserbeam.spr" EndSprite(sprite) : "End Sprite" : "" TextureScroll(integer) : "Texture Scroll Rate (0-100)" : 35 framestart(integer) : "Starting Frame" : 0 damage(string) : "Damage / second" : "100" spawnflags(flags) = [ 1 : "Start On" : 0 16: "StartSparks" : 0 32: "EndSparks" : 0 64: "Decal End" : 0 ] ] @PointClass base(Targetname, Target) = env_message : "HUD Text Message" [ message(string) : "Message Name" spawnflags(flags) = [ 1: "Play Once" : 0 2: "All Clients" : 0 4: "Allies Only" : 0 8: "Axis Only" : 0 16: "Allied Player Only" : 0 32: "Axis Player Only" : 0 ] messagesound(sound) : "Sound effect" messagevolume(string) : "Volume 0-10" : "10" messageattenuation(Choices) : "Sound Radius" : 0 = [ 0 : "Small Radius" 1 : "Medium Radius" 2 : "Large Radius" 3 : "Play Everywhere" ] master(string) : "Master" hintmsg(Choices) : "Draw as Hint Message" : 0 = [ 0 : "No" 1 : "Yes" ] ] @PointClass base(Targetname, Target, RenderFields) size(-16 -16 -16, 16 16 16) color(100 100 0) = env_render : "Render Controls" [ spawnflags(flags) = [ 1: "No Renderfx" : 0 2: "No Renderamt" : 0 4: "No Rendermode" : 0 8: "No Rendercolor" : 0 ] ] @PointClass base(Targetname) = env_shake : "Screen Shake" [ spawnflags(flags) = [ 1: "GlobalShake" : 0 ] amplitude(string) : "Amplitude 0-16" : "4" radius(string) : "Effect radius" : "500" duration(string) : "Duration (seconds)" : "1" frequency(string) : "0.1 = jerk, 255.0 = rumble" : "2.5" ] @PointClass base(gibshooterbase, RenderFields) size(-16 -16 -16, 16 16 16) = env_shooter : "Model Shooter" [ shootmodel(studio) : "Model" : "" shootsounds(choices) :"Material Sound" : -1 = [ -1: "None" 0: "Glass" 1: "Wood" 2: "Metal" 3: "Flesh" 4: "Concrete" ] scale(string) : "Gib Scale" : "" skin(integer) : "Gib Skin" : 0 ] @PointClass base(Targetname) size(-4 -4 -4, 4 4 4) color(30 100 0) = env_smoker : "Smoke" [ health(integer) : "Strength" : 1 scale(integer) : "Smoke Scale" : 1 ] @PointClass iconsprite("sprites/DoD/EnvSound.spr") = env_sound : "DSP Sound" [ radius(integer) : "Radius" : 128 roomtype(Choices) : "Room Type" : 0 = [ 0 : "Normal (off)" 1 : "Generic" 2 : "Metal Small" 3 : "Metal Medium" 4 : "Metal Large" 5 : "Tunnel Small" 6 : "Tunnel Medium" 7 : "Tunnel Large" 8 : "Chamber Small" 9 : "Chamber Medium" 10: "Chamber Large" 11: "Bright Small" 12: "Bright Medium" 13: "Bright Large" 14: "Water 1" 15: "Water 2" 16: "Water 3" 17: "Concrete Small" 18: "Concrete Medium" 19: "Concrete Large" 20: "Big 1" 21: "Big 2" 22: "Big 3" 23: "Cavern Small" 24: "Cavern Medium" 25: "Cavern Large" 26: "Weirdo 1" 27: "Weirdo 2" 28: "Weirdo 3" ] ] @PointClass base(Targetname, Angles) size(-16 -16 -16, 16 16 16) iconsprite("sprites/DoD/EnvSpark.spr") = env_spark : "Spark" [ MaxDelay(string) : "Max Delay" : "0" spawnflags(flags) = [ 32: "Toggle" : 0 64: "Start ON" : 0 ] ] @PointClass sprite() base(Targetname, RenderFields, Angles, MoveWith) size(-4 -4 -4, 4 4 4) = env_sprite : "Sprite Effect" [ framerate(string) : "Framerate" : "10.0" model(sprite) : "Sprite Name" : "sprites/glow01.spr" scale(integer) : "Scale" : 1 spawnflags(flags) = [ 1: "Start on" : 0 2: "Play Once" : 0 ] ] //* Simply keeps track of a state. Useful as a master or a conditional "branch". @PointClass base(Targetname, Master) color(128 128 255) = env_state : "Local State" [ //* This entity will be fired (using whatever action you've specified) both when the env_state turns on, and when it turns off. target(target_destination) : "Target (always)" noise1(target_destination) : "Target (when on)" noise2(target_destination) : "Target (when off)" turnontime(string) : "Time taken to turn on" : 0 turnofftime(string) : "Time taken to turn off" : 0 onmode(choices) : "Action when turned on" : 0 = [ 0 : "Send Toggle" 1 : "Send On" 2 : "Send Off" 3 : "Send Kill" 4 : "Do nothing" ] offmode(choices) : "Action when turned off" : 0 = [ 0 : "Send Toggle" 1 : "Send On" 2 : "Send Off" 3 : "Send Kill" 4 : "Do nothing" ] spawnflags(flags) = [ 1 : "Start On" : 0 //* If you're trying to work out what's actually happening in your level, //* try ticking here and the env_state will tell you when it triggers, etc. 2 : "Debug Mode" : 0 ] ] // // game entities (requires Half-Life 1.0.0.9) // @PointClass base(Targetname, Targetx) iconsprite("sprites/DoD/GameCounter.spr") = game_counter : "Fires when it hits limit" [ spawnflags(flags) = [ 1: "Remove On fire" : 0 2: "Reset On fire" : 1 ] master(string) : "Master" frags(integer) : "Initial Value" : 0 health(integer) : "Limit Value" : 10 ] @PointClass base(Targetname, Target) iconsprite("sprites/DoD/GameCounterSet.spr") = game_counter_set : "Sets a game_counter" [ spawnflags(flags) = [ 1: "Remove On fire" : 0 ] master(string) : "Master" frags(integer) : "New Value" : 10 ] @PointClass base(Targetname) iconsprite("sprites/DoD/GameEnd.spr") = game_end : "End this multiplayer game" [ master(string) : "Master" ] @PointClass base(Targetname) iconsprite("sprites/DoD/GamePlayerHurt.spr") = game_player_hurt : "Hurts player who fires" [ dmg(string) : "Damage To Apply" : "999" spawnflags(flags) = [ 1: "Remove On fire" : 0 ] master(string) : "Master" ] @PointClass base(Targetname) iconsprite("sprites/DoD/GamePlayerTeam.spr") = game_player_team : "Allows player to change teams" [ spawnflags(flags) = [ 1 : "Remove On fire" : 0 2 : "Kill Player" : 0 4 : "Gib Player" : 0 ] target(string) : "game_team_master to use" master(string) : "Master" ] @PointClass base(Targetname) iconsprite("sprites/DoD/GameScore.spr") = game_score : "Award/Deduct Points" [ spawnflags(flags) = [ 1: "Allow Negative" : 0 2: "Team Points" : 0 ] points(integer) : "Points to add (+/-)" : 1 master(string) : "Master" ] @PointClass base(Targetname, Targetx) iconsprite("sprites/DoD/GameTeamMaster.spr") = game_team_master : "Team based master/relay" [ spawnflags(flags) = [ 1: "Remove On fire" : 0 ] triggerstate(choices) : "Trigger State" : 0 = [ 0: "Off" 1: "On" 2: "Toggle" ] teamindex(integer) : "Team Index (-1 = no team)" : -1 master(string) : "Master" ] @PointClass base(Targetname, Targetx) iconsprite("sprites/DoD/GameTeamSet.spr") = game_team_set : "Sets team of team_master" [ spawnflags(flags) = [ 1: "Remove On fire" : 0 ] master(string) : "Master" ] @PointClass base(Targetname, Target) iconsprite("sprites/DoD/GameText.spr") = game_text : "HUD Text Message" [ spawnflags(flags) = [ 1: "All Players" : 0 4: "Allies Only" : 0 8: "Axis Only" : 0 16: "Allied Player Only" : 0 32: "Axis Player Only" : 0 ] message(string) : "Message Text" x(string) : "X (0 - 1.0 = left to right) (-1 centers)" : "-1" y(string) : "Y (0 - 1.0 = top to bottom) (-1 centers)" : "-1" effect(Choices) : "Text Effect" : 0 = [ 0 : "Fade In/Out" 1 : "Credits" 2 : "Scan Out" ] color(color255) : "Color1" : "100 100 100" color2(color255) : "Color2" : "240 110 0" fadein(string) : "Fade in Time (or character scan time)" : "1.5" fadeout(string) : "Fade Out Time" : "0.5" holdtime(string) : "Hold Time" : "1.2" fxtime(string) : "Scan time (scan effect only)" : "0.25" channel(choices) : "Text Channel" : 1 = [ 1 : "Channel 1" 2 : "Channel 2" 3 : "Channel 3" 4 : "Channel 4" ] master(string) : "Master" ] @SolidClass base(Targetname) = game_zone_player : "Player Zone brush" [ spawnflags(flags) = [ 1: "Ignore Allies" : 0 2: "Ignore Axis" : 0 ] intarget(target_destination) : "Target for IN players" outtarget(target_destination) : "Target for OUT players" incount(target_destination) : "Counter for IN players" outcount(target_destination) : "Counter for OUT players" master(string) : "Master" ] // // Info entities // //* An alias makes itself an "alternative name" for an entity. To refer to an entity through the alternative name, //* use the alias name preceeded by a *. //* For example, suppose you set up an info_alias entity called 'myalias'. 'Myalias' targets a light called 'redlight'. //* suppose a you set up a @func_trigger field targetting "*myalias", so that when you walk through the func_trigger //* field, redlight gets turned on and off. So far, info_alias seems to be like a @trigger_relay. However, you can also //* set up a switch which targets "myalias", to turn it off... //* This is a very powerful entity, but is probably only useful for experienced mappers. Use with caution. @PointClass base(Targetname) = info_alias : "Alias" [ target(target_destination) : "Reference while On" netname(string) : "Reference while Off" spawnflags(Flags) = [ 1 : "Start Off" : 0 2 : "Debug Mode" : 0 ] ] // ------------------------------------------------------------------------------------------------------------ // An info_group acts similarly to an @info_alias, except that it has several "members" which are are accessed // by 'mygroup.membername'. // These members are set up just like the targets of a @multi_manager- except that they'll contain an entity // reference instead of a delay time. // If you set up its "target" field to refer to an info_alias entity, then when an info_group is triggered, // it will change that info_alias entity to target the group. // This is a very powerful entity, but is probably only useful for experienced mappers. Use with caution. // ------------------------------------------------------------------------------------------------------------ @PointClass base(Targetname) = info_group : "Entity Group" [ target(string) : "Alias to change when fired" spawnflags(flags) = [ 2 : "Debug Mode" : 0 ] ] @PointClass base(Targetname) iconsprite("sprites/DoD/EnvTarget.spr") = info_null : "info_null (spotlight target)" [] @PointClass base(Targetname, MoveWith) size(-4 -4 -4, 4 4 4) color(200 100 50) iconsprite("sprites/DoD/EnvTarget.spr") = info_target : "Beam Target" [] @PointClass size(-8 -8 0, 8 8 16) base(PlayerClass, Targetname) = info_teleport_destination : "Teleport destination" [] @PointClass decal() base(Targetname) = infodecal : "Decal" [ texture(decal) ] // // Light entities // @PointClass iconsprite("sprites/lightbulb.spr") base(Target, Targetname, Light) = light : "Invisible lightsource" [ spawnflags(Flags) = [ 1 : "Initially dark" : 0 ] ] @PointClass base(Angles) iconsprite("sprites/DoD/LightEnvironment.spr") = light_environment : "Environment" [ pitch(integer) : "Pitch" : 0 _light(color255) : "Brightness" : "255 255 128 200" _diffuse_light(color255) : "Diffuse Brightness" : "128 255 255 200" ] @PointClass base(Targetname, Target, Angles) iconsprite("sprites/DoD/LightSpot.spr") = light_spot : "Spotlight" [ _cone(integer) : "Inner (bright) angle" : 30 _cone2(integer) : "Outer (fading) angle" : 45 pitch(integer) : "Pitch" : -90 _light(color255) : "Brightness" : "255 255 128 200" _sky(Choices) : "Is Sky" : 0 = [ 0 : "No" 1 : "Yes" ] spawnflags(Flags) = [ 1 : "Initially dark" : 0 ] style(Choices) : "Appearance" : 0 = [ 0 : "Normal" 10: "Fluorescent flicker" 2 : "Slow, strong pulse" 11: "Slow pulse, noblack" 5 : "Gentle pulse" 1 : "Flicker A" 6 : "Flicker B" 3 : "Candle A" 7 : "Candle B" 8 : "Candle C" 4 : "Fast strobe" 9 : "Slow strobe" ] pattern(string) : "Custom Appearance" ] // ------------------------------------------------------------------------------------------------------------ // A multi_alias is an @info_alias with more than one target. It's mainly useful to group entities // together, while still allowing them to have individual names. // For example, suppose you have a set of lights in your level. Each one has its own lightswitch, // which allows it to be switched on and off on its own. But later in the level, you want the power // (i.e. all the lights) to go off. One way to do that would be to make a multi_alias which // targets all the lights, and simply trigger what that alias refers to. // ------------------------------------------------------------------------------------------------------------ @PointClass base(Targetname) = multi_alias : "Multi-target alias" [] // ------------------------------------------------------------------------------------------------------------ // Triggers a sequence of up to 16 entities, at various time offsets. // To specify the list of entities for it to trigger, turn off Worldcraft's "smart edit" mode // and add fields manually. The name of the field is the targetname of the entity to trigger, // and the contents of the field are the time (in seconds) to wait before triggering it. // If a master is given, then while the master is in any state but ON, the manager will ignore // all signals. This won't prevent it from continuing a sequence that started while the master // was ON, but it will prevent a new sequence from starting. // ------------------------------------------------------------------------------------------------------------ @PointClass base(Targetname, Master) iconsprite("sprites/DoD/multi_manager.spr") = multi_manager : "MultiTarget Manager" [ //* How long to wait before starting the sequence. This delay is <u>in addition to</u> the offsets given for each individual target. wait(string) : "Time offset" //* If set, then each time it's triggered the manager will wait for a random length of time. The "Time Offset" value is used as a minimum offset. maxwait(string) : "Max Time offset (Random)" //* Message sent to the targets. There's no way (currently) to have a different message be sent to //* each target. triggerstate(choices) : "Trigger to send" = [ 0: "Toggle" 1: "On" 2: "Off" 3: "Kill" //* If you select this, the manager will send on whatever triggers it received itself. //* So this is a way to "fork" the signal sent by another entity. 4: "Same as input" ] mode(choices) : "Mode" = [ //* The 'value' for each target is the time offset at which to fire it. 0: "Normal (time offset)" //* Choose one of the targets at random, and fire it. The 'value' gives the relative chance //* that each target will be chosen. 1: "Choose one (weighted)" //* Go through the list of targets, and for each one either fire it, or don't fire it. //* The 'value' gives the percentage chance that a value will get fired. 2: "% chance for each" ] spawnflags(Flags) = [ //* By default, a manager will ignore all inputs while it's performing a sequence. //* Tick this to allow more than one sequence to run at a time. 1 : "Multi-threaded" : 0 //* When the sequence ends, start again from the beginning. You can stop the //* loop by toggling the manager a second time. 2 : "Loop" : 0 //* The manager will USE_KILL itself when the sequence is complete. //* In loop mode, the manager will only USE_KILL itself when told to stop the loop. 3 : "Once only" : 0 ] ] // ------------------------------------------------------------------------------------------------------------ // A multi_watcher is like a normal @watcher, except that it watches up to 16 entities at once. // The entity is probably most useful when used as a master for another entity- a versatile replacement // for the @multisource, in a way. Note that if you need to handle a complex logical operation, you can make a // multi_watcher which watches other multi_watchers. // The list of watched entities is specified in the same way as the targets of a @multi_manager, except that the // 'value' should be set to 0. (Future versions of Spirit may make use of the value, but for now it's ignored.) // This is a very powerful entity, but is probably only useful for experienced mappers. // ------------------------------------------------------------------------------------------------------------ @PointClass iconsprite("sprites/multiwatcher.spr") base(Targetname) = multi_watcher : "State Watcher" [ m_fLogic(choices) : "Logical test" : 0 = [ 0: "All (AND)" 2: "Not all (NAND)" 1: "At least one (OR)" 3: "None (NOR)" 4: "Exactly one (XOR)" 5: "Any number but one (XNOR)" ] //* This entity will be sent USE_ON or USE_OFF, as appropriate, whenever the watcher's state changes. target(target_destination) : "Entity to notify" //* The bottom 5 flags are used to specify what states are being watched for. Default is to just watch for 'On'. spawnflags(flags) = [ //* If this is enabled, the watcher will always notify its target with USE_TOGGLE, instead of sending ON or OFF. 1: "Send 'Toggle'" : 0 8: "NOT 'On'" : 0 16: "'Off'" : 0 32: "'Turn On'" : 0 64: "'Turn Off'" : 0 128:"'In Use'" : 0 ] ] @PointClass base(Targetname, Target) iconsprite("sprites/DoD/MultiSource.spr") = multisource : "Multisource" [ globalstate(string) : "Global State Master" ] @PointClass base(Targetname, Angles, DoDCam) size(16 16 16) color(247 181 82) = path_corner : "Moving platform stop" [ target(target_destination) : "Next stop target" speed(integer) : "New Train Speed" : 0 yaw_speed(integer) : "New Train rot. Speed" : 0 spawnflags(Flags) = [ 1: "Wait for retrigger" : 0 2: "Teleport" : 0 4: "Fire once" : 0 ] message(target_destination) : "Fire On Pass" wait(integer) : "Wait here (secs)" : 0 ] @PointClass base(Targetname) size(16 16 16) = path_track : "Train Track Path" [ spawnflags(Flags) = [ 1: "Disabled" : 0 2: "Fire once" : 0 4: "Branch Reverse" : 0 8: "Disable train" : 0 ] target(target_destination) : "Next stop target" message(target_destination) : "Fire On Pass" altpath(target_destination) : "Branch Path" netname(target_destination) : "Fire on dead end" speed(integer) : "New Train Speed" : 0 ] @PointClass base(Targetname) size(-16 -16 -16, 16 16 16) iconsprite("sprites/DoD/PlayerWeaponStrip.spr") = player_weaponstrip : "Strips player's weapons" [] // // Trigger entities // @PointClass base(Targetx) iconsprite("sprites/DoD/TriggerAuto.spr") = trigger_auto : "AutoTrigger" [ spawnflags(Flags) = [ 1 : "Remove On fire" : 1 512 : "Trigger at every round start" : 1 ] triggerstate(choices) : "Trigger State" : 0 = [ 0 : "Off" 1 : "On" 2 : "Toggle" ] ] @PointClass base(Targetx, Targetname) iconsprite("sprites/DoD/TriggerCamera.spr") = trigger_camera : "Trigger Camera" [ wait(integer) : "Hold time" : 10 moveto(string) : "Path Corner" spawnflags(flags) = [ 1: "Start At Player" : 1 2: "Follow Player" : 1 4: "Freeze Player" : 0 ] speed(string) : "Initial Speed" : "0" acceleration(string) : "Acceleration units/sec^2" : "500" deceleration(string) : "Stop Deceleration units/sec^2" : "500" ] //* This is a very powerful entity, but is probably only useful for experienced mappers. Use with caution. @PointClass base(Targetname) = trigger_changealias : "Trigger Change Alias" [ target(string) : "Alias to affect" netname(string) : "String to Set" spawnflags(flags) = [ //* If this is ticked, alias references in the "String to Set" will be resolved before any changes are //* applied. So, for example, suppose you set this entity up to affect an alias "alias1", and to set alias1 //* to target "*myalias". //* If "Resolve references" is left unticked, then "alias1" will change to refer to "*myalias"; that is, //* in future any changes to "myalias" will also change what "alias1" refers to. //* By contrast, if "Resolve references" is ticked, then "alias1" will change to refer to whatever "myalias" //* is referring to <u>at the time the trigger_changealias takes effect</u>. Future changes to "myalias" will //* therefore not affect "alias1". 1 : "Resolve references" : 0 2 : "Debug Mode" : 0 ] ] @PointClass base(Targetx, Targetname) iconsprite("sprites/DoD/TriggerChangetarget.spr") = trigger_changetarget : "Trigger Change Target" [ m_iszNewTarget(string) : "New Target" ] @SolidClass base(Trigger, Targetname) = trigger_counter : "Trigger counter" [ spawnflags(flags) = [ 1 : "No Message" : 0 ] master(string) : "Master" count(integer) : "Count before activation" : 2 ] @SolidClass base(Targetname,Target,MoveWith) = trigger_hurt : "Trigger player hurt" [ spawnflags(flags) = [ 1: "Target Once" : 0 2: "Start Off" : 0 16:"FireClientOnly" : 0 32:"TouchClientOnly" : 0 64:"DontHurtAllies" : 0 128:"DontHurtAxis" : 0 ] master(string) : "Master" dmg(integer) : "Damage" : 10 delay(string) : "Delay before trigger" : "0" damagetype(choices) : "Damage Type" : 0 = [ 0 : "GENERIC" 1 : "CRUSH" 2 : "BULLET" 4 : "SLASH" 8 : "BURN" 16 : "FREEZE" 32 : "FALL" 64 : "BLAST" 128 : "CLUB" 256 : "SHOCK" 512 : "SONIC" 1024 : "ENERGYBEAM" 16384: "DROWN" 32768 : "PARALYSE" 65536 : "NERVEGAS" 131072 : "POISON" 262144 : "RADIATION" 524288 : "DROWNRECOVER" 1048576 : "CHEMICAL" 2097152 : "SLOWBURN" 4194304 : "SLOWFREEZE" ] ] @SolidClass base(Trigger) = trigger_multiple : "Trigger: Activate multiple" [ spawnflags(flags) = [ 512: "Reset at round restart" : 1 ] wait(integer) : "Delay before reset" : 10 teamonly (choices) : "Team Affected" : 0 = [ 0 : "Both" 1 : "Allied" 2 : "Axis" ] ] @SolidClass base(Trigger) = trigger_once : "Trigger: Activate once" [ spawnflags(flags) = [ 512 : "Reset at round restart" : 1 ] teamonly (choices) : "Team Affected" : 0 = [ 0 : "Both" 1 : "Allied" 2 : "Axis" ] ] @SolidClass base(Trigger, Angles) = trigger_push : "Trigger player push" [ spawnflags(flags) = [ 1: "Once Only" : 0 2: "Start Off" : 0 ] speed(integer) : "Speed of push" : 40 ] //* Only affects dynamic lights. @PointClass base(Targetname, Target) = trigger_lightstyle : "Trigger Change Lightstyle" [ style(choices) : "New Appearance" : 0 = [ 0 : "On" 13: "Off" 10: "Fluorescent flicker" 2 : "Slow, strong pulse" 11: "Slow pulse, noblack" 5 : "Gentle pulse" 1 : "Flicker A" 6 : "Flicker B" 3 : "Candle A" 7 : "Candle B" 8 : "Candle C" 4 : "Fast strobe" 9 : "Slow strobe" 12: "Underwater" 14: "Slow Fade In" 15: "Medium Fade In" 16: "Fast Fade In" ] pattern(string) : "Custom Appearance" m_iWait(integer) : "Hold time (-1 for permanent)" ] @PointClass base(Targetname, Targetx) iconsprite("sprites/DoD/TriggerRelay.spr") = trigger_relay : "Trigger Relay" [ spawnflags(flags) = [ 1: "Remove On fire" : 0 ] triggerstate(choices) : "Trigger State" : 0 = [ 0: "Off" 1: "On" 2: "Toggle" ] ] @SolidClass base(Targetname, Master) = trigger_sound : "Brush-based DSP Sound" [ target(target_destination) : "Fire when activated" roomtype(choices) : "Room Type" : 0 = [ 0 : "(Disable all filters)" 1 : "Generic (no filters)" 2 : "Metal Small" 3 : "Metal Medium" 4 : "Metal Large" 5 : "Tunnel Small" 6 : "Tunnel Medium" 7 : "Tunnel Large" 8 : "Chamber Small" 9 : "Chamber Medium" 10: "Chamber Large" 11: "Bright Small" 12: "Bright Medium" 13: "Bright Large" 14: "Water 1" 15: "Water 2" 16: "Water 3" 17: "Concrete Small" 18: "Concrete Medium" 19: "Concrete Large" 20: "Big 1" 21: "Big 2" 22: "Big 3" 23: "Cavern Small" 24: "Cavern Medium" 25: "Cavern Large" 26: "Weirdo 1" 27: "Weirdo 2" 28: "Weirdo 3" ] spawnflags(flags) = [ //* If ticked, this entity will override the effect of a env_sound or non-Priority trigger_sound. //* (The default is for an env_sound to override a trigger_sound.) //* This is only usually useful if an env_sound's radius extends inside a trigger_sound, //* or if two trigger_sounds overlap/come very close. 1: "Priority" : 0 ] ] @SolidClass base(Trigger) = trigger_gravity : "Trigger Gravity" [ gravity(integer) : "Gravity (0-1)" : 1 ] @SolidClass base(Trigger) = trigger_teleport : "Trigger teleport" [ spawnflags(flags) = [ 8: "No Allies" : 0 16: "No Axis" : 0 ] ] // // Function entities // @SolidClass base(Breakable, RenderFields, ZhltLightFlags, MoveWith) = func_breakable : "Breakable Object" [ spawnflags(flags) = [ 1 : "Only Trigger" : 0 2 : "Touch" : 0 4 : "Pressure" : 0 8 : "Only Grenades" : 0 16 : "Allies Only" : 0 32 : "Axis Only" : 0 64 : "Object Cap Only" : 0 256 : "Bazooka or Grenades" : 0 512 : "Only Bazooka" : 0 ] _minlight(string) : "Minimum light level" capobj_group(string) : "TnT Group Name (if used)" : "" tnttrigger(string) : "Trigger when tnt set (if used)" : "" tntdelay(integer) : "delay before breaking with tnt" : 3 capobj_hud_sprite(sprite) : "Sprite to show on HUD if in zone without object" : "sprites/obj_tnt.spr" ] @SolidClass base(Targetname, RenderFields, Angles, ZhltLightFlags, MoveWith) = func_button : "Button" [ speed(integer) : "Speed" : 5 target(target_destination) : "Targetted object" netname(target_destination) : "Target Path" // Path Target overrides Targetted Object health(integer) : "Health (shootable if > 0)" lip(integer) : "Lip" master(string) : "Master" sounds(choices) : "Sounds" : 0 = [ 0: "None" 1: "Big zap & Warmup" 2: "Access Denied" 3: "Access Granted" 4: "Quick Combolock" 5: "Power Deadbolt 1" 6: "Power Deadbolt 2" 7: "Plunger" 8: "Small zap" 9: "Keycard Sound" 10: "Buzz" 11: "Buzz Off" 14: "Lightswitch" ] wait(integer) : "delay before reset (-1 stay)" : 3 delay(string) : "Delay before trigger" : "0" spawnflags(flags) = [ 1: "Don't move" : 0 2:"Allies Can't activate" : 0 4:"Axis Can't activate" : 0 32: "Toggle" : 0 64: "Sparks" : 0 256:"Touch Activates": 0 ] locked_sound(choices) : "Locked Sound" : 0 = [ 0: "None" 2: "Access Denied" 8: "Small zap" 10: "Buzz" 11: "Buzz Off" 12: "Latch Locked" ] unlocked_sound(choices) : "Unlocked Sound" : 0 = [ 0: "None" 1: "Big zap & Warmup" 3: "Access Granted" 4: "Quick Combolock" 5: "Power Deadbolt 1" 6: "Power Deadbolt 2" 7: "Plunger" 8: "Small zap" 9: "Keycard Sound" 10: "Buzz" 13: "Latch Unlocked" 14: "Lightswitch" ] locked_sentence(choices) : "Locked Sentence" : 0 = [ 0: "None" 1: "Gen. Access Denied" 2: "Security Lockout" 3: "Blast Door" 4: "Fire Door" 5: "Chemical Door" 6: "Radiation Door" 7: "Gen. Containment" 8: "Maintenance Door" 9: "Broken Shut Door" ] unlocked_sentence(choices) : "Unlocked Sentence" : 0 = [ 0: "None" 1: "Gen. Access Granted" 2: "Security Disengaged" 3: "Blast Door" 4: "Fire Door" 5: "Chemical Door" 6: "Radiation Door" 7: "Gen. Containment" 8: "Maintenance area" ] _minlight(string) : "Minimum light level" ] @SolidClass base(RenderFields, Targetname, Angles, ZhltLightFlags) = func_conveyor : "Conveyor Belt" [ spawnflags(flags) = [ 1 : "No Push" : 0 2 : "Not Solid" : 0 ] speed(string) : "Conveyor Speed" : "100" _minlight(string) : "Minimum light level" ] @SolidClass base(Door, ZhltLightFlags) = func_door : "Basic door" [] @SolidClass base(Door, ZhltLightFlags) = func_door_rotating : "Rotating door" [ spawnflags(flags) = [ 2 : "Reverse Dir" : 0 16: "One-way" : 0 64: "X Axis" : 0 128: "Y Axis" : 0 ] distance(integer) : "Distance (deg)" : 90 angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" ] @SolidClass base(RenderFields) = func_friction : "Surface with a change in friction" [ modifier(integer) : "Percentage of standard (0 - 100)" : 15 ] @SolidClass base(Targetname, RenderFields, ZhltLightFlags, MoveWith) = func_illusionary : "Fake Wall/Light" [ skin(choices) : "Contents" : -1 = [ -1: "Empty" -3: "Water" -7: "Volumetric Light" -17: "Zero-G" -18: "Hover-Field" -19: "Fog effect" ] _minlight(string) : "Minimum light level" ] @SolidClass base(Targetname, MoveWith) = func_ladder : "Ladder" [ spawnflags(flags) = [ 1 : "Silent" : 0 ] ] @SolidClass base(Targetname) = func_mortar_field : "Mortar Field" [ m_flSpread(integer) : "Spread Radius" : 64 m_iCount(integer) : "Repeat Count" : 1 m_fControl(Choices) : "Targeting" : 0 = [ 0 : "Random" 1 : "Activator" 2 : "Table" ] m_iszXController(target_destination) : "X Controller" m_iszYController(target_destination) : "Y Controller" m_iDamage(integer) : "Damage" : 200 ] @SolidClass base(Targetname, RenderFields, Angles, ZhltLightFlags, MoveWith) = func_pendulum : "Swings back and forth" [ speed(integer) : "Speed" : 100 distance(integer) : "Distance (deg)" : 90 damp(integer) : "Damping (0-1000)" : 0 dmg(integer) : "Damage inflicted when blocked" : 0 spawnflags(flags) = [ 1: "Start ON" : 0 8: "Passable" : 0 16: "Auto-return" : 0 64: "X Axis" : 0 128: "Y Axis" : 0 ] _minlight(integer) : "_minlight" ] @SolidClass base(Targetname, RenderFields, PlatSounds, ZhltLightFlags) = func_plat : "Elevator" [ spawnflags(Flags) = [ 1: "Toggle" : 0 ] height(integer) : "Travel altitude (can be negative)" : 0 speed(integer) : "Speed" : 50 _minlight(string) : "Minimum light level" ] @SolidClass base(Targetname, RenderFields, PlatSounds, Angles, ZhltLightFlags) = func_platrot : "Moving Rotating platform" [ spawnflags(Flags) = [ 1: "Toggle" : 1 64: "X Axis" : 0 128: "Y Axis" : 0 ] speed(integer) : "Speed of rotation" : 50 height(integer) : "Travel altitude (can be negative)" : 0 rotation(integer) : "Spin amount" : 0 _minlight(string) : "Minimum light level" ] @SolidClass base(Breakable, RenderFields, ZhltLightFlags) = func_pushable : "Pushable object" [ size(choices) : "Hull Size" : 0 = [ 0: "Point size" 1: "Player size" 2: "Big Size" 3: "Player duck" ] spawnflags(flags) = [ 128: "Breakable" : 0 ] friction(integer) : "Friction (0-400)" : 50 buoyancy(integer) : "Buoyancy" : 20 _minlight(string) : "Minimum light level" ] @SolidClass base(Targetname, Angles, ZhltLightFlags) = func_rot_button : "Rotating Button" [ target(target_destination) : "Targetted object" changetarget(target_destination) : "ChangeTarget Name" master(string) : "Master" speed(integer) : "Speed" : 50 health(integer) : "Health (shootable if > 0)" sounds(choices) : "Sounds" : 21 = [ 21: "Squeaky" 22: "Squeaky Pneumatic" 23: "Ratchet Groan" 24: "Clean Ratchet" 25: "Gas Clunk" ] wait(choices) : "Delay before reset" : 3 = [ -1: "Stays pressed" ] delay(string) : "Delay before trigger" : "0" distance(integer) : "Distance (deg)" : 90 spawnflags(flags) = [ 1 : "Not solid" : 0 2 : "Reverse Dir" : 0 32: "Toggle" : 0 64: "X Axis" : 0 128: "Y Axis" : 0 256:"Touch Activates": 0 ] _minlight(integer) : "_minlight" ] @SolidClass base(Targetname, RenderFields, Angles, ZhltLightFlags, MoveWith) = func_rotating : "Rotating Object" [ speed(integer) : "Rotation Speed" : 0 volume(integer) : "Volume (10 = loudest)" : 10 fanfriction(integer) : "Friction (0 - 100%)" : 20 sounds(choices) : "Fan Sounds" : 0 = [ 0 : "No Sound" 1 : "Fast Whine" 2 : "Slow Rush" 3 : "Medium Rickety" 4 : "Fast Beating" 5 : "Slow Smooth" ] message(sound) : "WAV Name" spawnflags(flags) = [ 1 : "Start ON" : 0 2 : "Reverse Direction" : 0 4 : "X Axis" : 0 8 : "Y Axis" : 0 16: "Acc/Dcc" : 0 32: "Fan Pain" : 0 64: "Not Solid" : 0 128: "Small Radius" : 0 256: "Medium Radius" : 0 512: "Large Radius" : 1 ] _minlight(integer) : "_minlight" spawnorigin(string) : "X Y Z - Move here after lighting" : "0 0 0" dmg(integer) : "Damage inflicted when blocked" : 0 ] @SolidClass base(BaseTank, ZhltLightFlags) = func_tank : "Brush Gun Turret" [ bullet(choices) : "Bullets" : 0 = [ 0: "None" 1: "9mm" 2: "MP5" 3: "12mm" ] ] @SolidClass base(MoveWith) = func_tankcontrols : "Tank controls" [ target(target_destination) : "Tank entity name" ] @SolidClass base(BaseTank, ZhltLightFlags) = func_tankmortar : "Brush Mortar Turret" [ iMagnitude(Integer) : "Explosion Magnitude" : 100 ] @SolidClass base(BaseTank, ZhltLightFlags) = func_tankrocket : "Brush Rocket Turret" [] @SolidClass base(Trackchange) = func_trackautochange : "Automatic track changing platform" [ _minlight(string) : "Minimum light level" ] @SolidClass base(Trackchange, ZhltLightFlags) = func_trackchange : "Train track changing platform" [ _minlight(string) : "Minimum light level" ] @SolidClass base(Targetname, RenderFields, Angles, ZhltLightFlags) = func_tracktrain : "Track Train" [ spawnflags(flags) = [ 1 : "No Pitch (X-rot)" : 0 2 : "No User Control" : 0 8 : "Passable" : 0 ] target(target_destination) : "First stop target" sounds(choices) : "Sound" : 0 = [ 0: "None" 1: "Rail 1" 2: "Rail 2" 3: "Rail 3" 4: "Rail 4" 5: "Rail 6" 6: "Rail 7" ] wheels(integer) : "Distance between the wheels" : 50 height(integer) : "Height above track" : 4 startspeed(integer) : "Initial speed" : 0 speed(integer) : "Speed (units per second)" : 64 dmg(integer) : "Damage on crush" : 0 volume(integer) : "Volume (10 = loudest)" : 10 bank(string) : "Bank angle on turns" : "0" _minlight(string) : "Minimum light level" ] @SolidClass base(Targetname, RenderFields, ZhltLightFlags) = func_train : "Moving platform" [ target(target_source) : "First stop target" movesnd(choices) : "Move Sound" : 0 = [ 0: "No Sound" //* plats/bigmove1.wav 1: "big elev 1" //* plats/bigmove2.wav 2: "big elev 2" //* plats/elevmove1.wav 3: "tech elev 1" //* plats/elevmove2.wav 4: "tech elev 2" //* plats/elevmove3.wav 5: "tech elev 3" //* plats/freightmove1.wav 6: "freight elev 1" //* plats/freightmove2.wav 7: "freight elev 2" //* plats/heavymove1.wav 8: "heavy elev" //* plats/rackmove1.wav 9: "rack elev" //* plats/railmove1.wav 10: "rail elev" //* plats/squeekmove1.wav 11: "squeek elev" //* plats/talkmove1.wav 12: "odd elev 1" //* plats/talkmove2.wav 13: "odd elev 2" //* plats/vehicle1.wav 14: "Medium pitch" //* plats/vehicle2.wav 15: "High pitch" //* plats/vehicle3.wav 16: "Low pitch" //* plats/vehicle4.wav 17: "Really low pitch" //* plats/vehicle6.wav 19: "Medium low rough pitch" //* plats/vehicle7.wav 19: "Medium low rough pitch" ] stopsnd(choices) : "Stop Sound" : 0 = [ 0: "No Sound" //* plats/bigstop1.wav 1: "big elev stop1" //* plats/bigstop2.wav 2: "big elev stop2" //* plats/freightstop1.wav 3: "freight elev stop" //* plats/heavystop2.wav 4: "heavy elev stop" //* plats/rackstop1.wav 5: "rack stop" //* plats/railstop1.wav 6: "rail stop" //* plats/squeekstop1.wav 7: "squeek stop" //* plats/talkstop1.wav 8: "quick stop" //* plats/vehicle_brake1.wav 8: "screeching brakes" ] speed(integer) : "Speed (units per second)" : 64 avelocity(string) : "Angular velocity (Y Z X)" : "0 0 0" dmg(integer) : "Damage on crush" : 0 skin(integer) : "Contents" : 0 volume(string) : "Sound Volume 0.0 - 1.0" : "0.85" spawnflags(flags) = [ 8 : "Not solid" : 0 16 : "Not Interruptible" : 0 ] _minlight(string) : "Minimum light level" ] @SolidClass = func_traincontrols : "Train Controls" [ target(target_destination) : "Train Name" ] @SolidClass base(Targetname, RenderFields, ZhltLightFlags, MoveWith) = func_wall : "Wall" [ _minlight(string) : "Minimum light level" ] @SolidClass base(func_wall, ZhltLightFlags) = func_wall_toggle : "Toggleable geometry" [ spawnflags(flags) = [ 1 : "Starts Invisible" : 0 ] ] @SolidClass base(Door) = func_water : "Liquid" [ spawnflags(flags) = [ 1 : "Starts Open" : 0 256:"Use Only" : 0 ] skin(choices) : "Contents" : -3 = [ -3: "Water" -4: "Slime" -5: "Lava" ] WaveHeight(string) : "Wave Height" : "0" ] // // Miscellaneous entities // @SolidClass base(Target, Angles, ZhltLightFlags) = button_target : "Target Button" [ spawnflags(flags) = [ 1: "Use Activates" : 1 2: "Start On" : 0 ] master(string) : "Master" renderfx(choices) :"Render FX" : 0 = [ 0: "Normal" 1: "Slow Pulse" 2: "Fast Pulse" 3: "Slow Wide Pulse" 4: "Fast Wide Pulse" 9: "Slow Strobe" 10: "Fast Strobe" 11: "Faster Strobe" 12: "Slow Flicker" 13: "Fast Flicker" 5: "Slow Fade Away" 6: "Fast Fade Away" 7: "Slow Become Solid" 8: "Fast Become Solid" 14: "Constant Glow" 15: "Distort" 16: "Hologram (Distort + fade)" ] rendermode(choices) : "Render Mode" : 0 = [ 0: "Normal" 1: "Color" 2: "Texture" 3: "Glow" 4: "Solid" 5: "Additive" ] renderamt(integer) : "FX Amount (1 - 255)" rendercolor(color255) : "FX Color (R G B)" : "0 0 0" ] @SolidClass base(Door, ZhltLightFlags) = momentary_door : "Momentary/Continuous door" [ spawnflags(flags) = [ 1 : "Starts Open" : 0 ] ] @SolidClass base(RenderFields, Targetname, Angles, ZhltLightFlags) = momentary_rot_button : "Direct wheel control" [ target(target_destination) : "Targetted object" speed(integer) : "Speed" : 50 master(string) : "Master" sounds(choices) : "Sounds" : 0 = [ 0: "None" 1: "Big zap & Warmup" 2: "Access Denied" 3: "Access Granted" 4: "Quick Combolock" 5: "Power Deadbolt 1" 6: "Power Deadbolt 2" 7: "Plunger" 8: "Small zap" 9: "Keycard Sound" 21: "Squeaky" 22: "Squeaky Pneumatic" 23: "Ratchet Groan" 24: "Clean Ratchet" 25: "Gas Clunk" ] distance(integer) : "Distance (deg)" : 90 returnspeed(integer) : "Auto-return speed" : 0 spawnflags(flags) = [ 1: "Door Hack" : 0 2: "Not useable" : 0 16: "Auto Return" : 0 64: "X Axis" : 0 128: "Y Axis" : 0 ] _minlight(integer) : "_minlight" ] // ---------------------------------------------------------------------------------------------------- // A watcher watches an entity, waiting for it to be in a given state. The default behaviour is for // the watcher to be 'On' if the watched entity is 'On', and to be 'Off' at all other times. // The main use for a watcher is to fire another entity (the "entity to notify") each time the // watcher's state changes. // ---------------------------------------------------------------------------------------------------- @PointClass iconsprite("sprites/watcher.spr") base(Targetname) = watcher : "State Watcher" [ m_iszWatch(string) : "Entity to watch" //* The watcher will revert to this state if the watched entity is missing or killed. m_fLogic(choices) : "Default State" : 0 = [ 0: "On" 1: "Off" ] //* This entity will be sent USE_ON or USE_OFF, as appropriate, whenever the watcher's state changes. target(target_destination) : "Target to notify" //* The bottom 5 flags are used to specify what states are being watched for. Default is to just watch for 'On'. spawnflags(flags) = [ //* If this is enabled, the watcher will notify its target with USE_TOGGLE, instead of sending ON or OFF. 1: "Send 'Toggle'" : 0 //* If this is enabled, the target won't be triggered when the watcher turns on. 2: "Don't Send On" : 0 //* If this is enabled, the target won't be triggered when the watcher turns off. 4: "Don't Send Off" : 0 8: "NOT 'On'" : 0 16: "'Off'" : 0 32: "'Turn On'" : 0 64: "'Turn Off'" : 0 128:"'In Use'" : 0 ] ] // // Weapons! // // NOTE: Some are missing @PointClass studio("models/w_30cal.mdl") base(Weapon, Targetx) = weapon_30cal : "30 cal MG" [] @PointClass studio("models/w_amerknife.mdl") base(Weapon, Targetx) = weapon_amerknife : "American Knife" [] @PointClass studio("models/w_bar.mdl") base(Weapon, Targetx) = weapon_bar: "BAR" [] @PointClass studio("models/w_bren.mdl") base(Weapon, Targetx) = weapon_bren: "British Bren" [] @PointClass studio("models/w_colt.mdl") base(Weapon, Targetx) = weapon_colt : "Colt Pistol" [] @PointClass studio("models/w_enfield.mdl") base(Weapon, Targetx) = weapon_enfield: "British Enfield" [] @PointClass studio("models/w_garand.mdl") base(Weapon, Targetx) = weapon_garand : "Garand Rifle" [] @PointClass studio("models/w_gerknife.mdl") base(Weapon, Targetx) = weapon_gerknife : "German Knife" [] @PointClass studio("models/w_gewehr.mdl") base(Weapon, Targetx) = weapon_gewehr : "KAR Sniper Rifle" [] @PointClass studio("models/w_greasegun.mdl") base(Weapon, Targetx) = weapon_greasegun : "Greasegun" [] @PointClass studio("models/w_kar.mdl") base(Weapon, Targetx) = weapon_kar : "KAR Rifle" [] @PointClass studio("models/w_luger.mdl") base(Weapon, Targetx) = weapon_luger : "Luger Pistol" [] @PointClass studio("models/w_m1carbine.mdl") base(Weapon, Targetx) = weapon_m1carbine : "M1 Carbine" [] @PointClass studio("models/w_mg34.mdl") base(Weapon, Targetx) = weapon_mg34 : "MG34" [] @PointClass studio("models/w_mg42.mdl") base(Weapon, Targetx) = weapon_mg42 : "MG42" [] @PointClass studio("models/w_mp40.mdl") base(Weapon, Targetx) = weapon_mp40 : "MP40" [] @PointClass studio("models/w_mp44.mdl") base(Weapon, Targetx) = weapon_mp44: "MP44" [] @PointClass studio("models/w_spade.mdl") base(Weapon, Targetx) = weapon_spade: "spade" [] @PointClass studio("models/w_spring.mdl") base(Weapon, Targetx) = weapon_spring: "Springfield Sniper Rifle" [] @PointClass studio("models/w_sten.mdl") base(Weapon, Targetx) = weapon_sten: "British Sten" [] @PointClass studio("models/w_thompson.mdl") base(Weapon, Targetx) = weapon_thompson: "Thompson" [] @PointClass studio("models/w_bazooka.mdl") base(Weapon, Targetx) = weapon_bazooka: "Bazooka" [] @PointClass studio("models/w_pschrek.mdl") base(Weapon, Targetx) = weapon_pschreck: "Panzerschreck" [] @PointClass studio("models/w_piat.mdl") base(Weapon, Targetx) = weapon_piat: "PIAT" [] @PointClass studio("models/allied_ammo.mdl") base(Weapon, Targetx) = ammo_30cal: "30 cal Ammo" [] @PointClass studio("models/allied_ammo.mdl") base(Weapon, Targetx) = ammo_bar: "BAR Ammo" [] @PointClass studio("models/brit_ammo.mdl") base(Weapon, Targetx) = ammo_bren: "Bren Ammo" [] @PointClass studio("models/allied_ammo.mdl") base(Weapon, Targetx) = ammo_colt : "Colt Ammo" [] @PointClass studio("models/brit_ammo.mdl") base(Weapon, Targetx) = ammo_enfield: "Enfield Ammo" [] @PointClass studio("models/allied_ammo.mdl") base(Weapon, Targetx) = ammo_garand : "Garand Ammo" [] @PointClass studio("models/axis_ammo.mdl") base(Weapon, Targetx) = ammo_gewehr: "K98 Sniper Ammo" [] @PointClass studio("models/axis_ammo.mdl") base(Weapon, Targetx) = ammo_kar: "KAR Ammo" [] @PointClass studio("models/axis_ammo.mdl") base(Weapon, Targetx) = ammo_luger : "Luger Ammo" [] @PointClass studio("models/allied_ammo.mdl") base(Weapon, Targetx) = ammo_m1carbine : "M1 Carbine Ammo" [] @PointClass studio("models/axis_ammo.mdl") base(Weapon, Targetx) = ammo_mg34 : "MG34 Ammo" [] @PointClass studio("models/axis_ammo.mdl") base(Weapon, Targetx) = ammo_MG42 : "MG42 Ammo" [] @PointClass studio("models/axis_ammo.mdl") base(Weapon, Targetx) = ammo_mp40 : "MP40 Ammo" [] @PointClass studio("models/axis_ammo.mdl") base(Weapon, Targetx) = ammo_mp44 : "MP44 Ammo" [] @PointClass studio("models/allied_ammo.mdl") base(Weapon, Targetx) = ammo_spring : "Springfield Ammo" [] @PointClass studio("models/brit_ammo.mdl") base(Weapon, Targetx) = ammo_sten: "Sten Ammo" [] @PointClass studio("models/allied_ammo.mdl") base(Weapon, Targetx) = ammo_thompson : "Thompson Ammo" [] @PointClass studio("models/w_bazooka_rocket.mdl") base(Weapon, Targetx) = ammo_bazooka : "Bazooka Ammo" [] @PointClass studio("models/w_pschrek_rocket.mdl") base(Weapon, Targetx) = ammo_pschreck : "Panzerschreck Ammo" [] @PointClass studio("models/w_piat_rocket.mdl") base(Weapon, Targetx) = ammo_piat : "PIAT Ammo" [] // =============================================================================== // CUT SCENE/SINGLE PLAYER SPECIFIC STUFF // =============================================================================== //* An aiscripted_sequence is almost identical to a @scripted_sequence; see the notes on that entity //* for more details. The only real difference is that an aiscripted_sequence can leave the monster in //* Ambush mode if you want it to, and it has higher priority. (a scripted_sequence has the same priority //* if its "Override AI" flag is set.) @PointClass base(Targetname, Angles, Targetx) size(-16 -16 0, 16 16 72) color(255 0 255) = aiscripted_sequence : "AI Scripted Sequence" [ //* When the animation starts, this target will be triggered. (The standard 'target' value is triggered only when the sequence ends.) m_iszFireOnBegin(string): "Target after movement" //* Specify either a classname (e.g. monster_barney) or a targetname to look for. m_iszEntity(string) : "Target Monster" //* Animation to play after moving. Note that a @monster_generic won't add any sounds or //* special effects to its animations. If you need those to appear, you'll have to use the //* specific monster_<whatever> entities, instead. m_iszPlay(string) : "Action Animation" : "" //* If you specify an idle animation, then when the level begins the monster will be frozen and made //* to play that animation. Later, when the sequence entity gets triggered, the monster will //* play the action animation. After that it reverts to its normal AI. m_iszIdle(string) : "Idle Animation" : "" //* If "Target Monster" is a classname, the game picks a random monster of that type from within this //* search radius. m_flRadius(integer) : "Search Radius" : 512 // Removed m_flRepeat- it never did anything. m_fMoveTo(choices) : "Move to Position" : 0 = [ //* Don't move at all. (Turn Type will be ignored.) 0 : "No (don't turn)" //* Walk to the entity, then turn. 1 : "Walk" //* Run to the entity, then turn. 2 : "Run" //* Teleport to the entity. Also, the monster's angle will instantly change to //* whatever is specified in its "turn type". //* Spirit fixes a bug which used to freeze a monster when playing a script with this setting. 4 : "Instantaneous" 5 : "No - Only turn" ] m_fTurnType(choices) : "Turn Type" : 0 = [ //* Turn to the angle given by the sequence entity's "angle" value. 0 : "Match Angle" //* Turn to look at the sequence entity. 1 : "Turn to face" 2 : "Don't Turn" ] target(target_destination) : "Target to fire when done" m_iFinishSchedule(Choices) : "AI Schedule when done" : 0 = [ 0 : "Default AI" 1 : "Ambush" ] spawnflags(Flags) = [ 4 : "Repeatable" : 0 8 : "Leave Corpse" : 0 ] ] @PointClass base(Target, Angles) size(-4 -4 -4, 4 4 4) color(0 255 0) = info_intermission : "Intermission Spot" [] @PointClass base(Targetname) = info_landmark : "Transition Landmark" [] // ----------------------------------------------------------------- // Added support for Hint Type and Activity Type selection for nodes // Tim Holt ("Waldo") // ----------------------------------------------------------------- @PointClass base(HintTypeChoices, ActivityTypeChoices) size(-24 -24 -4, 24 24 4) color(255 255 0) = info_node : "ai node" [] // (The thing most noticeably lacking from half-life is the option to make a monster // fire on command. So don't say I never give you anything...) //* Note that a @monster_generic won't usually do these actions correctly. //* If you're using this to make a @monster_barney shoot, it'll look odd (as if he's shooting bullets from his //* knuckles) unless you first use a scripted_sequence (playing the "draw" animation) or env_customize //* (setting body = 1) to put his pistol into his hand; as seen in the SpiritDemo level. @PointClass base(Targetname, Targetx, Angles) size(-16 -16 0, 16 16 72) color(255 0 255) = scripted_action : "Scripted Action" [ //* When the action starts, this target will be triggered. (The standard 'target' value is triggered only when the sequence ends.) m_iszFireOnBegin(string): "Target after movement" //* Specify either a classname (e.g. monster_barney) or a targetname to look for. m_iszEntity(string) : "Monster to affect" m_fMoveTo(choices) : "Move to Position" : 5 = [ 5 : "No - Only turn" //* Don't move at all. (Turn Type will be ignored.) 0 : "No (don't turn)" //* Walk to the entity, then turn. 1 : "Walk" //* Run to the entity, then turn. 2 : "Run" //* Teleport to the entity. Also, the monster's angle will instantly change to //* whatever is specified in its "turn type". //* Spirit fixes a bug which used to freeze a monster when playing a script with this setting. 4 : "Instantaneous" ] m_fTurnType(choices) : "Turn Type" : 1 = [ //* Turn to the angle given by the sequence entity's "angle" value. 0 : "Match Angle" //* Turn to look at the "entity to attack", or at the sequence entity if no "entity to attack" is specified. //* Most monsters won't be able to shoot directly at the "entity to attack" unless this option is selected. 1 : "Turn to face" 2 : "Don't Turn" ] //* If blank, the monster will attack the scripted_action entity. m_iszAttack(string) : "Entity to attack" m_fAction(choices) : "Action to perform" : 0 = [ //* Headcrabs: leap. Houndeye: sonic attack. Barney: fire pistol... and so on. Most monsters have a ranged attack of some kind. 0 : "Ranged Attack" //* Grunts and assassins: throw or launch a grenade at the "attack" entity. //* Alien Controller: big homing fireball. 1 : "Ranged Attack 2" //* Scientist: Heal. Everyone else: Kick, punch, bite, slash with claws, etc. 2 : "Melee Attack" //* Assassins: kick. Bullsquids:bite. Headcrab: rear up on hind legs. //* Big Momma: lay a baby headcrab. Gargantua: Flame Thrower. 3 : "Melee Attack 2" //* Grunts: place a grenade on the ground. 4 : "Special Attack" //* Don't know of any monsters which use this, but feel free to try... 5 : "Special Attack 2" //* Grunts and barneys: Reload. The same thing can be done with a @scripted_sequence, but it's available here for convenience. 6 : "Reload" //* Assassins: jump to the "attack" entity. Houndeyes, Bullsquids and Big Momma: just jump. 7 : "Jump" //* Just turn and/or move. 8 : "No action" ] //* If "Monster to affect" is a classname, the game picks a random monster of that type from within this //* search radius. m_flRadius(integer) : "Search Radius" : 512 spawnflags(Flags) = [ //* Default behaviour for a scripted_action is to delete itself after finishing. 4 : "Repeatable" : 0 //* When the player shoots a monster or requests a scientist to follow him, scripts the //* monster is playing will usually be interrupted. 32: "No Interruptions" : 0 //* If this isn't ticked, the script will be ignored while the monster is in combat. 64: "Override AI" : 0 ] ] //* If no targetname is given, a scripted_sentence will play sentences as often as its "refire" rate permits. @PointClass base(Targetname, Targetx) size(-16 -16 0, 16 16 72) color(0 0 255) = scripted_sentence : "Scripted Sentence" [ spawnflags(Flags) = [ 1 : "Fire Once" : 1 2 : "Followers Only" : 0 4 : "Interrupt Speech" : 1 8 : "Concurrent" : 0 ] sentence(string) : "Sentence Name" : "" entity(string) : "Target Monster (blank for HEV)" duration(string) : "Sentence Time" : "3" //* If "Target Monster" is a classname, the game picks a random monster of that type from within this //* search radius. radius(integer) : "Search Radius" : 512 refire(string) : "Delay Before Refire" : "3" listener(string) : "Listener Name/Class" : "player" volume(string) : "Volume 0-10" : "10" attenuation(Choices) : "Sound Radius" : 0 = [ 0 : "Small Radius" 1 : "Medium Radius" 2 : "Large Radius" 3 : "Play Everywhere" ] ] //* If a scripted_sequence has no targetname, it will start playing as soon as the level begins. //* If two or more scripted_sequences have the same targetname, they will be synchronised so that //* no matter how long it takes the monsters to walk to the sequence entities, their action animations //* will start at the same time. @PointClass base(Targetname, Targetx, Angles) size(-16 -16 0, 16 16 72) color(255 0 255) = scripted_sequence : "Scripted Sequence" [ //* When the animation starts, this target will be triggered. (The standard 'target' value is triggered only when the sequence ends.) m_iszFireOnBegin(string): "Target after movement" //* Specify either a classname (e.g. monster_barney) or a targetname to look for. m_iszEntity(string) : "Target Monster" //* Animation to play after moving. Note that a monster_generic won't add any sounds or //* special effects to its animations. If you need those to appear, you'll have to use the //* monster_<whatever> entities, instead. m_iszPlay(string) : "Action Animation" : "" //* If you specify an idle animation, then when the level begins the monster will be frozen and made //* to play that animation. Later, when the sequence entity gets triggered, the monster will //* play the action animation. After that it reverts to its normal AI. //* If there are any other scripted_sequences with the same name as this one, then the monster will also play the "idle" animation //* while it's waiting for the other sequences to be ready to start. //* And finally, if the action animation is the same as the idle animation, then any time the monster would be playing the idle //* animation, instead it will be frozen. //* Obvious, eh? ;) m_iszIdle(string) : "Idle Animation" : "" //* If "Target Monster" is a classname, the game picks a random monster of that type from within this //* search radius. m_flRadius(integer) : "Search Radius" : 512 m_fMoveTo(choices) : "Move to Position" : 0 = [ //* Don't move at all. (Turn Type will be ignored.) 0 : "No (don't turn)" //* Walk to the entity, then turn. 1 : "Walk" //* Run to the entity, then turn. 2 : "Run" //* Teleport to the entity. Also, the monster's angle will instantly change to //* whatever is specified in its "turn type". //* Spirit fixes a bug which used to freeze a monster when playing a script with this setting. 4 : "Instantaneous" 5 : "No - Only turn" ] m_fTurnType(choices) : "Turn Type" : 0 = [ //* Turn to the angle given by the sequence entity's "angle" value. 0 : "Match Angle" //* Turn to look at the sequence entity. 1 : "Turn to face" 2 : "Don't Turn" ] spawnflags(Flags) = [ //* Default behaviour for a sequence is to delete itself after finishing. 4 : "Repeatable" : 0 //* If the animation includes the monster dying, don't fade the corpse afterwards. 8 : "Leave Corpse" : 0 //* If the player shoots a monster or requests a scientist/barney to follow him, any //* scripts the monster is playing will usually be interrupted. 32: "No Interruptions" : 0 //* Unless you tick this, the monster won't play the script while in combat. 64: "Override AI" : 0 //* Even if the animation makes the monster look like it's walking around, DON'T shift //* the monster to its apparent new location when the animation ends. 128: "No Script Movement" : 0 //* Some death sequences kill the monster automatically (e.g. "herodie" in loader.mdl) //* but for most you'll have to tick this box. This is affected by Leave Corpse in the //* obvious way. 256: "Monster Dies" : 0 ] ] @PointClass iconsprite("sprites/DoD/Announcement.spr") base(Targetname) = speaker : "Announcement Speaker" [ preset(choices) :"Announcement Presets" : 0 = [ 0: "None" 1: "C1A0 Announcer" 2: "C1A1 Announcer" 3: "C1A2 Announcer" 4: "C1A3 Announcer" 5: "C1A4 Announcer" 6: "C2A1 Announcer" 7: "C2A2 Announcer" // 8: "C2A3 Announcer" 9: "C2A4 Announcer" // 10: "C2A5 Announcer" 11: "C3A1 Announcer" 12: "C3A2 Announcer" ] message(string) : "Sentence Group Name" health(integer) : "Volume (10 = loudest)" : 5 spawnflags(flags) = [ 1: "Start Silent" : 0 ] ] @SolidClass base(Targetname) = trigger_transition : "Trigger: Select Transition Area" [] // ----------------------------------------------------------------- // EXPERIMENTAL // ----------------------------------------------------------------- @PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_axis_grunt : "Axis Grunt" [ netname(string) : "Squad Name" spawnflags(Flags) = [ //* Only needed if you use the Squad Name value. If you define a Squad using the Squad Name value, but //* none of them are flagged as a Squad Leader, then the squad won't get linked together properly. 32 : "SquadLeader" : 0 //* Ensure the player can't take this monster's ammo or weapons. 1024: "Don't Drop Gun" : 0 ] weapons(Choices) : "Weapons" : 1 = [ 1 : "Luger" 2 : "KAR (Light)" 4 : "MP40 (Medium)" 8 : "MP44 (Heavy)" 18 : "KAR + HG (Light)" 20 : "MP40 + HG (Med)" 24 : "MP44 + HG (Heavy)" ] ] @PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_allied_grunt : "Allied Grunt" [ netname(string) : "Squad Name" spawnflags(Flags) = [ //* Only needed if you use the Squad Name value. If you define a Squad using the Squad Name value, but //* none of them are flagged as a Squad Leader, then the squad won't get linked together properly. 32 : "SquadLeader" : 0 //* Ensure the player can't take this monster's ammo or weapons. 1024: "Don't Drop Gun" : 0 ] weapons(Choices) : "Weapons" : 1 = [ 1 : "Colt" 2 : "Garand (Light)" 4 : "Thompson (Medium)" 8 : "BAR (Heavy)" 18 : "Garand + HG (Light)" 20 : "Thompson + HG (Med)" 24 : "BAR + HG (Heavy)" ] ] @PointClass base(Monster,TalkMonster) size(-16 -16 0, 16 16 72) = monster_allied_barney : "Allied Barney" [ body(Choices) : "Body" : -1 = [ -1: "Random" 0 : "Light" 1 : "Medium" 2 : "Heavy" 3 : "Medic" 4 : "MP" ] spawnflags(Flags) = [ //* Ensure the player can't take this monster's ammo or weapons. 1024: "Don't Drop Gun" : 0 ] ] @PointClass base(Target, Targetname, Angles, MoveWith) = particle_shooter : "Particle Shooter" [ group_id(integer) : "Group Id" : 1 num_particles(integer) : "Number of Particles ( -1 = infinite )" : 10 fire_delay(string) : "Delay between shots" : "0.2" particle_life(string) : "particle life" : "4.0" particle_speed(string) : "particle velocity" : "200" vel_variance(string) : "velocity variance" : "0.15" spin_speed(integer) : "spin ( degrees per sec )" : 0 gravity(string) : "gravity" : "0.0" damping_time(string) : "damping time" : "0.0" damping_vel(string) : "damping velocity" : "0.0" spawnflags(Flags) = [ 1 : "Repeatable" : 0 2 : "Spiral" : 0 4 : "Collide with world" : 0 8 : "Affected by force" : 0 16 : "Animate" : 0 32 : "Start on" : 0 64 : "Kill on collide" : 0 128 : "Ripple when hitting water" : 0 ] model(studio) : "Sprite" : "" size(string) : "particle size" : "16.0" colour_red(integer) : "colour: red ( 0 - 255 )" : 255 colour_green(integer) : "colour: green ( 0 - 255 )" : 255 colour_blue(integer) : "colour: blue ( 0 - 255 )" : 255 brightness(string) : "brightness" : "190" fade_speed(string) : "fade speed" : "0.0" scale_speed(string) : "scale speed" : "1.0" framerate(string) : "framerate" : "0" rendermode(Choices) : "Render mode" : 5 = [ 0 : "Normal" //kRenderNormal, // src 1 : "Trans Color" //kRenderTransColor, // c*a+dest*(1-a) 2 : "Trans Texture" //kRenderTransTexture, // src*a+dest*(1-a) 3 : "Glow" //kRenderGlow, // src*a+dest -- No Z buffer checks 4 : "Indexed Alpha" //kRenderTransAlpha, // src*srca+dest*(1-srca) 5 : "Additive" //kRenderTransAdd, // src*a+dest ] ] @PointClass base(Targetname) iconsprite("sprites/DoD/EnvGlobal.spr") color(255 255 128) = dod_preround : "Pre-Round Trigger" [ allieswin(string) : "Trigger if allies won last round" alliesloose(string) : "Trigger if allies lost last round" axiswin(string) : "Trigger if axis won last round" axisloose(string) : "Trigger if axis lost last round" draw(string) : "Trigger if last round was draw" ]