// --------------------------------------------------------------------------------- // Day of Defeat 3.0 game definition file (.fgd) // Version 3.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 (morlam@gamespotmail.com) // Matt Boone aka "Mugsy" // Tim Holt aka "Waldo" // Brandon Russell aka "Axis" // --------------------------------------------------------------------------------- // 1.1 // Added env_rocketshooter entity // --------------------------------------------------------------------------------- @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 is 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 = [ //* Gibs: models/glassgibs.mdl //* Break noise: debris/bustglassX.wav //* Bounce noise: debris/glassX.wav 0: "Glass" //* Gibs: models/woodgibs.mdl //* Break noise: debris/bustcrateX.wav //* Bounce noise: debris/woodX.wav 1: "Wood" //* Gibs: models/metalplategibs.mdl //* Break noise: debris/bustmetalX.wav //* Bounce noise: debris/metalX.wav 2: "Metal" //* Gibs: models/fleshgibs.mdl //* Break noise: debris/bustfleshX.wav //* Bounce noise: debris/fleshX.wav 3: "Flesh" //* Gibs: models/cindergibs.mdl //* Break noise: debris/bustconcreteX.wav //* Bounce noise: debris/concreteX.wav 4: "Cinder Block" //* Gibs: models/ceilinggibs.mdl //* Break noise: debris/bustceilingX.wav //* Bounce noise: none 5: "Ceiling Tile" //* Gibs: models/computergibs.mdl //* Break noise: debris/bustmetalX.wav //* Bounce noise: debris/woodX.wav //* Note: Generates sparks when damaged. 6: "Computer" //* Gibs: models/glassgibs.mdl //* Break noise: debris/bustglassX.wav //* Bounce noise: debris/glassX.wav //* Note: Makes ricochet noises when damaged. 7: "Unbreakable Glass" //* Gibs: models/rockgibs.mdl //* Break noise: debris/bustconcreteX.wav //* Bounce noise: 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 make 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 prevent 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 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" 28 : "Neutral Custom4" 31 : "Neutral Custom5" 34 : "Neutral Custom6" ] 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" 30 : "Axis Custom4" 33 : "Axis Custom5" 36 : "Axis Custom6" ] 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" 29 : "Allied Custom4" 32 : "Allied Custom5" 35 : "Allied Custom6" ] 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/allies-inf/allies-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(-16 -16 -16, 16 16 16) = env_rocketshooter : "Rocket Shooter" [ rockettype(choices) :"Rocket Type" : 0 = [ 0 : "Bazooka Shell" 1 : "Piat Shell" 2 : "Pschreck Shell" ] firedelay(string) : "Delay Between Shots" : "0.5" aimvariance(string) : "Aim Variance" : "0.05" numrockets(integer) : "Shots per Volley" : 1 ] @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 in addition to 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 at the time the trigger_changealias takes effect. 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 base(Weapon, Targetx) = weapon_30cal : "30 cal MG" [] @PointClass base(Weapon, Targetx) = weapon_amerknife : "American Knife" [] @PointClass base(Weapon, Targetx) = weapon_bar: "BAR" [] @PointClass base(Weapon, Targetx) = weapon_colt : "Colt Pistol" [] @PointClass base(Weapon, Targetx) = weapon_garand : "Garand Rifle" [] @PointClass base(Weapon, Targetx) = weapon_gerknife : "German Knife" [] @PointClass base(Weapon, Targetx) = weapon_gewehr : "KAR Sniper Rifle" [] @PointClass base(Weapon, Targetx) = weapon_greasegun : "Greasegun" [] @PointClass base(Weapon, Targetx) = weapon_kar : "KAR Rifle" [] @PointClass base(Weapon, Targetx) = weapon_luger : "Luger Pistol" [] @PointClass base(Weapon, Targetx) = weapon_m1carbine : "M1 Carbine" [] @PointClass base(Weapon, Targetx) = weapon_mg34 : "MG34" [] @PointClass base(Weapon, Targetx) = weapon_mg42 : "MG42" [] @PointClass base(Weapon, Targetx) = weapon_mp40 : "MP40" [] @PointClass base(Weapon, Targetx) = weapon_mp44: "MP44" [] @PointClass base(Weapon, Targetx) = weapon_spade: "spade" [] @PointClass base(Weapon, Targetx) = weapon_spring: "Springfield Sniper Rifle" [] @PointClass base(Weapon, Targetx) = weapon_thompson: "Thompson" [] @PointClass base(Weapon, Targetx) = weapon_bazooka: "Bazooka" [] @PointClass base(Weapon, Targetx) = weapon_pschreck: "Panzerschreck" [] @PointClass base(Weapon, Targetx) = weapon_piat: "PIAT" [] @PointClass base(Weapon, Targetx) = ammo_30cal: "30 cal Ammo" [] @PointClass base(Weapon, Targetx) = ammo_bar: "BAR Ammo" [] @PointClass base(Weapon, Targetx) = ammo_colt : "Colt Ammo" [] @PointClass base(Weapon, Targetx) = ammo_garand : "Garand Ammo" [] @PointClass base(Weapon, Targetx) = ammo_gewehr: "K98 Sniper Ammo" [] @PointClass base(Weapon, Targetx) = ammo_kar: "KAR Ammo" [] @PointClass base(Weapon, Targetx) = ammo_luger : "Luger Ammo" [] @PointClass base(Weapon, Targetx) = ammo_m1carbine : "M1 Carbine Ammo" [] @PointClass base(Weapon, Targetx) = ammo_mg34 : "MG34 Ammo" [] @PointClass base(Weapon, Targetx) = ammo_MG42 : "MG42 Ammo" [] @PointClass base(Weapon, Targetx) = ammo_mp40 : "MP40 Ammo" [] @PointClass base(Weapon, Targetx) = ammo_mp44 : "MP44 Ammo" [] @PointClass base(Weapon, Targetx) = ammo_spring : "Springfield Ammo" [] @PointClass base(Weapon, Targetx) = ammo_thompson : "Thompson Ammo" [] @PointClass base(Weapon, Targetx) = ammo_bazooka : "Bazooka Ammo" [] @PointClass base(Weapon, Targetx) = ammo_pschreck : "Panzerschreck Ammo" [] @PointClass 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(Monster) size(-32 -32 0, 32 32 128) = monster_gargantua : "Gargantua" [] @PointClass base(Monster, RenderFields) size(-16 -16 -36, 16 16 36) = monster_generic : "Generic Script Monster" [ spawnflags(Flags) = [ 4 : "Not solid" : 0 ] model(studio) : "model" body(Integer) : "Body" : 0 ] @PointClass base(Monster) size(-360 -360 -172, 360 360 8) = monster_apache : "Apache" [ spawnflags(Flags) = [ 8 : "NoWreckage" : 0 64 : "Start Inactive" : 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" ]