VTMB.fgd

From Valve Developer Community
Jump to: navigation, search
Vampire The Masquerade - Bloodlines Level Creation

vampire.fgd

//====== Copyright © 2003-2018, Troika Games, Inc. All rights reserved. =======
//
// Purpose: Vampire Bloodlines game definition file (.fgd) 
// Version: 1.70 beta
// Edition: Original VtMB
// Written: Psycho-A
//
//=============================================================================

// define common classes and entities
@include "vampire-base.fgd"

// enable dispensable extra entites
@include "vampire-adds.fgd"

// broken entites for testing...
//@include "vampire-broken.fgd"



//*******************************************************************************************************************
//*******************************************************************************************************************
//
// Main Classes
//
//*******************************************************************************************************************
//*******************************************************************************************************************


//====================================================================================================================
// CLASS: VEnableDisable [VTMB-specific]
//====================================================================================================================

@BaseClass = c_VEnableDisable
[
	start_enabled(choices) : "Start Enabled" : 1 =
	[
		0 : "No"
		1 : "Yes"
	]

	// Inputs
	input Enable(void) : "Enable this entity."
	input Disable(void) : "Disable this entity."
]





































//*******************************************************************************************************************
//*******************************************************************************************************************
//
// ITEMS
//
//*******************************************************************************************************************
//*******************************************************************************************************************


//====================================================================================================================
// CLASS: VItemContainer [VTMB-specific]
//====================================================================================================================

@BaseClass
base (
	Studiomodel,
	o_VUsableExt,
	o_VBreakable
)
studioprop()
= VItemContainerBase1
[
	model(studio) : "Container Model" : "models/scenery/furniture/refrigerator/refrigeratorold_anim2.mdl" : "Prop model used for container. \nClick arrow button and scroll down if you want to use one of game's default model." =
	[
		"models/scenery/furniture/AsianTrunk/AsianTrunk.mdl" : "models/scenery/furniture/AsianTrunk/AsianTrunk.mdl"
		"models/scenery/furniture/cigarbox/cigarbox.mdl" : "models/scenery/furniture/cigarbox/cigarbox.mdl"
		"models/scenery/furniture/desk_animated/desk_animated.mdl" : "models/scenery/furniture/desk_animated/desk_animated.mdl"
		"models/scenery/furniture/desk_executive/drawer1.mdl" : "models/scenery/furniture/desk_executive/drawer1.mdl"
		"models/scenery/furniture/HackableMetalChest/MetalChest.mdl" : "models/scenery/furniture/HackableMetalChest/MetalChest.mdl"
		"models/scenery/furniture/hollowbook/hollowbook.mdl" : "models/scenery/furniture/hollowbook/hollowbook.mdl"
		"models/scenery/furniture/laundry/dryer_container.mdl" : "models/scenery/furniture/laundry/dryer_container.mdl"
		"models/scenery/furniture/MailBoxes/MailBox.mdl" : "models/scenery/furniture/MailBoxes/MailBox.mdl"
		"models/scenery/furniture/MedicalChest/MedicalChest.mdl" : "models/scenery/furniture/MedicalChest/MedicalChest.mdl"
		"models/scenery/furniture/NightStand/Nightstandanimated.mdl" : "models/scenery/furniture/NightStand/NightStandAnimated.mdl"
		"models/scenery/furniture/refrigerator/refrigerator.mdl" : "models/scenery/furniture/refrigerator/refrigerator.mdl"
		"models/scenery/furniture/refrigerator/refrigerator_newcontainer.mdl" : "models/scenery/furniture/refrigerator/refrigerator_newcontainer.mdl"
		"models/scenery/furniture/refrigerator/refrigeratorold_anim2.mdl" : "models/scenery/furniture/refrigerator/refrigeratorold_anim2.mdl"
		"models/scenery/furniture/SteamerTrunk/SteamerTrunkKoa.mdl" : "models/scenery/furniture/SteamerTrunk/SteamerTrunkKoa.mdl"
		"models/scenery/furniture/steamertrunk/trunk.mdl" : "models/scenery/furniture/steamertrunk/trunk.mdl"
		"models/scenery/furniture/SteamerTrunk/trunkmodern_container.mdl" : "models/scenery/furniture/SteamerTrunk/trunkmodern_container.mdl"
		"models/scenery/misc/changemachine/changemachine_container.mdl" : "models/scenery/misc/changemachine/changemachine_container.mdl"
		"models/scenery/misc/crypt_door/crypt_door.mdl" : "models/scenery/misc/crypt_door/crypt_door.mdl"
		"models/scenery/misc/lin_corpse/lin_corpse.mdl" : "models/scenery/misc/lin_corpse/lin_corpse.mdl"
		"models/scenery/misc/lockers/lockerdoor_container.mdl" : "models/scenery/misc/lockers/lockerdoor_container.mdl"
		"models/scenery/misc/mailbox2/mailbox.mdl" : "models/scenery/misc/mailbox2/mailbox.mdl"
		"models/scenery/misc/safe/safe.mdl" : "models/scenery/misc/safe/safe.mdl"
		"models/scenery/misc/steeldesk/drawer_anim.mdl" : "models/scenery/misc/steeldesk/drawer_anim.mdl"
		"models/scenery/misc/woodbox/box.mdl" : "models/scenery/misc/woodbox/box.mdl"
		"models/scenery/misc/woodbox/woodbox_container.mdl" : "models/scenery/misc/woodbox/woodbox_container.mdl"
		"models/scenery/misc/woodbox/woodbox_small_container.mdl" : "models/scenery/misc/woodbox/woodbox_small_container.mdl"
	]

	// Inputs
	input AddEntityToContainer(string) : "Add selected entity to container."
	input SpawnItemInContainer(string) : "Spawn selected entity in container."
	input DeleteItems(void) : "Delete selected items in container."
	
	// Outputs
	output OnItemInsert(void) : "Fired when item was inserted (by player) into container."
	output OnItemRemove(void) : "Fired when item was taken away (by player) from container."
]

@BaseClass
= VItemContainerEquip
[
	sep_itceqip(string) readonly: "------------------------------------"

	// equipment
	equip0(itemclass) : "Equipment #1" :  : "This is the name of item that will be placed into container."
	equip1(itemclass) : "Equipment #2" :  : "This is the name of item that will be placed into container."
	equip2(itemclass) : "Equipment #3" :  : "This is the name of item that will be placed into container."
	equip3(itemclass) : "Equipment #4" :  : "This is the name of item that will be placed into container."
	equip4(itemclass) : "Equipment #5" :  : "This is the name of item that will be placed into container."
]

@BaseClass
halfgridsnap
= VItemContainerBase2
[
	sep_itcadd1(string) readonly: "------------------------------------"

	// basic prefs
	soundgroup(choices) : "Sound Group" : "push_arm_door" : "The group of sounds relative to 'sound/usable/openable/<groupname>/*.wav' that specifies action sounds." = 
	[
		"metal_chest" : "Metal Chest"
		"metal_file_cabinet" : "Metal File Cabinet"
		"push_arm_door" : "Push Arm Door"
		"wood_drawer" : "Wood Drawer"
		"wooden_chest" : "Wooden Chest"
		"jewelry_box" : "Jewelry Box"
		"dead_body" : "Dead Body"
	]
	lootable_type(choices) : "Lootable Type" : 3 : "[VTMB] Unknown yet. 3 and 4 default used on game maps." =
	[
		0 : "Type 0 (?)"
		1 : "Type 1 (?)"
		2 : "Type 2 (?)"
		3 : "Type 3 (?)"
		4 : "Type 4 (?)"
	]
	use_icon(choices) : "Use Icon" : 6 : "An icon that indicates when player can be able to use this entity and it is openable." = 
	[
		0 : "None"
		6 : "Lootable container"
	]
	
	sep_itcadd2(string) readonly: "------------------------------------"

	// move prefs
	move_dest(vecline) : "Move Destination" :  : "Container's move destination on open. \nThis is world's X/Y/Z-origin."
	move_speed(integer) : "Move Speed (units/s)" : 45 : "Speed of container's moving, in units per second."
	
	rot_dist(integer) : "Rotation Angle" : 90 : "Max allowed rotation angle."
	rot_speed(integer) : "Rotation Speed" : 45 : "Speed of rotation moving."
	rot_axis(choices) : "Rotation Axis" : 1 : "Defines axis if this prop rotates [not tested]." = [ 0: "Y" 1: "Z" 2: "X" ]

	sep_itcadd3(string) readonly: "------------------------------------"

	// physics
	solid(choices) : "Collisions" : 6 : "Model's collision type." =
	[
		0: "Not Solid"
		2: "Use Bounding Box"
		6: "Use VPhysics"
		3: "Use Convex Hull"
	]
	health(integer) : "Container's Strength" : 0 : "Container's health points that will spent before it breaks and open. \n'0' = not breakable."
	dmgmodel(studio) : "Damaged State Model" :  : "Model that spawns when this container damaged." =
	[
		"models/scenery/misc/changemachine/changemachine_damaged.mdl" : "models/scenery/misc/changemachine/changemachine_damaged.mdl"
	]

	npc_transparent(choices) : "NPC-Transparent" : 1 : "[VTMB] NPCs are transparent for this object [not tested]." = [ 0: "No" 1: "Yes" ]
	npc_opaque(choices) : "NPC-Opaque" :  : "[VTMB] Should be NPC opaque for this object or not [not tested]." = [ "": "No" 1: "Yes" ]

	sep_itcadd3(string) readonly: "------------------------------------"

	demo_sequence(choices) : "Demo Animation" : "None" : "Default animation sequence for the model to be playing after spawning." = [ "None":"None"  "idle":"Idle" ]
	use_pref(choices) : "Use Preference" :  : "[VTMB] Unknown yet..." = [ 0: "No" 1: "Yes" ]
]





//====================================================================================================================
// item_container [VTMB-specific]
//====================================================================================================================

@PointClass
base (
	VItemContainerBase1,
	VItemContainerEquip,
	VItemContainerBase2,
	RenderFields
)
studioprop()
= item_container :
	"[VTMB] A dynamic item that can contain other items, like weapons, supply e.t.c."
[
	model(studio) : "Container Model" : "models/scenery/misc/woodbox/box.mdl" : "Prop model used for container. \nClick arrow button and scroll down if you want to use one of game's default model." = []
	soundgroup(choices) : "Sound Group" : "wooden_chest" : "The group of sounds relative to 'sound/usable/openable/<groupname>/*.wav' that specifies action sounds." = []
]





//====================================================================================================================
// item_container_animated [VTMB-specific]
//====================================================================================================================
@PointClass
base (
	VItemContainerBase1,
	VItemContainerEquip,
	VItemContainerBase2,
	RenderFields
)
studioprop()
= item_container_animated : 
	"[VTMB] A dynamic item that can contain other items, like weapons, supply e.t.c. \nSame as 'item_container' but supports dynamic properties like animations and damaging."
[
]




//====================================================================================================================
// item_container_one_item_filtered [VTMB-specific]
//====================================================================================================================
@PointClass
base (
	VItemContainerBase1,
	VItemContainerBase2,
	RenderFields
)
studioprop()
= item_container_one_item_filtered :
	"[VTMB] A dynamic item that can contain other items, like weapons, supply e.t.c. \nUnkike the item_container, item_container_one_item_filtered may accept just one item given by Python commands from outputs OnItemInsert/OnItemRemove. \nRarely-used."
[
	model(studio) : "Container Model" : "models/scenery/structural/temple/pedestal1.mdl" : "Prop model used for container. \nClick arrow button and scroll down if you want to use one of game's default model." =
	[
		"models/scenery/structural/temple/pedestal1.mdl" : "models/scenery/structural/temple/pedestal1.mdl"
		"models/scenery/structural/temple/pedestal2.mdl" : "models/scenery/structural/temple/pedestal2.mdl"
		"models/scenery/structural/temple/pedestal3.mdl" : "models/scenery/structural/temple/pedestal3.mdl"
		"models/scenery/structural/temple/pedestal4.mdl" : "models/scenery/structural/temple/pedestal4.mdl"
	]
	soundgroup(choices) : "Sound Group" : "metal_file_cabinet" : "The group of sounds relative to 'sound/usable/openable/<groupname>/*.wav' that specifies action sounds." = []
]
















//====================================================================================================================
// Items & Weapons [VTMB-specific]
//====================================================================================================================

// armor
@ItemClass base(Item) studio("models/scenery/misc/armor/RiotGear/RiotGear.mdl")= item_a_body_armor : "This protective vest is worn under clothing, for that extra ounce of 'not gonna die today'." []
@ItemClass base(Item) studio("models/scenery/misc/armor/ClothesHeavy/ClothesHeavy.mdl")= item_a_hvy_cloth : "This is a set of heavy clothing, which acts as armor. Heavy clothing armor has an armor rating of 2." []
@ItemClass base(Item) studio("models/scenery/misc/armor/LeatherHeavy/LeatherHeavy.mdl")= item_a_hvy_leather : "This is a set of heavy leather armor. Heavy leather armor has an armor rating of 4, but hinders movement, resulting in a -2 penalty to Dexterity. Some examples of heavy leather armor are studded or reinforced leather jackets, girded leather pants, and hard leather gloves and boots." []
@ItemClass base(Item) studio("models/scenery/misc/armor/ClothesLight/ClothesLight.mdl")= item_a_lt_cloth : "This is the most basic and unrestrictive armor. There are no stat penalites for equipping it. Examples of cloth armor would be t-shirts, khakis, sun dresses, and pleated skirts." []

// disciplines
@ItemClass base(Item) = item_d_animalism : "Animalism discipline." []
@ItemClass base(Item) = item_d_dementation : "Dementation discipline." []
@ItemClass base(Item) = item_d_dominate : "Domination discipline." []
@ItemClass base(Item) studio("models/weapons/holylight/view/v_holylight.mdl")= item_d_holy_light : "Holy Light discipline." []
@ItemClass base(Item) studio("models/weapons/thaumaturgy/view/v_thaumaturgy.mdl")= item_d_thaumaturgy : "Thaumaturgy discipline." []

// equipment
@ItemClass base(Item) studio("models/items/bloodpack/ground/bloodpack.mdl")= item_g_bloodpack : "Blood Pack.\n\nA bag of blood routinely used in hospitals for transfusions. Using it restores blood points." []
@ItemClass base(Item) studio("models/items/bloodpack/ground/bloodpack.mdl")= item_g_bluebloodpack : "Blue Blood Pack.\n\nA bag of blood from only the finest human specimens. Drinking it restores blood points." []
@ItemClass base(Item) studio("models/items/bloodpack/ground/bloodpack.mdl")= item_g_eldervitaepack : "Elder Vitae.\n\nThis bag contains extremely potent blood. The hows and wheres of its origin are probably best left unexplored." []
@ItemClass base(Item) studio("models/items/Key/Ground/Key.mdl")= item_g_keyring : "Keyring.\n\nRing that saves all found keys." []
@ItemClass base(Item) studio("models/weapons/lockpicks/world/w_lockpicks.mdl")= item_g_lockpick : "Lockpick.\n\Tool of the trade for locksmiths and burglars. A lockpick is used to push the pins inside a lock into their correct position until the lock is 'open'. It takes a lot of experience to use these well." []
@ItemClass base(Item) studio("models/items/Wallet/Ground/Wallet.mdl")= item_g_wallet : "Wallet.\n\nYour wallet." []
@ItemClass base(Item) studio("models/items/sewerbook/Ground/sewerbook.mdl")= item_g_sewerbook_1: "Sewer Works Manual.\n\nA guide to sewer mains in the greater Los Angeles area. With references such as these, Nosferatu turn sluiceways and sludgepools into highways and havens. For global travel, enter the sewers and use one of the maps found on the wall." []

// questline items
@ItemClass base(Item) studio("models/items/AnimalTrainingBook/Ground/AnimalTrainingBook.mdl")= item_g_animaltrainingbook : "Animal Training Book.\n\nGallery Noir's Charity Money." []
@ItemClass base(Item) studio("models/items/Astrolite/Ground/Astrolite.mdl")= item_g_astrolite : "Astrolite.\n\nA powerful liquid explosive made from over-the-counter chemicals." []
@ItemClass base(Item) studio("models/items/Diary/Ground/Diary.mdl")= item_g_bach_journal : "Journal.\n\nThis journal is inscribed with the initials 'G.B.'." []
@ItemClass base(Item) studio("models/items/Talisman/ground/Talisman.mdl")= item_g_badlucktalisman : "Bad Luck Talisman.\n\nA talisman that Mr. Ox asked you to put in Shu's locker at the Lotus Blossom." []
@ItemClass base(Item) studio("models/items/BailBond/Ground/BailBond.mdl")= item_g_bailbond_receipt : "Bail Bond.\n\nThis is the receipt for a bail bond. The bail bond was for a one Rolf Toten." []
@ItemClass base(Item) studio("models/items/cdcase/Ground/cdcase.mdl")= item_g_bertrams_cd : "CD-ROM.\n\nA label on the CD says 'B. Tung'." []
@ItemClass base(Item) studio("models/items/brotherhoodflyer/Ground/brotherhoodflyer.mdl")= item_g_brotherhood_flyer : "Brotherhood Flyer.\n\nThe writing on this flyer reads 'I am Enlightened'." []
@ItemClass base(Item) studio("models/items/License/Ground/License.mdl")= item_g_driver_license_gimble : "Driver's License.\n\nA California driver's license. The name on the license is Virgil Crumb." []
@ItemClass base(Item) studio("models/items/manifest/Ground/manifest_g.mdl")= item_g_edane_print_report : "Ship Manifest.\n\nAnkaran Site transport to Los Angeles: Ankaran Sarcophagus, 3 crates - pottery/tablets, 1 box - unidentified." []
@ItemClass base(Item) studio("models/items/clipboard/ground/clipboard.mdl")= item_g_edane_report : "Police Report.\n\nA copy of the Initial Police Report for the Elizabeth Dane, signed by members of the USCG, NCIS, and LAHP agencies. Despite strong evidence of amazing physical violence, not a single body has been found, no survivors have been located, and there are no signs of large-scale theft." []
@ItemClass base(Item) studio("models/items/Eyeballs/Ground/Eyeballs.mdl")= item_g_eyes : "Ox' Quest Eyes.\n\nEyeballs... eyeballs?" []
@ItemClass base(Item) studio("models/items/Diary/Ground/Diary.mdl")= item_g_gargoyle_book : "Thaumaturgical Creatures.\n\nRegent's book." []
@ItemClass base(Item) studio("models/items/Pendant/ground/Pendant.mdl")= item_g_ghost_pendant : "Pendant.\n\nThis exquisite pendant looks polished though it was found in the charred ruins of the Ocean House. When you hold it in your palm for a few seconds, you're overwhelmed with a sense of profound sadness." []
@ItemClass base(Item) studio("models/items/invitation/ground/invitation.mdl")= item_g_giovanni_invitation_maria : "Giovanni Invitation.\n\nMaria Giovanni's invitation." []
@ItemClass base(Item) studio("models/items/invitation/ground/invitation.mdl")= item_g_giovanni_invitation_victor : "Giovanni Invitation.\n\nVictor Giovanni's invitation." []
@ItemClass base(Item) studio("models/items/guymag/Ground/guymag.mdl")= item_g_guy_magazine : "Guy Magazine, Spring Edition.\n\nThis looks to be a copy of the Spring Edition of Guy Magazine. On the cover is a beautiful girl, scantily clad. The copy reads, 'IMALIA. Rough, Tough and in the Buff!'." []
@ItemClass base(Item) studio("models/items/Diary/Ground/Diary.mdl")= item_g_hannahs_appt_book : "Hanna's Appointment Book." []
@ItemClass base(Item) studio("models/items/Diary/Ground/Diary.mdl")= item_g_hatters_screenplay : "Screenplay.\n\nDavid Hatter's screenplay. It is tentatively titled 'Humanity Vs. The Vampire Lords'." []
@ItemClass base(Item) studio("models/items/HorrorTape_1/Ground/HorrorTape_1.mdl")= item_g_horrortape_1 : "Horror Tape Part 1.\n\nA battered videocassette. The labeling is cheap and worn, you can barely make out the logo, which looks somewhat like 'DMP'. It appears this tape has changed hands more than a few times." []
@ItemClass base(Item) studio("models/items/HorrorTape_2/Ground/HorrorTape_2.mdl")= item_g_horrortape_2 : "Horror Tape Part 2.\n\nA battered videocassette. A battered videocassette. The labeling is cheap and worn. You hope it's one of the muppet movies." []
@ItemClass base(Item) studio("models/items/jadecat/Ground/jadecat.mdl")= item_g_idol_cat : "Jade Cat.\n\nThis is a beautifully-crafted jade statue." []
@ItemClass base(Item) studio("models/items/jadecrane/Ground/jadecrane.mdl")= item_g_idol_crane : "Jade Crane.\n\nThis is a beautifully-crafted jade statue." []
@ItemClass base(Item) studio("models/items/jadedragon/Ground/jadedragon.mdl")= item_g_idol_dragon : "Jade Dragon.\n\nThis is a beautifully-crafted jade statue." []
@ItemClass base(Item) studio("models/items/jadeelephant/Ground/jadeelephant.mdl")= item_g_idol_elephant : "Jade Elephant.\n\nThis is a beautifully-crafted jade statue." []
@ItemClass base(Item) studio("models/items/Flyer/ground/flyer.mdl")= item_g_jumbles_flyer : "Flyer.\n\nThe writing below the symbol says 'I am Enlightened!'." []
@ItemClass base(Item) studio("models/items/businesscard/Ground/businesscard2.mdl")= item_g_junkyard_businesscard : "Brothers Salvage.\n\nThe card reads 'Brothers Salvage, Santa Monica'." []
@ItemClass base(Item) studio("models/items/briefcase/Ground/briefcase.mdl")= item_g_larry_briefcase : "Briefcase.\n\nA briefcase with contents unknown. Larry asked you to grab this from an exchange in the parking garage, which you obviously did." []
@ItemClass base(Item) studio("models/items/Diary/Ground/Diary.mdl")= item_g_lilly_diary : "Diary.\n\nThis seems to be Lilly's diary." []
@ItemClass base(Item) studio("models/items/Diary/Ground/Diary.mdl")= item_g_lilly_diary : "Diary.\n\nThis seems to be Lilly's diary." []
@ItemClass base(Item) studio("models/items/LillyOnBeachPhoto/Ground/LillyOnBeachPhoto.mdl")= item_g_lilly_photo : "Girl's Photo.\n\nA photo of a young woman. The message on the back of the photo reads 'August 03, Santa Monica, Lily'." []
@ItemClass base(Item) studio("models/items/Purse/Ground/Purse.mdl")= item_g_lilly_purse : "Purse.\n\nA purse left by Lilly behind in the Diner." []
@ItemClass base(Item) studio("models/items/LillyOnBeachPhoto/Ground/LillyOnBeachPhoto.mdl")= item_g_lillyonbeachphoto : "Lilly on the Beach Photo.\n\nGallery Noir's Charity Money." []
@ItemClass base(Item) studio("models/items/Diary/Ground/Diary.mdl")= item_g_mercurio_journal : "Mercurio's Journal.\n\nFollowing instructions on how to proceed." []
@ItemClass base(Item) studio("models/items/businesscard/Ground/businesscard.mdl")= item_g_milligans_businesscard : "Business Card.\n\nThis is a business card for 'Haunted LA'. The name on the card is Simon Milligan. The address listed is Skyline Apartments, Apt. 1, Downtown Los Angeles, CA." []
@ItemClass base(Item) studio("models/items/Diary/Ground/Diary.mdl")= item_g_oh_diary : "Diary.\n\nThis is the Ocean House's charred remains of what looks like a diary." []
@ItemClass base(Item) studio("models/items/skinbook/Ground/skinbook.mdl")= item_g_pisha_book : "Giovanni Book.\n\nBook - Voce de Morte by Vincetti Marcus Giovanni, Consigliare." []
@ItemClass base(Item) studio("models/items/FetishStatue/ground/FetishStatue.mdl")= item_g_pisha_fetish : "Fetish Statue.\n\nYou can tell just from holding it, that there is something definitely odd and supernatural within it." []
@ItemClass base(Item) studio("models/items/bloodpack/ground/bloodpack.mdl")= item_g_werewolf_bloodpack : "Werewolf Blood.\n\nBlood allegedly taken from of a werewolf." []
@ItemClass base(Item) studio("models/items/webcam/Ground/webcam.mdl")= item_g_wireless_camera_1 : "Web Camera.\n\nThis is a remote web camera." []
@ItemClass base(Item) studio("models/items/webcam/Ground/webcam.mdl")= item_g_wireless_camera_2 : "Web Camera.\n\nThis is a remote web camera." []
@ItemClass base(Item) studio("models/items/webcam/Ground/webcam.mdl")= item_g_wireless_camera_3 : "Web Camera.\n\nThis is a remote web camera." []
@ItemClass base(Item) studio("models/items/webcam/Ground/webcam.mdl")= item_g_wireless_camera_4 : "Web Camera.\n\nThis is a remote web camera." []

// keys
@ItemClass base(Item) studio("models/items/sewercard/Ground/sewercard.mdl")= item_g_warrens4_passkey : "Warrens Pass Key.\n\nThis looks to be a magnetic swipe key." []
@ItemClass base(Item) studio("models/items/Key/Ground/Key.mdl")= item_k_ash_cell_key : "Ash's Cell Key.\n\nKey to the locked cell." []
@ItemClass base(Item) studio("models/items/Key/Ground/Key.mdl")= item_k_carson_apartment_key : "Carson's Apartment Key.\n\nYou're not sure what this key is for." []
@ItemClass base(Item) studio("models/items/Key/Ground/Key.mdl")= item_k_chinese_theatre_key : "Chinese Theatre Key.\n\nKey to unlock front door of Chinese Theatre." []
@ItemClass base(Item) studio("models/items/Key/Ground/Key.mdl")= item_k_clinic_cs_key : "Clinic Guard's Keys.\n\nIt's just a key, there's not much to say about it." []
@ItemClass base(Item) studio("models/items/Key/Ground/Key.mdl")= item_k_clinic_maintenance_key : "Maintenance Room Key.\n\nIt's just a key, there's not much to say about it." []
@ItemClass base(Item) studio("models/items/Key/Ground/Key.mdl")= item_k_clinic_stairs_key : "Clinic Stairs Key.\n\nIt's just a key, there's not much to say about it." []
@ItemClass base(Item) studio("models/items/Key/Ground/Key.mdl")= item_k_edane_key : "Record Room Key.\n\nKey to the Elizabeth Dane's records room." []
@ItemClass base(Item) studio("models/items/Keycard/Ground/g_keycard.mdl")= item_k_empire_jezebel_key : "Jezebel Locke's Key.\n\nYou're not sure what this key is for." []
@ItemClass base(Item) studio("models/items/Keycard/Ground/g_keycard.mdl")= item_k_empire_mafia_key : "Empire Mafia Key.\n\nYou're not sure what this key is for." []
@ItemClass base(Item) studio("models/items/Key/Ground/Key.mdl")= item_k_fu_cell_key : "Barrabus' Cell Key.\n\nKey to the locked cell." []
@ItemClass base(Item) studio("models/items/Keycard/Ground/g_keycard.mdl")= item_k_fu_office_key : "Fu Syndicate Office Key.\n\nOffice Keycard." []
@ItemClass base(Item) studio("models/items/Key/Ground/Key.mdl")= item_k_gallery_noir_key : "Gallery Noir's Key.\n\nIt's just a key, there's not much to say about it." []
@ItemClass base(Item) studio("models/items/Keycard/Ground/g_keycard.mdl")= item_k_gimble_key : "Foxy Boxes' Key.\n\nIt's just a key, there's not much to say about it." []
@ItemClass base(Item) studio("models/items/Key/Ground/Key.mdl")= item_k_hannahs_safe_key : "Safe Key.\n\nThis is the key to Hannah's safe." []
@ItemClass base(Item) studio("models/items/Key/Ground/Key.mdl")= item_k_hitman_ji_key : "Ji Wen Ja's key.\n\nKey to Ji Wen Ja's secret stash." []
@ItemClass base(Item) studio("models/items/Key/Ground/Key.mdl")= item_k_hitman_lu_key : "Lu Fang's key.\n\nKey to Lu Fang's secret stash." []
@ItemClass base(Item) studio("models/items/Key/Ground/Key.mdl")= item_k_kiki_key : "Padlock Key.\n\nKey to unlock Kiki's Room." []
@ItemClass base(Item) studio("models/items/Key/Ground/Key.mdl")= item_k_leopold_int_key : "Society of Leopold Interior Key.\n\nTo the Wine Cellar." []
@ItemClass base(Item) studio("models/items/Key/Ground/Key.mdl")= item_k_lilly_key : "Lily's Key - looks like a car key.\n\nYou're not sure what this key is for." []
@ItemClass base(Item) studio("models/items/Key/Ground/Key.mdl")= item_k_lucky_star_murder_key : "Luckee Star Room Key.\n\nProperty of Luckee Star, Hollywood." []
@ItemClass base(Item) studio("models/items/Key/Ground/Key.mdl")= item_k_malcolm_office_key : "Malcolm's Office Key.\n\nIt's just a key, there's not much to say about it." []
@ItemClass base(Item) studio("models/items/Key/Ground/Key.mdl")= item_k_malkavian_refrigerator_key : "Laboratory Refrigerator Key.\n\nIt's just a key, there's not much to say about it." []
@ItemClass base(Item) studio("models/items/Key/Ground/Key.mdl")= item_k_murietta_key : "Spare Key.\n\nThis looks like someone's spare key." []
@ItemClass base(Item) studio("models/items/Key/Ground/Key.mdl")= item_k_museum_basement_key : "Museum Basement Key.\n\nKey to the museum basement." []
@ItemClass base(Item) studio("models/items/Key/Ground/Key.mdl")= item_k_museum_office_key : "Museum Office Key.\n\nKey to the museum's administrative offices." []
@ItemClass base(Item) studio("models/items/Keycard/Ground/g_keycard.mdl")= item_k_museum_storage_key : "Museum Storage Key.\n\nKey to the museum's storage area." []
@ItemClass base(Item) studio("models/items/Keycard/Ground/g_keycard.mdl")= item_k_museum_storeroom_key : "Museum Workroom Key.\n\nKey to the museum's workroom." []
@ItemClass base(Item) studio("models/items/Keycard/Ground/g_keycard.mdl")= item_k_netcafe_office_key : "Internet Cafe Key.\n\nKey to the office of the Internet Cafe." []
@ItemClass base(Item) studio("models/items/Key/Ground/Key.mdl")= item_k_oceanhouse_basement_key : "Boiler Room Key." []
@ItemClass base(Item) studio("models/items/Key/Ground/Key.mdl")= item_k_oceanhouse_sewer_key : "Sewer Key.\n\nThis looks like someone's spare key." []
@ItemClass base(Item) studio("models/items/Key/Ground/Key.mdl")= item_k_oceanhouse_upstairs_key : "Upstairs Room Key." []
@ItemClass base(Item) studio("models/items/Key/Ground/Key.mdl")= item_k_oh_front_key : "Ocean House Front Door Key." []
@ItemClass base(Item) studio("models/scenery/furniture/Sarcophagus/Sarcophagus_KEY.mdl")= item_k_sarcophagus_key : "Sarcophagus Key.\n\nA brilliant example of ancient engineering and a significant archaeological find. But as with any key, this one is most coveted for what it grants access to." []
@ItemClass base(Item) studio("models/items/orangecomputing/Ground/orangecomputing.mdl")= item_k_shrekhub_one_key : "Megahurtz Access Card.\n\nKey to Megahurtz Computing." []
@ItemClass base(Item) studio("models/items/kamikazizen/Ground/kamikazizen.mdl")= item_k_shrekhub_four_key : "Kamikazi Zen Access Card.\n\nKey to the door of Kamikazi Zen." []
@ItemClass base(Item) studio("models/items/metalhead/Ground/metalhead.mdl")= item_k_shrekhub_three_key : "Metalhead Access Card.\n\nKey to the door of Metalhead industries." []
@ItemClass base(Item) studio("models/items/Keycard/Ground/g_keycard.mdl")= item_k_skyline_haven_key : "Skyline Apartments, Unit 4.\n\nThis is the key to your haven downtown." []
@ItemClass base(Item) studio("models/items/Keycard/Ground/g_keycard.mdl")= item_k_tatoo_parlor_key : "Tattoo Parlor Key.\n\nYou're not sure what this key is for." []
@ItemClass base(Item) studio("models/items/Keycard/Ground/g_keycard.mdl")= item_k_tawni_apartment_key : "Tawni's Apartment Key." []
@ItemClass base(Item) studio("models/items/Keycard/Ground/g_keycard.mdl")= item_k_tutorial_chopshop_stairs_key : "Chopshop Key.\n\nKey to the stairwell at the back of the chopshop." []

// selling items
@ItemClass base(Item) studio("models/items/carstereo/Ground/carstereo.mdl")= item_g_car_stereo : "Car Stereo [Item for sale].\n\nA popular model car stereo that might be worth something to someone who asks few questions about its origin." []
@ItemClass base(Item) studio("models/items/Cashbox/Ground/CashBox.mdl")= item_g_cash_box : "Cash Box.\n\nGallery Noir's Charity Money." []
@ItemClass base(Item) studio("models/items/ChewingGum/Ground/ChewingGum.mdl")= item_g_chewinggum : "Chewing Gum [Item for sale].\n\nGallery Noir's Charity Money." []
@ItemClass base(Item) studio("models/items/ComputerBookHighGrade/Ground/ComputerBookHighGrade.mdl")= item_g_computerbookhighgrade : "Computer Book High Grade [Item for sale].\n\nGallery Noir's Charity Money." []
@ItemClass base(Item) studio("models/items/ComputerBookLowGrade/Ground/ComputerBookLowGrade.mdl")= item_g_computerbooklowgrade : "Computer Book LOW Grade [Item for sale].\n\nGallery Noir's Charity Money." []
@ItemClass base(Item) studio("models/items/Drugs/ground/DrugBox.mdl")= item_g_drugs_drug_box : "Drug Box [Item for sale].\n\nVivitrazac. Take one before 'relations'. Allow six to eight hours for swelling to subside." []
@ItemClass base(Item) studio("models/items/Drugs/ground/MorphineBottle.mdl")= item_g_drugs_morphine_bottle : "Morphine Bottle [Item for sale].\n\nUsed to ease the suffering of sufficiently painful wounds." []
@ItemClass base(Item) studio("models/items/Drugs/ground/PerscriptionBottle.mdl")= item_g_drugs_perscription_bottle : "Prescription Bottle [Item for sale].\n\nOrthotricyclin. Failure to take as prescribed could result in eighteen years of responsibility." []
@ItemClass base(Item) studio("models/items/Drugs/ground/PillBottle.mdl")= item_g_drugs_pill_bottle : "Pill Bottle [Item for sale].\n\nEstrogen. Caution: Do not take if male." []
@ItemClass base(Item) studio("models/items/LinedPaper/Ground/LinedPaper.mdl")= item_g_linedpaper : "Lined Paper.\n\This looks like a pad of lined paper." []
@ItemClass base(Item) studio("models/items/PullToy/Ground/PullToy.mdl")= item_g_pulltoy : "PullToy [Item for sale]." []
@ItemClass base(Item) studio("models/items/Rings/Ground/Ring01.mdl")= item_g_ring_gold : "Gold Ring [Item for sale].\n\nThis looks to be a class ring." []
@ItemClass base(Item) studio("models/items/Rings/Ground/Ring01.mdl")= item_g_ring_serial_killer_1 : "Gold Ring [Item for sale].\n\nThis looks to be a class ring... for the SERIEL KILLAH! #1." []
@ItemClass base(Item) studio("models/items/Rings/Ground/Ring01.mdl")= item_g_ring_serial_killer_2 : "Gold Ring [Item for sale].\n\nThis looks to be a class ring... for the SERIEL KILLAH! #2." []
@ItemClass base(Item) studio("models/items/Rings/Ground/Ring02.mdl")= item_g_ring_silver : "Silver Ring [Item for sale].\n\nLooks like an engagement ring for a girl who's a single day's ATM limit special." []
@ItemClass base(Item) studio("models/items/Rings/Ground/Ring03.mdl")= item_g_ring03 : "Fancy Ring [Item for sale].\n\nThis is a beautifully-crafted ring, seemingly slipped from the fingers of royalty." []
@ItemClass base(Item) studio("models/items/Watch/Ground/Watch.mdl")= item_g_watch_fancy : "Fancy Watch [Item for sale].\n\nThe faceplate says Quantam Limited Edition. This is the kind of watch that comes with its own matching luxury vehicle." []
@ItemClass base(Item) studio("models/items/Watch/Ground/Watch_02.mdl")= item_g_watch_normal : "Normal Watch [Item for sale].\n\nThis is a replica of a much nicer watch." []
@ItemClass base(Item) studio("models/items/MoneyClip/Ground/MoneyClip.mdl")= item_m_money_clip : "Money Clip.\n\nA money clip with an indeterminate amount of cash." [ starting_money(integer) : "Starting Money Amount" : 100 : "Amount of money put into this clip." ]
@ItemClass base(Item) studio("models/items/MoneyEnvelope/Ground/MoneyEnvelope.mdl")= item_m_money_envelope : "Money Envelope.\n\nAn envelope containing a bit of cash." [ starting_money(integer) : "Starting Money Amount" : 100 : "Amount of money put into this envelope." ]
@ItemClass base(Item) studio("models/items/Wallet/Ground/Wallet.mdl")= item_m_wallet : "Wallet.\n\Not your wallet." [ starting_money(integer) : "Starting Money Amount" : 100 : "Amount of money put into this wallet." ]

// collectable items
@ItemClass base(Item) studio("models/items/locket/Ground/locket.mdl")= item_g_locket : "Antique Locket.\n\This locket is old and slightly tarnished. It might be your imagination, but it seems to radiate an unnatural heat." []
@ItemClass base(Item) studio("models/items/garysphoto/Ground/garysphoto.mdl")= item_g_garys_photo : "Photo.\n\nA blurry photo of what looks to be a Nosferatu." []
@ItemClass base(Item) studio("models/items/cdcase/Ground/cdcase.mdl")= item_g_garys_cd : "CD-ROM.\n\nThere's an illegible handwritten label. Looks like a data CD." []
@ItemClass base(Item) studio("models/items/HorrorTape_2/Ground/HorrorTape_2.mdl")= item_g_garys_film : "Film Tape.\n\nA battered film tape. Tap Hotel. Shuffle Step." []
@ItemClass base(Item) studio("models/items/HorrorTape_2/Ground/HorrorTape_2.mdl")= item_g_garys_tape : "Video Tape.\n\nJock Shot's Swimsuit Shoot. 98 percent chance that someone has gone wild." []
@ItemClass base(Item) studio("models/items/stake/Ground/stake.mdl")= item_g_stake : "Wooden Stake." []
@ItemClass base(Item) studio("models/items/LillyOnBeachPhoto/Ground/VV_Photo.mdl")= item_g_vv_photo : "VV's Autographed Photo.\n\nI'm delivering a memento of moi to your haven, but this should tide you over for now. Love, VV." []
@ItemClass base(Item) studio("models/items/Diary/Ground/Diary.mdl")= item_g_vampyr_apocrypha : "Vampyr Apocrypha.\n\nThis book is titled 'Vampyr Apocrypha'. Unidentified Sarcophagus, Discovered by Julius of Gaul, 1068 AD near Ankara, Ottoman Empire..." []
@ItemClass base(Item) studio("models/items/Clipboard/Ground/Clipboard.mdl")= item_g_warr_clipboard : "Clipboard.\n\nThis looks like the clipboard of an employee of the Los Angeles Department of Water and Power, Spring 2003." []
@ItemClass base(Item) studio("models/items/dayplanner/ground/dayplanner.mdl")= item_g_warr_ledger_1 : "Ledger.\n\nThis looks to be the weekly log of the Los Angeles Department of Water and Power, 1957." []
@ItemClass base(Item) studio("models/items/dayplanner/ground/dayplanner2.mdl")= item_g_warr_ledger_2 : "Ledger.\n\nThis looks to be the weekly log of Douglas Streets, foreman of the Los Angeles Department of Water and Power, 1919." []

// occult items
@ItemClass base(Item) studio("models/items/occult_gargoyle/ground/pendant.mdl")= item_p_gargoyle_talisman : "Rune of the Third Eye.\n\nThis strange talisman is unusually heavy, emanating a palpable power. It reduces the amount of damage done by Gargoyles." []
@ItemClass base(Item) studio("models/items/occult/ground/organ.mdl")= item_p_occult_blood_buff : "Bloodstar.\n\nAll Kindred have the innate power to push their undead bodies to the height of mortal capacity, but only for a moment and at a dire cost of blood. This eldritch talisman was crafted to boost this ability. Blood Buff has twice the duration." []
@ItemClass base(Item) studio("models/items/occult/ground/birdskull.mdl")= item_p_occult_dexterity : "Fae Charm.\n\nThis grim totem makes you feel light as a bird. Plus one to Dexterity." []
@ItemClass base(Item) studio("models/items/occult/ground/thorn.mdl")= item_p_occult_dodge : "Weekapaug Thistle.\n\nThis petrified reed was not meant to fall into the hands of the damned, but vampires can benefit from its shamanistic magick all the same. Increases Defense by 1 point." []
@ItemClass base(Item) studio("models/items/occult/ground/handle.mdl")= item_p_occult_experience : "Saulocept.\n\nAs long as you possess Saulocept you will gain an extra point of experience every time you are awarded 3 or more experience. Saulocept may or may not have other effects." []
@ItemClass base(Item) studio("models/items/occult_Fang/ground/fang.mdl")= item_p_occult_frenzy : "Tarulfang.\n\nThis heavy fang could only have belonged to a ferocious predatory beast. You feel at ease knowing there's one less of those in the world. Decreases your chance to Frenzy." []
@ItemClass base(Item) studio("models/weapons/lockpicks/world/w_lockpicks.mdl")= item_p_occult_hacking : "Occult Hacking.\n\nBlah blah, hacking buff." []
@ItemClass base(Item) studio("models/items/occult/ground/bone.mdl")= item_p_occult_heal_rate : "Mummywrap Fetish.\n\nGazing upong this mummified fetish you feel a rush of vitality to your undead flesh. Increases passive healing rate." []
@ItemClass base(Item) studio("models/weapons/lockpicks/world/w_lockpicks.mdl")= item_p_occult_lockpicking : "Occult Lockpicking.\n\nBlah blah, lockpicking buff." []
@ItemClass base(Item) studio("models/items/occult/ground/ring.mdl")= item_p_occult_obfuscate : "Zharalketh.\n\nSliding on this ring you feel the same stomach-dropping sensation you had when you first invoked Obfuscate. As long as you wear Zharalketh you will be able to maintain Obfuscate longer." []
@ItemClass base(Item) studio("models/items/occult/ground/amber.mdl")= item_p_occult_passive_durations : "Galdjum.\n\nHolding this rough-hewn amber stone gives you a sense of peace, and even glimmer of hope for salvation. You are able hold the effect of passive disciplines longer as long as you possess Galdjum. Their durations are increase 25 percent." []
@ItemClass base(Item) studio("models/items/occult_alamut/ground/alamut.mdl")= item_p_occult_presence : "Key of Alamut.\n\nThese wands have been carried by the feared assassins of Clan Assamite for millenia. One of only a handful still in existence, this Key of Alamut gives it's owner extraordinary resilience to damage. Increases all Soak ratings by 1." []
@ItemClass base(Item) studio("models/items/occult_chalice/ground/chalice.mdl")= item_p_occult_regen : "The Odious Chalice.\n\nThe perverse creation of a Tzimisce fleshcrafter, this abomination is forced to live a tortured eternity in servitude to the damned. As you kill enemies, the Chalice will fill with blood. Use the Chalice to feed from it and gain its stored vitae." []
@ItemClass base(Item) studio("models/items/occult/ground/marble.mdl")= item_p_occult_strength : "Heart of Eliza.\n\nThis glassy stone appears to have a liquid core. The stone itself is milky translucent, rock solid, and unlike anything you've seen. Possession of the Heart of Eliza conveys a Melee bonus of one." []
@ItemClass base(Item) studio("models/items/occult/ground/pendant.mdl")= item_p_occult_thaum_damage : "Daimonori.\n\nThis pendant is hot to the touch, a heat that seeps into your core and fills you with a new confidence. You're unsure if this power is entirely your own, but its intoxicating lure is seemingly beyond your power to resist. Increases the damage of all Thaumaturgy effects." []

// research books
@ItemClass base(Item) studio("models/items/beckett_book/ground/item_g_beckett_book.mdl")= item_p_research_hg_computers : "The Cowboy's Guide to Cyberspace by Case.\n\nRequires Research 9." []
@ItemClass base(Item) studio("models/items/beckett_book/ground/item_g_beckett_book.mdl")= item_p_research_hg_dodge : "Dodge II.\n\nA handbook from Les Assasins De Roullents, a Quebecois terrorist organization. This manual holds the secrets to dodging bullets, trains, and other projectiles. Requires Research 8." []
@ItemClass base(Item) studio("models/items/beckett_book/ground/item_g_beckett_book.mdl")= item_p_research_hg_firearms : "Art of the Quick-Draw by Ned Nederlander.\n\nRequires Research 10." []
@ItemClass base(Item) studio("models/items/beckett_book/ground/item_g_beckett_book.mdl")= item_p_research_hg_melee : "Bustin' It: Harmful If Swallowed Hint Book.\n\nThe only official strategy guide with all the hottest tricks and tips for Bustin' It... Requires Research 9." []
@ItemClass base(Item) studio("models/items/beckett_book/ground/item_g_beckett_book.mdl")= item_p_research_lg_computers : "Computers for Grandma.\n\nReading this will boost your computer skill. Research of at least 2 is required." []
@ItemClass base(Item) studio("models/items/beckett_book/ground/item_g_beckett_book.mdl")= item_p_research_lg_dodge : "Scarlet Torkelson: Circus Performer.\n\nBiography of 1930s circus performer Scarlet 'the perforated lady' Torkelson. Best known as the assistant to 'Shakey Sil' Manfretti, the notorious epileptic knife-thrower." []
@ItemClass base(Item) studio("models/items/beckett_book/ground/item_g_beckett_book.mdl")= item_p_research_lg_firearms : "So You Wanna' Shoot Things?.\n\nFirst, get a gun, preferably something for home defense, like an automatic rifle. Second, check to see if the gun is loaded, if not, do so... This book increases firearms skill." []
@ItemClass base(Item) studio("models/items/beckett_book/ground/item_g_beckett_book.mdl")= item_p_research_lg_stealth : "Peepin' - A Voyeur Field Guide.\n\nEvery good voyeur needs to develop a sneaking game... This book ups your stealth skill." []
@ItemClass base(Item) studio("models/items/beckett_book/ground/item_g_beckett_book.mdl")= item_p_research_mg_brawl : "Brawling Manual.\n\nNo Means No: A Woman's Guide to Self Defense on the College Campus." []
@ItemClass base(Item) studio("models/items/beckett_book/ground/item_g_beckett_book.mdl")= item_p_research_mg_finance : "Finance Manual.\n\nABC - Always Be Closing: Mitch & Murray's Leads to the California Real Estate Market." []
@ItemClass base(Item) studio("models/items/beckett_book/ground/item_g_beckett_book.mdl")= item_p_research_mg_melee : "Kendo for Advanced Students.\n\nIf you have gained the insight, willpower, and form from your first two years of Kendo, you are now ready for the secrets of the kendo masters... This book ups your melee skill." []
@ItemClass base(Item) studio("models/items/beckett_book/ground/item_g_beckett_book.mdl")= item_p_research_mg_security : "Security Manual.\n\nSobchak's Guide to Personal and Home Security." []

// other items
@ItemClass base(Item) = item_i_written : "Written [not tested]." []
@ItemClass base(Item) = item_s_physicshand : "Physics Hand [not tested]." []

// weapons
@ItemClass base(Item) studio("models/weapons/baseball_bat/ground/g_baseball_bat.mdl")= item_w_baseball_bat : "Baseball Bat.\n\nOnce, the signature crack of this equipment conjured images of America's pastime, it has evolved into the brutal chorus of a thugsong." []
@ItemClass base(Item) studio("models/weapons/baton/ground/g_baton.mdl")= item_w_baton : "Police Baton." []
@ItemClass base(Item) studio("models/weapons/bushhook/world/g_bushhook.mdl")= item_w_bush_hook : "Bush Hook.\n\nPrimarily used by gardeners, when used for intents other than its original purpose, the results are frequently gory." []
@ItemClass base(Item) studio("models/weapons/anaconda/ground/g_anaconda.mdl")= item_w_colt_anaconda : "Colt Anaconda.\n\nA .44 magnum revolver. Feelin' lucky punk? A large caliber monster with the power to stop almost anyone dead in his tracks. Alternate Fire Mode: Fan." []
@ItemClass base(Item) studio("models/weapons/crossbow/ground/g_crossbow.mdl")= item_w_crossbow : "Crossbow.\n\nA modern variant of an ancient Chinese weapon. Fires silently, but has to be cocked before each shot." []
@ItemClass base(Item) studio("models/weapons/crossbow/ground/g_crossbow.mdl")= item_w_crossbow_flaming : "Flaming Crossbow.\n\nA modern variant of an ancient Chinese weapon. Fires silently, but has to be cocked before each shot." []
@ItemClass base(Item) studio("models/weapons/desert_eagle/ground/g_desert_eagle.mdl")= item_w_deserteagle : "McLusky .50 Caliber.\n\nThe McLusky is one of the few gas-operated handguns ever produced, and one of the most powerful and heavy pistols available on the market." []
@ItemClass base(Item) studio("models/weapons/fire_axe/ground/g_fire_axe.mdl")= item_w_fireaxe : "Fire Axe.\n\nTruly, a tool for madmen. Who else would attack fire with a blade?" []
@ItemClass base(Item) studio("models/weapons/flamethrower/ground/g_flamethrower_r.mdl")= item_w_flamethrower : "Flamethrower.\n\nFlamethrowers,in one form or another, have been used since ancient times. It propels burning fuel in a several foot arc, scorching everything in its path." []
@ItemClass base(Item) studio("models/weapons/pistol_glock/ground/g_pistol_glock.mdl")= item_w_glock_17c : "Brokk 17c.\n\nA 9mm standard pistol with a polymer grip and guide rod (instead of metal) that makes it lighter than other pistols. It can be found in use by most law enforcement agencies..." []
@ItemClass base(Item) studio("models/weapons/grenade/pineapple/ground/g_pineapple.mdl")= item_w_grenade_frag : "Fragmentation Grenade.\n\nPull pin for fun and profit." []
@ItemClass base(Item) studio("models/weapons/m37/world/w_m37.mdl")= item_w_ithaca_m_37 : "Utica M37.\n\nThe 12 gauge M37 is designed for close quarters use as a home defense weapon. Tried and true service for military and law enforcement, the m37 features all metal parts and a bottom feed and ejector for both rights and lefties. It has moderate recoil and is fairly light for ease of use." []
@ItemClass base(Item) studio("models/weapons/katana/world/g_katana.mdl")= item_w_katana : "Katana.\n\nA light, slightly curved traditional Japanese sword designed for quick slashing attacks. To Kindred, a competent swordsman is far more dangerous than a sharpshooter." []
@ItemClass base(Item) studio("models/weapons/knife/world/g_knife.mdl")= item_w_knife : "Knife.\n\nSome knives, throughout their entire existence, are never used for any malicious purpose. This ain't one of them." []
@ItemClass base(Item) studio("models/weapons/submachine_mac10/ground/g_submachine_mac10.mdl")= item_w_mac_10 : "Braddock 9mm.\n\nA small, light machine pistol that fires a 9mm pistol round, not made for accuracy as much as to deliver the largest amount of ordinance in the shortest period of time..." []
@ItemClass base(Item) studio("models/items/occult_katana/ground/katana.mdl")= item_w_occultblade : "Tal'mahe'Ra Blade.\n\nThis sword was forged by the Tal'mahe'Ra, a vanished sect of Kindred that purportedly ventured into the lands of the dead. It seems unaturally light and attacks twice as fast as a normal blade." []
@ItemClass base(Item) studio("models/weapons/rifle_rem700/ground/g_rifle_rem700.mdl")= item_w_remington_m_700 : "'Jaime Sue'.\n\nThis is a standard rifle for sport hunting. It features a zoom mode for killing made easy." []
@ItemClass base(Item) studio("models/weapons/severed_arm/ground/g_severed_arm.mdl")= item_w_severed_arm : "A severed arm.\n\nAlthough the previous owner probably misses it, you can still put it to good use." []
@ItemClass base(Item) studio("models/weapons/katana/world/g_katana.mdl")= item_w_sheriff_sword : "Sheriff Sword [Unused weapon].\n\nYou shouldn't have this!" []
@ItemClass base(Item) studio("models/weapons/sledgehammer/ground/g_sledgehammer.mdl")= item_w_sledgehammer : "Sledgehammer.\n\nA heavy hammer ostensibly used for construction. Great for getting that song out of someone's head, as well as anything else inside." []
@ItemClass base(Item) studio("models/weapons/rifle_steyraug/ground/g_rifle_steyraug_r.mdl")= item_w_steyr_aug : "Steyr Aug.\n\nEven if the Steyr Aug was lackluster as a weapon, it would still have a lot going for it aesthetically, but this lightweight Austrian sub-machine gun has proved reliable and effective, making it a popular weapon in militaries around the world..." []
@ItemClass base(Item) studio("models/weapons/supershotgun/ground/g_supershotgun.mdl")= item_w_supershotgun : "Jaegerspas XV.\n\nThe Jaegerspas automatic shotgun looks and fires more like an assault rifle than a traditional shotgun. It delivers bursts of deadly shot at a devastating pace. The Jaegerspas has both semi-automatic and pump action functionality." []
@ItemClass base(Item) studio("models/weapons/ThirtyEight/ground/g_ThirtyEight.mdl")= item_w_thirtyeight : "Thirtyeight.\n\nThis is a cheap, small-caliber handgun used by start-up hoods in alleys across the country. Also known as a purse gun." []
@ItemClass base(Item) studio("models/weapons/throwing_star/ground/g_throwing_star.mdl")= item_w_throwing_star : "Throwing Star.\n\nWhen you wish upon a throwing star, you wish you had infomodel, wieldmodels and a projectile model so you could finish implemented the damn thing." []
@ItemClass base(Item) studio("models/weapons/tireiron/world/g_tireiron.mdl")= item_w_tire_iron : "Tire Iron.\n\nHeavy, metal, blunt. Could be used for fixing a flat, sure." []
@ItemClass base(Item) studio("models/weapons/torch/ground/g_torch.mdl")= item_w_torch : "Torch.\n\nFor when you want to get medieval on someone's ass." []
@ItemClass base(Item) studio("models/weapons/submachine_uzi/ground/g_uzi.mdl")= item_w_uzi : "Lassiter Killmatic.\n\nThe Lassiter Killmatic was developed to be a reliable and compact gun, robust enough to take a lot of punishment, and accurate enough to dish it out in a hurry... Limited recoil and climb make one-handed firing feasible." []

// unused weapons
@ItemClass base(Item) = item_w_chang_blade : "Chang Brothers Blade [Unused weapon].\n\nBlade used by Chang Brother's Boss." []
@ItemClass base(Item) = item_w_chang_claw : "Chang Brothers Claws [Unused weapon].\n\nClaw used by Chang Brother's Boss." []
@ItemClass base(Item) = item_w_claws : "Claws [Unused weapon]." []
@ItemClass base(Item) = item_w_claws_ghoul : "Ghoul Claws [Unused weapon]." []
@ItemClass base(Item) = item_w_claws_protean4 : "Claws [Unused weapon].\n\nProtean 4." []
@ItemClass base(Item) = item_w_claws_protean5 : "Claws [Unused weapon].\n\nProtean 5." []
@ItemClass base(Item) = item_w_gargoyle_fist : "Gargoyle Melee [Unused weapon]." []
@ItemClass base(Item) = item_w_hengeyokai_fist : "Hengeyokai Fists [Unused weapon]." []
@ItemClass base(Item) = item_w_manbat_claw : "ManBat Melee [Unused weapon]." []
@ItemClass base(Item) = item_w_mingxiao_melee : "Ming Xiao Melee [Unused weapon]." []
@ItemClass base(Item) = item_w_mingxiao_spit : "Ming Xiao's Spit [Unused weapon]." []
@ItemClass base(Item) = item_w_mingxiao_tentacle : "Ming Xiao Tentacles [Unused weapon]." []
@ItemClass base(Item) = item_w_sabbatleader_attack : "Sabbat Leader Attack [Unused weapon]." []
@ItemClass base(Item) = item_w_tzimisce_melee : "Tzimisce Melee [Unused weapon]." []
@ItemClass base(Item) = item_w_tzimisce2_claw : "Tzimisce 2 Claw [Unused weapon]." []
@ItemClass base(Item) = item_w_tzimisce2_head : "Tzimisce 2 Head [Unused weapon]." []
@ItemClass base(Item) = item_w_tzimisce3_claw : "Tzimisce 3 Claw [Unused weapon]." []
@ItemClass base(Item) = item_w_unarmed : "Unarmed [Unused].\n\nNo weapon readied." []
@ItemClass base(Item) = item_w_werewolf_attacks : "Werewolf Attack [Unused weapon]." []
@ItemClass base(Item) = item_w_wolf_head : "Wolf Head [Unused weapon]." []

@ItemClass base(Item) studio("models/weapons/katana/world/g_katana.mdl")= item_w_avamp_blade : "Asian Vampire Blade [Unused weapon].\n\nBlade used by Asian Vampire Boss." []
@ItemClass base(Item) studio("models/scenery/misc/changball/changball.mdl")= item_w_chang_energy_ball : "Fragmentation Grenade [Unused weapon].\n\nPull pin for fun and profit." []
@ItemClass base(Item) studio("models/scenery/misc/gio_spirit/gio_spirit.mdl")= item_w_chang_ghost : "Chang Ghost Projectile [Unused weapon].\n\nSpawned when a coffin is broken open." []
@ItemClass base(Item) studio("models/weapons/fists/info/i_fists.mdl")= item_w_fists : "Fists (Unarmed).\n\nNo weapon readied." []
@ItemClass base(Item) studio("models/weapons/rifle_rem700/ground/g_rifle_rem700_bach.mdl")= item_w_rem_m_700_bach : "Bach's 700P Rifle [Unused weapon].\n\nThis is a standard tactical rifle most commonly employed by SWAT teams.  It features a 20X Scope to pick off beads of sweat off the target's forehead." []
@ItemClass base(Item) studio("models/weapons/fists/info/i_fists.mdl")= item_w_zombie_fists : "Zombie fists [Unused weapon]." []

//@PointClass base(Item) = weapon_physcannon : "HL2 Physcannon [not used directly]." []
//@PointClass base(Item) = weapon_physgun : "HL2 Physgun [not used directly]." []
//@PointClass base(Item) studio("models/weapons/pistol/world/w_pistol.mdl")= weapon_pistol : "HL2 Pistol [Unused]." []








































//*******************************************************************************************************************
//*******************************************************************************************************************
//
// SOUND
//
//*******************************************************************************************************************
//*******************************************************************************************************************


//===================================================================================================================
// ambient_soundscheme [VTMB-specific, soundscape-based]
//===================================================================================================================

@PointClass
base (
	Targetname,
	c_VEnableDisable
)
iconsprite("editor/env_soundscape.vmt")
= ambient_soundscheme : 
	"[VTMB] An 'env_soundscape'-similar entity to control sound in an area. The active soundscheme at any time is the last one that had line-of-sight to the player, and was within the radius."
[
	sep_ascmain(string) readonly: "------------------------------------"

	scheme_file(vsndscheme) : "Sound Scheme File" : "sm_hub_streets" : "The name of the Sound Scheme to use. \nCorresponds to an entry in the 'sound/schemes/<name>.txt' file. \n\nIf you are using a custom scheme file (not presented in list) - please, use the full moddir-relative paths, like 'sound/Schemes/MyScheme.txt'." =
	[
	// SndSchemeList:
		"sound/schemes/609.txt" : "609" 
		"sound/schemes/alley.txt" : "alley" 
		"sound/schemes/asphole_sounds.txt" : "asphole_sounds" 
		"sound/schemes/bar_sounds.txt" : "bar_sounds" 
		"sound/schemes/beachhouse.txt" : "beachhouse" 
		"sound/schemes/beachhouse_dennis_talk_temp.txt" : "beachhouse_dennis_talk_temp" 
		"sound/schemes/c_theater1.txt" : "c_theater1" 
		"sound/schemes/c_theater2.txt" : "c_theater2" 
		"sound/schemes/ch_hub_1.txt" : "ch_hub_1" 
		"sound/schemes/ch_temple_4.txt" : "ch_temple_4" 
		"sound/schemes/ch_zhaos_1.txt" : "ch_zhaos_1" 
		"sound/schemes/cops_outside.txt" : "cops_outside" 
		"sound/schemes/elizabethdane_exterior.txt" : "elizabethdane_exterior" 
		"sound/schemes/elizabethdane_interior.txt" : "elizabethdane_interior" 
		"sound/schemes/epicdemo.txt" : "epicdemo" 
		"sound/schemes/glaze.txt" : "glaze" 
		"sound/schemes/glaze2.txt" : "glaze2" 
		"sound/schemes/gp_giovanni_1.txt" : "gp_giovanni_1" 
		"sound/schemes/gp_giovanni_2.txt" : "gp_giovanni_2" 
		"sound/schemes/gp_giovanni_2a.txt" : "gp_giovanni_2a" 
		"sound/schemes/gp_giovanni_2b.txt" : "gp_giovanni_2b" 
		"sound/schemes/gp_giovanni_3.txt" : "gp_giovanni_3" 
		"sound/schemes/gp_giovanni_4.txt" : "gp_giovanni_4" 
		"sound/schemes/gp_giovanni_5.txt" : "gp_giovanni_5" 
		"sound/schemes/hollow_interior.txt" : "hollow_interior" 
		"sound/schemes/hollywood_main.txt" : "hollywood_main" 
		"sound/schemes/hw_609_1_exterior.txt" : "hw_609_1_exterior" 
		"sound/schemes/hw_609_1_interior.txt" : "hw_609_1_interior" 
		"sound/schemes/hw_ash_sewer_1.txt" : "hw_ash_sewer_1" 
		"sound/schemes/hw_ash_sewer_2.txt" : "hw_ash_sewer_2" 
		"sound/schemes/hw_ash_sewer_3.txt" : "hw_ash_sewer_3" 
		"sound/schemes/hw_asphole_1.txt" : "hw_asphole_1" 
		"sound/schemes/hw_cemetery.txt" : "hw_cemetery" 
		"sound/schemes/hw_chinese_1_boss.txt" : "hw_chinese_1_boss" 
		"sound/schemes/hw_chinese_1_int.txt" : "hw_chinese_1_int" 
		"sound/schemes/hw_chinese_1_post.txt" : "hw_chinese_1_post" 
		"sound/schemes/hw_jewelry_1.txt" : "hw_jewelry_1" 
		"sound/schemes/hw_luckystar_1.txt" : "hw_luckystar_1" 
		"sound/schemes/hw_luckystar_1_exterior.txt" : "hw_luckystar_1_exterior" 
		"sound/schemes/hw_metalhead_1.txt" : "hw_metalhead_1" 
		"sound/schemes/hw_sewer_1.txt" : "hw_sewer_1" 
		"sound/schemes/hw_warrens_base.txt" : "hw_warrens_base" 
		"sound/schemes/hw_warrens_quiet.txt" : "hw_warrens_quiet" 
		"sound/schemes/hw_warrens_1.txt" : "hw_warrens_1" 
		"sound/schemes/hw_warrens_2.txt" : "hw_warrens_2" 
		"sound/schemes/hw_warrens_3.txt" : "hw_warrens_3" 
		"sound/schemes/hw_warrens_4.txt" : "hw_warrens_4" 
		"sound/schemes/hw_warrens4_base.txt" : "hw_warrens4_base" 
		"sound/schemes/hw_warrens_5.txt" : "hw_warrens_5" 
		"sound/schemes/hw_warrens_5.txt" : "hw_warrens_5" 
		"sound/schemes/kamikazezen.txt" : "kamikazezen" 
		"sound/schemes/la_abandoned_building_1.txt" : "la_abandoned_building_1" 
		"sound/schemes/la_bradbury_1.txt" : "la_bradbury_1" 
		"sound/schemes/la_bradbury_2.txt" : "la_bradbury_2" 
		"sound/schemes/la_bradbury_3.txt" : "la_bradbury_3" 
		"sound/schemes/la_bradbury_3_boss.txt" : "la_bradbury_3_boss" 
		"sound/schemes/la_chantry_1.txt" : "la_chantry_1" 
		"sound/schemes/la_confession_1.txt" : "la_confession_1" 
		"sound/schemes/la_crackhouse_1.txt" : "la_crackhouse_1" 
		"sound/schemes/la_empire_1.txt" : "la_empire_1" 
		"sound/schemes/la_empire_2.txt" : "la_empire_2" 
		"sound/schemes/la_expipe_1.txt" : "la_expipe_1" 
		"sound/schemes/la_hospital_1.txt" : "la_hospital_1" 
		"sound/schemes/la_hub_1.txt" : "la_hub_1" 
		"sound/schemes/la_library_1.txt" : "la_library_1" 
		"sound/schemes/la_library_2.txt" : "la_library_2" 
		"sound/schemes/la_malkavian_1.txt" : "la_malkavian_1" 
		"sound/schemes/la_malkavian_2.txt" : "la_malkavian_2" 
		"sound/schemes/la_malkavian_2_outside.txt" : "la_malkavian_2_outside" 
		"sound/schemes/la_malkavian_3.txt" : "la_malkavian_3" 
		"sound/schemes/la_malkavian_4.txt" : "la_malkavian_4" 
		"sound/schemes/la_malkavian_4_fire.txt" : "la_malkavian_4_fire" 
		"sound/schemes/la_malkavian_5.txt" : "la_malkavian_5" 
		"sound/schemes/la_museum_1.txt" : "la_museum_1" 
		"sound/schemes/la_plaguebearer_sewer.txt" : "la_plaguebearer_sewer" 
		"sound/schemes/la_plaguebearer_sewer_base.txt" : "la_plaguebearer_sewer_base" 
		"sound/schemes/la_plaguebearer_sewer_2.txt" : "la_plaguebearer_sewer_2" 
		"sound/schemes/la_sewer_1.txt" : "la_sewer_1" 
		"sound/schemes/la_skyline_1.txt" : "la_skyline_1" 
		"sound/schemes/la_ventruelobby_1.txt" : "la_ventruelobby_1" 
		"sound/schemes/la_ventrue_1_chambers.txt" : "la_ventrue_1_chambers" 
		"sound/schemes/la_ventrue_2.txt" : "la_ventrue_2" 
		"sound/schemes/la_ventrue_3.txt" : "la_ventrue_3" 
		"sound/schemes/la_ventrue_3_roof.txt" : "la_ventrue_3_roof" 
		"sound/schemes/la_ventrue_credits.txt" : "la_ventrue_credits" 
		"sound/schemes/la_ventrue_credits2.txt" : "la_ventrue_credits2" 
		"sound/schemes/la_ventrue_gauntlet_1.txt" : "la_ventrue_gauntlet_1" 
		"sound/schemes/la_ventrue_gauntlet_roof_1.txt" : "la_ventrue_gauntlet_roof_1" 
		"sound/schemes/lotusblossom.txt" : "lotusblossom" 
		"sound/schemes/netcafe.txt" : "netcafe" 
		"sound/schemes/netcafe_tape.txt" : "netcafe_tape" 
		"sound/schemes/oceanhouse_basement.txt" : "oceanhouse_basement" 
		"sound/schemes/oceanhouse_exterior.txt" : "oceanhouse_exterior" 
		"sound/schemes/oceanhouse_interior.txt" : "oceanhouse_interior" 
		"sound/schemes/oceanhouse_interior_floor3.txt" : "oceanhouse_interior_floor3" 
		"sound/schemes/old_abandoned_building.txt" : "old_abandoned_building" 
		"sound/schemes/parkinggarage.txt" : "parkinggarage" 
		"sound/schemes/quiet_outdoor.txt" : "quiet_outdoor" 
		"sound/schemes/ramen.txt" : "ramen" 
		"sound/schemes/sewers.txt" : "sewers" 
		"sound/schemes/sewers_2.txt" : "sewers_2" 
		"sound/schemes/sewers_base.txt" : "sewers_base" 
		"sound/schemes/sewers_no_music_base.txt" : "sewers_no_music_base" 
		"sound/schemes/sm_apartments_1.txt" : "sm_apartments_1" 
		"sound/schemes/sm_apartment_interior.txt" : "sm_apartment_interior" 
		"sound/schemes/sm_asylum_main_hall.txt" : "sm_asylum_main_hall" 
		"sound/schemes/sm_asylum_office.txt" : "sm_asylum_office" 
		"sound/schemes/sm_bailbonds.txt" : "sm_bailbonds" 
		"sound/schemes/sm_basement_1.txt" : "sm_basement_1" 
		"sound/schemes/sm_diner_1.txt" : "sm_diner_1" 
		"sound/schemes/sm_gallery_1.txt" : "sm_gallery_1" 
		"sound/schemes/sm_hub_parking_garage.txt" : "sm_hub_parking_garage" 
		"sound/schemes/sm_hub_streets.txt" : "sm_hub_streets" 
		"sound/schemes/sm_hub_tunnel_pier.txt" : "sm_hub_tunnel_pier" 
		"sound/schemes/sm_junkyard_1.txt" : "sm_junkyard_1" 
		"sound/schemes/sm_junkyard_1_int.txt" : "sm_junkyard_1_int" 
		"sound/schemes/sm_medical_1.txt" : "sm_medical_1" 
		"sound/schemes/sm_pier_1.txt" : "sm_pier_1" 
		"sound/schemes/sm_sewers_1.txt" : "sm_sewers_1" 
		"sound/schemes/sm_shreknet_1.txt" : "sm_shreknet_1" 
		"sound/schemes/sm_streets.txt" : "sm_streets" 
		"sound/schemes/sm_tatoo.txt" : "sm_tatoo" 
		"sound/schemes/sm_tatoo_basement.txt" : "sm_tatoo_basement" 
		"sound/schemes/sm_tripspawnshop.txt" : "sm_tripspawnshop" 
		"sound/schemes/sm_warehouse_interior.txt" : "sm_warehouse_interior" 
		"sound/schemes/sm_warehouse_trainstation.txt" : "sm_warehouse_trainstation" 
		"sound/schemes/soc_cave.txt" : "soc_cave" 
		"sound/schemes/soc_ext.txt" : "soc_ext" 
		"sound/schemes/soc_int.txt" : "soc_int" 
		"sound/schemes/sp_giovanni_1.txt" : "sp_giovanni_1" 
		"sound/schemes/sp_giovanni_2a.txt" : "sp_giovanni_2a" 
		"sound/schemes/sp_giovanni_4.txt" : "sp_giovanni_4" 
		"sound/schemes/sp_giovanni_5.txt" : "sp_giovanni_5" 
		"sound/schemes/sp_observatory_1.txt" : "sp_observatory_1" 
		"sound/schemes/sp_observatory_2.txt" : "sp_observatory_2" 
		"sound/schemes/sp_soc_1.txt" : "sp_soc_1" 
		"sound/schemes/sp_soc_2.txt" : "sp_soc_2" 
		"sound/schemes/sp_soc_3.txt" : "sp_soc_3" 
		"sound/schemes/sp_soc_4 cave in.txt" : "sp_soc_4 cave in" 
		"sound/schemes/sp_soc_4.txt" : "sp_soc_4" 
		"sound/schemes/sp_taxi.txt" : "sp_taxi" 
		"sound/schemes/sp_tutorial_city.txt" : "sp_tutorial_city" 
		"sound/schemes/sp_tutorial_sabbat_alley.txt" : "sp_tutorial_sabbat_alley" 
		"sound/schemes/sp_tutorial_sabbat_chop.txt" : "sp_tutorial_sabbat_chop" 
		"sound/schemes/sp_tutorial_sabbat_near.txt" : "sp_tutorial_sabbat_near" 
		"sound/schemes/sp_tutorial_underground.txt" : "sp_tutorial_underground" 
		"sound/schemes/temple_1.txt" : "temple_1" 
		"sound/schemes/temple_2.txt" : "temple_2" 
		"sound/schemes/temple_3.txt" : "temple_3" 
		"sound/schemes/test1.txt" : "test1" 
		"sound/schemes/test2.txt" : "test2" 
		"sound/schemes/tutorial.txt" : "tutorial" 
		"sound/schemes/vesuvius.txt" : "vesuvius" 
		"sound/schemes/zhaos_interior.txt" : "zhaos_interior" 
	]

	// Inputs
	input FadeIn(integer) : "Fades the sound up to full volume over a specified number of seconds, with a range from 0 to 100 seconds."
	input FadeOut(integer) : "Fades the sound to silence over a specified number of seconds, with a range from 0 to 100 seconds."
]






































//*******************************************************************************************************************
//*******************************************************************************************************************
// 
// BUTTONS
// 
//*******************************************************************************************************************
//*******************************************************************************************************************


//===================================================================================================================
// prop_button [VTMB-specific]
//===================================================================================================================

@BaseClass
= e_prop_button
[
	model(studio) : "Button Model" : : "Button prop model. \nClick arrow button and scroll down if you want to use one of game's default models." =
	[
		"models/scenery/misc/Intercom/Intercom.mdl" : "models/scenery/misc/Intercom/Intercom.mdl"
		"models/scenery/structural/Elevator_Dial/ElevButton_Up.mdl" : "models/scenery/structural/Elevator_Dial/ElevButton_Up.mdl"
		"models/scenery/structural/Elevator_Dial/ElevButton_Dn.mdl" : "models/scenery/structural/Elevator_Dial/ElevButton_Dn.mdl"
		"models/scenery/structural/Elevator_Dial/ElevButton_B.mdl" : "models/scenery/structural/Elevator_Dial/ElevButton_B.mdl"
		"models/scenery/structural/Elevator_Dial/ElevButton_G.mdl" : "models/scenery/structural/Elevator_Dial/ElevButton_G.mdl"
		"models/scenery/structural/Elevator_Dial/ElevButton_1.mdl" : "models/scenery/structural/Elevator_Dial/ElevButton_1.mdl"
		"models/scenery/structural/Elevator_Dial/ElevButton_2.mdl" : "models/scenery/structural/Elevator_Dial/ElevButton_2.mdl"
		"models/scenery/structural/Elevator_Dial/ElevButton_3.mdl" : "models/scenery/structural/Elevator_Dial/ElevButton_3.mdl"
		"models/scenery/structural/Elevator_Dial/ElevButton_4.mdl" : "models/scenery/structural/Elevator_Dial/ElevButton_4.mdl"
		"models/scenery/structural/Elevator_Dial/ElevButton_5.mdl" : "models/scenery/structural/Elevator_Dial/ElevButton_5.mdl"
		"models/scenery/structural/Elevator_Dial/ElevButton_6.mdl" : "models/scenery/structural/Elevator_Dial/ElevButton_6.mdl"
		"models/scenery/structural/Elevator_Dial/ElevButton_7.mdl" : "models/scenery/structural/Elevator_Dial/ElevButton_7.mdl"
		"models/scenery/structural/Elevator_Dial/ElevButton_PH.mdl" : "models/scenery/structural/Elevator_Dial/ElevButton_PH.mdl"
		"models/scenery/structural/SmSewer/SewerMap.mdl" : "models/scenery/structural/SmSewer/SewerMap.mdl"
	]

	sep_butmain(string) readonly: "------------------------------------"

	// main prefs
	locked(choices) : "Start Locked" : 0 : "Spawn in locked state." = [ 0: "No" 1: "Yes" ]

	use_icon(choices) : "Use Icon" : 31 : "An icon that indicates unlocked state of this entity." =
	[
		 0: "None"
		31: "Elevator button: Up"
		32: "Elevator button: Down"
		28: "Elevator button: B"
		29: "Elevator button: G"
		21: "Elevator button: 1"
		22: "Elevator button: 2"
		23: "Elevator button: 3"
		24: "Elevator button: 4"
		25: "Elevator button: 5"
		26: "Elevator button: 6"
		27: "Elevator button: 7"
		49: "Elevator button: PH"
		12: "Switch (wall)"
		64: "Switch (power)"
		 7: "TV screen"

		15: "Talk NPC (male)"
		14: "Talk NPC (female)"
		51: "Sewer Transition map"
	]
	locked_icon(choices) : "Locked Icon" : 30 : "An icon that indicates locked state of this entity." =
	[
		 0: "None"
		30: "Elevator button: Locked"
		 3: "Lock"
	]
	soundgroup(choices) : "Sound Group" : "elevator_button" : "The group of sounds relative to 'sound/usable/switches/<groupname>/<action>.wav' that specifies 'on/off' sounds." = 
	[
		"" : "None"
		"elevator_button" : "Elevator Button"
		"large_metal_lever" : "Large Metal Lever"
		"manhole_cover" : "Manhole Cover"
		"medium_metal_switch" : "Medium Metal Switch"
		"small_metal_switch" : "Small Metal Switch"
		"wall_light_switch" : "Wall Light Switch"
		"radio" : "Radio"
		"tv" : "TV"
	]

	sep_butsnds(string) readonly: "------------------------------------"

	// specific
	current_state(choices) : "Current State" : 0 : "Current button state [not tested]." =
	[
		0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8
	]
	max_states(choices) : "Maximum States" : 1 : "Maximum nubmer of button states [not tested]." =
	[
		0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8
	]
	
	// Inputs
	input Lock(void) : "Lock the button, preventing it from functioning."
	input Unlock(void) : "Unlock the button, allowing it to function."
	input Press(void) : "Activate the button as if it was pressed."
	input ToggleLock(void) : "Toggles button state between locked and unlocked."
	input SetState(integer) : "Sets button state."
	
	// Outputs
	output OnPressed(void) : "Fired when the button is pressed."
	output OnPressedLocked(void) : "Fired when button pressed but has locked state."
	output OnSetState1(void) : "Fired when button goes to selected state."
	output OnSetState2(void) : "Fired when button goes to selected state."
	output OnSetState3(void) : "Fired when button goes to selected state."
	output OnSetState4(void) : "Fired when button goes to selected state."
	output OnSetState5(void) : "Fired when button goes to selected state."
	output OnSetState6(void) : "Fired when button goes to selected state."
	output OnSetState7(void) : "Fired when button goes to selected state."
	output OnSetState8(void) : "Fired when button goes to selected state."
]

@PointClass
base (
	Studiomodel,
	Parentname,
	e_prop_button,
	RenderFields
)
//line (
//	255 255 255,
//	targetname,
//	parentname
//)
studioprop()
= prop_button :
	"[VTMB] A point entity that's used for a player-useable button. When used by the player, it moves to a pressed position or plays animation."
[
	// RF order fix
]





































//*******************************************************************************************************************
//*******************************************************************************************************************
//
// AI Script Entities
//
//*******************************************************************************************************************
//*******************************************************************************************************************


//====================================================================================================================
// aiscripted_sequence [VTMB-specific, scripted_sequence based]
//====================================================================================================================

@PointClass
base (
	BaseScripted
)
sphere(m_flRadius)
studio("models/editor/scriptedsequence.mdl")
= aiscripted_sequence :
	"[VTMB] Grabs an NPC and makes them play a specified set of animations. The NPC can be told to move to the scripted sequence position or can be told to play the script wherever they currently are."+
	"Multiple scripted sequences of the same name will frame-synchronize in the action animation once all the actors have moved to position."+
	"This allows tight interaction between actors (one actor grabbing another, hitting them, etc.) The flow is as follows:\n\n"+
	"1) Move to position using the specified movement animation. If 'Move to Position' is set to NONE, skip to step 2.\n"+
	"2) If forced to wait for another actor to move to position, play the pre-action idle animation, otherwise skip to step 3. If there is no pre-action idle specified, ACT_IDLE is used.\n"+
	"3) Fire the OnBeginSequence output.\n"+
	"4) Play the action animation. If no action animation is specified, skip to step 5.\n"+
	"5) Play the post-action idle animation. If none is specified, skip to step 6. If the 'Loop in Post Idle' spawnflag is set, keep playing the post-action idle until the script is cancelled. If no post-action idle animation is specified, ACT_IDLE is used.\n"+
	"6) Fire the OnEndSequence output.\n"+
	"7) If a next script to play is specified, hand the NPC to the next script and repeat this process for that script.\n\n"+
	"The MoveToPosition input runs steps 1 and 2, then waits while playing the pre-action idle animation until the BeginSequence input is received.\n\n"+
	"If the sequence has motion extraction in it, set the 'Don't Teleport NPC On End' spawnflag."
[
	m_iFinishSchedule(choices) : "Finish Schedule (?)" : 0 : "[VTMB] Unknown yet..." = [ 0:0 1:1 ]

	spawnflags(Flags) = 
	[
		4 : "Repeatable" : 0
		8 : "Leave Corpse" : 0
		16 : "Start on Spawn" : 0
		32: "No Interruptions" : 0
		64: "Override AI" : 0
		128: "Don't Teleport NPC On End" : 0
		256: "Loop in Post Idle" : 0
		512: "Priority Script" : 0
		4096: "Allow actor death" : 0
		8192: "Flag 8192 (unknown yet)" : 0
	]
]







































//*******************************************************************************************************************
//*******************************************************************************************************************
//
// CAMERA Entities
//
//*******************************************************************************************************************
//*******************************************************************************************************************


//====================================================================================================================
// CLASS: VCamKeyframe [VTMB-specific, KeyFrame-based]
//====================================================================================================================

@BaseClass
base (
	Targetname
)
= VCamKeyframe
[
	sep_ctrmain(string) readonly: "------------------------------------"

	// common
	NextKey(target_destination) : "Next KeyFrame" : : "Name of the next keyframe along this keyframe path."
	MoveSpeed(integer) : "Move Speed (units/s)" : 64
	MoveTime(float) : "Move Time (sec)" : 1 : "[VTMB] Unknown yet..."

	sep_ctradd1(string) readonly: "------------------------------------"

	Corner(choices) : "Move Corner" : 1 : "[VTMB] Unknown yet..." =
	[
		0 : "0 (unknown yet)"
		1 : "1 (unknown yet)"
	]
	FocalLength(float) : "Focal Length" : "28.2" : "[VTMB] Unknown yet. \nDefault value is '28.2'."
	PositionInterpolator(choices) : "Position Interpolator" : 1 =
	[
		0 : "Linear"
		1 : "Catmull-Rom Spline"
	]
	Pause(float) : "Pause Time (sec)" : 0 : "[VTMB] Unknown yet..."

	sep_ctrunk1(string) readonly: "------------------------------------"

	RateIn(float) : "In Rate (?)" : 1 : "[VTMB] Unknown yet..."
	RateOut(float) : "Out Rate (?)" : 1 : "[VTMB] Unknown yet..."
	Roll(float) : "Roll Speed": 0 : "Amount of roll in degrees per second [not tested]."
	TimeControl(choices) : "Time Modifier" : 1 : "[VTMB] Unknown yet..." =
	[
		0 : "Linear (?)"
		1 : "Accel (?)"
		2 : "Deaccel (?)"
	]
	
	// Outputs
	output OnReachedKeyframe(void) : "[VTMB] Fired when keyframe reached [not tested]."
	output OnLeavingKeyframe(void) : "[VTMB] Fired when keyframe leaving [not tested]."
]





//====================================================================================================================
// camera_keyframe [VTMB-specific]
//====================================================================================================================

@KeyFrameClass
base (
	VCamKeyframe
)
color(255 170 0)
studio("models/editor/axis_helper_thick.mdl")
keyframe()
= camera_keyframe :
	"[VTMB] Camera KeyFrame"
[
]





//====================================================================================================================
// camera_track [VTMB-specific]
//====================================================================================================================

@KeyFrameClass
base (
	VCamKeyframe
)
size(-3 -3 -3, 3 3 3)
color(255 170 0)
studio("models/editor/axis_helper_thick.mdl")
= camera_track :
	"[VTMB] An entity used to build paths for camera to follow [-?]."
[
	sep_ctrspec(string) readonly: "------------------------------------"

	FromPlayerTime(string) : "Moving time from player": 0 : "Unknown yet..."
	ToPlayerTime(string) : "Moving time to player": 0 : "Unknown yet..."
	HoldAtEnd(choices) : "Hold at moving end": 1 : "Unknown yet..." = [ 0: "No" 1: "Yes" ]

	// Inputs
	input PlayAsCameraTarget(void) : "[VTMB: untested connection]"
	input PlayAsCameraPosition(void) : "[VTMB: untested connection]"
	input RestoreCameraToPlayerControl(void) : "[VTMB] Restores camera state to player-controllable."

	// Outputs
	output OnAnimationCompleted(void) : "[VTMB] Fired when camera animation complete."
]





//===================================================================================================================
// camera_cinematic [VTMB-specific]
//===================================================================================================================

@PointClass
base (
	Targetname
)
studioprop("models/editor/camera.mdl")
= camera_cinematic :
	"[VTMB] A cinematic camera entity that controls the player's view. While it's active, the player will see out of the camera."
[
	sep_cammain(string) readonly: "------------------------------------"

	shotname(vcamerashot) : "Camera Shot Name" : "vdata/CameraShots/NPCFollow.txt" : "The name of the CameraShot preset to use. Corresponds to an entry in the vdata/camerashots/<name>.txt file. \nClick arrow button and scroll down if you want to use one of default in-game definitions." =
	[
	// CameraShotsList:
		"vdata/CameraShots/Center.txt" : "Center"
		"vdata/CameraShots/DialogDefault.txt" : "DialogDefault"
		"vdata/CameraShots/DialogMediumShot.txt" : "DialogMediumShot"
		"vdata/CameraShots/FuncMonitor.txt" : "FuncMonitor"
		"vdata/CameraShots/Gary_Moves.txt" : "Gary_Moves"
		"vdata/CameraShots/HackCam.txt" : "HackCam"
		"vdata/CameraShots/LongApproachCloseup.txt" : "LongApproachCloseup"
		"vdata/CameraShots/LookAtTarget_Snap.txt" : "LookAtTarget_Snap"
		"vdata/CameraShots/LookAtTargetHead_Snap.txt" : "LookAtTargetHead_Snap"
		"vdata/CameraShots/LowCenter.txt" : "LowCenter"
		"vdata/CameraShots/NPCFollow.txt" : "NPCFollow"
		"vdata/CameraShots/NPCFollowCut.txt" : "NPCFollowCut"
		"vdata/CameraShots/NPCFollowMove.txt" : "NPCFollowMove"
	]
	point_player(choices) : "Point to Player" : 0 : "Unknown yet..." = [ 0: "No" 1: "Yes" ]

	sep_camadds(string) readonly: "------------------------------------"

	startent(target_destination) : "Start Entity" : : "Entity that camera starts moving from."
	endent(target_destination) : "End Entity" : : "Entity that camera ends moving to."
	target1(target_destination) : "Target Entity 1" : : "Camera target entity 1 [not tested]."
	target2(target_destination) : "Target Entity 2" : : "Camera target entity 2 [not tested]."

	sep_camanim(string) readonly: "------------------------------------"

	animname(string) : "Animation Name" : : "Unknown yet. Supported by source code but never used in game."
	
	spawnflags(flags) =
	[
		1 : "Flag 1 (unknown yet)" : 0
		2 : "Flag 2 (unknown yet)" : 0
		4 : "Flag 4 (unknown yet)" : 0
	]

	// Inputs
	input StartShot(void) : "Starts this camera shot."
	input EndShot(void) : "Ends this camera shot."
	
// found in source code, usage unknown
	input SetFOV(integer) : "[VTMB: unknown input] Supported by source code but never used in game."
	input StartCamera(string) : "[VTMB: unknown input] Supported by source code but never used in game."
	input EndCamera(string) : "[VTMB: unknown input] Supported by source code but never used in game."
	// outputs
	output OnCameraBegin(void) : "[VTMB: unknown output] Supported by source code but never used in game."
	output OnCameraComplete(void) : "[VTMB: unknown output] Supported by source code but never used in game."
]





//====================================================================================================================
// security_camera [VTMB-specific]
//====================================================================================================================

@BaseClass
= e_security_camera
[
	model(studio) : "Camera Model" : "models/scenery/furniture/securitycam/securitycam.mdl" : "Camera prop model." =
	[
		"models/scenery/misc/securitycam/cam.mdl" : "models/scenery/misc/securitycam/cam.mdl"
		"models/scenery/furniture/securitycam/securitycam.mdl" : "models/scenery/furniture/securitycam/securitycam.mdl"
	]
	sep_scamview(string) readonly: "------------------------------------"

	fieldofview(integer) : "Field Of View (degs)" : 40 : "Camera's FOV, in degrees [not tested]."
	radius(choices) : "Max. Radius of View" : 192 : "Maximum radius camera may see around." =
	[
		 64 : 64
		 96 : 96
		128 : 128
		160 : 160
		192 : 192
		224 : 224
		256 : 256
		384 : 384
		512 : 512
		768 : 768
	]
	blindspot(integer) : "Blind Spot (units)" : 64 : "Zone, which can not get in camera [not tested]."

	sep_scamtime(string) readonly: "------------------------------------"

	turntime(float) : "Turn Time (sec)" : "5.0" : "The time of one complete camera's turn."
	zoom_time(float) : "Zoom Time (sec)" : "1.5" : "When the camera sees target, this time will be taken for focusing on it."
	pausetime(float) : "Rest Time (sec)" : "2.0" : "Pause time between camera rotations."
	rotdegrees(integer) : "Rotate Degrees" : 90 : "Max. degree the camera may rotate to."

	sep_scamsnds(string) readonly: "------------------------------------"

	alarmsnd(sound)	: "Alarm Sound" : "environmental/electronic/security_camera_alarm.wav" : "Sound played when camera goes into alarm state. \nClick arrow button and scroll down if you want to use sounds from default game maps." =
	[
		"environmental/electronic/security_camera_alarm.wav" : "Environmental/Electronic/Security_Camera_Alarm.wav"
		"environmental/machines/security_alarm.wav" : "Environmental/Machines/Security_Alarm.wav"
	]
	pansnd(sound) : "Pan Sound" : "environmental/electronic/security_camera_pan.wav" : "Plays when camera pans. \nClick arrow button and scroll down if you want to use sounds from default game maps." =
	[
		"environmental/electronic/security_camera_pan.wav" : "Environmental/Electronic/Security_Camera_Pan.wav"
	]
	zoominsnd(sound) : "Zoom-In Sound" : "environmental/electronic/security_camera_zoom_in.wav" : "Sound played when camera zooms in. \nClick arrow button and scroll down if you want to use sounds from default game maps." =
	[
		"environmental/electronic/security_camera_zoom_in.wav" : "Environmental/Electronic/Security_Camera_Zoom_In.wav"
	]
	zoomoutsnd(sound) : "Zoom-Out Sound" : "environmental/electronic/security_camera_zoom_out.wav" : "Sound played when camera zooms out. \nClick arrow button and scroll down if you want to use sounds from default game maps." =
	[
		"environmental/electronic/security_camera_zoom_out.wav" : "Environmental/Electronic/Security_Camera_Zoom_Out.wav"
	]

	sep_scamphys(string) readonly: "------------------------------------"

	solid(choices) : "Collisions" : 6 =
	[
		0: "Not Solid"
		2: "Use Bounding Box"
		6: "Use VPhysics"
	]
	health(float) : "Strength" : "1.0" : "Camera's health points that will spent before it breaks. \n'0' = not breakable."

	spawnflags(flags) =
	[
		1 : "Flag 1 (unknown yet)" : 0
	]

	// Inputs
	input Enable(void) : "Enable this entity."
	input Disable(void) : "Disable this entity."
	input Toggle(void) : "Toggles state of entity between ON and OFF."

//	input physdamagescale(float) : "Sets the value that scales damage energy when this character is hit by a physics object. NOTE: 0 means this feature is disabled for backwards compatibility."

	// Outputs
	output OnPanToEnd(void) : "Fired when camera pans to start [not tested]."
	output OnPanToStart(void) : "Fired when camera pans to end [not tested]."
	output OnPlayerDiscovered(void) : "Fired when player saw it."
]

@PointClass
base (
	Studiomodel,
	Parentname,
	o_VBreakable,
	e_security_camera,
	RenderFields
)
//line (
//	255 255 255,
//	targetname,
//	parentname
//)
sphere(radius)
studioprop()
= security_camera :
	"[VTMB] Security Camera prop that send alarm when player is in its Field of View."
[
	// RF order fix
]





//====================================================================================================================
// point_camera [VTMB-specific]
//====================================================================================================================

@PointClass
base (
	Targetname,
	Parentname
)
line (
	255 255 255,
	targetname,
	parentname
)
halfgridsnap
studioprop("models/editor/camera.mdl")
= point_camera : 
	"[VTMB] Camera point entity that translates captured area image to other objects like monitors."
[
	sep_pcmain(string) readonly: "------------------------------------"

	FOV(integer) : "Field of View (degs)" : 90 : "Camera's field of view."
	look_dest(vecline) : "Look Destination (X Y Z)" :  : "Camera's look destination (world's X/Y/Z-origin)."

	// inputs:
	input FollowEntity(void) : "[VTMB] Set entity that camera will follow to [not tested]."
]





//===================================================================================================================
// env_floating_camera [VTMB-specific]
//===================================================================================================================

@PointClass
base (
	TargetnameRot
)
studioprop("models/editor/camera.mdl")
= env_floating_camera :
	"[VTMB] Camera entity that does floating moving according given values."
[
	sep_fcmain(string) readonly: "------------------------------------"

	amplitude(float) : "Amplitude (inches)" : 3 : "Set floating amplitude, in inches."
	duration(float) : "Duration (seconds)" : 2 : "Set floating duration, in seconds."
	frequency(float) : "Frequency (per sec)" : 3 : "Set number of floatings per one second."

	// intputs
	input StartWaves(void) : "Start camera's wave floating."
	input StopWaves(void) : "Stop camera's wave floating."
]




























	
	
	
	








//*******************************************************************************************************************
//*******************************************************************************************************************
// 
// PARTICLE Effects
// 
//*******************************************************************************************************************
//*******************************************************************************************************************


@BaseClass
base (
	TargetnameRot
)
= BaseParticleParams
[
	sep_bpmain(string) readonly: "------------------------------------"

	active(choices) : "Start Active" : 1 =
	[
		0 : "No"
		1 : "Yes"
	]
	particle_definition(vparticle) : "Particle Script" : "Fire1_emitter" : "Particle effect. \nThis is particle definition script related to 'particles/<name>.txt' file. \nYou may also define custom scripts." =
	[
	// ParticleList:
		"Airplane_emitter" : "Airplane_emitter"
		"Andrei_Summon-emitter" : "Andrei_Summon-emitter"
		"BarrelFireChargeEmitter" : "BarrelFireChargeEmitter"
		"BarrelFireEmitter" : "BarrelFireEmitter"
		"Blood_Entrails_emitter" : "Blood_Entrails_emitter"
		"Blood_Guardian_Death_emitter" : "Blood_Guardian_Death_emitter"
		"Blood_Guardian_Summon_emitter" : "Blood_Guardian_Summon_emitter"
		"BloodTrickle_emitter" : "BloodTrickle_emitter"
		"BlowSmoke_emitter" : "BlowSmoke_emitter"
		"Bradbury_WagonWheel_emitter" : "Bradbury_WagonWheel_emitter"
		"C_Theater_Collum_emitter" : "C_Theater_Collum_emitter"
		"CarLight_emmiter" : "CarLight_emmiter"
		"Chang_Teleport_Out_emitter" : "Chang_Teleport_Out_emitter"
		"Chantry_Teleport_emitter" : "Chantry_Teleport_emitter"
		"Cigar_emitter" : "Cigar_emitter"
		"Cigar_Smoke1" : "Cigar_Smoke1"
		"CigGlow_CigInhale_emitter" : "CigGlow_CigInhale_emitter"
		"CigGlow_CigInhale_glow" : "CigGlow_CigInhale_glow"
		"CigGlow_CigInhale_halo" : "CigGlow_CigInhale_halo"
		"CigGlow_CigInhale_smoke1" : "CigGlow_CigInhale_smoke1"
		"CigGlow_CigInhale_smoke2" : "CigGlow_CigInhale_smoke2"
		"CigGlow_CigInhale_spark" : "CigGlow_CigInhale_spark"
		"CigGlow_CigInhale_spark2" : "CigGlow_CigInhale_spark2"
		"CigGlow_GlowStart_emitter" : "CigGlow_GlowStart_emitter"
		"CigGlow_SmokeBlow_emitter" : "CigGlow_SmokeBlow_emitter"
		"CigGlow_Spark_emitter" : "CigGlow_Spark_emitter"
		"CigSmoke_CigInhale_emitter" : "CigSmoke_CigInhale_emitter"
		"CityLights_emitter" : "CityLights_emitter"
		"CityLights_emitter2" : "CityLights_emitter2"
		"D_Animalisim_BodySmoke_emitter" : "D_Animalisim_BodySmoke_emitter"
		"D_Animalism_Pestilence_emitter" : "D_Animalism_Pestilence_emitter"
		"D_Animalism_Wolf_Into_emitter" : "D_Animalism_Wolf_Into_emitter"
		"D_Animalism_Wolf_Into_emitter2" : "D_Animalism_Wolf_Into_emitter2"
		"D_Dominate_Possession_emitter" : "D_Dominate_Possession_emitter"
		"D_ObfuscateBroke_emitter" : "D_ObfuscateBroke_emitter"
		"D_ObfuscateIn_emitter" : "D_ObfuscateIn_emitter"
		"D_ObfuscateOut_emitter" : "D_ObfuscateOut_emitter"
		"D_Potence_1BP_emitter" : "D_Potence_1BP_emitter"
		"D_Potence_1BP_emitter_FlashStart" : "D_Potence_1BP_emitter_FlashStart"
		"D_Potence_1BP_emitter_Hand" : "D_Potence_1BP_emitter_Hand"
		"D_Potence_DeathBlow2_emitter" : "D_Potence_DeathBlow2_emitter"
		"Demo_Cloud_emitter" : "Demo_Cloud_emitter"
		"Demo_Leaf_Rain_emitter" : "Demo_Leaf_Rain_emitter"
		"Demo_Leaf_Rain_emitter2" : "Demo_Leaf_Rain_emitter2"
		"Demo_River_Mist_emitter" : "Demo_River_Mist_emitter"
		"Detonator_Light_emitter" : "Detonator_Light_emitter"
		"Drip_emitter" : "Drip_emitter"
		"Embrace_Bleeding_Neck" : "Embrace_Bleeding_Neck"
		"Embrace_Bleeding_Neck2" : "Embrace_Bleeding_Neck2"
		"Embrace_Bleeding_Neck2_Female" : "Embrace_Bleeding_Neck2_Female"
		"Embrace_Bleeding_Neck_Female" : "Embrace_Bleeding_Neck_Female"
		"Epilogue_Consuming_Darkness" : "Epilogue_Consuming_Darkness"
		"Epilogue_Ventrue_Fire_emitter" : "Epilogue_Ventrue_Fire_emitter"
		"Ethereal_Flame_emitter_01" : "Ethereal_Flame_emitter_01"
		"Ethereal_Flame_emitter_01-burst" : "Ethereal_Flame_emitter_01-burst"
		"Ethereal_Flame_emitter_02" : "Ethereal_Flame_emitter_02"
		"Ethereal_Flame_emitter_04" : "Ethereal_Flame_emitter_04"
		"Ethereal_Flame_emitter_04-tornado" : "Ethereal_Flame_emitter_04-tornado"
		"Ethereal_Fling_emitter" : "Ethereal_Fling_emitter"
		"Explosion_TowerCrush_emitter" : "Explosion_TowerCrush_emitter"
		"Falling_Dust_emitter" : "Falling_Dust_emitter"
		"Fire1_BlowOut_emitter" : "Fire1_BlowOut_emitter"
		"Fire1_BlowOut_emitter2" : "Fire1_BlowOut_emitter2"
		"Fire1_BlowOut_emitter3" : "Fire1_BlowOut_emitter3"
		"Fire1_BlowOut_emitter4" : "Fire1_BlowOut_emitter4"
		"Fire1_emitter" : "Fire1_emitter"
		"Fire2_emitter" : "Fire2_emitter"
		"Fire3_emitter" : "Fire3_emitter"
		"Fire_Smokey_Air_emitter" : "Fire_Smokey_Air_emitter"
		"FirePlace_emitter" : "FirePlace_emitter"
		"FirePlace_emitter2" : "FirePlace_emitter2"
		"Flame_Gout_emitter" : "Flame_Gout_emitter"
		"Fly_emitter" : "Fly_emitter"
		"FuFlame_Stationary" : "FuFlame_Stationary"
		"FuFlame_Stationary_Mirror" : "FuFlame_Stationary_Mirror"
		"Gargoyle_Land-emitter" : "Gargoyle_Land-emitter"
		"Gasoline_Fire_emitter" : "Gasoline_Fire_emitter"
		"Gasoline_Fire_Start_emitter" : "Gasoline_Fire_Start_emitter"
		"Gasoline_Fire_Trail_emitter" : "Gasoline_Fire_Trail_emitter"
		"Gasoline_Fire_Wall-of-Fire-Emitter" : "Gasoline_Fire_Wall-of-Fire-Emitter"
		"GasRoom_emitter" : "GasRoom_emitter"
		"GasRoom_emitter2" : "GasRoom_emitter2"
		"GlowyWierd_emitter" : "GlowyWierd_emitter"
		"Impact_Flesh_emitter" : "Impact_Flesh_emitter"
		"Impact_FleshBase_emitter" : "Impact_FleshBase_emitter"
		"Impact_Metal_emitter" : "Impact_Metal_emitter"
		"ImpactFX_Sparks_blue" : "ImpactFX_Sparks_blue"
		"ImpactFX_SparkSpray" : "ImpactFX_SparkSpray"
		"Incense_emitter" : "Incense_emitter"
		"LA_CrackHouse_1_Bishop_Vick_1_emitter" : "LA_CrackHouse_1_Bishop_Vick_1_emitter"
		"Molotov_Emitter" : "Molotov_Emitter"
		"Moth_emitter" : "Moth_emitter"
		"MuzzleFlash_emitter" : "MuzzleFlash_emitter"
		"N_DivineSight_emitter" : "N_DivineSight_emitter"
		"Painting_Healing_emitter" : "Painting_Healing_emitter"
		"Pilot_Flame_emitter" : "Pilot_Flame_emitter"
		"Pilot_Flame_emitter_mirror" : "Pilot_Flame_emitter_mirror"
		"Prince_Decapitation_emitter" : "Prince_Decapitation_emitter"
		"Prince_DrippingBlood_emitter" : "Prince_DrippingBlood_emitter"
		"Prince_Slashed_emitter" : "Prince_Slashed_emitter"
		"Rain_Follow_emitter" : "Rain_Follow_emitter"
		"Rain_Follow2_emitter" : "Rain_Follow2_emitter"
		"Smoke1" : "Smoke1"
		"Smoke2" : "Smoke2"
		"Snuff_BloodExplosion_emitter" : "Snuff_BloodExplosion_emitter"
		"Sp_LoneWolf_Debris_emitter" : "Sp_LoneWolf_Debris_emitter"
		"Sp_LoneWolf_Smoke_emitter" : "Sp_LoneWolf_Smoke_emitter"
		"Sp_LoneWolf_Smokey_Air_emitter" : "Sp_LoneWolf_Smokey_Air_emitter"
		"Sp_NinesIntro_HeadBat_emitter" : "Sp_NinesIntro_HeadBat_emitter"
		"Sp_NinesIntro_HeadBlast_emitter" : "Sp_NinesIntro_HeadBlast_emitter"
		"Sp_NinesIntro_TummyBlast_emitter" : "Sp_NinesIntro_TummyBlast_emitter"
		"Sp_Observatory_2_Ash_emitter" : "Sp_Observatory_2_Ash_emitter"
		"Sp_Observatory_2_Tree_Fire2_emitter" : "Sp_Observatory_2_Tree_Fire2_emitter"
		"Sp_Observatory_2_Tree_FireSky_emitter" : "Sp_Observatory_2_Tree_FireSky_emitter"
		"Sp_VentrueTower_Explosion_emitter" : "Sp_VentrueTower_Explosion_emitter"
		"SpaMist_emitter" : "SpaMist_emitter"
		"Sparks_Warrens_Computers_emitter" : "Sparks_Warrens_Computers_emitter"
		"Sprinkler_emitter" : "Sprinkler_emitter"
		"StaryCeiling_emitter" : "StaryCeiling_emitter"
		"StaryNight_emitter" : "StaryNight_emitter"
		"StaryNight_emitter_large" : "StaryNight_emitter_large"
		"SteamRelease_Constant_emitter" : "SteamRelease_Constant_emitter"
		"SteamRelease_Timer" : "SteamRelease_Timer"
		"StoveFireEmitter" : "StoveFireEmitter"
		"Temple_Teleport_emitter" : "Temple_Teleport_emitter"
		"Torch_emitter" : "Torch_emitter"
		"Tourette_Shoots_Herself_emitter" : "Tourette_Shoots_Herself_emitter"
		"Trem_Fireshield_emitter" : "Trem_Fireshield_emitter"
		"Trem_Fireshield_Hit_emitter" : "Trem_Fireshield_Hit_emitter"
		"Trem_Firewall_emitter" : "Trem_Firewall_emitter"
		"TZ_BloodTrickle_emitter" : "TZ_BloodTrickle_emitter"
		"TZ_Moth_emitter" : "TZ_Moth_emitter"
		"Vesuvius" : "Vesuvius"
		"Warehoue_Explosion_Hud_emitter" : "Warehoue_Explosion_Hud_emitter"
		"Warehs_Expln_Long_Wndw2_emitter" : "Warehs_Expln_Long_Wndw2_emitter"
		"Warehs_Expln_Long_Wndw_emitter" : "Warehs_Expln_Long_Wndw_emitter"
		"Warehs_Expln_Long_Wndw_NS_emitter" : "Warehs_Expln_Long_Wndw_NS_emitter"
		"Warehs_Expln_Sm_Wndw_emitter" : "Warehs_Expln_Sm_Wndw_emitter"
		"Warehs_Expln_Top_Wndw_WS_emitter" : "Warehs_Expln_Top_Wndw_WS_emitter"
		"Warrens_Tube_End_emitter" : "Warrens_Tube_End_emitter"
		"Warrens_Tube_Water_emitter" : "Warrens_Tube_Water_emitter"
		"WaterDrops" : "WaterDrops"
		"WaterDrops_Timer" : "WaterDrops_Timer"
		"WaterFallMist_emitter" : "WaterFallMist_emitter"
		"WaterFallTrickle_emitter" : "WaterFallTrickle_emitter"
		"WaterMist_emitter" : "WaterMist_emitter"
	]
	ramp_scale(float) : "Scale (Density)" : "1.0" : "Multiplier for selected particle effect density. \n'1' is default (single density), '2' - effect is twice denser, '0.5' - effect is twice rarefied, etc."

	// inputs
	input TurnOn(void): "Turns on the particle effect."
	input TurnOff(void): "Turns off the particle effect."
	input SetRateScale(float): "Sets particle rate scale."
]




//===================================================================================================================
// env_particle [VTMB-specific, info_particle_system prototype]
//===================================================================================================================

@PointClass
base (
	TargetnameRot,
	Parentname,
	BaseParticleParams
)
line (
	255 255 255,
	targetname,
	parentname
)
studio("models/editor/cone_helper.mdl")
sphere(spawnbounds)
= env_particle :
	"[VTMB] An entity that spawns the particle, defined in particle scripts."
[
	sep_epmain(string) readonly: "------------------------------------"

	ramp_time(float) : "Ramp Time" : : "Unknown yet. \nFound values are 0-10."

	attach_type(choices) : "Attaching Type" : 0 : "Particle attaching type. \n0 is default (point), 11 is world-wide. Others not known exactly." =
	[
		-1 : "Not Attached"
		 0 : "0 (Default, Point)"
		 1 : "1 (Unknown yet)"
		 2 : "2 (Unknown yet)"
		 5 : "5 (Unknown yet)"
		 6 : "6 (Unknown yet)"
		 9 : "9 (Unknown yet)"
		10 : "10 (Unknown yet)"
		11 : "11 (World/Player)"
		14 : "14 (HUD?)"
		17 : "17 (Unknown yet)"
	]
	bone(choices) : "Attaching Bone" : : "Model's bone the particle attached to. Parent entity must be specified. \nEmpty value means use default entity's origin." =
	[
		"" : "<none>"
		"Bip01 Head" : "Bip01 Head"
		"Bip01 L Hand" : "Bip01 L Hand"
		"Bip01 R Hand" : "Bip01 R Hand"
		"Bip01 Neck" : "Bip01 Neck"
		"Bip01 Pelvis" : "Bip01 Pelvis"
		"Bip01 Spine" : "Bip01 Spine"
		"Bip01 Spine01" : "Bip01 Spine01"
		"Bip01 Spine02" : "Bip01 Spine02"
		"Bip01 Spine03" : "Bip01 Spine03"
		"fireorigin" : "FireOrigin"
		"flash" : "Flash"
		"particle" : "Particle"
	]
	attach_point(string) : "Attaching Point [?]" :  : "Unknown parameter. \nNot found on game maps but found in game code."
	spawnbounds(integer) : "Particle Bounds" : 512 : "Max. radius of particle effect that cast around its origin. \nFound values are 128-512 [not tested]."

	// inputs
	input SetAttachType(void): "Sets attaching type."
	input SetRampTime(void): "Sets ramp time [not tested]."
	input AttachToPlayerViewmodel(integer): "[VTMB: untested connection]."
]




//===================================================================================================================
// env_particle_hud [VTMB-specific]
//===================================================================================================================

@PointClass
base (
	Targetname
)
iconsprite("editor/env_particles.vmt")
= env_particle_hud :
	"[VTMB] An entity that spawns particle in player's HUD [not tested properly]."
[
	sep_pthmain(string) readonly: "------------------------------------"

	active(choices) : "Start Active" : 1 =
	[
		0 : "No"
		1 : "Yes"
	]
	particle_definition(vparticle) : "Particle Script" : "particles/Ethereal_HUD_boom-emitter.txt" : "Particle effect. \nThis is particle definition script related to 'particles/<name>.txt' file. \nYou may also define custom scripts." =
	[
	// ParticleList:
		"particles/Ethereal_HUD_Boom-emitter.txt" : "Ethereal_HUD_Boom-emitter"
		"particles/Warehoue_Explosion_Hud_emitter.txt" : "Warehoue_Explosion_HUD_emitter"
	]
	attach_type(choices) : "Attach Type" : 14 : "Particle attaching type. \n0 is point, 11 is world, 14 used for HUD. Others not known exactly." =
	[
		-1 : "Not Attached"
		 0 : "0 (Point)"
		 1 : "1 (Unknown yet)"
		 2 : "2 (Unknown yet)"
		 5 : "5 (Unknown yet)"
		 6 : "6 (Unknown yet)"
		 9 : "9 (Unknown yet)"
		10 : "10 (Unknown yet)"
		11 : "11 (World/Player)"
		14 : "14 (Default for env_particle_hud)"
		17 : "17 (Unknown yet)"
	]
	sep_pthadd(string) readonly: "------------------------------------"

	hud_draw_third(choices) : "Draw Third HUD Elements" : 1 : "[VTMB] Unknown yet..." =
	[
		0 : "No"
		1 : "Yes"
	]
]




//===================================================================================================================
// func_particle [VTMB-specific]
//===================================================================================================================

@SolidClass
base (
	BaseParticleParams
)
= func_particle :
	"[VTMB] A brush entity that creates particle effect in its volume."
[
	particle_definition(vparticle) : "Particle Script" : "Rain_Box_emitter" : "Particle effect. \nThis is particle definition script related to 'particles/<name>.txt' file. \nYou may also define custom scripts." =
	[
	// ParticleList:
		"Bradbury_Blood_rain" : "Bradbury_Blood_rain"
		"FireBrush_Large_Floor_emitter" : "FireBrush_Large_Floor_emitter"
		"FireBrush_Large_Wall_emitter" : "FireBrush_Large_Wall_emitter"
		"FireBrush_Medium_Floor_emitter" : "FireBrush_Medium_Floor_emitter"
		"FireBrush_Medium_Wall_emitter" : "FireBrush_Medium_Wall_emitter"
		"FireBrush_Small_Floor_emitter" : "FireBrush_Small_Floor_emitter"
		"FireBrush_Small_Wall_emitter" : "FireBrush_Small_Wall_emitter"
		"Rain_Box_emitter" : "Rain_Box_emitter"
		"Rain_Box_NoPrecip_emitter" : "Rain_Box_NoPrecip_emitter"
		"Rain_Box__NoPrcipEmitter" : "Rain_Box__NoPrcipEmitter"
	]
]




//===================================================================================================================
// params_particle [VTMB-specific]
//===================================================================================================================

@PointClass
base (
	Targetname
)
iconsprite("editor/env_particles.vmt")
size(-2 -2 -2, 2 2 2)
= params_particle :
	"[VTMB] A point entity that defines particle effect parameters applying to various objects [not tested]."
[
	sep_ppmain(string) readonly: "------------------------------------"

	particle_definition(vparticle) : "Particle Script" : "particles/D_ObfuscateIn_Emitter.txt" : "Particle effect. \nThis is particle definition script related to 'particles/*.txt' file. \nYou may also define custom scripts." =
	[
	// ParticleList:
		"particles/D_ObfuscateIn_Emitter.txt" : "D_ObfuscateIn_Emitter"
		"particles/Dialog_Domination_emitter.txt" : "Dialog_Domination_emitter"
		"particles/Dialog_Presence_emitter.txt" : "Dialog_Presence_emitter"
		"particles/Lasombra_Teleport_In.txt" : "Lasombra_Teleport_In"
		"particles/Lasombra_Teleport_In-body.txt" : "Lasombra_Teleport_In-body"
		"particles/Lasombra_Teleport_Out.txt" : "Lasombra_Teleport_Out"
		"particles/Lasombra_Teleport_Out-body.txt" : "Lasombra_Teleport_Out-body"
	]
	attach_type(choices) : "Attaching Type" : 2 : "Particle attaching type. \n0 is default (point), 11 is world-wide. Others not known exactly." =
	[
		-1 : "Not Attached"
		 0 : "0 (Point)"
		 1 : "1 (Unknown yet)"
		 2 : "2 (Default for params_particle)"
		 5 : "5 (Unknown yet)"
		 6 : "6 (Unknown yet)"
		 9 : "9 (Unknown yet)"
		10 : "10 (Unknown yet)"
		11 : "11 (World/Player)"
		14 : "14 (HUD?)"
		17 : "17 (Unknown yet)"
	]
]





//===================================================================================================================
// point_explosion [VTMB-specific]
//===================================================================================================================

@PointClass
base (
	TargetnameRot,
	Parentname
)
line (
	255 255 255,
	targetname,
	parentname
)
iconsprite("editor/env_physexplosion.vmt")
= point_explosion :
	"[VTMB] An entity that creates an explosion with defined parameters."
[
	sep_ptemain(string) readonly: "------------------------------------"

	explosion_params(target_destination) : "Explosion Parameters Entity" : : "A link to the 'params_explosion' entity that defines common explosion parameters."

	spawnflags(flags) =
	[
		1 : "Flag 1 (unknown yet)" : 0
	]

	// Inputs
	input Explode(void) : "Starts explosion."
]





//===================================================================================================================
// params_explosion [VTMB-specific]
//===================================================================================================================

@PointClass
base (
	TargetnameRot
)
size(-2 -2 -2, 2 2 2)
color(160 32 32)
sphere(dmg_radius)
sphere(shk_radius)
iconsprite("editor/env_physexplosion.vmt")
= params_explosion :
	"[VTMB] An entity that defines explosion parameters that shared with 'point_explosion'."
[
	sep_pemain(string) readonly: "------------------------------------"

	dmg_amount(integer) : "Damage Amount" : 20 : "Amount of health points that takes away when explosion commits."
	dmg_radius(integer) : "Damage Radius" : 500 : "Maximum radius in which the damage takes."

	particle(vparticle) : "Particle Effect" : "particles/Explosion2_emitter.txt" : "Explosion effect. \nThis is particle definition script related to 'particles/<name>.txt' file. \nYou can also define custom scripts." =
	[
	// ParticleList:
		"particles/BarrelFireExplosionEmitter.txt" : "particles/BarrelFireExplosionEmitter.txt"
		"particles/C_Theater_Collum_Emitter.txt" : "particles/C_Theater_Collum_emitter.txt"
		"particles/C_Theater_Collum_Emitter_move_up" : "particles/C_Theater_Collum_emitter_move_up"
		"particles/Cold_Explosion_emitter.txt" : "particles/Cold_Explosion_emitter.txt"
		"particles/D_Thaum_Bld_Cauldron_Explode_Tgt_Emitter.txt" : "particles/D_Thaum_Bld_Cauldron_Explode_Tgt_emitter.txt"
		"particles/Electrical_Sparks_Emitter.txt" : "particles/Electrical_Sparks_emitter.txt"
		"particles/Explosion1_emitter.txt" : "particles/Explosion1_emitter.txt"
		"particles/Explosion2_emitter.txt" : "particles/Explosion2_emitter.txt"
		"particles/Explosion_TowerCrush_emitter.txt" : "particles/Explosion_TowerCrush_emitter.txt"
		"particles/Impact_Dirt_Emitter.txt" : "particles/Impact_Dirt_emitter.txt"
		"particles/Impact_Glass_Emitter.txt" : "particles/Impact_Glass_emitter.txt"
		"particles/Impact_Metal_Emitter.txt" : "particles/Impact_Metal_emitter.txt"
		"particles/la_malkavian2_spark_emitter.tx" : "particles/LA_Malkavian2_Spark_emitter.txt"
		"particles/LightBulb_Pop_emitter.txt" : "particles/LightBulb_Pop_emitter.txt"
		"particles/Sparks_Warrens_Computers_emitter.txt" : "particles/Sparks_Warrens_Computers_emitter.txt"
		"particles/temple_spike_emitter.txt" : "particles/Temple_Spike_emitter.txt"
		"particles/wall_break_emitter.txt" : "particles/wall_break_emitter.txt"
		"particles/Zombie_Summon_Emitter.txt" : "particles/Zombie_Summon_emitter.txt"
	]

	sep_pedmg(string) readonly: "------------------------------------"

	damage_breakables(choices) : "Damage Breakables" : 1 : "If set 'Yes', explosion will be able to take damage to breakable objects." = [ 0 : "No" 1 : "Yes" ]
	damage_npcs(choices) : "Damage NPCs" : 1 : "If set 'Yes', explosion will be able to take damage to NPCs." = [ 0 : "No" 1 : "Yes" ]
	damage_players(choices) : "Damage Player" : 1 : "If set 'Yes', explosion will be able to take damage to player." = [ 0 : "No" 1 : "Yes" ]

	sep_peshk(string) readonly: "------------------------------------"

	shk_amp(integer) : "Shake Amplitude" : 4 : "[VTMB] Unknown yet..."
	shk_dur(integer) : "Shake Duration" : 2 : "[VTMB] Unknown yet..."
	shk_freq(integer) : "Shake Frequency" : 2 : "[VTMB] Unknown yet..."
	shk_inair(choices) : "Shake In-Air" : 1 : "[VTMB] Unknown yet..." = [ 0 : "No" 1 : "Yes" ]
	shk_radius(integer) : "Shake Radius" : 1024 : "[VTMB] Unknown yet..."

	sep_pesnd(string) readonly: "------------------------------------"

	snd_name(sound) : "Explosion Sound File" : "Weapons/Ranged/Detonation.wav" : "The sound that is played during the explosion. \nClick arrow button and scroll down if you want to use sounds from default game maps." =
	[
		"Area/Downtown/Bradbury/barrel_explosion.wav" : "Area/Downtown/Bradbury/Barrel_Explosion.wav"
		"Area/Downtown/Bradbury/wall_break2.wav" : "Area/Downtown/Bradbury/Wall_Break2.wav"
		"Area/Downtown/Ventrue_Tower/Manbat_Cab.wav" : "Area/Downtown/Ventrue_Tower/Manbat_Cab.wav"
		"Area/Hollywood/Asian_Theater/Smash_Pillars_1.wav" : "Area/Hollywood/Asian_Theater/Smash_Pillars_1.wav"
		"Area/Santa_Monica/Ocean_House/Floor_Crash.wav" : "Area/Santa_Monica/Ocean_House/Floor_Crash.wav"
		"Area/Special/Tutorial/ExplosionSabbat2.wav" : "Area/Special/Tutorial/ExplosionSabbat2.wav"
		"Disciplines/Thaumaturgy/cauldron_hit.wav" : "Disciplines/Thaumaturgy/Cauldron_Hit.wav"
		"Environmental/City/glass breaks.wav" : "Environmental/City/Glass Breaks.wav"
		"Environmental/Interior/LightBulb_Pop.wav" : "Environmental/Interior/LightBulb_Pop.wav"
		"Environmental/Machines/sparks02.wav" : "Environmental/Machines/Sparks02.wav"
		"Environmental/Machines/sparks03.wav" : "Environmental/Machines/Sparks03.wav"
		"Epic/Explosion8.wav" : 	"Epic/Explosion8.wav"
		"Epic/Explosion_Glass.wav" : "Epic/Explosion_Glass.wav"
		"surfaces/sand/bullet_norm_impact1.wav" : "Surfaces/Sand/Bullet_Norm_Impact1.wav"
		"Weapons/Ranged/Crossbow/Attack_1.wav" : "Weapons/Ranged/Crossbow/Attack_1.wav"
		"Weapons/Ranged/Detonation.wav" : "Weapons/Ranged/Detonation.wav"
	]
	snd_dist(integer) : "Explosion Sound Radius" : 1500 : "Max explosion sound hearing distance."
	snd_pitch_min(integer) : "Explosion Sound Min Pitch" : 95 : "Minimum pitch that explosion sound can randomly use."
	snd_pitch_max(integer) : "Explosion Sound Max Pitch" : 105 : "Minimum pitch that explosion sound can randomly use."

	sep_pedls(string) readonly: "------------------------------------"

	dl_color(color255) : "DL Color [-?]" : "255 128 64" : "[VTMB] Unknown yet..."
	dl_decay(integer) : "DL Decay [-?]" : 1500 : "[VTMB] Unknown yet..."
	dl_time(float) : "DL Time [-?]" : "2.0" : "[VTMB] Unknown yet..."
	dl_exponent(float) : "DL Exponent [-?]" : 0 : "[VTMB] Unknown yet..."
	dl_radius(integer) : "DL Radius [-?]" : 500 : "[VTMB] Unknown yet..."
	
	spawnflags(flags) =
	[
		1 : "Flag 1 (unknown yet)" : 1
		2 : "Flag 2 (unknown yet)" : 1
		4 : "Flag 4 (unknown yet)" : 1
		8 : "Flag 8 (unknown yet)" : 1
		32 : "Flag 32 (unknown yet)" : 1
		64 : "Flag 64 (unknown yet)" : 1
		128 : "Flag 128 (unknown yet)" : 0
		512 : "Flag 512 (unknown yet)" : 0
		8192 : "Flag 8192 (unknown yet)" : 0
	]

	// outputs
	output OnBreak(void) : "Fired when entity breaks [not tested]."
]








































//*******************************************************************************************************************
//*******************************************************************************************************************
// 
// EVENTS
// 
//*******************************************************************************************************************
//*******************************************************************************************************************


//===================================================================================================================
// events_player [VTMB-specific]
//===================================================================================================================

@PointClass
base (
	Targetname
)
iconsprite("editor/scripted_sentence.vmt")
= events_player :
	"[VTMB] Entity that use connections to define the events that happen to a player. \nNote: May be only one on map."
[
	targetname(target_source) : "Name" : "playercontroller" : "The name that other entities refer to this entity by."
	enabled(choices) : "Enabled" : 1 : "Turn entity state On or Off." = [ 0 : "No" 1 : "Yes" ]

	// Inputs
	input EnableOutputs(void) : "Enables all entity's I/O connections [not tested]."
	input DisableOutputs(void) : "Disables all entity's I/O connections [not tested]."
	input CreateControllerNPC(void) : "Creates NPC controller [not tested]."
	input RemoveControllerNPC(void) : "Removes NPC controller [not tested]."
	input AwardExp(string) : "Awards player with defined experience points."
	input ClearDialogCombatTimers(void) : "Clears dialog combat timers [not tested]."
	input ImmobilizePlayer(void) : "Denying the player movement [not tested]."
	input MobilizePlayer(void) : "Allow player to move [not tested]."
	input RemoveDisciplines(void) : "Removes defeined disciplines."
	input RemoveDisciplinesNow(void) : "Removes defeined disciplines right now [not tested]."
	input MakePlayerUnkillable(void) : "Makes the player unkillable."
	input MakePlayerKillable(void) : "Returns the player to be killable."

	// Outputs
	output OnFrenzyBegin(void) : "Fired when player's frenzy begins."
	output OnFrenzyEnd(void) : "Fired when player's frenzy ends."
	output OnWolfMorphBegin(void) : "Fired when wolf morph begins."
	output OnWolfMorphEnd(void) : "Fired when wolf morph ends."
	output OnPlayerTookDamage(void) : "Fired when player took some damage."
	output OnPlayerKilled(void) : "Fired when player dead."
	output OnPlayerSoundLoud(void) : "Unknown for now [need testing]..."
	output OnActivateAuspex(void) : "Fired when player activates 'Auspex' discipline."
	output OnActivateCelerity(void) : "Fired when player activates 'Celerity' discipline."
	output OnActivateCorpusVampirus(void) : "Fired when player activates 'Corpus Vampirus' discipline."
	output OnActivateFortitude(void) : "Fired when player activates 'Fortitude' discipline."
	output OnActivateObfuscate(void) : "Fired when player activates 'Obfuscate' discipline."
	output OnActivatePotence(void) : "Fired when player activates 'Potence' discipline."
	output OnActivatePresense(void) : "Fired when player activates 'Presense' discipline."
	output OnActivateProtean(void) : "Fired when player activates 'Protean' discipline."
	output OnActivateAnimalismLvl1(void) : "Fired when player activates 'Animalism' (level 1) discipline."
	output OnActivateAnimalismLvl2(void) : "Fired when player activates 'Animalism' (level 2) discipline."
	output OnActivateDementationLvl1(void) : "Fired when player activates 'Dementation' (level 1) discipline."
	output OnActivateDementationLvl2(void) : "Fired when player activates 'Dementation' (level 2) discipline."
	output OnActivateDominateLvl1(void) : "Fired when player activates 'Dominate' (level 1) discipline."
	output OnActivateDominateLvl2(void) : "Fired when player activates 'Dominate' (level 2) discipline."
	output OnActivateThaumaturgyLvl1(void) : "Fired when player activates 'Thaumaturgy' (level 1) discipline."
	output OnActivateThaumaturgyLvl2(void) : "Fired when player activates 'Thaumaturgy' (level 2) discipline."
]




//===================================================================================================================
// events_world [VTMB-specific]
//===================================================================================================================

@PointClass
base (
	Targetname,
	o_VUsableExt
)
iconsprite("editor/scripted_sentence.vmt")
= events_world :
	"[VTMB] Entity that use connections to define the events that happen to the world. \nNote: May be only one on map."
[
	targetname(target_source) : "Name" : "world" : "The name that other entities refer to this entity by."

	// inputs
	input SetSafeArea(integer) : "Sets area safety type."
	input SetCopWaitArea(integer) : "Sets cop waiting area."
	input SetCopGrace(integer) : "Sets cop grace [unknown yet]."
	input SetNosferatuTolerant(integer) : "Sets nosferatu-tolerant area."
	input SetNoFrenzyArea(integer) : "Sets this area as frenzy-impossible."
	input AIEnable(integer) : "Enables AI [unknown yet]."
	input FadeGlobalWetness(integer) : "Fade global wetness (on rain start or end)."
	input HideCutsceneInterferingEntities(void) : "Hides cutscene-related interfering entities [untested]."
	input UnhideCutsceneInterferingEntities(void) : "Unhides cutscene-related interfering entities [untested]."
	input PlayEndCredits(void) : "Show end-game credits."
	input ClearDialogCombatTimers(void) : "Clear dialog combat timers [unknown yet]."
	input SetParent(string) : "Changes the entity's parent in the movement hierarchy."
	input ClearParent(void) : "Removes this entity from the the movement hierarchy, leaving it free to move independently."

	// outputs
	output OnCopsOutside(void) : "Fired when the cops outside."
	output OnCopsComing(void) : "Fired when the cops are coming."
	output OnStartCopPursuitMode(void) : "Fired when cop pursuit mode stars."
	output OnEndCopPursuitMode(void) : "Fired when cop pursuit mode ends."
	output OnStartCopAlertMode(void) : "Fired when cop alert mode starts."
	output OnEndCopAlertMode(void) : "Fired when cop alert mode ends."
	output OnStartHunterPursuitMode(void) : "Fired when hunter alert mode starts."
	output OnEndHunterPursuitMode(void) : "Fired when hunter alert mode ends."
	output OnMasqueradeLevel1(void) : "Fired when player's masquerade level reaches 1 point."
	output OnMasqueradeLevel2(void) : "Fired when player's masquerade level reaches 2 point."
	output OnMasqueradeLevel3(void) : "Fired when player's masquerade level reaches 3 point."
	output OnMasqueradeLevel4(void) : "Fired when player's masquerade level reaches 4 point."
	output OnMasqueradeLevel5(void) : "Fired when player's masquerade level reaches 5 point."
	output OnMasqueradeLevelChanged(void) : "Fired when player's masquerade level changed."
	output OnPlayerHasNoBlood(void) : "Fired when player needs blood."
	output OnCombatMusicStart(void) : "Fired when combat music starts playing."
	output OnCombatMusicEnd(void) : "Fired when combat music stops playing."
	output OnAlertMusicStart(void) : "Fired when alert music starts playing."
	output OnAlertMusicEnd(void) : "Fired when alert music stops playing."
	output OnNormalMusicStart(void) : "Fired when normal music starts playing."
	output OnNormalMusicEnd(void) : "Fired when normal music stops playing."
]







































//*******************************************************************************************************************
//*******************************************************************************************************************
// 
// FILTERS
// 
//*******************************************************************************************************************
//*******************************************************************************************************************


//===================================================================================================================
// filter_activator_feat [VTMB-specific]
//===================================================================================================================

@FilterClass
base (
	BaseFilter
)
iconsprite("editor/filter_class.vmt")
= filter_activator_feat :
	"[VTMB] A Filter entity that activates selected feature [not tested]."
[
	feat_name(choices) : "Feat Name" : "inspection" : "Feature to activate [not tested]." =
	[
		"inspection" : "inspection"
		"" : "(unknown yet)"
	]
	feat_level(choices) : "Feat Level" : 5 : "Activating feature's level (0-10) [not tested]." =
	[
		0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 10:10
	]
]




//===================================================================================================================
// filter_activator_inventory [VTMB-specific]
//===================================================================================================================

@FilterClass
base (
	BaseFilter
)
iconsprite("editor/filter_class.vmt")
= filter_activator_inventory :
	"[VTMB] A Filter entity that activates selected item [not tested]."
[
	item_name(itemclass) : "Item Name" : : "Item that will be activated."
]




//===================================================================================================================
// filter_activator_mass [VTMB-specific, filter_activator_mass_greater-based]
//===================================================================================================================

@FilterClass
base (
	BaseFilter
)
iconsprite("editor/filter_class.vmt")
= filter_activator_mass :
	"[VTMB] A filter that filters by the mass of the activator."
[
	filtermass(float) : "Filter Mass" : 25 : "The mass to filter by. If the filter mode is Allow, only entities whose "+
		"mass is greater than the give float will pass the filter. If the filter mode is Disallow, "+
		"all entities EXCEPT those whose mass is greater than the given float will pass the filter."
	filterweight(float) : "Filter Weight" : 25 : "[VTMB] Unknown yet..."
]







































//*******************************************************************************************************************
//*******************************************************************************************************************
// 
// FUNCTION Entities
// 
//*******************************************************************************************************************
//*******************************************************************************************************************


//===================================================================================================================
// func_elevator [VTMB-specific]
//===================================================================================================================

@SolidClass
base (
	Targetname,
	p_Origin
)
= func_elevator :
	"[VTMB] A brush entity that simulates the elevator functions."
[
	sep_elvflrs(string) readonly: "------------------------------------"

	numfloors(choices) : "Number of Floors" : 2 : "Defines the number of floors, used by elevator." =
	[
		1 : "1"
		2 : "2"
		3 : "3"
		4 : "4"
		5 : "5"
		6 : "6"
		7 : "7"
		8 : "8"
	]	
	floor1(float) : "Floor 1 Height" : 0 : "Defines height the 1st floor is (in units)."
	floor2(float) : "Floor 2 Height" : 0 : "Defines height the 2nd floor is (in units)."
	floor3(float) : "Floor 3 Height" : 0 : "Defines height the 3rd floor is (in units)."
	floor4(float) : "Floor 4 Height" : 0 : "Defines height the 4th floor is (in units)."
	floor5(float) : "Floor 5 Height" : 0 : "Defines height the 5th floor is (in units)."
	floor6(float) : "Floor 6 Height" : 0 : "Defines height the 6th floor is (in units)."
	floor7(float) : "Floor 7 Height" : 0 : "Defines height the 7th floor is (in units)."
	floor8(float) : "Floor 8 Height" : 0 : "Defines height the 8th floor is (in units)."

	sep_elvadd1(string) readonly: "------------------------------------"

	locked(choices) : "Start Locked" : 0 : "Be locked until output will sent by some action." = [ 0 : "No" 1 : "Yes" ]	
	Speed(integer) : "Movement Speed" : 35 : "The speed at which the elevator moves, units per second."

	startsound(sound) : "Start Sound" : "environmental/machines/elevator_operation.wav" : "Sound played when the elevator starts moving. \nClick arrow button and scroll down if you want to use sounds from default game maps." =
	[
		"Environmental/Machines/elevator_operate.wav" : "Environmental/Machines/Elevator_Operate.wav"
		"Environmental/Machines/elevator_operation.wav" : "Environmental/Machines/Elevator_Operation.wav"
		"Environmental/Machines/service_elevator_begin.wav" : "Environmental/Machines/Service_Elevator_Begin.wav"
	]
	stopsound(sound) : "Stop Sound" : "environmental/machines/elevator_stop.wav" : "Sound played when the elevator stops moving. \nClick arrow button and scroll down if you want to use sounds from default game maps." =
	[
		"Environmental/Machines/elevator_ding.wav" : "Environmental/Machines/Elevator_Ding.wav"
		"Environmental/Machines/elevator_stop.wav" : "Environmental/Machines/Elevator_Stop.wav"
		"Environmental/Machines/service_elevator_end.wav" : "Environmental/Machines/Service_Elevator_End.wav"
	]

	blockdamage(float) : "Block Damage" : 0 : "The amount of damage to do to any entity that blocks the brushes, per frame."

	// inputs
	input SnapToFloor(integer) : "[VTMB: untested connection]"
	input GotoFloor(integer) : "Go to selected floor."
	input Lock(void) : "Lock the elevator doors, preventing it from functioning."
	input Unlock(void) : "Unlock the elevator doors, allowing it to function."
	input CallCurrentFloorOutputs(void) : "[VTMB] Call outputs OnReachFloorN and OnPassFloorN [not tested]."
	input Open(void) : "Open the elevator door."
	input Close(void) : "Close the elevator door."
	input SetPosition(string) : "Move the elvevator's brush to a specific position [not tested]."
	input StartMoving(void) : "Start elevator moving."
	input StopMoving(void) : "Stop elevator moving."
	input ToggleMovement(void) : "Toggle elevator movement between start and stop."
	input SetSpeed(float) : "Set elevator moving speed."

	// outputs
	output OnMoveStart(void) : "Fired when the elevator started its moving."
	output OnReachFloorAny(void) : "Fired when the elevator reaches ANY floor."
	output OnPassFloorAny(void) : "Fired when the elevator passes ANY floor."
	output OnReachFloor1(void) : "Fired when the elevator reaches floor 1."
	output OnReachFloor2(void) : "Fired when the elevator reaches floor 2."
	output OnReachFloor3(void) : "Fired when the elevator reaches floor 3."
	output OnReachFloor4(void) : "Fired when the elevator reaches floor 4."
	output OnReachFloor5(void) : "Fired when the elevator reaches floor 5."
	output OnReachFloor6(void) : "Fired when the elevator reaches floor 6."
	output OnReachFloor7(void) : "Fired when the elevator reaches floor 7."
	output OnReachFloor8(void) : "Fired when the elevator reaches floor 8."
	output OnPassFloor2(void) : "Fired when the elevator passes floor 2."
	output OnPassFloor3(void) : "Fired when the elevator passes floor 3."
	output OnPassFloor4(void) : "Fired when the elevator passes floor 4."
	output OnPassFloor5(void) : "Fired when the elevator passes floor 5."
	output OnPassFloor6(void) : "Fired when the elevator passes floor 6."
	output OnPassFloor7(void) : "Fired when the elevator passes floor 7."
	output OnStop(void) : "Fired when the elevator stopped its moving."
	output OnReachStart(void) : "Fired when elevator's brush reaches its start point."
	output OnReachEnd(void) : "Fired when elevator's brush reaches its end point."
	output OnMoveTowardsStart(void) : "[VTMB] Fired whenever the elevator starts moving towards."
	output OnMoveTowardsEnd(void) : "[VTMB] Fired whenever the elevator stops moving towards."
]








































//*******************************************************************************************************************
//*******************************************************************************************************************
// 
// INTERFACE
// 
//*******************************************************************************************************************
//*******************************************************************************************************************


//===================================================================================================================
// hud_timer [VTMB-specific]
//===================================================================================================================

@PointClass
base (
	Targetname
)
iconsprite("editor/logic_timer.vmt")
= hud_timer :
	"[VTMB] Countdown timer that shows on HUD and fires script when complete."
[
	sep_htmain(string) readonly: "------------------------------------"

	count_time(integer) : "Count Time" : 30 : "Countdowns to script execution."
	count_type(choices) : "Count Type" : -1 : "Sets the countdown method [not tested]." =
	[
		-1 : "-1 (Default)"
		 0 : "Type 0 (unknown yet)"
		 1 : "Type 1 (unknown yet)"
	]

	// inputs
	input count_time(integer) : "Set count time value."
	input RestartTimer(void) : "Restart timer."
	input ResetTimer(void) : "Reset timer to initial state."
	input StartTimer(void) : "Start timer."
	input PauseTimer(void) : "Pause timer."
	input Show(void) : "Display timer on screen."
	input Hide(void) : "Hide timer indication."

	// outputs
	output OnTimerComplete(void) : "Fired when countdown complete."
]








































//*******************************************************************************************************************
//*******************************************************************************************************************
// 
// Hints & Nodes
// 
//*******************************************************************************************************************
//*******************************************************************************************************************


//===================================================================================================================
// CLASS: AnimEvents [VTMB-specific]
//===================================================================================================================

@BaseClass = AnimEvents
[
// Outputs
	output OnAnimEvent1(void) : "[VTMB: untested connection]"
	output OnAnimEvent2(void) : "[VTMB: untested connection]"
	output OnAnimEvent3(void) : "[VTMB: untested connection]"
	output OnAnimEvent4(void) : "[VTMB: untested connection]"
	output OnAnimEvent5(void) : "[VTMB: untested connection]"
	output OnAnimEvent6(void) : "[VTMB: untested connection]"
	output OnAnimEvent7(void) : "[VTMB: untested connection]"
	output OnAnimEvent8(void) : "[VTMB: untested connection]"
]


//===================================================================================================================
// CLASS: info_node_special [VTMB-specific]
//===================================================================================================================

@BaseClass base(HintNode,AnimEvents) = info_node_special : 
	"[VTMB] Special NPC-related node."
[
	group_id(integer) : "Group ID" : 1 : "[VTMB] Unknown..."
	hint_rating(integer) : "Hint Rating" : 3 : "[VTMB] Unknown..."
	target_name(target_destination) : "Target Name" : : "[VTMB] Not used at NPC-related nodes. Unknown..."
	target_angle_range(float) : "Target Angle Range" : 60 : "[VTMB] Unknown..."
	target_dist_min(integer) : "Target Max Distance" : 256 : "[VTMB] Unknown..."
	target_dist_max(integer) : "Target Min Distance" : 32000 : "[VTMB] Unknown..."
]



//===================================================================================================================
// info_node_crosswalk [VTMB-specific]
//===================================================================================================================

@PointClass base(HintNode) studio("models/editor/ground_node.mdl") color(232 219 8) = info_node_crosswalk :
	"[VTMB] Unrecognized info_node..."
[
	input Walk(void) : "[VTMB: untested connection]"
	input DontWalk(void) : "[VTMB: untested connection]"
]



//===================================================================================================================
// specific nodes [VTMB-specific]
//===================================================================================================================

@PointClass base(info_node_special) studio("models/editor/ground_node_cover_med.mdl") = info_node_cover_med [	hinttype(choices) : "Hint" : 100 = [ 100 : "Untested VTMB's (100)" ]]
@PointClass base(info_node_special) studio("models/editor/ground_node_cover_low.mdl") = info_node_cover_low [	hinttype(choices) : "Hint" : 101 = [ 101 : "Untested VTMB's (101)" ]]
@PointClass base(info_node_special) studio("models/editor/ground_node_cover_corner.mdl") = info_node_cover_corner [	hinttype(choices) : "Hint" : 10200 = [ 10200 : "Untested VTMB's (10200)" ]]
@PointClass base(info_node_special) studio("models/editor/ground_node.mdl") = info_node_shoot_at [	hinttype(choices) : "Hint" : 10400 = [ 10400 : "Untested VTMB's (10400)" ]]

@PointClass base(info_node_special) studio("models/editor/ground_node.mdl") color(232 219 8) = info_node_patrol_point
[
	hinttype(choices) : "Hint" : 10000 = [ 10000 : "Untested VTMB's (10000)" ]
	ip_percent(integer) : "ID Percent [-?]" : 100 : "[VTMB] Unknown..."
]
@PointClass base(info_node_special) studio("models/editor/ground_node.mdl") color(232 219 8) = info_node_kick_at
[
	hinttype(choices) : "Hint" : 10300 = [ 10300 : "Untested VTMB's (10300)" ]
	output OnNPCKicked(void) : "Fired when NPC killed [not tested]."
]
@PointClass base(info_node_special) studio("models/editor/ground_node.mdl") color(232 219 8) = info_node_kick_over
[
	hinttype(choices) : "Hint" : 10300 = [ 10300 : "Untested VTMB's (10300)" ]
	output OnNPCKicked(void) : "Fired when NPC killed [not tested]."
]




//===================================================================================================================
// specific_npc-based nodes [VTMB-specific]
//===================================================================================================================

@PointClass base(info_node_special) studio("models/editor/ground_node.mdl") color(232 219 8) = info_node_sabbat_top  [	hinttype(choices) : "Hint" : 16000 = [ 16000 : "Untested Sabbat's (16000)" ]]
@PointClass base(info_node_special) studio("models/editor/ground_node.mdl") color(232 219 8) = info_node_sabbat_bottom  [	hinttype(choices) : "Hint" : 16000 = [ 16000 : "Untested Sabbat's (16000)" ]]
@PointClass base(info_node_special) studio("models/editor/ground_node.mdl") color(232 219 8) = info_node_sabbat_arch [	hinttype(choices) : "Hint" : 16002 = [ 16002 : "Untested Sabbat's (16002)" ]]
@PointClass base(info_node_special) studio("models/editor/ground_node.mdl") color(232 219 8) = info_node_sabbat_dive [	hinttype(choices) : "Hint" : 16003 = [ 16003 : "Untested Sabbat's (16003)" ]]
@PointClass base(info_node_special) studio("models/editor/ground_node.mdl") color(232 219 8) = info_node_sabbat_nojump [	hinttype(choices) : "Hint" : 16004 = [ 16004 : "Untested Sabbat's (16004)" ]]
@PointClass base(info_node_special) studio("models/editor/ground_node.mdl") color(232 219 8) = info_node_sabbat_hide [	hinttype(choices) : "Hint" : 16005 = [ 16005 : "Untested Sabbat's (16005)" ]]
@PointClass base(info_node_special) studio("models/editor/ground_node.mdl") color(232 219 8) = info_node_bach_teleport_1 [	hinttype(choices) : "Hint" : 17000 = [ 17000 : "Untested Bach's (17000)" ]]
@PointClass base(info_node_special) studio("models/editor/ground_node.mdl") color(232 219 8) = info_node_bach_teleport_2 [	hinttype(choices) : "Hint" : 17001 = [ 17001 : "Untested Bach's (17001)" ]]
@PointClass base(info_node_special) studio("models/editor/ground_node.mdl") color(232 219 8) = info_node_bach_teleport_3 [	hinttype(choices) : "Hint" : 17002 = [ 17002 : "Untested Bach's (17002)" ]]
@PointClass base(info_node_special) studio("models/editor/ground_node.mdl") color(232 219 8) = info_node_bach_teleport_4 [	hinttype(choices) : "Hint" : 17003 = [ 17003 : "Untested Bach's (17003)" ]]
@PointClass base(info_node_special) studio("models/editor/ground_node.mdl") color(232 219 8) = info_node_bach_run_1 [	hinttype(choices) : "Hint" : 17004 = [ 17004 : "Untested Bach's (17004)" ]]
@PointClass base(info_node_special) studio("models/editor/ground_node.mdl") color(232 219 8) = info_node_bach_run_2 [	hinttype(choices) : "Hint" : 17005 = [ 17005 : "Untested Bach's (17005)" ]]
@PointClass base(info_node_special) studio("models/editor/ground_node.mdl") color(232 219 8) = info_node_chang_column [	hinttype(choices) : "Hint" : 18000 = [ 18000 : "Untested Chang's (18000)" ]]
@PointClass base(info_node_special) studio("models/editor/ground_node.mdl") color(232 219 8) = info_node_chang_jumpbase [	hinttype(choices) : "Hint" : 18001 = [ 18001 : "Untested Chang's (18001)" ]]
@PointClass base(info_node_special) studio("models/editor/ground_node.mdl") color(232 219 8) = info_node_chang_teleport [	hinttype(choices) : "Hint" : 18002 = [ 18002 : "Untested Chang's (18002)" ]]
@PointClass base(info_node_special) studio("models/editor/ground_node.mdl") color(232 219 8) = info_node_chang_ledge [	hinttype(choices) : "Hint" : 18003 = [ 18003 : "Untested Chang's (18003)" ]]
@PointClass base(info_node_special) studio("models/editor/ground_node.mdl") color(232 219 8) = info_node_manbat_fly_to_point [	hinttype(choices) : "Hint" : 20000 = [ 20000 : "Untested Manbat's (20000)" ]]

@PointClass base(Node) studio("models/editor/ground_node.mdl") color(232 219 8) = info_node_tzimisce []
@PointClass base(Node) studio("models/editor/ground_node.mdl") color(232 219 8) = info_node_tzimisce_claw_left []
@PointClass base(Node) studio("models/editor/ground_node.mdl") color(232 219 8) = info_node_tzimisce_claw_right []
@PointClass base(Node) studio("models/editor/ground_node.mdl") color(232 219 8) = info_node_werewolf []
@PointClass base(info_node_special) studio("models/editor/ground_node.mdl") color(232 219 8) = info_node_werewolf_hint
[
	hinttype(choices) : "Hint" : 15000 = 
	[ 
		15000 : "Untested Werewolf's (15000)" 
		15001 : "Untested Werewolf's (15001)" 
		15002 : "Untested Werewolf's (15002)" 
		15003 : "Untested Werewolf's (15003)" 
		15004 : "Untested Werewolf's (15004)" 
		15005 : "Untested Werewolf's (15005)" 
		15006 : "Untested Werewolf's (15006)" 
		15008 : "Untested Werewolf's (15008)" 
		15011 : "Untested Werewolf's (15011)" 
		15012 : "Untested Werewolf's (15012)" 
		15013 : "Untested Werewolf's (15013)" 
		15014 : "Untested Werewolf's (15014)" 
		15015 : "Untested Werewolf's (15015)" 
		15016 : "Untested Werewolf's (15016)" 
		15017 : "Untested Werewolf's (15017)" 
		15018 : "Untested Werewolf's (15018)" 
	]
	UserData(string) : "User Data [-?]" : 200 : "[VTMB] Unknown..."
]








































//*******************************************************************************************************************
//*******************************************************************************************************************
// 
// INFO Entities
// 
//*******************************************************************************************************************
//*******************************************************************************************************************


//===================================================================================================================
// point_target [VTMB-specific]
//===================================================================================================================

@PointClass
base (
	TargetnameRot
)
iconsprite("editor/info_target.vmt")
= point_target :
	"[VTMB] Same as 'info_target' but also accepts Pitch/Yaw/Roll directions. \nAn entity that does nothing. \nVery useful as a positioning entity for other entities to refer to (i.e. the endpoint of an env_beam)."
[
]








































//*******************************************************************************************************************
//*******************************************************************************************************************
// 
// Inspections, Conversations
// 
//*******************************************************************************************************************
//*******************************************************************************************************************


//===================================================================================================================
// class: InspectionBase [VTMB-specific]
//===================================================================================================================

@BaseClass
= p_Inspection
[
	sep_inspmain(string) readonly: "------------------------------------"
	inspection(choices) : "Inspection Level" : 5 : "[VTMB] Required inspection level? [not tested]." = 
	[
		 0 : "Level 0"
		 1 : "Level 1"
		 2 : "Level 2"
		 3 : "Level 3"
		 4 : "Level 4"
		 5 : "Level 5"
		 6 : "Level 6"
		 7 : "Level 7"
		 8 : "Level 8"
		 9 : "Level 9"
		10 : "Level 10"
	]
]


//===================================================================================================================
// inspection_brush [VTMB-specific]
//===================================================================================================================

@SolidClass
base (
	Targetname,
	c_VEnableDisable,
	p_Inspection
)
= inspection_brush :
	"[VTMB] Brush entity that helps player inspection somehow [unfortunately, that's all I know about it]."
[
]


//===================================================================================================================
// inspection_node [VTMB-specific]
//===================================================================================================================

@PointClass
base (
	Targetname,
	Parentname,
	c_VEnableDisable,
	p_Inspection
)
line (
	255 255 255,
	targetname,
	parentname
)
studio("models/editor/ground_node.mdl") = inspection_node : 
	"[VTMB] Inspection node. \nCreating an inspection_node and settings its parent to an object within the room is a fast way to add sparklies to objects you want the PC to always find."
[
	// outputs
	output OnPlayerPickup(void): "Fired when player pick-ups the parent object [not tested]."
]






//===================================================================================================================
// Class: InterstingPlaceBase [VTMB-specific]
//===================================================================================================================

@BaseClass
base (
	TargetnameRot,
	AnimEvents
)
size(-8 -8 -8, 8 8 32)
= InterstingPlaceBase
[
	enabled(choices) : "Start Enabled" : 1 : "Enables this entity by default." = [ 0 : "No" 1 : "Yes" ]
	sep_ipbmain(string) readonly: "------------------------------------"

	// inputs
	input Enable(void) : "Activate entity."
	input Disable(void) : "Deactivate entity."
]


//===================================================================================================================
// intersting_place [VTMB-specific]
//===================================================================================================================

@PointClass
base (
	InterstingPlaceBase
)
color(224 224 0)
= intersting_place :
	"[VTMB] Interesting places can be visualized as phone booth sized boxes that attract NPCs that meet certain criteria.\n"+
	"When an eligible NPC enters the 'phone booth', they will perform whatever actions the interesting place has associated with it.\n"+
	"Interesting Places, their NPC types and their actions are defined in:\n\n"+
	"'vdata/system/InterestingPlaceTypeList.txt'. \n\n"+
	"Interesting_places can't be instantiated dynamically. Ent_info doesn't even acknowledge the class exists.\n\n"+
	"NOTE: Info_nodes are needed to use this properly."
[
	type(choices) : "Action Type" : "Idle" : "Action that NPC will do [not tested]. \nGoes to 'vdata/system/interestingplacetypelist.txt' definitions." =
	[
	// TypeList:
		"arms_crossed" : "arms_crossed"
		"Barstool" : "Barstool"
		"bed_sleep_left" : "bed_sleep_left"
		"bed_sleep_right" : "bed_sleep_right"
		"bloodvomit" : "bloodvomit"
		"bum_idle" : "bum_idle"
		"bum_rest" : "bum_rest"
		"bum_sleep" : "bum_sleep"
		"can_drink" : "can_drink"
		"cards_forward_left" : "cards_forward_left"
		"cards_forward_right" : "cards_forward_right"
		"Cars" : "Cars"
		"cellphone" : "cellphone"
		"cigarette" : "cigarette"
		"Citizen_Idle" : "Citizen_Idle"
		"conversation_normal" : "conversation_normal"
		"conversation_wine" : "conversation_wine"
		"couch_sit" : "couch_sit"
		"cower1" : "cower1"
		"cower2" : "cower2"
		"cower3" : "cower3"
		"Dance" : "Dance"
		"diner_booth_back_left" : "diner_booth_back_left"
		"diner_booth_back_left_deep" : "diner_booth_back_left_deep"
		"diner_booth_back_right" : "diner_booth_back_right"
		"diner_booth_back_right_deep" : "diner_booth_back_right_deep"
		"diner_booth_forward_left" : "diner_booth_forward_left"
		"diner_booth_forward_left_deep" : "diner_booth_forward_left_deep"
		"diner_booth_forward_right" : "diner_booth_forward_right"
		"diner_booth_forward_right_deep" : "diner_booth_forward_right_deep"
		"Doggy" : "Doggy"
		"Doorknock" : "Doorknock"
		"Doors" : "Doors"
		"Drama" : "Drama"
		"graffiti" : "graffiti"
		"guard_drunk" : "guard_drunk"
		"guard_whistling" : "guard_whistling"
		"Idle" : "Idle"
		"madness" : "madness"
		"operate_computer" : "operate_computer"
		"operate_panel" : "operate_panel"
		"payphone" : "payphone"
		"piss" : "piss"
		"praying" : "praying"
		"ready_onehanded_weapon" : "ready_onehanded_weapon"
		"ready_twohanded_weapon" : "ready_twohanded_weapon"
		"wall_lean" : "wall_lean"
		"zombie_bang_gate" : "zombie_bang_gate"
		"zombie_reach_gate" : "zombie_reach_gate"
	]
	max_npcs(choices) : "Maximum NPCs" : 1 : "Maximum number of NPCs that can use this entity [not tested]. \nGame maps contains number from 1 to 50." =
	[
		0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 20:20 50:50
	]

	sep_ipvals(string) readonly: "------------------------------------"

	min_time(float) : "Minimum Time" : "5.0" : "[VTMB] Unknown yet..."
	max_time(float) : "Maximum Time" : "10.0" : "[VTMB] Unknown yet..."
	min_bounds(string) : "Minimum Bounds" : "-16 -16 0" : "[VTMB] Unknown yet..."
	max_bounds(string) : "Maximum Bounds" : "16 16 72" : "[VTMB] Unknown yet..."

	sep_ipmisc(string) readonly: "------------------------------------"

	holster_weapon(choices) : "Holster Weapon" : 0 : "[VTMB] Unknown yet..." = [ 0 : "No" 1 : "Yes" ]
	match_orientation(choices) : "Match Orientation" : 1 : "[VTMB] Unknown yet..." = [ 0 : "No" 1 : "Yes" ]
	rating(choices) : "Rating (0-5)" : 3 : "[VTMB] Unknown yet..." = [ 0:0 1:1 2:2 3:3 4:4 5:5 ]
	group_id(choices) : "Group ID (1-32)" : 1 : "[VTMB] Unknown yet..." =
	[
		 1 : 1
		 2 : 2
		 3 : 3
		 4 : 4
		 5 : 5
		 6 : 6
		 7 : 7
		 8 : 8
		 9 : 9
		10 : 10
		11 : 11
		12 : 12
		13 : 13
		14 : 14
		15 : 15
		16 : 16
		17 : 17
		18 : 18
		19 : 19
		20 : 20
		21 : 21
		22 : 22
		23 : 23
		24 : 24
		25 : 25
		26 : 26
		27 : 27
		28 : 28
		29 : 29
		30 : 30
		31 : 31
		32 : 32
	]
	testflags(choices) : "Test Flags (?)" : 4 : "[VTMB] Unknown yet..." = [ "":"None" 1:1 2:2 4:4 8:8 ]
	
	// outputs
	output OnNPCArrived(void) : "Fired when some NPC arrived [-?]."
	output OnNPCLeft(void) : "Fired when some NPC left [-?]."
]


//===================================================================================================================
// intersting_place_conversation [VTMB-specific]
//===================================================================================================================

@PointClass
base (
	InterstingPlaceBase
)
color(224 127 0)
sphere(audible_dist)
= intersting_place_conversation :
	"[VTMB] See Intersting_Place. \n\nConversation marks nodes that attract 2 NPCs at the same time..."
[
	interesting_places(target_destination) : "Interesting Place" : : "Target 'intersting_place' entity to be used [not tested]."
	min_time(float) : "Minimum Time" : "5.0" : "[VTMB] Unknown yet..."
	max_time(float) : "Maximum Time" : "10.0" : "[VTMB] Unknown yet..."

	sep_ipcsnd(string) readonly: "------------------------------------"

	audible_dist(integer) : "Audible Distance" : 800 : "Sets the conversation audiblity, in units."
	sound_loop(sound) : "Sound Loop File" : "Environmental/People/Conversation1.wav" : "Sound played many times over. \nClick arrow button and scroll down if you want to use sounds from default game maps." =
	[
		"Environmental/People/Conversation1.wav" : "Environmental/People/Conversation1.wav"
		"Environmental/People/Conversation2.wav" : "Environmental/People/Conversation2.wav"
		"Environmental/People/Conversation3.wav" : "Environmental/People/Conversation3.wav"
		"Environmental/People/Conversation4.wav" : "Environmental/People/Conversation4.wav"
		"Environmental/People/Conversation5.wav" : "Environmental/People/Conversation5.wav"
		"Environmental/People/Conversation6.wav" : "Environmental/People/Conversation6.wav"
		"Environmental/People/Distant_Conversation5.wav" : "Environmental/People/Distant_Conversation5.wav"
		"Environmental/People/Distant_Conversation7.wav" : "Environmental/People/Distant_Conversation7.wav"
	]
	sound_once(sound) : "Sound Played Once" :  : "Sound played just once, then disable." =
	[
		"null.mp3" : "null.mp3"
	]
	sound_occluded(choices) : "Sound Occluded (?)" : 1 : "[VTMB] Unknown yet..." = [ 0 : "No" 1 : "Yes" ]

	sep_ipcmisc(string) readonly: "------------------------------------"

	player_dist(float) : "Distance from Player" : 10 : "[VTMB] Unknown yet..."
	turn_towards_talker(choices) : "Turn Towards Talker" : 1 : "[VTMB] Unknown yet..." = [ 0 : "No" 1 : "Yes" ]

	// outputs
	output OnConversationEnd(void) : "Fired when converstation ends."
	output OnNewTalker(void) : "Fired when new talker appears [not tested]."
	output OnOneOffSoundComplete(void) : "Fired when sound stopped playing [not tested]."
	output OnPlayerLeftRadius(void) : "Fired when player left given radius (what of?) [not tested]."
	output OnPlayerTooClose(void) : "Fired when player is too close to target [not tested]."

	// inputs
	input PlayOneOffSound(void) : "[VTMB: untested connection]"
]








































//*******************************************************************************************************************
//*******************************************************************************************************************
// 
// LOGICAL Entities
// 
//*******************************************************************************************************************
//*******************************************************************************************************************


//===================================================================================================================
// Class: LogicConditionBase [VTMB-specific]
//===================================================================================================================

@BaseClass
base (
	Targetname
)
= o_LogicConditions
[
	// connections
	input Test(void) : "[VTMB: untested conection]"
	output OnTrue(void) : "[VTMB: untested conection]"
	output OnFalse(void) : "[VTMB: untested conection]"
]

@BaseClass
= p_LogicConditions
[
	sep_lncmain(string) readonly: "------------------------------------"

	condition(choices) : "Condition" : "COND_NONE" : "Condition definition name." =
	[
	 // Complete.
		"COND_NONE" : "NONE"
		"COND_BEHIND_ENEMY" : "BEHIND ENEMY"
		"COND_BEING_ATTACKED" : "BEING ATTACKED"
		"COND_BETTER_WEAPON_AVAILABLE" : "BETTER WEAPON AVAILABLE"
		"COND_CAN_MELEE_ATTACK1" : "CAN MELEE ATTACK1"
		"COND_CAN_MELEE_ATTACK2" : "CAN MELEE ATTACK2"
		"COND_CAN_POUNCE" : "CAN POUNCE"
		"COND_CAN_RANGE_ATTACK1" : "CAN RANGE ATTACK1"
		"COND_CAN_RANGE_ATTACK2" : "CAN RANGE ATTACK2"
		"COND_CLAW_HINT_INVALID" : "CLAW HINT INVALID"
		"COND_CLAW_HINT_SPECIAL_INVALID" : "CLAW HINT SPECIAL INVALID"
		"COND_COMFORT" : "COMFORT"
		"COND_COVER_FAILURE" : "COVER FAILURE"
		"COND_CRIMINAL_ATTACK_LEVEL" : "CRIMINAL ATTACK LEVEL"
		"COND_CRIMINAL_FLEE_LEVEL" : "CRIMINAL FLEE LEVEL"
		"COND_CROSSWALK_DONTWALK" : "CROSSWALK DONTWALK"
		"COND_CROSSWALK_WALK" : "CROSSWALK WALK"
		"COND_DETECTED_ATTACK" : "DETECTED ATTACK"
		"COND_ENEMY_BLOCKED" : "ENEMY BLOCKED"
		"COND_ENEMY_DEAD" : "ENEMY DEAD"
		"COND_ENEMY_FACING_ME" : "ENEMY FACING ME"
		"COND_ENEMY_OCCLUDED" : "ENEMY OCCLUDED"
		"COND_ENEMY_TOO_FAR" : "ENEMY TOO FAR"
		"COND_ENEMY_UNREACHABLE" : "ENEMY UNREACHABLE"
		"COND_EXTENDED_BLOCKED_BY_FRIEND" : "EXTENDED BLOCKED BY FRIEND"
		"COND_FLOATING_OFF_GROUND" : "FLOATING OFF GROUND"
		"COND_FLYING_NPC_HIT" : "FLYING NPC HIT"
		"COND_FLYING_WALL_HIT" : "FLYING WALL HIT"
		"COND_GIVE_WAY" : "GIVE WAY"
		"COND_HAVE_ENEMY_LOS" : "HAVE ENEMY LOS"
		"COND_HAVE_ENEMY_THROW_LOS" : "HAVE ENEMY THROW LOS"
		"COND_HAVE_TARGET_LOS" : "HAVE TARGET LOS"
		"COND_HEAR_BUGBAIT" : "HEAR BUGBAIT"
		"COND_HEAR_BULLET_IMPACT" : "HEAR BULLET IMPACT"
		"COND_HEAR_COMBAT" : "HEAR COMBAT"
		"COND_HEAR_DANGER" : "HEAR DANGER"
		"COND_HEAR_FLANK_SOUND" : "HEAR FLANK SOUND"
		"COND_HEAR_FLINCH" : "HEAR FLINCH"
		"COND_HEAR_PHYSICS_DANGER" : "HEAR PHYSICS DANGER"
		"COND_HEAR_PLAYER" : "HEAR PLAYER"
		"COND_HEAR_THUMPER" : "HEAR THUMPER"
		"COND_HEAR_WORLD" : "HEAR WORLD"
		"COND_HEAVY_DAMAGE" : "HEAVY DAMAGE"
		"COND_HINT_INVALID" : "HINT INVALID"
		"COND_HIT_BY_DOOR" : "HIT BY DOOR"
		"COND_IGNORE_UNKNOWN" : "IGNORE UNKNOWN"
		"COND_INSIDE_INTERRUPT_DIST" : "INSIDE INTERRUPT DIST"
		"COND_INSIDE_INTERRUPT_DIST_E" : "INSIDE INTERRUPT DIST E"
		"COND_INSIDE_INTERRUPT_DIST_F" : "INSIDE INTERRUPT DIST F"
		"COND_INTERRUPT_TIME" : "INTERRUPT TIME"
		"COND_INVESTIGATE_LEVEL" : "INVESTIGATE LEVEL"
		"COND_INVESTIGATE_SIGHT" : "INVESTIGATE SIGHT"
		"COND_INVESTIGATE_SOUND" : "INVESTIGATE SOUND"
		"COND_KICK_PROP_INVALID" : "KICK PROP INVALID"
		"COND_KNOCKBACK" : "KNOCKBACK"
		"COND_LIGHT_DAMAGE" : "LIGHT DAMAGE"
		"COND_LOST_ENEMY" : "LOST ENEMY"
		"COND_LOST_UNKNOWN" : "LOST UNKNOWN"
		"COND_LOW_PRIMARY_AMMO" : "LOW PRIMARY AMMO"
		"COND_NEW_ENEMY" : "NEW ENEMY"
		"COND_NO_PRIMARY_AMMO" : "NO PRIMARY AMMO"
		"COND_NO_SECONDARY_AMMO" : "NO SECONDARY AMMO"
		"COND_NO_WEAPON" : "NO WEAPON"
		"COND_NOT_FACING_ATTACK" : "NOT FACING ATTACK"
		"COND_NPC_FREEZE" : "NPC FREEZE"
		"COND_NPC_UNFREEZE" : "NPC UNFREEZE"
		"COND_ON_FIRE" : "ON FIRE"
		"COND_OUTSIDE_INTERRUPT_DIST" : "OUTSIDE INTERRUPT DIST"
		"COND_OUTSIDE_INTERRUPT_DIST_E" : "OUTSIDE INTERRUPT DIST E"
		"COND_OUTSIDE_INTERRUPT_DIST_F" : "OUTSIDE INTERRUPT DIST F"
		"COND_PASS_OUT" : "PASS OUT"
		"COND_PLAYER_ON_HEAD" : "PLAYER ON HEAD"
		"COND_PLAYER_PUSHING" : "PLAYER PUSHING"
		"COND_PLAYER_SNARL_RANGE" : "PLAYER SNARL RANGE"
		"COND_PROVOKED" : "PROVOKED"
		"COND_REPEATED_DAMAGE" : "REPEATED DAMAGE"
		"COND_SCHEDULE_DONE" : "SCHEDULE DONE"
		"COND_SEE_CORPSE" : "SEE CORPSE"
		"COND_SEE_CORPSE_FRIEND" : "SEE CORPSE FRIEND"
		"COND_SEE_DISLIKE" : "SEE DISLIKE"
		"COND_SEE_ENEMY" : "SEE ENEMY"
		"COND_SEE_FEAR" : "SEE FEAR"
		"COND_SEE_HATE" : "SEE HATE"
		"COND_SEE_NEMESIS" : "SEE NEMESIS"
		"COND_SEE_PLAYER" : "SEE PLAYER"
		"COND_SEE_SOUND_SOURCE" : "SEE SOUND SOURCE"
		"COND_SEE_UNKNOWN" : "SEE UNKNOWN"
		"COND_SHOULD_BLOCK" : "SHOULD BLOCK"
		"COND_SHOULD_CHARGE" : "SHOULD CHARGE"
		"COND_SHOULD_DODGE" : "SHOULD DODGE"
		"COND_SHOULD_INTERACT" : "SHOULD INTERACT"
		"COND_SHOULD_KICK" : "SHOULD KICK"
		"COND_SHOULD_LOITER" : "SHOULD LOITER"
		"COND_SHOULD_STEPBACK" : "SHOULD STEPBACK"
		"COND_SMELL" : "SMELL"
		"COND_SQUAD_LOS_ENEMY" : "SQUAD LOS ENEMY"
		"COND_SQUAD_SEE_ENEMY" : "SQUAD SEE ENEMY"
		"COND_STOP_BACKUP" : "STOP BACKUP"
		"COND_SUPERNATURAL_ATTACK_LEVEL" : "SUPERNATURAL ATTACK LEVEL"
		"COND_SUPERNATURAL_FLEE_LEVEL" : "SUPERNATURAL FLEE LEVEL"
		"COND_TARGET_OCCLUDED" : "TARGET OCCLUDED"
		"COND_TASK_FAILED" : "TASK FAILED"
		"COND_TOO_CLOSE_FOR_RANGED" : "TOO CLOSE FOR RANGED"
		"COND_TOO_CLOSE_TO_ATTACK" : "TOO CLOSE TO ATTACK"
		"COND_TOO_FAR_FOR_MELEE" : "TOO FAR FOR MELEE"
		"COND_TOO_FAR_TO_ATTACK" : "TOO FAR TO ATTACK"
		"COND_UNKNOWN_ADVANCING" : "UNKNOWN ADVANCING"
		"COND_UNKNOWN_HOLDING" : "UNKNOWN HOLDING"
		"COND_UNKNOWN_RETREATING" : "UNKNOWN RETREATING"
		"COND_UNKNOWN_RUN_TIMER" : "UNKNOWN RUN TIMER"
		"COND_WAITING_ATTACK_TIME" : "WAITING ATTACK TIME"
		"COND_WAS_BUMPED" : "WAS BUMPED"
		"COND_WAY_CLEAR" : "WAY CLEAR"
		"COND_WEAPON_BLOCKED_BY_FRIEND" : "WEAPON BLOCKED BY FRIEND"
		"COND_WEAPON_HAS_LOS" : "WEAPON HAS LOS"
		"COND_WEAPON_PLAYER_IN_SPREAD" : "WEAPON PLAYER IN SPREAD"
		"COND_WEAPON_PLAYER_NEAR_TARGET" : "WEAPON PLAYER NEAR TARGET"
		"COND_WEAPON_SIGHT_OCCLUDED" : "WEAPON SIGHT OCCLUDED"
		"COND_WEAPON_THROUGH_WALL" : "WEAPON THROUGH WALL"
	]
]



//===================================================================================================================
// logic_case_toggle [VTMB-specific]
//===================================================================================================================

@PointClass
base (
	logic_case
)
iconsprite("editor/logic_case.vmt")
= logic_case_toggle :
	"[VTMB] Toggleable logic_case [not tested]."
[
	sep_caset(string) readonly: "------------------------------------"
	InitialCase(integer) : "Initial Case (0-160)" : 1 : "Defines initial case from which toggle starts."

	// inputs
	input InValueDelta(integer) : "[VTMB: untested connection]"
]




//===================================================================================================================
// logic_npc_condition [VTMB-specific]
//===================================================================================================================

@PointClass
base (
	o_LogicConditions,
	p_LogicConditions
)
iconsprite("editor/logic_branch.vmt")
= logic_npc_condition :
	"[VTMB] Creates conditions for NPC-related events [not tested]."
[
	target_npc(target_destination) : "Target NPC" : : "The name of target NPC."
]




//===================================================================================================================
// logic_squad_condition [VTMB-specific]
//===================================================================================================================

@PointClass
base (
	o_LogicConditions,
	p_LogicConditions
)
iconsprite("editor/logic_branch.vmt")
= logic_squad_condition :
	"[VTMB] Creates conditions for Squad-related (entity families?) events [not tested]."
[
	squad_name(target_destination) : "Squad Name" : : "The name of Squad (entity families?) [not tested]."
]




//===================================================================================================================
// logic_pythoncheck [VTMB-specific]
//===================================================================================================================

@PointClass
base (
	EnableDisable,
	o_LogicConditions
)
iconsprite("editor/logic_branch.vmt")
= logic_pythoncheck :
	"[VTMB] Checks condition given by Python function and fires specified output [not tested]."
[
	sep_lpcmain(string) readonly: "------------------------------------"
	python_script(string) : "Python Command" : "FindPlayer().IsMale()" : "Defines checking condition. \nMay be a function, variable or script."
]




//===================================================================================================================
// logic_visibility_test [VTMB-specific]
//===================================================================================================================

@PointClass
base (
	Targetname
)
sphere(radius)
line (
	144 144 128,
	targetname,
	source_ent,
	targetname,
	target_ent
)
iconsprite("editor/logic_branch.vmt")
= logic_visibility_test :
	"[VTMB] A point entity that checks visiblity between two entities [not tested].\nRarely used."
[
	sep_lvtmain(string) readonly: "------------------------------------"

	source_ent(target_destination) : "Source Entity Name" : : "The source entity that will estimate visiblity of target [not tested]."
	target_ent(target_destination) : "Target Entity Name" : : "The target entity that's visiblity checks [not tested]."
	radius(integer) : "Activity Radius" : 768 : "Radius that logic_visibility_test active [not tested]."

	// inputs
	input CheckVisibility(void) : "Check Visiblity of object."
	// outputs
	output OnCanSeeTarget(void) : "Fired when entity detects target in it's FOV."
	output OnNotSeeTarget(void) : "Fired when entity unable to detect target in it's FOV."
]








































//*******************************************************************************************************************
//*******************************************************************************************************************
//
// Moving, Keyframes and Ropes
//
//*******************************************************************************************************************
//*******************************************************************************************************************


//===================================================================================================================
// func_keyframed_mover [VTMB-specific]
//===================================================================================================================

@SolidClass
base (
	Targetname,
	p_Origin
)
color(255 170 0)
animator()
size(-8 -8 -8, 8 8 8)
= func_keyframed_mover : 
	"[VTMB] Keyframed Move Behavior."
[
	sep_kfmmain(string) readonly: "------------------------------------"

	start_key(target_destination) : "Start Keyframe" : : "Source entity that will be used as starting point."
	speed(integer) : "Moving Speed" : 64 : "Moving speed."
	direction(vector) : "Moving Direction" : 0 : "Set the moving direction [-?]."
	
	spawnflags(flags) =
	[
		1: "Flag 1 (unknown yet)" : 0
	]
	
	// inputs
	input MoveForwards(void) : "Starts move forwards."
	input MoveBackwards(void) : "Starts move backwards."
	input StopMoving(void) : "Stops moving."
	input SetSpeed(float) : "Set moving speed."
	input SnapToKeyframe(string) : "Snaps to selected keyframe [not tested]."

	// outputs
	output OnReachedBeginning(void) : "Fired when moving reached its beginning [not tested]."
	output OnReachedEnd(void) : "Fired when moving reached its end [not tested]."
	output OnReachedKeyframe(void) : "Fired when defined keyframe reached."
]




//===================================================================================================================
// mover_keyframe [VTMB-specific]
//===================================================================================================================

@MoveClass
base (
	Targetname
)
animator()
color(255 170 0)
studio("models/editor/axis_helper.mdl")
= mover_keyframe :
	"[VTMB] Keyframe mover behavior [not tested]."
[
	sep_kfmmain(string) readonly: "------------------------------------"
	NextKey(target_destination) : "Next KeyFrame" : : "Name of the next keyframe along this keyframe path."

	// outputs
	output OnReached(void) : "Fired whenever the mover reaches a goal position."
]








































//*******************************************************************************************************************
//*******************************************************************************************************************
// 
// PHYSICS Point Entities
// 
//*******************************************************************************************************************
//*******************************************************************************************************************


//===================================================================================================================
// phys_animlink [VTMB-specific]
//===================================================================================================================

@PointClass
base (
	Targetname
)
iconsprite("editor/multisource.vmt")
= phys_animlink :
	"[VTMB] Defines an entity that animates other entity? [rarely used, not tested yet]."
[
	sep_anmain(string) readonly: "------------------------------------"

	animator(target_destination) : "Animator Entity" : : "[VTMB] Defines source entity's name [not tested]."
	animator_bone(choices) : "Animator Bone" :  : "[VTMB] Defines source entity's bone the target entity will be attached to [not tested]." =
	[
		"" : "<none>"
		"prop_static" : "prop_static"
	]

	sep_anmprp(string) readonly: "------------------------------------"

	attached(target_destination) : "Attached Entity" : : "[VTMB] The name of target entity that will be animated by 'Animator entity' [not tested]."
	attached_bone(choices) : "Attached Bone" : "Bip01 Head" : "[VTMB] The name of target entity's bone that will be attached to 'Animator entity' [not tested]." =
	[
		"" : "<none>"
		"Bip01 Head" : "Bip01 Head"
		"Bip01 L Hand" : "Bip01 L Hand"
		"Bip01 R Hand" : "Bip01 R Hand"
		"Bip01 Neck" : "Bip01 Neck"
		"Bip01 Pelvis" : "Bip01 Pelvis"
		"Bip01 Spine" : "Bip01 Spine"
		"Bip01 Spine01" : "Bip01 Spine01"
		"Bip01 Spine02" : "Bip01 Spine02"
		"Bip01 Spine03" : "Bip01 Spine03"
	]
	sep_anmang(string) readonly: "------------------------------------"

	attach_angle(angle) : "Attach Angle (Z X Y)" : "0 0 0" : "[VTMB] Unknown yet..."
	attach_offset(angle) : "Attach Offset (Z X Y)" : "0 0 0" : "[VTMB] Unknown yet..."
]






































//*******************************************************************************************************************
//*******************************************************************************************************************
// 
// TRIGGERS
// 
//*******************************************************************************************************************
//*******************************************************************************************************************


//===================================================================================================================
// trigger_bomb_site [VTMB-specific]
//===================================================================================================================

@SolidClass
base (
	VBaseTrigger,
	Parentname,
	p_Origin
)
line (
	255 255 255,
	targetname,
	parentname
)
= trigger_bomb_site :
	"[VTMB] A trigger that defines the site for laying bomb (e.g. astrolite)."
[
	// outputs
	output OnBombPlaced(void) : "Fired when the bomb placed."
	output OnBombDefused(void) : "Fired when the bomb defused."
]




//===================================================================================================================
// trigger_checkvolume [VTMB-specific]
//===================================================================================================================

@SolidClass
base (
	VBaseTrigger
)
= trigger_checkvolume :
	"[VTMB] A trigger that checks entities to be in trigger's volume [not tested]."
[
	// connections
	input CheckNow(void) : "Done checking an entity now [not tested]."
	output OnEntityInVolume(void) : "Fires input when entity is within trigger's volume."
]




//===================================================================================================================
// trigger_discipline_context [VTMB-specific]
//===================================================================================================================

@SolidClass
base (
	VBaseTrigger
)
= trigger_discipline_context : 
	"[VTMB] Untested trigger entity..."
[
	sep_trig(string) readonly: "------------------------------------"

	Discipline_Context(choices) : "Discipline Context" : 4 : "[VTMB] Unknwon yet..." =
	[
		0 : "Context 0 [-?]"
		1 : "Context 1 [-?]"
		2 : "Context 2 [-?]"
		3 : "Context 3 [-?]"
		4 : "Context 4 [-?]"
	]
]




//===================================================================================================================
// trigger_electric_bugaloo [VTMB-specific]
//===================================================================================================================

@SolidClass
base (
	VBaseTrigger,
	o_VUsableExt
)
= trigger_electric_bugaloo :
	"[VTMB] Dance trigger which used in clubs. \nPlayer (or other character) can dance by +USE if he's in it's volume."
[
]




//===================================================================================================================
// trigger_environmental_audio [VTMB-specific]
//===================================================================================================================

@SolidClass
base (
	VBaseTrigger
)
= trigger_environmental_audio :
	"[VTMB] A trigger that creates DSP environmental sound effects in it's volume (in HL2 it was using as part of 'env_soundscape' entity)."
[
	sep_trig(string) readonly: "------------------------------------"

	room_type(choices) : "DSP Room Type" : 1 : "DSP preset that creates any sound effects like echo, reverb, etc." =
	[
		0 : "Normal (Off)"
		1 : "Generic (Auto)"
		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"
		102: "ROOM EMPTY SMALL BRIGHT"
		103: "ROOM EMPTY HUGE DULL"
		104: "ROOM DIFFUSE SMALL BRIGHT"
		105: "ROOM DIFFUSE HUGE DULL"
		106: "DUCT EMPTY SMALL BRIGHT"
		107: "DUCT EMPTY HUGE DULL"
		108: "DUCT DIFFUSE SMALL BRIGHT"
		109: "DUCT DIFFUSE HUGE DULL"
		110: "HALL EMPTY SMALL BRIGHT"
		111: "HALL EMPTY HUGE DULL"
		112: "HALL DIFFUSE SMALL BRIGHT"
		113: "HALL DIFFUSE HUGE DULL"
		114: "TUNNEL EMPTY SMALL BRIGHT"
		115: "TUNNEL EMPTY HUGE DULL"
		116: "TUNNEL DIFFUSE SMALL BRIGHT"
		117: "TUNNEL DIFFUSE HUGE DULL"
		118: "STREET EMPTY SMALL BRIGHT"
		119: "STREET EMPTY HUGE DULL"
		120: "STREET DIFFUSE SMALL BRIGHT"
		121: "STREET DIFFUSE HUGE DULL"
		122: "ALLEY EMPTY SMALL BRIGHT"
		123: "ALLEY EMPTY HUGE DULL"
		124: "ALLEY DIFFUSE SMALL BRIGHT"
		125: "ALLEY DIFFUSE HUGE DULL"
		126: "COURTYARD EMPTY SMALL BRIGHT"
		127: "COURTYARD EMPTY HUGE DULL"
		128: "COURTYARD DIFFUSE SMALL BRIGHT"
		129: "COURTYARD DIFFUSE HUGE DULL"
		130: "OPENSPACE EMPTY SMALL BRIGHT"
		131: "OPENSPACE EMPTY HUGE DULL"
		132: "OPENSPACE DIFFUSE SMALL BRIGHT"
		133: "OPENSPACE DIFFUSE HUGE DULL"
		134: "TUNNEL EMPTY HUGE DULL"
	]
]




//===================================================================================================================
// trigger_inventory_check [VTMB-specific]
//===================================================================================================================

@SolidClass
base (
	VBaseTrigger,
	Parentname,
	p_Origin
)
line (
	255 255 255,
	targetname,
	parentname
)
= trigger_inventory_check :
	"[VTMB] A trigger that checks specified inventory item availability and generate the dependent output."
[
	sep_trig(string) readonly: "------------------------------------"
	itemname(itemclass) : "Item to Check" : "item_g_astrolite" : "The name of player's inventory item that will be checked by trigger."

	// connections
	output OnPlayerHasItem(void) : "Fired whether a player has selected item."
]




//===================================================================================================================
// trigger_player_activity_level [VTMB-specific]
//===================================================================================================================

@SolidClass
base (
	VBaseTrigger
)
= trigger_player_activity_level :
	"[VTMB] A trigger that manages player activity level [not tested]."
[
	sep_trig(string) readonly: "------------------------------------"

	criminal_level(choices) : "Criminal Level" : -1 : "Sets player's Criminal level to this value [not tested]." =
	[
		-1 : "Nothing"
		 1 : "Level 1"
		 2 : "Level 2"
		 3 : "Level 3"
		 4 : "Level 4"
		 5 : "Level 5"
		 6 : "Level 6"
	]
	supernatural_level(choices) : "Supernatural Level" : -1 : "Sets player's Supernatural level to this value [not tested]." =
	[
		-1 : "Nothing"
		 1 : "Level 1"
		 2 : "Level 2"
		 3 : "Level 3"
		 4 : "Level 4"
		 5 : "Level 5"
		 6 : "Level 6"
	]
	investigate_level(choices) : "Investigate Level" : -1 : "Sets player's Investigate level to this value [not tested]." =
	[
		-1 : "Nothing"
		 1 : "Level 1"
		 2 : "Level 2"
		 3 : "Level 3"
		 4 : "Level 4"
		 5 : "Level 5"
		 6 : "Level 6"
	]

	spawnflags(Flags) = 
	[
		32 : "Flag 32 (initial state?)" : 1
	]

	// inputs
	input SetCriminalLevel(integer) : "Set player's Criminal level."
	input SetSupernaturalLevel(integer) : "Set player's Supernatural level."
	input SetInvestigateLevel(integer) : "Set player's Investigate level."

	// outputs
	output OnTrigger(void) : "Fired whenever the trigger is activated."
]




//===================================================================================================================
// trigger_small_hull [VTMB-specific]
//===================================================================================================================

@SolidClass
base (
	VBaseTrigger
) = trigger_small_hull :
	"[VTMB] A trigger that somehow manages small hull? [unknown yet]."
[
]




//===================================================================================================================
// trigger_stealth_mod [VTMB-specific]
//===================================================================================================================

@SolidClass
base (
	VBaseTrigger
)
= trigger_stealth_mod :
	"[VTMB] A trigger that modifies the player's stealth abilities [not tested]."
[
	sep_trig(string) readonly: "------------------------------------"

	stealth_modifier(choices) : "Stealth Modifier Type" : 2 : "Select stealth modifier type defined in 'vdata/systems/stealth.txt' [not tested]." =
	[
		1 : "Modifier #1"
		2 : "Modifier #2"
		3 : "Modifier #3"
		4 : "Modifier #4"
		5 : "Modifier #5"
		6 : "Modifier #6"
		7 : "Modifier #7"
		8 : "Modifier #8"
		9 : "Modifier #9"
		10 : "Modifier #10"
	]
]




//===================================================================================================================
// trigger_werewolf_zone [VTMB-specific]
//===================================================================================================================

@SolidClass
base (
	VBaseTrigger
)
= trigger_werewolf_zone :
	"[VTMB] A trigger that defines werewolf zones (not tested)."
[
	sep_trig(string) readonly: "------------------------------------"

	target_name(target_destination) : "Target Destination" : : "The name of target entity [not tested]."
	zone_type(choices) : "Zone Type" : 2 : "Defines type of werewolf zone [not tested]." =
	[
		0 : "Zone #0 [-?]"
		1 : "Zone #1 [-?]"
		2 : "Zone #2 [-?]"
		3 : "Zone #3 [-?]"
		4 : "Zone #4 [-?]"
		5 : "Zone #5 [-?]"
		6 : "Zone #6 [-?]"
		7 : "Zone #7 [-?]"
		8 : "Zone #8 [-?]"
	]
]








































//*******************************************************************************************************************
//*******************************************************************************************************************
// 
// LOCKS
// 
//*******************************************************************************************************************
//*******************************************************************************************************************


//====================================================================================================================
// CLASS: VOpenable [VTMB-specific]
//====================================================================================================================

@BaseClass base(Studiomodel,Parentname,VUseIcons,VLockedIcons,o_VUsableExt,o_VBreakable) = VOpenable
[
	key_icon(choices) : "Key Icon" : 4 : "An icon that will be displayed near this entity when required key found." =
	[
		0: "None"
		0: " "
		0: " -- door icons --"
		10: "Door (Openable)"
		58: "Door (Player wanted)"
		59: "Door (Transition)"
		60: "Hatch (Transition)"
		0: " "
		0: " -- buttons, switches --"
		12: "Switch (wall)"
		64: "Switch (power)"
		31: "Elevator button: Up"
		32: "Elevator button: Down"
		21: "Elevator button: 1"
		22: "Elevator button: 2"
		23: "Elevator button: 3"
		24: "Elevator button: 4"
		25: "Elevator button: 5"
		26: "Elevator button: 6"
		27: "Elevator button: 7"
		28: "Elevator button: B"
		29: "Elevator button: G"
		49: "Elevator button: PH"
		30: "Elevator button: Locked"
		0: " "
		0: " -- locks, keys --"
		3:  "Default lock"
		4:  "Key"
		5:  "Access card"
		53: "Electronic lock"
		54: "Electronic lock (deny)"
		0: " "
		0: " -- sign icons --"
		18: "Note"
		40: "Clipboard"
		41: "Printed Papers"
		36: "Book"
		50: "Bus stop Map"
		51: "Sewer Transition map"
		57: "Sewer Lines map"
		46: "Giovanni book"
		0: " "
		0: " -- usable icons --"
		2:  "Computer"
		6:  "Lootable crate"
		7:  "TV monitor"
		43: "Phonograph"
		48: "Web camera"
		38: "Reel recorder"
		42: "Projector light"
		34: "Valve wheel"
		61: "Pedestal"
		35: "Stove"
		37: "Sconce"
		16: "Tubes"
		0: " "
		0: " -- talking icons --"
		15: "Talk NPC (Male)"
		14: "Talk NPC (Female)"
		8:  "Phone"
		47: "Payphone"
		0: " "
		0: " -- place icons --"
		17: "Use Bomb"
		55: "Breakable"
		62: "Dance (Male)"
		63: "Dance (Female)"
		0: " "
		0: " -- other icons --"
		9:  "Physic Hand"
		19: "Stealth succeed"
		20: "Stealth chance"
		33: "Sword"
		45: "Slaughter"
		52: "Skull"
		73: "Pushable prop"
		66: "Malk Chaos"
		67: "Malk Key"
		68: "Malk Mind"
		69: "Malk Order"
		70: "Malk Sight"
		71: "Malk Time"
		72: "Malk Mind"
		0: " "
		0: " -- unused icons --"
		1:  "Carry body (unused)"
		13: "Switch 1 (13)"
		39: "Key (39)"
		44: "Phonograph (44)"
		56: "Bus stop Map (56)"
		11: "Empty (11)"
		65: "Empty (65)"
	]
]






@BaseClass
base (
	Studiomodel,
	Parentname,
	o_VUsableExt
)
= c_Lockable1
[
	model(studio) : "Model" :  : "Lock prop model." = []
	sep_lockmain(string) readonly: "------------------------------------"

	use_icon(choices) : "Use Icon" : 0 : "An icon that indicates when player can be able to use this entity and it is openable." = 
	[
		0 : "None"
		10: "Door (default)"
		53: "Electronic lock"
	]
	locked_icon(choices) : "Locked Icon" : 3 : "An icon that indicates locked state of this entity." = 
	[
		0 : "None"
		3 : "Default lock"
		54: "Electronic lock (locked)"
		58: "Door (player wanted)"
	]
	locksnd(sound) : "Locked Sound" : "environmental/electronic/button_click_1.wav" : "Sound played when the player tries to use entity, and fails because it's locked. \nClick arrow button and scroll down if you want to use sounds from default game maps." =
	[
		"environmental/electronic/button_click_1.wav" : "Environmental/Electronic/Button_Click_1.wav"
	]
	sep_lockkeys(string) readonly: "------------------------------------"
]

@BaseClass
= c_Lockable2
[
	key_icon(choices) : "Key Icon" : 4 : "An icon that will be displayed near this entity when the required key found." =
	[
		0: "None"
		4: "Key"
		5: "Access card"
	]
	key_name(itemclass) : "Open Key Name" :  : "The name of key type that unlock this. \nUse 'item_k_<name>' classes to specify required key."
	delete_key(choices) : "Delete Key on Open" : 0 : "Removes key from the player's inventory when object unlocked." = [ 0 : "No" 1 : "Yes" ]

	sep_lockskil(string) readonly: "------------------------------------"

	skilltype(choices) : "Skill Type" : 1 : "Defines player's skill type, e.g. hacking, lockpicking, etc." =
	[
		1 : "Lockpicking"
		2 : "Hacking"
		3 : "Code-breaking"
	]
	difficulty(choices) : "Difficulty" : 0 : "Entity's unlock difficulty. Only with sufficient skill level, the player will be able to open it." =
	[
		0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 10:10
	]
	diceroll(choices) : "Dice-Roll" : 0 : "[VTMB] Make attempt to open it anyway [not tested]." = [ 0 : "No" 1 : "Yes" ]

	// inputs
 	input Lock(void) : "Lock the entity."
	input Unlock(void) : "Open the entity's lock."
	input ResetDifficulty(void) : "Reset lock's difficulty to default."

	// outputs
	output OnSkillSuccess(void) : "Fired when the skill level matches the player's one."
	output OnSkillFail(void) : "Fired when the skill level not matches the player's one."
	output OnSkillBotch(void) : "Fired when the skill level botched [-?]."
	output OnSkillAttemptBegin(void) : "Fired when player attempts to unlock entity."
	output OnSkillAttemptCycle(void) : "Fired when player in process of entity unlocking..."
]






//====================================================================================================================
// item_container_lock [VTMB-specific]
//====================================================================================================================

@BaseClass
= e_item_container_lock
[
	requires_key(choices) : "Requires Key" : 0 : "If 'Yes', item cannot be unlocked (or broken with lockpicks) without appropriate key." = [ 0 : "No" 1 : "Yes" ]
	electronic_key(choices) : "Electronic Keycard" : 0 : "Set 'Yes' if this entity have an electronic lock that requires appropriate keycard." = [ 0 : "No" 1 : "Yes" ]
]

@PointClass
base (
	c_Lockable1,
	e_item_container_lock,
	c_Lockable2
)
//line (
//	255 255 255,
//	targetname,
//	parentname
//)
studio()
= item_container_lock :
	"[VTMB] Lock for Item Container that requires Key or some Skill level to unlock."
[
	model(studio) : "Model" : "models/scenery/misc/padlock1/padlock1.mdl" : "Lock prop model." =
	[
		"models/scenery/misc/padlock1/padlock1.mdl" : "models/scenery/misc/padlock1/padlock1.mdl"
	]
	difficulty(choices) : "Difficulty" : 4 : "Entity's unlock difficulty. Only with sufficient skill level, the player will be able to open it." = []
]






//===================================================================================================================
// prop_doorknob [VTMB-specific]
//===================================================================================================================

@BaseClass
= e_prop_doorknob
[
	model(studio) : "Model" : "models/scenery/structural/doorknob_round/doorknob_round_brass.mdl" : "Door knob prop model." =
	[
		"models/scenery/misc/lock/lock_left.mdl" : "models/scenery/misc/lock/lock_left.mdl"
		"models/scenery/misc/lockhandle/lockhandle.mdl" : "models/scenery/misc/lockhandle/lockhandle.mdl"
		"models/scenery/misc/lockhandle/lockhandlebrass.mdl" : "models/scenery/misc/lockhandle/lockhandlebrass.mdl"
		"models/scenery/misc/safe/doorhandle.mdl" : "models/scenery/misc/safe/doorhandle.mdl"
		"models/scenery/structural/crypt/handle.mdl" : "models/scenery/structural/crypt/handle.mdl"
		"models/scenery/structural/dane/danedoor_handle.mdl" : "models/scenery/structural/dane/danedoor_handle.mdl"
		"models/scenery/structural/doorknob_push/doorknob_pushbarl.mdl" : "models/scenery/structural/doorknob_push/doorknob_pushbarl.mdl"
		"models/scenery/structural/doorknob_push/doorknob_pushbarr.mdl" : "models/scenery/structural/doorknob_push/doorknob_pushbarr.mdl"
		"models/scenery/structural/doorknob_round/doorknob_round_brass.mdl" : "models/scenery/structural/doorknob_round/doorknob_round_brass.mdl"
		"models/scenery/structural/doorknoba/doorknoba.mdl" : "models/scenery/structural/doorknoba/doorknoba.mdl"
		"models/scenery/structural/doorknoba/drknobantique.mdl" : "models/scenery/structural/doorknoba/drknobantique.mdl"
		"models/scenery/structural/doorknoba/drknobantiquel.mdl" : "models/scenery/structural/doorknoba/drknobantiquel.mdl"
		"models/scenery/structural/doorknoboffice/doorknoboffice.mdl" : "models/scenery/structural/doorknoboffice/doorknoboffice.mdl"
		"models/scenery/structural/malkavian/doorhandle.mdl" : "models/scenery/structural/malkavian/doorhandle.mdl"
		"models/scenery/structural/malkavian/doorhandle_left.mdl" : "models/scenery/structural/malkavian/doorhandle_left.mdl"
		"models/scenery/structural/Plaguebearer_sewer/plague_gatehandle.mdl" : "models/scenery/structural/Plaguebearer_sewer/plague_gatehandle.mdl"
	]
	use_icon(choices) : "Use Icon" : 10 : "An icon that indicates when player can be able to use this entity and it is openable." = []
	locksnd(sound) : "Locked Sound" : "environmental/electronic/button_click_1.wav" : "Sound played when the player tries to use entity, and fails because it's locked. \nClick arrow button and scroll down if you want to use sounds from default game maps." =
	[
		"environmental/electronic/button_click_1.wav" : "Environmental/Electronic/Button_Click_1.wav"
		"usable/openable/squeaky_metal door/locked.wav" : "Usable/Openable/Squeaky_Metal Door/Locked.wav"
		"usable/openable/standard_door/locked.wav" : "Usable/Openable/Standard_Door/Locked.wav"
	]
	diceroll(choices) : "Dice-Roll" : 1 : "[VTMB] Make attempt to open it anyway [not tested]." = []
	
	spawnflags(flags) =
	[
		1 : "Flag 1 (unknown yet)" : 0
		4 : "Flag 4 (unknown yet)" : 0
	]
]

@PointClass
base (
	c_Lockable1,
	c_Lockable2,
	e_prop_doorknob,
	RenderFields
)
//line (
//	255 255 255,
//	targetname,
//	parentname
//)
color(128 128 224)
studio()
= prop_doorknob :
	"[VTMB] A point entity for using as a player-useable doorknob. \n"+
	"Note: Don't forget to specify a parent door to this!"
[
]




//===================================================================================================================
// prop_doorknob_electronic [VTMB-specific]
//===================================================================================================================

@PointClass
base (
	c_Lockable1,
	c_Lockable2
)
color(128 224 128)
studio()
= prop_doorknob_electronic :
	"[VTMB] A point entity for using as a player-useable electronic doorknob. \n"+
	"Note: Don't forget to specify a parent door to this!"
[
	model(studio) : "Model" : "models/scenery/misc/lock/lock.mdl" : "Door knob prop model." =
	[
		"models/scenery/misc/lock/lock.mdl" : "models/scenery/misc/lock/lock.mdl"
		"models/scenery/misc/lock/lock_left.mdl" : "models/scenery/misc/lock/lock_left.mdl"
		"models/scenery/structural/doorknoba/drknobantique.mdl" : "models/scenery/structural/doorknoba/drknobantique.mdl"
		"models/scenery/structural/doorknoba/drknobantiquel.mdl" : "models/scenery/structural/doorknoba/drknobantiquel.mdl"
		"models/scenery/structural/malkavian/doorhandle.mdl" : "models/scenery/structural/malkavian/doorhandle.mdl"
		"models/scenery/structural/malkavian/doorhandle_left.mdl" : "models/scenery/structural/malkavian/doorhandle_left.mdl"
	]
	use_icon(choices) : "Use Icon" : 53 : "An icon that indicates when player can be able to use this entity and it is openable." = []
	locked_icon(choices) : "Locked Icon" : 54 : "An icon that indicates locked state of this entity." = []
	locksnd(sound) : "Locked Sound" : "environmental/electronic/button_click_1.wav" : "Sound played when the player tries to use entity, and fails because it's locked. \nClick arrow button and scroll down if you want to use sounds from default game maps." =
	[
		"environmental/electronic/button_click_1.wav" : "Environmental/Electronic/Button_Click_1.wav"
		"environmental/electronic/deny_beep.wav" : "Environmental/Electronic/Deny_Beep.wav"
	]
	key_icon(choices) : "Key Icon" : 5 : "An icon that will be displayed near this entity when the required key found." = []
	difficulty(choices) : "Difficulty" : 1 : "Entity's unlock difficulty. Only with sufficient skill level, the player will be able to open it." = []
]






//===================================================================================================================
// prop_padlock [VTMB-specific]
//===================================================================================================================

@PointClass
base (
	c_Lockable1,
	c_Lockable2
)
studio()
= prop_padlock :
	"[VTMB] A point entity for using as a player-openable padlock for some objects. \n"+
	"Note: Don't forget to specify a parent objects to this!"
[
	model(studio) : "Model" : "models/scenery/misc/padlock1/padlock1.mdl" : "Padlock prop model." =
	[
		"models/scenery/misc/padlock1/padlock1.mdl" : "models/scenery/misc/padlock1/padlock1.mdl"
	]
	use_icon(choices) : "Use Icon" : 53 : "An icon that indicates when player can be able to use this entity and it is openable." = []
	locked_icon(choices) : "Locked Icon" : 54 : "An icon that indicates locked state of this entity." = []
	locksnd(sound) : "Locked Sound" : "environmental/electronic/button_click_1.wav" : "Sound played when the player tries to use entity, and fails because it's locked. \nClick arrow button and scroll down if you want to use sounds from default game maps." =
	[
		"environmental/electronic/button_click_1.wav" : "Environmental/Electronic/Button_Click_1.wav"
		"environmental/electronic/deny_beep.wav" : "Environmental/Electronic/Deny_Beep.wav"
	]
	key_icon(choices) : "Key Icon" : 5 : "An icon that will be displayed near this entity when the required key found." = []
	difficulty(choices) : "Difficulty" : 5 : "Entity's unlock difficulty. Only with sufficient skill level, the player will be able to open it." = []

 // unique
	health(float) : "Strength" : 0 : "Padlock's health points that will spent before it breaks. \n'0' = not breakable."
]























































//*******************************************************************************************************************
//*******************************************************************************************************************
// 
// VTMB Specific Props
// 
//*******************************************************************************************************************
//*******************************************************************************************************************


//===================================================================================================================
// prop_clockhand [VTMB-specific]
//===================================================================================================================

@BaseClass
= e_prop_clockhand
[
	model(studio) : "Hand Model" : "models/scenery/misc/clock/hand.mdl" : "Clock-hand prop model. \nClick arrow button if you want to use game's default model." =
	[
		"models/scenery/misc/clock/hand.mdl" : "models/scenery/misc/clock/hand.mdl"
	]
	sep_clhmain(string) readonly: "------------------------------------"

	units_per_rot(choices) : "Seconds/Rotation" : 240 : "Num of units that clockhand pass at full rotation." =
	[
		1: "1 second"
		10: "10 seconds"
		30: "30 seconds"
		60: "60 (1 min)"
		90: "90 (1.5 min)"
		120: "120 (2 min)"
		180: "180 (3 min)"
		240: "240 (4 min)"
		300: "300 (5 min)"
		600: "600 (10 min)"
		900: "900 (15 min)"
		1800: "1800 (30 min)"
		2700: "2700 (45 min)"
		3600: "3600 (1 hour)"
	]
	rotational_axis(choices) : "Rotation Axis (Y/Z/X)" : 2 : "Hand's rotational axis." =
	[
		0 : "Y"
		1 : "Z"
		2 : "X"
	]
	timer_entity(target_destination) : "Timer Entity" : : "A link to the timer entity to control clock-hand rotation [not tested]."
	timer_elapsed(choices) : "Stop on Timer Elapsed" : 1 : "Stops rotating when timer given by timer entity is elapsed [not tested]." = [ 0: "No" 1: "Yes" ]
	units(integer) : "Num Units (?)" : 0 : "Number of units to use? [not tested]."
]

@PointClass
base (
	Studiomodel,
	e_prop_clockhand,
	RenderFields
)
studioprop()
= prop_clockhand :
	"[VTMB] A prop that simulates clock's hand behavior."
[
	// RF order fix
]





//===================================================================================================================
// prop_physics_contested [VTMB-specific]
//===================================================================================================================

@BaseClass
= e_prop_physics_contested
[
	sep_pprpcont(string) readonly: "------------------------------------"
	break_sound(sound) : "Break Sound" :  : "Sound played when the prop breaks." =
	[
		"debris/metal3.wav" : "debris/metal3.wav"
	]
	required_strength(integer) : "Required Strength" : 2 : "Player's strength that required to break it."
	
	// outputs
	output OnBreakConstraint(void) : "Fired when this prop constrains to break."
]

@PointClass
base (
	BasePropPhysics,
	e_prop_physics_contested,
	RenderFields
)
studioprop()
= prop_physics_contested :
	"[VTMB] Contested physics prop. Also see 'prop_physics'."
[
	// RF order fix
]





//===================================================================================================================
// prop_destructable [VTMB-specific]
//===================================================================================================================

@BaseClass
= e_prop_destructable
[
	model(studio) : "Model" : "models/scenery/misc/BoxesBreakable/BoxesBreakable_D0.mdl" : "Destructable prop model."

	sep_pprpmdls(string) readonly: "------------------------------------"

	// damage models
	dmg_model_1(studio) : "Damage Model 1" :  : "Spawn random of these models when entity damaged." = [ "models/scenery/misc/BoxesBreakable/BoxesBreakable_D1.mdl" : "models/scenery/misc/BoxesBreakable/BoxesBreakable_D1.mdl"]
	dmg_model_2(studio) : "Damage Model 2" :  : "Spawn random of these models when entity damaged." = [ "models/scenery/misc/BoxesBreakable/BoxesBreakable_D2.mdl" : "models/scenery/misc/BoxesBreakable/BoxesBreakable_D2.mdl"]
	dmg_model_3(studio) : "Damage Model 3" :  : "Spawn random of these models when entity damaged." = [ "models/scenery/misc/BoxesBreakable/BoxesBreakable_D3.mdl" : "models/scenery/misc/BoxesBreakable/BoxesBreakable_D3.mdl"]
	dmg_model_4(studio) : "Damage Model 4" :  : "Spawn random of these models when entity damaged."
	dmg_model_5(studio) : "Damage Model 5" :  : "Spawn random of these models when entity damaged."
	dmg_model_6(studio) : "Damage Model 6" :  : "Spawn random of these models when entity damaged."
	dmg_model_7(studio) : "Damage Model 7" :  : "Spawn random of these models when entity damaged."
	dmg_model_0(studio) : "Damage Model 0" :  : "Spawn random of these models when entity damaged."

	sep_pprpdest(string) readonly: "------------------------------------"

	collideable_gibs(choices) : "Collidable Gibs" : 0 : "[VTMB] Collide model's gibs with environment when it breaks [not tested]." = 
	[
		0 : "Mode 0 (unknown)"
		1 : "Mode 1 (unknown)"
		2 : "Mode 2 (unknown)"
	]
	// destruct-specs
	break_on_end(choices) : "Break on End" : 0 : "[VTMB] Unknown yet..." = [ 0 : "No" 1 : "Yes" ]
	health(integer) : "Prop's Strength" : 0 : "[VTMB] Number of points of damage to take before breaking this prop. \n'0' = not breakable."
	damage_absorption(integer) : "Damage Absorption" : 0 : "[VTMB] Unknown yet..."
	dmg_filter_name(target_destination) : "Damage Filter" : : "Name of the filter entity that controls which entities can damage us."
	physics_level(integer) : "Physics Level" : 9999 : "[VTMB] Unknown yet..."
	only_dmg_on_input(choices) : "Damage Only on Input" : : "Make damage only if input specified." = [ "" : "No" 1 : "Yes" ]
	
	spawnflags(flags) =
	[
		8192 : "Flag 8192 (unknown yet)" : 0
	]
 
	// inputs
	input SetToDamageLevel(string) : "Sets to specified damage level [not tested]."
	input PlayAnimation(string) : "Plays selected animation [not tested]."
	
	// outputs
	output OnBreakLevel1(void) : "Fired when break level reaches present value [not tested]."
	output OnBreakLevel2(void) : "Fired when break level reaches present value [not tested]."
	output OnBreakLevel3(void) : "Fired when break level reaches present value [not tested]."
	output OnBreakLevel4(void) : "Fired when break level reaches present value [not tested]."
	output OnBreakLevel5(void) : "Fired when break level reaches present value [not tested]."
	output OnBreakLevel6(void) : "Fired when break level reaches present value [not tested]."
	output OnBreakLevel7(void) : "Fired when break level reaches present value [not tested]."
	output OnBreakLevel8(void) : "Fired when break level reaches present value [not tested]."
	output OnBreakLastLevel(void) : "Fired when break level reaches last value [not tested]."
]

@PointClass
base (
	Studiomodel,
	p_Global,
	o_VBreakable,
	e_prop_destructable,
	RenderFields
)
studioprop()
= prop_destructable :
	"[VTMB] Destructable physics prop. Also see 'prop_physics'."
[
	// RF order fix
]





//===================================================================================================================
// CLASS: VHackingBase [VTMB-specific]
//===================================================================================================================

@BaseClass
= VHackingBase
[
	// appearance
	colorscheme(choices) : "Screen Color Scheme" : 0 : "Defines color tint of screen elements." =
	[
		0 : "White (default)"
		1 : "White (tinted)"
		2 : "Orange"
		3 : "Green"
	]
	textrows(choices) : "Num of Text Rows" : 24 : "The number of text rows located on screen." =
	[
		 6 : "6 (keypad)"
		 8 : "8"
		24 : "24 (computer)"
		32 : "32"
	]
	textcolumns(choices) : "Num of Text Columns" : 36 : "The number of text columns located on screen." =
	[
		20 : "20 (keypad)"
		24 : "24"
		36 : "36 (computer)"
		42 : "42"
		56 : "56"
		72 : "72"
	]
	soundgroup(choices) : "Sound Group" : "old_computer" : "The group of sounds relative to 'usable/computers/<group-name>/<action>.wav' that specifies certain action sounds." =
	[
		"tech_computer" : "Tech Computer"
		"old_computer" : "Old Computer"
		"fancy_computer" : "Fancy Computer"
		"keypad" : "Keypad"
		"elevator_button" : "Elevator Button"
	]

	sep_hackhack(string) readonly: "------------------------------------"

	// hacking
	difficulty(choices) : "Hacking Difficulty" : 5 : "Hackable's breaking difficulty. Only with sufficient skill level, the player will be able to hack it." =
	[
		0 : "None"
		1 : "1"
		2 : "2"
		3 : "3"
		4 : "4"
		5 : "5"
		6 : "6"
		7 : "7"
		8 : "8"
		9 : "9"
		10 : "10"
	]
	skilltype(choices) : "Skill Type" : 2 : "Defines player's skill type, e.g. hacking, lockpicking, etc." =
	[
		1 : "Lockpicking"
		2 : "Hacking"
		3 : "Code-breaking"
	]
	diceroll(choices) : "Dice-Roll" :  : "Make attempt to hack it anyway [not tested]." = [ "": "No" 1: "Yes" ]

	spawnflags(flags) =
	[
		1 : "Flag 1 (unknown yet)" : 0
	]

	// inputs
	input ResetDifficulty(void) : "Reset hackable's difficulty level to default."

	// outputs
	output OnSkillSuccess(void) : "Fired when player's skill matches and hacking procedure was successful."
	output OnSkillFail(void) : "Fired when player's skill doesn't match and hacking procedure failed."
	output OnSkillBotch(void) : "Fired when player's skill botched hacking procedure [not tested]."
	output OnSkillAttemptBegin(void) : "Fired when player attempts to hack this object."
	output OnSkillAttemptCycle(void) : "Fired when player cycles his attempts to hack this object [not tested]."
]



//===================================================================================================================
// prop_hacking [VTMB-specific]
//===================================================================================================================

@BaseClass
= e_prop_hacking_1
[
	model(studio) : "Computer Model" : "models/scenery/furniture/computer/monitor_useable.mdl" : "Prop model of hackable object, as usual - monitors, laptops, panes etc. \nClick arrow key and scroll down if you want to use one of game's default model." =
	[
		"models/scenery/furniture/computer/monitor_useable.mdl" : "models/scenery/furniture/computer/monitor_useable.mdl"
		"models/scenery/furniture/computer_new/largemonitor_hackable.mdl" : "models/scenery/furniture/computer_new/largemonitor_hackable.mdl"
		"models/scenery/furniture/computer_new/monitor_hackable.mdl" : "models/scenery/furniture/computer_new/monitor_hackable.mdl"
		"models/scenery/misc/laptop/laptop2.mdl" : "models/scenery/misc/laptop/laptop2.mdl"
		"models/scenery/misc/laptop/laptop2clean.mdl" : "models/scenery/misc/laptop/laptop2clean.mdl"
		"models/scenery/misc/militarycomputer/militarycomputer2.mdl" : "models/scenery/misc/militarycomputer/militarycomputer2.mdl"
		"models/scenery/structural/sewer_computers/sewercomp_screen.mdl" : "models/scenery/structural/sewer_computers/sewercomp_screen.mdl"
	]
	sep_hackmain(string) readonly: "------------------------------------"

	// hackfile
	hack_file(choices) : "Definition File" : "vdata/HackTerminals/haven_pc.txt" : "This is 'vdata/HackTerminals/<name>.txt' related script file that contains the certain computer's data and it's interactions. \nClick arrow button and scroll down if you want to use one of game's default scripts." =
	[
	// HackTerminalsList:
		"vdata/HackTerminals/asianvamp_laptop.txt" : "asianvamp_laptop.txt"
		"vdata/HackTerminals/beachouse_computer.txt" : "beachouse_computer.txt"
		"vdata/HackTerminals/bertrams_computer.txt" : "bertrams_computer.txt"
		"vdata/HackTerminals/blood_bank_computer.txt" : "blood_bank_computer.txt"
		"vdata/HackTerminals/carson_computer.txt" : "carson_computer.txt"
		"vdata/HackTerminals/clinic_administration_computer.txt" : "clinic_administration_computer.txt"
		"vdata/HackTerminals/clinic_cis_computer.txt" : "clinic_cis_computer.txt"
		"vdata/HackTerminals/clinic_security_computer.txt" : "clinic_security_computer.txt"
		"vdata/HackTerminals/confessione3_computer.txt" : "confessione3_computer.txt"
		"vdata/HackTerminals/dane_computer.txt" : "dane_computer.txt"
		"vdata/HackTerminals/empire_lobby_computer.txt" : "empire_lobby_computer.txt"
		"vdata/HackTerminals/fu_server.txt" : "fu_server.txt"
		"vdata/HackTerminals/fu_terminals.txt" : "fu_terminals.txt"
		"vdata/HackTerminals/fu_terminals2.txt" : "fu_terminals2.txt"
		"vdata/HackTerminals/haven_pc.txt" : "haven_pc.txt"
		"vdata/HackTerminals/jeanette_laptop.txt" : "jeanette_laptop.txt"
		"vdata/HackTerminals/krime_computer.txt" : "krime_computer.txt"
		"vdata/HackTerminals/kilpatricks_computer.txt" : "kilpatricks_computer.txt"
		"vdata/HackTerminals/library_computer.txt" : "library_computer.txt"
		"vdata/HackTerminals/malcolm_computer.txt" : "malcolm_computer.txt"
		"vdata/HackTerminals/milligan_computer.txt" : "milligan_computer.txt"
		"vdata/HackTerminals/morgue_computer.txt" : "morgue_computer.txt"
		"vdata/HackTerminals/museum_computer.txt" : "museum_computer.txt"
		"vdata/HackTerminals/museum_computer_2.txt" : "museum_computer_2.txt"
		"vdata/HackTerminals/museum_computer_3.txt" : "museum_computer_3.txt"
		"vdata/HackTerminals/museum_computer_4.txt" : "museum_computer_4.txt"
		"vdata/HackTerminals/netcafe_computer.txt" : "netcafe_computer.txt"
		"vdata/HackTerminals/netcafe_computer_2.txt" : "netcafe_computer_2.txt"
		"vdata/HackTerminals/netcafe_computer_3.txt" : "netcafe_computer_3.txt"
		"vdata/HackTerminals/netcafe_computer_4.txt" : "netcafe_computer_4.txt"
		"vdata/HackTerminals/shortcut_computer.txt" : "shortcut_computer.txt"
		"vdata/HackTerminals/shrekhub1_terminal.txt" : "shrekhub1_terminal.txt"
		"vdata/HackTerminals/shrekhub2_terminal.txt" : "shrekhub2_terminal.txt"
		"vdata/HackTerminals/shrekhub3_metalop.txt" : "shrekhub3_metalop.txt"
		"vdata/HackTerminals/shrekhub3_metalsec.txt" : "shrekhub3_metalsec.txt"
		"vdata/HackTerminals/shrekhub4_terminal1.txt" : "shrekhub4_terminal1.txt"
		"vdata/HackTerminals/shrekhub4_terminal2.txt" : "shrekhub4_terminal2.txt"
		"vdata/HackTerminals/shrekhub4_terminal3.txt" : "shrekhub4_terminal3.txt"
		"vdata/HackTerminals/shrekhub4_terminal4.txt" : "shrekhub4_terminal4.txt"
		"vdata/HackTerminals/shrekhub4_terminal5.txt" : "shrekhub4_terminal5.txt"
		"vdata/HackTerminals/shrekhub4_terminal6.txt" : "shrekhub4_terminal6.txt"
		"vdata/HackTerminals/sinbin.txt" : "sinbin.txt"
		"vdata/HackTerminals/skyline_apt3.txt" : "skyline_apt3.txt"
		"vdata/HackTerminals/skyline_security.txt" : "skyline_security.txt"
		"vdata/HackTerminals/soc_int_hack.txt" : "soc_int_hack.txt"
		"vdata/HackTerminals/tawni_terminal.txt" : "tawni_terminal.txt"
		"vdata/HackTerminals/therese_pc.txt" : "therese_pc.txt"
		"vdata/HackTerminals/tutorial_computer.txt" : "tutorial_computer.txt"
		"vdata/HackTerminals/ventruetower2_terminal.txt" : "ventruetower2_terminal.txt"
		"vdata/HackTerminals/warrens2_computer.txt" : "warrens2_computer.txt"
	]
]

@BaseClass
= e_prop_hacking_2
[
	sep_hackadds(string) readonly: "------------------------------------"

	// other
	global_email(choices) : "Send Global Emails" : 0 : "Allow global-spreaded emails will send to this terminal [not tested]." = [ 0: "No" 1: "Yes" ]

	ss_start(float) : "S/S Start Time (?)" : "5.0" : "[VTMB] Unknown yet..."
	ss_delay(float) : "S/S Delay Time (?)" : "1.5" : "[VTMB] Unknown yet..."
	
	// outputs
	output OnTrigger0(void) : "Fired when trigger 0 activates."
	output OnTrigger1(void) : "Fired when trigger 1 activates."
	output OnTrigger2(void) : "Fired when trigger 2 activates."
	output OnTrigger3(void) : "Fired when trigger 3 activates."
	output OnTrigger4(void) : "Fired when trigger 4 activates."
	output OnTrigger5(void) : "Fired when trigger 5 activates."
	output OnTrigger6(void) : "Fired when trigger 6 activates."
	output OnTrigger7(void) : "Fired when trigger 7 activates."
]

@PointClass
base(
	Studiomodel,
	c_VEnableDisable,
	e_prop_hacking_1,
	VHackingBase,
	e_prop_hacking_2,
	o_VUsableExt,
	RenderFields
)
studioprop()
= prop_hacking :
	"[VTMB] A point entity that used as a hackable computer/terminal with useful information."
[
	// RF order fix
]




//===================================================================================================================
// prop_keypad [VTMB-specific]
//===================================================================================================================

@BaseClass
= e_prop_keypad
[
	model(studio) : "Keypad Model" : "models/scenery/furniture/alarmkeypad/alarmkeypad.mdl" : "Keypad's prop model. \nClick arrow key and scroll down if you want to use game's default model." =
	[
		"models/scenery/furniture/alarmkeypad/alarmkeypad.mdl" : "models/scenery/furniture/AlarmKeypad/AlarmKeypad.mdl"
	]
	sep_kpmain(string) readonly: "------------------------------------"

	passcode(string) : "Pass Code" : "1234" : "Pass code that unlock linked door."
	text_id(choices) : "Screen's Text ID" : "keypad example" : "An entry in 'vdata/hackterminals/prop_keypad.txt' that defines on-screen text header." =
	[
		"bloodbank" : "bloodbank"
		"fusynd" : "fusynd"
		"glaze" : "glaze"
		"hannahs" : "hannahs"
		"kamikazinet" : "kamikazinet"
		"museum_restricted" : "museum_restricted"
		"skyline_lootapt" : "skyline_lootapt"
		"keypad example" : "keypad example"
	]

	// outputs
	output OnCorrectPassword(void) : "Fired when entered the correct pass code."
	output OnIncorrectPassword(void) : "Fired when entered pass code is incorrect."
]

@PointClass
base (
	Studiomodel,
	c_VEnableDisable,
	e_prop_keypad,
	VHackingBase,
	o_VUsableExt,
	RenderFields
)
studioprop()
= prop_keypad :
	"[VTMB] Simply put - code lock."
[
	textrows(choices) : "Num of Text Rows" : 6 : "The number of text columns located on screen." = []
	textcolumns(choices) : "Num of Text Columns" : 20 : "The number of text columns located on screen." = []
	soundgroup(choices) : "Sound Group" : "keypad" : "The group of sounds relative to 'usable/computers/<group-name>/<action>.wav' that specifies certain action sounds." = []
	// RF order fix
]




//===================================================================================================================
// prop_haunted [VTMB-specific]
//===================================================================================================================

@BaseClass
= e_prop_haunted
[
	model(studio) : "Prop Model" : "models/scenery/furniture/vase/vaseb_demon.mdl" : "Haunted prop model. \nClick arrow button and scroll down if you want to use one of original maps' models." =
	[
		"models/scenery/furniture/kitchen/chef_knife_demon.mdl" : "models/scenery/furniture/kitchen/chef_knife_demon.mdl"
		"models/scenery/furniture/kitchen/cleaver_demon.mdl" : "models/scenery/furniture/kitchen/cleaver_demon.mdl"
		"models/scenery/furniture/kitchen/pana.mdl" : "models/scenery/furniture/kitchen/pana.mdl"
		"models/scenery/furniture/kitchen/panb.mdl" : "models/scenery/furniture/kitchen/panb.mdl"
		"models/scenery/furniture/kitchen/panc.mdl" : "models/scenery/furniture/kitchen/panc.mdl"
		"models/scenery/furniture/kitchen/pota_demon.mdl" : "models/scenery/furniture/kitchen/pota_demon.mdl"
		"models/scenery/furniture/kitchen/potb_demon.mdl" : "models/scenery/furniture/kitchen/potb_demon.mdl"
		"models/scenery/furniture/lampfancyhotel/lampfancyhotel_2demon.mdl" : "models/scenery/furniture/lampfancyhotel/lampfancyhotel_2demon.mdl"
		"models/scenery/furniture/lampfancyhotel/lampfancyhotel_demon.mdl" : "models/scenery/furniture/lampfancyhotel/lampfancyhotel_demon.mdl"
		"models/scenery/furniture/microwave/microwave_demon.mdl" : "models/scenery/furniture/microwave/microwave_demon.mdl"
		"models/scenery/furniture/Paintings/painting1_demon.mdl" : "models/scenery/furniture/Paintings/painting1_demon.mdl"
		"models/scenery/furniture/Paintings/picture2_demon.mdl" : "models/scenery/furniture/Paintings/picture2_demon.mdl"
		"models/scenery/furniture/Paintings/picture_demon.mdl" : "models/scenery/furniture/Paintings/picture_demon.mdl"
		"models/scenery/furniture/phone_stylish/phone3.mdl" : "models/scenery/furniture/phone_stylish/phone3.mdl"
		"models/scenery/furniture/TiffanyLamp/tiffanylamp_demon.mdl" : "models/scenery/furniture/TiffanyLamp/tiffanylamp_demon.mdl"
		"models/scenery/furniture/tzimisce_furiture/tzthing.mdl" : "models/scenery/furniture/tzimisce_furiture/tzthing.mdl"
		"models/scenery/furniture/vase/vasea_demon.mdl" : "models/scenery/furniture/vase/vasea_demon.mdl"
		"models/scenery/furniture/vase/vaseb_demon.mdl" : "models/scenery/furniture/vase/vaseb_demon.mdl"
		"models/scenery/misc/gio_spirit/gio_spirit.mdl" : "models/scenery/misc/gio_spirit/gio_spirit.mdl"
		"models/scenery/misc/paint_bucket_brush/paint_bucket2_demon.mdl" : "models/scenery/misc/paint_bucket_brush/paint_bucket2_demon.mdl"
		"models/scenery/misc/platters/platter_golda_demon.mdl" : "models/scenery/misc/platters/platter_golda_demon.mdl"
		"models/scenery/misc/rivet/rivet.mdl" : "models/scenery/misc/rivet/rivet.mdl"
		"models/scenery/misc/servicebell/servicebell_demon.mdl" : "models/scenery/misc/servicebell/servicebell_demon.mdl"
		"models/scenery/misc/toolboxes/toolbox_b_demon.mdl" : "models/scenery/misc/toolboxes/toolbox_b_demon.mdl"
		"models/scenery/pipes/valve_wheel/valve_wheel.mdl" : "models/scenery/pipes/valve_wheel/valve_wheel.mdl"
		"models/scenery/structural/chandelier/chandelier2_2demon.mdl" : "models/scenery/structural/chandelier/chandelier2_2demon.mdl"
		"models/gibs/hgibslarm_prop.mdl" : "models/gibs/hgibslarm_prop.mdl"
		"models/gibs/hgibslleg_prop.mdl" : "models/gibs/hgibslleg_prop.mdl"
		"models/gibs/hgibsrarm_prop.mdl" : "models/gibs/hgibsrarm_prop.mdl"
		"models/gibs/hgibsskull_prop.mdl" : "models/gibs/hgibsskull_prop.mdl"
		"models/gibs/hgibstorso_prop.mdl" : "models/gibs/hgibstorso_prop.mdl"
	]
	sep_hpfling(string) readonly: "------------------------------------"

	// fling values
	fling_dest(vecline) : "Fling Destination" :  : "The world's X/Y/Z-origin at which the prop will be flinged when player near it."
	target_player(choices) : "Fling to Player" : 0 : "If enabled, the player will be the fling target for this prop." = [ 0: "No" 1: "Yes" ]
	fling_particle(vparticle) : "Fling Particle" : "particles/ethereal_fling_emitter.txt" : "The particle script that spawns the fling effect particle. \nClick arrow button and scroll down if you want to use one of original maps' particles." =
	[
	// ParticleList:
		"particles/bloodcreature_emitter.txt" : "particles/BloodCreature_emitter.txt"
		"particles/ethereal_fling_emitter.txt" : "particles/Ethereal_Fling_emitter.txt"
		"particles/rivet_pop_emitter.txt" : "particles/Rivet_Pop_emitter.txt"
		"particles/sparks_big_emitter.txt" : "particles/Sparks_Big_emitter.txt"
	]
	fling_sound(sound) : "Fling Sound" : "Area/Santa_Monica/Ocean_House/Ethereal_Fling.wav" : "Sound played when the prop flings. \nClick arrow button and scroll down if you want to use one of original maps' sounds." =
	[
		"Area/Santa_Monica/Ocean_House/Ethereal_Fling.wav" : "Area/Santa_Monica/Ocean_House/Ethereal_Fling.wav"
		"Area/Santa_Monica/Ocean_House/Rivet_Pop1.wav" : "Area/Santa_Monica/Ocean_House/Rivet_Pop1.wav"
		"Area/Santa_Monica/Ocean_House/Rivet_Pop2.wav" : "Area/Santa_Monica/Ocean_House/Rivet_Pop2.wav"
		"Area/Santa_Monica/Ocean_House/Rivet_Pop3.wav" : "Area/Santa_Monica/Ocean_House/Rivet_Pop3.wav"
		"Character/monster/ghost/ghost_laugh1.wav" : "Character/monster/ghost/ghost_laugh1.wav"
		"Character/monster/ghost/ghost_protest1.wav" : "Character/monster/ghost/ghost_protest1.wav"
		"Character/monster/ghost/ghost_scream1.wav" : "Character/monster/ghost/ghost_scream1.wav"
		"Character/monster/ghost/ghost_scream2.wav" : "Character/monster/ghost/ghost_scream2.wav"
		"Character/monster/ghost/ghost_scream3.wav" : "Character/monster/ghost/ghost_scream3.wav"
		"Character/monster/ghost/ghost_sigh1.wav" : "Character/monster/ghost/ghost_sigh1.wav"
		"Character/monster/ghost/ghost_stand_back.wav" : "Character/monster/ghost/ghost_stand_back.wav"
	]
	velocity(integer) : "Fling Velocity" : 800 : "This is the speed which the object will fling to, in units per second."

	sep_hpshk(string) readonly: "------------------------------------"

	// shake values
	min_shake(integer) : "Min Shake Space" : 2 : "Minimum distance that prop will shake when player is near it, in units."
	max_shake(integer) : "Max Shake Space" : 5 : "Maximum distance that prop will shake when player is near it, in units."
	shake_sound(sound) : "Shake Sound" : "Area/Santa_Monica/Ocean_House/Ethereal_Shake.wav" : "Sound played when the prop shakes. \nClick arrow button and scroll down if you want to use one of original maps' sounds." =
	[
		"Area/Santa_Monica/Ocean_House/Ethereal_Shake.wav" : "Area/Santa_Monica/Ocean_House/Ethereal_Shake.wav"
		"Area/Santa_Monica/Ocean_House/Shakes/BellShake.wav" : "Area/Santa_Monica/Ocean_House/Shakes/BellShake.wav"
		"Area/Santa_Monica/Ocean_House/Shakes/PhoneShake.wav" : "Area/Santa_Monica/Ocean_House/Shakes/PhoneShake.wav"
		"Area/Santa_Monica/Ocean_House/Shakes/Shake1.wav" : "Area/Santa_Monica/Ocean_House/Shakes/Shake1.wav"
		"Area/Santa_Monica/Ocean_House/Shakes/Shake2.wav" : "Area/Santa_Monica/Ocean_House/Shakes/Shake2.wav"
		"Area/Santa_Monica/Ocean_House/Shakes/Shake3.wav" : "Area/Santa_Monica/Ocean_House/Shakes/Shake3.wav"
		"Area/Santa_Monica/Ocean_House/Shakes/Shake4.wav" : "Area/Santa_Monica/Ocean_House/Shakes/Shake4.wav"
		"Area/Santa_Monica/Ocean_House/Shakes/Shake5.wav" : "Area/Santa_Monica/Ocean_House/Shakes/Shake5.wav"
	]
	shake_particle(vparticle) : "Shake Particle" : "particles/Ethereal_Shake_Emitter.txt" : "The particle script that spawns the shake effect particle. \nClick arrow button and scroll down if you want to use original maps' particles." =
	[
	// ParticleList:
		"particles/Ethereal_Shake_Emitter.txt" : "particles/Ethereal_Shake_Emitter.txt"
	]
	stop_shake_fadeout(float) : "Shake Fade-out Time" : "1.2" : "The time required for full stopping of shaking, in seconds."

	sep_hpspn(string) readonly: "------------------------------------"

	// spin values
	spin_pitch_scale(float) : "Spin Pitch Scale" : "1.0" : "Override spin animation at Z axis."
	spin_yaw_scale(float) : "Spin Yaw Scale" : "1.0" : "Override spin animation at X axis."
	spin_roll_scale(float) : "Spin Roll Scale" : "1.0" : "Override spin animation at Y axis."

	sep_hpadds1(string) readonly: "------------------------------------"

	// physics
	damage(integer) : "Damage Points" : 10 : "Amount of health taken away when the prop attacks player."
	health(integer) : "Prop's Strength" : 0 : "Number of points of damage to take before breaking this prop. \n'0' = not breakable."
	break_sound(sound) : "Break Sound" : "Surfaces/Ceramic/Break.wav" : "Sound played when this prop breaks after flinging. \nClick arrow button and scroll down if you want to use one of original maps' sounds." =
	[
		"Area/Santa_Monica/Ocean_House/Shakes/BellBreak.wav" : "Area/Santa_Monica/Ocean_House/Shakes/BellBreak.wav"
		"Area/Santa_Monica/Ocean_House/Shakes/PhoneBreak.wav" : "Area/Santa_Monica/Ocean_House/Shakes/PhoneBreak.wav"
		"Surfaces/Ceramic/Break.wav" : "Surfaces/Ceramic/Break.wav"
	]

	sep_hpadds2(string) readonly: "------------------------------------"

	// animations
	demo_sequence(choices) : "Demo Animation" : "None" : "[VTMB] Default animation sequence for the model to be playing after spawning." = [ "None":"None" "spin":"spin" ]
	npc_transparent(choices) : "NPC-Transparent" : 1 : "[VTMB] NPCs are transparent for this object [not tested]." = [ 0 : "No" 1 : "Yes" ]

	// inputs
	input FlingNow(void) : "Fling right now."
	input StopShaking(void) : "Stop shaking."
	input StartShaking(void) : "Start shaking."
	input ShakeAndFling(void) : "Start shake and fling."
	
	// outputs
	output OnFling(void) : "Fired when object flinging."
	output OnBeginShake(void) : "Fired when object begins to shake."
	output OnEndShake(void) : "Fired when object ends to shake."
]

@PointClass
base (
	Studiomodel,
	e_prop_haunted,
	o_VBreakable,
	RenderFields
)
halfgridsnap
studioprop()
= prop_haunted :
	"[VTMB] Haunted prop. \nA point entity that responds to the player movement and flings itself to damage him."
[
	// RF Order fix
]



//===================================================================================================================
// prop_largehull_ignore [VTMB-specific]
//===================================================================================================================

@PointClass
base (
	Studiomodel,
	o_VBreakable
)
studioprop()
= prop_largehull_ignore :
	"[VTMB] Prop with unknown action [not tested fully]. \nFound at the 'observatory' and 'pillar2'..."
[
	sep_lhiphys(string) readonly: "------------------------------------"

	solid(choices) : "Collisions" : 6 : "Model's collision type." =
	[
		0: "Not Solid"
		2: "Use Bounding Box"
		6: "Use VPhysics"
	]
]




//===================================================================================================================
// prop_mover [VTMB-specific]
//===================================================================================================================

@BaseClass
= e_prop_mover
[
	model(studio) : "Prop Model" :  : "Mover prop model. \nClick arrow button and scroll down if you want to use one of original maps' models." =
	[
		"models/items/CarStereo/Ground/CarStereo.mdl" : "models/items/CarStereo/Ground/CarStereo.mdl"
		"models/scenery/furniture/DiningTableOldBeachHouse/DiningTableOldBeachHouse.mdl" : "models/scenery/furniture/DiningTableOldBeachHouse/DiningTableOldBeachHouse.mdl"
		"models/scenery/misc/elevator/cage.mdl" : "models/scenery/misc/elevator/cage.mdl"
		"models/scenery/structural/warehouse/small_pallet.mdl" : "models/scenery/structural/warehouse/small_pallet.mdl"
		"models/scenery/vehicles/forklift/forklift_noWheels.mdl" : "models/scenery/vehicles/forklift/forklift_noWheels.mdl"
	]
	sep_movemov(string) readonly: "------------------------------------"

	move_dest(vecline) : "Move Destination" :  : "This entity's move end position (world's X/Y/Z origin)."
	move_speed(integer) : "Move Speed (units/sec)" : 45 : "Speed of entity's moving, in units per second."

	sep_moverot(string) readonly: "------------------------------------"

	rot_axis(choices) : "Rotation Axis" : 1 : "Defines prop rotation axis [not tested]." = 
	[
		0 : "Y"
		1 : "Z"
		2 : "X"
	]
	rot_dist(integer) : "Rotation Angle" : 90 : "Max allowed rotation angle around given axis [not tested]."
	rot_speed(integer) : "Rotation Speed" : 45 : "Speed of rotation moving [not tested]."

	sep_moveadds(string) readonly: "------------------------------------"

	solid(choices) : "Collisions" : 6 =
	[
		0: "Not Solid"
		2: "Use Bounding Box"
		6: "Use VPhysics"
	]
	demo_sequence(choices) : "Demo Animation" : "None" : "Default animation sequence for the model to be playing after spawning." = [ "None":"None"  "idle":"Idle" ]
	npc_transparent(choices) : "NPC-Transparent" : 1 : "NPCs are transparent for this object [not tested]." = [ 0 : "No" 1 : "Yes" ]
	use_pref(choices) : "Use Preference" : 0 : "[VTMB] Unknown yet..." = [ 0: "No" 1: "Yes" ]

	// inputs
	input MoveToDest(void) : "[VTMB] Moves object to its destination position [not tested]."
	input MoveToHome(void) : "[VTMB] Moves object to its home position [not tested]."
	input RotateToDest(void) : "[VTMB] Rotates object to its destination position [not tested]."
	input RotateToHome(void) : "[VTMB] Rotates object to its home position [not tested]."

	// outputs
	output OnAngularMoveDone(void) : "Fires input when object done any angular moving."
	output OnLinearMoveDone(void) : "Fires input when object done any linear moving."
]

@PointClass
base (
	Studiomodel,
	e_prop_mover,
	RenderFields
)
halfgridsnap
studioprop()
= prop_mover :
	"[VTMB] Prop that moves various objects [-? not known properly yet]. \nFound at the 'beachhouse' map."
[
	// RF order fix
]



//===================================================================================================================
// prop_radio [VTMB-specific]
//===================================================================================================================

@BaseClass
= e_prop_radio
[
	model(studio) : "Model" : "models/scenery/misc/GehtoBlaster1/GehtoBlaster1.mdl" : "Radio prop model. \nClick arrow key and scroll down if you want to use original game's models." =
	[
		"models/scenery/misc/GehtoBlaster1/GehtoBlaster1.mdl" : "models/scenery/Misc/GehtoBlaster1/GehtoBlaster1.mdl"
		"models/scenery/furniture/Stereo/Stereo.mdl" : "models/scenery/Furniture/Stereo/Stereo.mdl"
	]
	sep_radmain(string) readonly: "------------------------------------"

	volume(float) : "Volume (1 = max)" : "0.8" : "The volume of playing sound."
	radius(float) : "Hearing Radius" : 800 : "Maximum radio hearing radius, in units."

	spawnflags(flags) = 
	[
		1 : "Start Turned On" : 0
	]

	//inputs
	input Activate(void) : "Activate radio."
	input Deactivate(void) : "Dectivate radio."
	input SetSoundOverrideEnt(string) : "Overrides specified entity to be used as a new sound source."
]

@PointClass
base (
	Studiomodel,
	e_prop_radio,
	RenderFields
)
studioprop()
sphere(radius)
= prop_radio :
	"[VTMB] The storyline-dependent radio. \n\nIf you want the custom tracks to be playable, put it as 'sound/radio/*.mp3' files and use 'vdata/system/radio_data.txt' script to define tracks and story-line dependencies."
[
	// RF order fix
]





//===================================================================================================================
// prop_sign [VTMB-specific]
//===================================================================================================================

@BaseClass
= e_prop_sign
[
	model(studio) : "Sign Model" : "models/items/Newspaper/Ground/Newspaper.mdl" : "Sign's world model." =
	[
		"models/items/ancient_text/Ground/ancient_text.mdl" : "models/items/ancient_text/Ground/ancient_text.mdl"
		"models/items/ChildsDrawing/ChildsDrawing.mdl" : "models/items/ChildsDrawing/ChildsDrawing.mdl"
		"models/items/Clipboard/Ground/Clipboard.mdl" : "models/items/Clipboard/Ground/Clipboard.mdl"
		"models/items/LinedPaper/Ground/LinedPaper.mdl" : "models/items/LinedPaper/Ground/LinedPaper.mdl"
		"models/items/nameplate/ground/nameplate.mdl" : "models/items/nameplate/ground/nameplate.mdl"
		"models/items/Newspaper/Ground/Newspaper.mdl" : "models/items/Newspaper/Ground/Newspaper.mdl"
		"models/items/Newspaper/Ground/Newspaper_burned.mdl" : "models/items/Newspaper/Ground/Newspaper_burned.mdl"
		"models/scenery/misc/busstop/la_map.mdl" : "models/scenery/misc/busstop/la_map.mdl"
		"models/scenery/misc/busstop/santamonica_map.mdl" : "models/scenery/misc/busstop/santamonica_map.mdl"
		"models/scenery/misc/monogram/monogram.mdl" : "models/scenery/misc/monogram/monogram.mdl"
		"models/scenery/structural/chinatown/busstopsign.mdl" : "models/scenery/structural/chinatown/busstopsign.mdl"
		"models/scenery/structural/hollywood/busstopsign.mdl" : "models/scenery/structural/hollywood/busstopsign.mdl"
		"models/scenery/structural/la/busstopsign.mdl" : "models/scenery/structural/la/busstopsign.mdl"
		"models/scenery/structural/santamonica/sanbusstop.mdl" : "models/scenery/structural/santamonica/sanbusstop.mdl"
		"models/scenery/structural/smsewer/sewermap.mdl" : "models/scenery/structural/smsewer/sewermap.mdl"
	]

	sep_signmain(string) readonly: "------------------------------------"

	definition_file(vsign) : "Sign Definition File" : "vdata/signs/Newspaper_All.txt" : "Script containing sign definitions. \n"+
													  "This is 'vdata/signs/<name>.txt' related file. \nYou can also specify a custom scripts." =
	[
	// SignList:
		"vdata/Signs/Childs_Drawing.txt" : "Childs_Drawing.txt"
		"vdata/Signs/Chinatown_A.txt" : "Chinatown_A.txt"
		"vdata/Signs/Chinatown_B.txt" : "Chinatown_B.txt"
		"vdata/Signs/Chinatown_C.txt" : "Chinatown_C.txt"
		"vdata/Signs/Chinatown_D.txt" : "Chinatown_D.txt"
		"vdata/Signs/ChinatownSewer1.txt" : "ChinatownSewer1.txt"
		"vdata/Signs/Clinic_Phil_Note.txt" : "Clinic_Phil_Note.txt"
		"vdata/Signs/DowntownSewer1.txt" : "DowntownSewer1.txt"
		"vdata/Signs/DowntownSewer2.txt" : "DowntownSewer2.txt"
		"vdata/Signs/DowntownSewer3.txt" : "DowntownSewer3.txt"
		"vdata/Signs/DowntownSewer4.txt" : "DowntownSewer4.txt"
		"vdata/Signs/Empire_Note.txt" : "Empire_Note.txt"
		"vdata/Signs/Flynns_Password.txt" : "Flynns_Password.txt"
		"vdata/Signs/Hollywood_A.txt" : "Hollywood_A.txt"
		"vdata/Signs/Hollywood_B.txt" : "Hollywood_B.txt"
		"vdata/Signs/Hollywood_C.txt" : "Hollywood_C.txt"
		"vdata/Signs/HollywoodSewer1.txt" : "HollywoodSewer1.txt"
		"vdata/Signs/HollywoodSewer2.txt" : "HollywoodSewer2.txt"
		"vdata/Signs/LA_A.txt" : "LA_A.txt"
		"vdata/Signs/LA_B.txt" : "LA_B.txt"
		"vdata/Signs/LA_C.txt" : "LA_C.txt"
		"vdata/Signs/LA_D.txt" : "LA_D.txt"
		"vdata/Signs/LA_E.txt" : "LA_E.txt"
		"vdata/Signs/LA_F.txt" : "LA_F.txt"
		"vdata/Signs/Malcolm_Password_Note.txt" : "Malcolm_Password_Note.txt"
		"vdata/Signs/MalkMansion_Clue_1.txt" : "MalkMansion_Clue_1.txt"
		"vdata/Signs/MalkMansion_Clue_2.txt" : "MalkMansion_Clue_2.txt"
		"vdata/Signs/Mercurios_Note.txt" : "Mercurios_Note.txt"
		"vdata/Signs/Museum_Note.txt"  :  "Museum_Note.txt"
		"vdata/Signs/Museum_Note_2.txt" : "Museum_Note_2.txt"
		"vdata/Signs/Museum_Note_3.txt" : "Museum_Note_3.txt"
		"vdata/Signs/Newspaper_All.txt" : "Newspaper_All.txt"
		"vdata/Signs/Newspaper_Epidemic.txt" : "Newspaper_Epidemic.txt"
		"vdata/Signs/Newspaper_OH_1.txt" : "Newspaper_OH_1.txt"
		"vdata/Signs/Newspaper_OH_2.txt" : "Newspaper_OH_2.txt"
		"vdata/Signs/Newspaper_OH_3.txt" : "Newspaper_OH_3.txt"
		"vdata/Signs/Newspaper_OH_4.txt" : "Newspaper_OH_4.txt"
		"vdata/Signs/Newspaper_OH_5.txt" : "Newspaper_OH_5.txt"
		"vdata/Signs/Newspaper_OH_6.txt" : "Newspaper_OH_6.txt"
		"vdata/Signs/Newspaper_OH_7.txt" : "Newspaper_OH_7.txt"
		"vdata/Signs/Newspaper_Serial_Killer.txt" : "Newspaper_Serial_Killer.txt"
		"vdata/Signs/Newspaper_Tawni.txt" : "Newspaper_Tawni.txt"
		"vdata/Signs/Newspaper_War_1.txt" : "Newspaper_War_1.txt"
		"vdata/Signs/Newspaper_War_2.txt" : "Newspaper_War_2.txt"
		"vdata/signs/Psych_Report.txt" : "Psych_Report.txt"
		"vdata/Signs/Regents_Invitation.txt" : "Regents_Invitation.txt"
		"vdata/Signs/SantaMonica_A.txt" : "SantaMonica_A.txt"
		"vdata/Signs/SantaMonica_B.txt" : "SantaMonica_B.txt"
		"vdata/Signs/SantaMonica_C.txt" : "SantaMonica_C.txt"
		"vdata/Signs/SantaMonicaSewer1.txt" : "SantaMonicaSewer1.txt"
		"vdata/Signs/SantaMonicaSewer2.txt" : "SantaMonicaSewer2.txt"
		"vdata/Signs/Sarcophagus.txt" : "Sarcophagus.txt"
		"vdata/Signs/Shub4_Name1.txt" : "Shub4_Name1.txt"
		"vdata/Signs/Shub4_Name2.txt" : "Shub4_Name2.txt"
		"vdata/Signs/Shub4_Name3.txt" : "Shub4_Name3.txt"
		"vdata/Signs/Shub4_Name4.txt" : "Shub4_Name4.txt"
		"vdata/Signs/Shub4_Name5.txt" : "Shub4_Name5.txt"
		"vdata/Signs/Sinbin_Note.txt" : "Sinbin_Note.txt"
		"vdata/Signs/Tutorial_Note.txt" : "Tutorial_Note.txt"
	]

	use_icon(choices) : "Use Icon" : 18 : "An icon that indicates when player can be able to use this entity and it is openable." =
	[
		0  : "None"
		18 : "Note"
		40 : "Clipboard"
		41 : "Printed Papers"
		56 : "Bus Stop Map"
		57 : "Sewer Lines map"
	]
	pause(choices) : "Pause When Reading" : 0 : "Pauses game process when sign shows on-screen." = [ 0 : "No" 1 : "Yes" ]

	sep_signadds(string) readonly: "------------------------------------"

	demo_sequence(choices) : "Demo Animation" : "None" : "[VTMB] Default animation sequence for the model to be playing after spawning." = [ "None":"None"  "idle":"Idle" ]
	npc_transparent(choices) : "NPC-Transparent" : 1 : "[VTMB] NPCs are transparent for this object [not tested]." = [ 0 : "No" 1 : "Yes" ]

	// inputs
	input ChangeFile(string) : "Change sign's definition file by specified below."

	// outputs
	output OnReadBegin(void) : "Fired when player begins to read this sign."
	output OnReadEnd(void) : "Fired when player ends reading of this sign."
	output OnPressed(void) : "[hardly ever] Fired when player press this sign (e.g. nosferatu's sewer map)."
]

@PointClass
base (
	Studiomodel,
	e_prop_sign,
	o_VUsableExt,
	RenderFields
)
studioprop()
= prop_sign :
	"[VTMB] An entity that dumps the misc signs (like hints and tables) on screen overlay."
[
	// RF order fix
]



//===================================================================================================================
// game_sign [VTMB-specific]
//===================================================================================================================

@PointClass
base (
	Targetname,
	o_VUsableExt
)
iconsprite("editor/game_text.vmt")
= game_sign :
	"[VTMB] An entity that dumps the misc text signs (like hints and tables) on screen overlay. \nOriginally mainly used on the Tutorial mission."
[
	sep_signmain(string) readonly: "------------------------------------"
	
	definition_file(vsign) : "Sign Definition File" : "vdata/signs/start_game_popup.txt" : "Script containing sign definitions. \n"+
													  "This is 'vdata/signs/<name>.txt' related file. \nYou can also specify a custom scripts." =
	[
	// SignList:
		"vdata/signs/start_game_popup.txt" : "start_game_popup.txt"
		"vdata/signs/tutorial_popup_blood_buff1.txt" : "tutorial_popup_blood_buff1.txt"
		"vdata/signs/tutorial_popup_bloodpool1.txt" : "tutorial_popup_bloodpool1.txt"
		"vdata/signs/tutorial_popup_brujahdisc1.txt" : "tutorial_popup_brujahdisc1.txt"
		"vdata/signs/tutorial_popup_celerity1.txt" : "tutorial_popup_celerity1.txt"
		"vdata/signs/tutorial_popup_celerity2.txt" : "tutorial_popup_celerity2.txt"
		"vdata/signs/tutorial_popup_computers1.txt" : "tutorial_popup_computers1.txt"
		"vdata/signs/tutorial_popup_computers2.txt" : "tutorial_popup_computers2.txt"
		"vdata/signs/tutorial_popup_containers1.txt" : "tutorial_popup_containers1.txt"
		"vdata/signs/tutorial_popup_containers2.txt" : "tutorial_popup_containers2.txt"
		"vdata/signs/tutorial_popup_detected_1.txt" : "tutorial_popup_detected_1.txt"
		"vdata/signs/tutorial_popup_dialogue_dementate.txt" : "tutorial_popup_dialogue_dementate.txt"
		"vdata/signs/tutorial_popup_dialogue_dominate.txt" : "tutorial_popup_dialogue_dominate.txt"
		"vdata/signs/tutorial_popup_dialogue_feats.txt" : "tutorial_popup_dialogue_feats.txt"
		"vdata/signs/tutorial_popup_dialogue_nosferatu.txt" : "tutorial_popup_dialogue_nosferatu.txt"
		"vdata/signs/tutorial_popup_dialogue_presence.txt" : "tutorial_popup_dialogue_presence.txt"
		"vdata/signs/tutorial_popup_disciplines1.txt" : "tutorial_popup_disciplines1.txt"
		"vdata/signs/tutorial_popup_drain_pool_1.txt" : "tutorial_popup_drain_pool_1.txt"
		"vdata/signs/tutorial_popup_experience_1.txt" : "tutorial_popup_experience_1.txt"
		"vdata/signs/tutorial_popup_feed1.txt" : "tutorial_popup_feed1.txt"
		"vdata/signs/tutorial_popup_feed2.txt" : "tutorial_popup_feed2.txt"
		"vdata/signs/tutorial_popup_feed_fail_1.txt" : "tutorial_popup_feed_fail_1.txt"
		"vdata/signs/tutorial_popup_frenzy1.txt" : "tutorial_popup_frenzy1.txt"
		"vdata/signs/tutorial_popup_frenzy2.txt" : "tutorial_popup_frenzy2.txt"
		"vdata/signs/tutorial_popup_health1.txt" : "tutorial_popup_health1.txt"
		"vdata/signs/tutorial_popup_health2.txt" : "tutorial_popup_health2.txt"
		"vdata/signs/tutorial_popup_inspection1.txt" : "tutorial_popup_inspection1.txt"
		"vdata/signs/tutorial_popup_inventory1.txt" : "tutorial_popup_inventory1.txt"
		"vdata/signs/tutorial_popup_jump1.txt" : "tutorial_popup_jump1.txt"
		"vdata/signs/tutorial_popup_lockpicking1.txt" : "tutorial_popup_lockpicking1.txt"
		"vdata/signs/tutorial_popup_lockpicking2.txt" : "tutorial_popup_lockpicking2.txt"
		"vdata/signs/tutorial_popup_masquerade1.txt" : "tutorial_popup_masquerade1.txt"
		"vdata/signs/tutorial_popup_masquerade2.txt" : "tutorial_popup_masquerade2.txt"
		"vdata/signs/tutorial_popup_masquerade3.txt" : "tutorial_popup_masquerade3.txt"
		"vdata/signs/tutorial_popup_moving1.txt" : "tutorial_popup_moving1.txt"
		"vdata/signs/tutorial_popup_note1.txt" : "tutorial_popup_note1.txt"
		"vdata/signs/tutorial_popup_physics1.txt" : "tutorial_popup_physics1.txt"
		"vdata/signs/tutorial_popup_physics2.txt" : "tutorial_popup_physics2.txt"
		"vdata/signs/tutorial_popup_pickup_1.txt" : "tutorial_popup_pickup_1.txt"
		"vdata/signs/tutorial_popup_potence1.txt" : "tutorial_popup_potence1.txt"
		"vdata/signs/tutorial_popup_potence2.txt" : "tutorial_popup_potence2.txt"
		"vdata/signs/tutorial_popup_presence1.txt" : "tutorial_popup_presence1.txt"
		"vdata/signs/tutorial_popup_presence2.txt" : "tutorial_popup_presence2.txt"
		"vdata/signs/tutorial_popup_questlog1.txt" : "tutorial_popup_questlog1.txt"
		"vdata/signs/tutorial_popup_rangedcombat1.txt" : "tutorial_popup_rangedcombat1.txt"
		"vdata/signs/tutorial_popup_rangedcombat2.txt" : "tutorial_popup_rangedcombat2.txt"
		"vdata/signs/tutorial_popup_rats1.txt" : "tutorial_popup_rats1.txt"
		"vdata/signs/tutorial_popup_rats2.txt" : "tutorial_popup_rats2.txt"
		"vdata/signs/tutorial_popup_sneaking1.txt" : "tutorial_popup_sneaking1.txt"
		"vdata/signs/tutorial_popup_sneaking2.txt" : "tutorial_popup_sneaking2.txt"
		"vdata/signs/tutorial_popup_stealthkill1.txt" : "tutorial_popup_stealthkill1.txt"
		"vdata/signs/tutorial_popup_thirty_eight1.txt" : "tutorial_popup_thirty_eight1.txt"
		"vdata/signs/tutorial_popup_tireiron1.txt" : "tutorial_popup_tireiron1.txt"
		"vdata/signs/tutorial_popup_unarmedcombat1.txt" : "tutorial_popup_unarmedcombat1.txt"
		"vdata/signs/tutorial_popup_unarmedcombat2.txt" : "tutorial_popup_unarmedcombat2.txt"
		"vdata/signs/tutorial_popup_use1.txt" : "tutorial_popup_use1.txt"
		"vdata/signs/tutorial_popup_weapons1.txt" : "tutorial_popup_weapons1.txt"
		"vdata/signs/tutorial_popup_61.txt" : "tutorial_popup_61.txt"
		"vdata/signs/tutorial_popup_62.txt" : "tutorial_popup_62.txt"
		"vdata/signs/tutorial_popup_63.txt" : "tutorial_popup_63.txt"
		"vdata/signs/tutorial_popup_64.txt" : "tutorial_popup_64.txt"
	]

	sep_signadds(string) readonly: "------------------------------------"
	
	fade_in(float) : "Fade-In Time (secs)" : "0.5" : "Fade-in effect when sign appears, in seconds."
	fade_out(float) : "Fade-Out Time (secs)" : "0.5" : "Fade-out effect when sign closes, in seconds."
	pause(choices) : "Pause When Reading" : 1 : "Pauses game process when sign shows on-screen." = [ 0 : "No" 1 : "Yes" ]

	spawnflags(flags) =
	[
		1: "Flag 1 (unknown yet)" : 1
		4: "Flag 4 (unknown yet)" : 1
	]

	// inputs
	input ChangeFile(string) : "Changes sign definition file."
	input OpenWindow(void) : "Opens sign window."
	input CloseWindow(void) : "Closes sign window."
]






//===================================================================================================================
// prop_slashable [VTMB-specific]
//===================================================================================================================

@BaseClass
= e_prop_slashable
[
	model(studio) : "Model" : "models/scenery/furniture/Wall_Art/frame.mdl" : "Slashable prop model." =
	[
		"models/scenery/furniture/Wall_Art/frame.mdl" : "models/scenery/furniture/Wall_Art/frame.mdl"
	]
	sep_slshmain(string) readonly: "------------------------------------"

	damaged_skin(integer) : "Damaged Skin" : 1 : "When prop damaged, it's model will turn into skin specified here."
	health(float) : "Prop's Strength" : 1 : "Number of points of damage to take before slashing. \n0 = not slashable."

	sep_slshadds(string) readonly: "------------------------------------"

	demo_sequence(choices) : "Demo Animation" : "None" : "Default animation sequence for the model to be playing after spawning." = [ "None":"None"  "idle":"Idle" ]
	npc_transparent(choices) : "NPC-Transparent" : 1 : "NPCs are transparent for this object [not tested]." = [ 0 : "No" 1 : "Yes" ]

	// Outputs
	output OnSlashed(void) : "Fired when this prop damaged."
]

@PointClass
base (
	Studiomodel,
	e_prop_slashable,
	RenderFields
)
studioprop()
= prop_slashable :
	"[VTMB] A prop that may be slashed (e.g. Art gallery pictures)."
[
	// RF order fix
]





//===================================================================================================================
// prop_switch [VTMB-specific]
//===================================================================================================================

@BaseClass
= e_prop_switch
[
	model(studio) : "Switch Model" : "models/scenery/structural/switches/switch.mdl" : "Switch's prop model. \nClick arrow button and scroll down if you want to use one of game's default model." =
	[
		"models/scenery/furniture/gio_torch/skulltorch_lever.mdl" : "models/scenery/furniture/gio_torch/skulltorch_lever.mdl"
		"models/scenery/furniture/phonograph/phonograph.mdl" : "models/scenery/furniture/phonograph/phonograph.mdl"
		"models/scenery/furniture/sarcophagus/sarcophagus.mdl" : "models/scenery/furniture/sarcophagus/sarcophagus.mdl"
		"models/scenery/misc/curcuitbreaker/curcuitbreaker.mdl" : "models/scenery/misc/curcuitbreaker/curcuitbreaker.mdl"
		"models/scenery/misc/lever/lever.mdl" : "models/scenery/misc/lever/lever.mdl"
		"models/scenery/structural/controlpanel/switch.mdl" : "models/scenery/structural/controlpanel/switch.mdl"
		"models/scenery/structural/dane/crane_release.mdl" : "models/scenery/structural/dane/crane_release.mdl"
		"models/scenery/structural/electrical/breakerbox_switch.mdl" : "models/scenery/structural/electrical/breakerbox_switch.mdl"
		"models/scenery/structural/fire_alarm/pull_for_fire.mdl" : "models/scenery/structural/fire_alarm/pull_for_fire.mdl"
		"models/scenery/structural/giovanni/gio_sword.mdl" : "models/scenery/structural/giovanni/gio_sword.mdl"
		"models/scenery/structural/hollywood/HWmanhole.mdl" : "models/scenery/structural/hollywood/HWmanhole.mdl"
		"models/scenery/structural/la/LAmanhole.mdl" : "models/scenery/structural/la/LAmanhole.mdl"
		"models/scenery/structural/malkavian/fireplace_button.mdl" : "models/scenery/structural/malkavian/fireplace_button.mdl"
		"models/scenery/structural/malkavian/lever.mdl" : "models/scenery/structural/malkavian/lever.mdl"
		"models/scenery/structural/malkavian/reeltoreel.mdl" : "models/scenery/structural/malkavian/reeltoreel.mdl"
		"models/scenery/structural/malkavian/sconce.mdl" : "models/scenery/structural/malkavian/sconce.mdl"
		"models/scenery/structural/roof/light.mdl" : "models/scenery/structural/roof/light.mdl"
		"models/scenery/structural/santamonica/manhole.mdl" : "models/scenery/structural/santamonica/manhole.mdl"
		"models/scenery/structural/SewerGateLever/SewerGateLever.mdl" : "models/scenery/structural/SewerGateLever/SewerGateLever.mdl"
		"models/scenery/structural/switches/switch.mdl" : "models/scenery/structural/switches/switch.mdl"
		"models/scenery/structural/switches/Switch_2.mdl" : "models/scenery/structural/switches/Switch_2.mdl"
		"models/scenery/structural/temple/pedestal1.mdl" : "models/scenery/structural/temple/pedestal1.mdl"
		"models/scenery/structural/temple/pedestal2.mdl" : "models/scenery/structural/temple/pedestal2.mdl"
		"models/scenery/structural/temple/pedestal3.mdl" : "models/scenery/structural/temple/pedestal3.mdl"
		"models/scenery/structural/temple/pedestal4.mdl" : "models/scenery/structural/temple/pedestal4.mdl"
		"models/scenery/structural/warrens/warr_02_container_door.mdl" : "models/scenery/structural/warrens/warr_02_container_door.mdl"
		"models/scenery/structural/warrens/warr_subdoor.mdl" : "models/scenery/structural/warrens/warr_subdoor.mdl"
	]

	sep_swpsnd(string) readonly: "------------------------------------"

	soundgroup(choices) : "Sound Group" : "small_metal_switch" : "The group of sounds relative to 'usable/computers/<group-name>/<action>.wav' that specifies certain action sounds." = 
	[
		"elevator_button" : "Elevator Button"
		"large_metal_lever" : "Large Metal Lever"
		"manhole_cover" : "Manhole Cover"
		"medium_metal_switch" : "Medium Metal Switch"
		"small_metal_switch" : "Small Metal Switch"
		"wall_light_switch" : "Wall Light Switch"
		"metal_hatch" : "Metal Hatch"
		"radio" : "Radio"
		"tv" : "TV"
	]
	actsnd(sound) : "Activate Sound" : "environmental/electronic/button_click_1.wav" : "Sound played when the switch activates." =
	[
		"environmental/electronic/button_click_1.wav" : "environmental/electronic/button_click_1.wav"
	]
	deactsnd(sound) : "Dectivate Sound" : "environmental/electronic/button_click_1.wav" : "Sound played when the switch deactivates." =
	[
		"environmental/electronic/button_click_1.wav" : "environmental/electronic/button_click_1.wav"
	]
	locksnd(sound) : "Locked Sound" : "environmental/electronic/deny_beep.wav" : "Sound played when the switch activates but locked." =
	[
		"environmental/electronic/deny_beep.wav" : "environmental/electronic/deny_beep.wav"
	]

	sep_swppref(string) readonly: "------------------------------------"

	use_icon(choices) : "Use Icon" : 12 : "An icon that indicates when player can be able to use this entity and it is openable." = 
	[
		 0: "None"
		12: "Switch (wall)"
		64: "Switch (power)"
		13: "Sewer Hatch"
		60: "Sewer Hatch (transition)"

		33: "Stop/Sword"
		37: "Sconce"
		38: "Reel recorder"
		42: "Projector light"
		43: "Phonograph"
		52: "Dead Body/Skull"
		 1: "Carry body"

		 3: "Default lock"
		53: "Electronic lock"
		59: "Door (transition)"

		66: "Malk Chaos"
		67: "Malk Key"
		68: "Malk Mind"
		69: "Malk Order"
		70: "Malk Sight"
		71: "Malk Time"
	]
	locked_icon(choices) : "Locked Icon" : 12 : "An icon that indicates locked state of this entity." = 
	[
		 0: "None"
		12: "Switch (wall)"
		64: "Switch (power)"
		13: "Sewer Hatch"

		33: "Stop/Sword"
		 3: "Default lock"
		54: "Electronic lock (locked)"
		58: "Door (player wanted)"

		66: "Malk Chaos"
		67: "Malk Key"
		68: "Malk Mind"
		69: "Malk Order"
		70: "Malk Sight"
		71: "Malk Time"
	]
	reset_state(choices) : "Initial State" : 0 : "State that entity will be use on spawn." = [ 0: "Off" 1: "On" ]
	linkedswitch(target_destination) : "Linked Switch" : : "(Optional) The name of another switch entity that will be controlled by this one."

	sep_swpphys(string) readonly: "------------------------------------"

	solid(choices) : "Collisions" : 0 : "Model's collision type." =
	[
		0: "Not Solid"
		2: "Use Bounding Box"
		6: "Use VPhysics"
		3: "Use Convex Hull"
	]
	npc_transparent(choices) : "NPC-Transparent" : 1 : "[VTMB] NPCs are transparent for this object [not tested]." = [ 0 : "No" 1 : "Yes" ]

	// physics
	collideable_gibs(choices) : "Collidable Gibs" : 0 : "[VTMB] Collide model's gibs with environment when it breaks [not tested]." = 
	[
		0 : "Mode 0 (unknown)"
		1 : "Mode 1 (unknown)"
		2 : "Mode 2 (unknown)"
	]
	health(integer) : "Prop's Strength" : 0 : "[VTMB] Number of points of damage to take before breaking this prop. \n'0' = not breakable."
	ExplodeDamage(float) : "Explosion Damage" : 0 : "If non-zero, when this entity breaks it will create an explosion that causes the specified amount of damage. See also 'Explosion Radius'."
	ExplodeRadius(float) : "Explosion Radius" : 0 : "If non-zero, when this entity breaks it will create an explosion with a radius of the specified amount. See also 'Explosion Damage'."

	spawnflags(Flags) =
	[
		1 : "Flag 1 (unknown yet)" : 0
		16 : "Flag 16 (unknown yet)" : 0
		32 : "Flag 32 (unknown yet)" : 0
		64 : "Flag 64 (unknown yet)" : 0
		256 : "Flag 256 (unknown yet)" : 0
		1024 : "Flag 1024 (unknown yet)" : 0
		8192 : "Flag 8192 (unknown yet)" : 0
		16384 : "Flag 16384 (unknown yet)" : 0
		32768 : "Flag 32768 (unknown yet)" : 0
	]

	// inputs
 	input Toggle(void) : "Toggles the swich's state."
	input Lock(void) : "Lock the swich, preventing it from functioning."
	input Unlock(void) : "Unlock the swich, allowing it to function."
	input Activate(void) : "Activates the swich [not tested]."
	input Deactivate(void) :  "Deactivates the swich [not tested]."

	// outputs
	output OnActivate(void) : "Fired when activated [not tested]."
	output OnDeactivate(void) : "Fired when deactivated [not tested]."
	output OnUse(void) : "Fires when +used by the player."
	output OnLockedUse(void) : "Fired when used by player, but it's locked."
]

@PointClass
base(
	Studiomodel,
	Parentname,
	e_prop_switch,
	o_VBreakable,
	RenderFields
)
//line (
//	255 255 255,
//	targetname,
//	parentname
//)
studioprop()
= prop_switch :
	"[VTMB] A prop that may be used as any action's state switch (e.g. light switching)."
[
	// RF order fix
]










































//*******************************************************************************************************************
//*******************************************************************************************************************
// 
// NPCs
// 
//*******************************************************************************************************************
//*******************************************************************************************************************


//===================================================================================================================
// npc_maker_fleshpile [VTMB-specific]
//===================================================================================================================

@PointClass base(npc_maker) iconsprite("editor/npc_maker.vmt") = npc_maker_fleshpile : 
	"[VTMB] NPC Maker for flesh plies [not tested].\n\n"+
	"[VTMB] NOTES: See also 'npc_maker'."
[
	NPCType(npcclass) : "NPC Type" : "npc_VTzimisceRunner" : "Class name of spawned NPC"
	NPCTargetname(string) : "Children's Name" : "tzim_creation3" : "Childrens' NPC Name"
	NPCSquadname(string) : "Squad Name" : "runners" : "Childrens' Squad Name"

	model(studio) : "Model" : "models/character/monster/undead/male/undead_Male.mdl"
	stattemplate(choices) : "NPC Stat Template" : "TzimisceCreation3" : "Goes to data in 'vdata/system/npctemplate***.txt'. NPCs in Hammer are assigned one of these which determines their statistics." = []
	player_reaction(choices) : "Reaction to Player" : "D_HT 5" : "Type of NPC's relationship with player. Use <str_type> <int_degree> format,\n\n"+
		"  where <type> is:\n"+
		"    D_LI [0-10] --> Likes Player (Will Defend)\n"+
		"    D_NU [0-10] --> Neutral (Default)\n"+
		"    D_HT [0-10] --> Hates Player (Will Attack)" =
	[
		"D_LI 0" : "D_LI 0"
		"D_NU 0" : "D_NU 0"
		"D_HT 0" : "D_HT 0"
		"D_HT 5" : "D_HT 5"
	]
]






//===================================================================================================================
// npc_maker_zombie [VTMB-specific]
//===================================================================================================================

@PointClass base(npc_maker) iconsprite("editor/npc_maker.vmt") = npc_maker_zombie : 
	"[VTMB] NPC Maker for NPCs with zombie AI type.\n\n"+
	"[VTMB] NOTES: See also 'npc_maker'."
[
	NPCType(npcclass) : "NPC Type" : "npc_VZombie" : "Class name of spawned NPC"
	NPCTargetname(string) : "Children's Name" : "zombie" : "Childrens' NPC Name"
	NPCSquadname(string) : "Squad Name" : "spawned_zombies" : "Childrens' Squad Name"

	model(studio) : "Model" : "models/character/monster/undead/male/Undead_Male.mdl"
	additionalequipment(choices) : "Base Equipment" : "item_w_fists" : "This is the weapon that NPC will basically use." =
	[
		"0" : "Nothing"
		"item_w_avamp_blade" : "item_w_avamp_blade"
		"item_w_baseball_bat" : "item_w_baseball_bat"
		"item_w_baton" : "item_w_baton"
		"item_w_bush_hook" : "item_w_bush_hook"
		"item_w_colt_anaconda" : "item_w_colt_anaconda"
		"item_w_crossbow" : "item_w_crossbow"
		"item_w_crossbow_flaming" : "item_w_crossbow_flaming"
		"item_w_deserteagle" : "item_w_deserteagle"
		"item_w_fireaxe" : "item_w_fireaxe"
		"item_w_fists" : "item_w_fists"
		"item_w_flamethrower" : "item_w_flamethrower"
		"item_w_glock_17c" : "item_w_glock_17c"
		"item_w_grenade_frag" : "item_w_grenade_frag"
		"item_w_ithaca_m_37" : "item_w_ithaca_m_37"
		"item_w_katana" : "item_w_katana"
		"item_w_knife" : "item_w_knife"
		"item_w_mac_10" : "item_w_mac_10"
		"item_w_occultblade" : "item_w_occultblade"
		"item_w_remington_m_700" : "item_w_remington_m_700"
		"item_w_rem_m_700_bach" : "item_w_rem_m_700_bach"
		"item_w_severed_arm" : "item_w_severed_arm"
		"item_w_sheriff_sword" : "item_w_sheriff_sword"
		"item_w_sledgehammer" : "item_w_sledgehammer"
		"item_w_steyr_aug" : "item_w_steyr_aug"
		"item_w_supershotgun" : "item_w_supershotgun"
		"item_w_thirtyeight" : "item_w_thirtyeight"
		"item_w_throwing_star" : "item_w_throwing_star"
		"item_w_tire_iron" : "item_w_tire_iron"
		"item_w_torch" : "item_w_torch"
		"item_w_uzi" : "item_w_uzi"
		"item_w_zombie_fists" : "item_w_zombie_fists"
	]
	cantdropweapons(choices) : "Can't Drop Weapons" : 1 : "If set, all NPC's weapons won't be available when it dead." =
	[
		0 : "No"
		1 : "Yes"
	]
	stattemplate(choices) : "NPC Stat Template" : "Zombie" : "Goes to data in 'vdata/system/npctemplate***.txt'. NPCs in Hammer are assigned one of these which determines their statistics." = []
	player_reaction(choices) : "Reaction to Player" : "D_HT 5" : "Type of NPC's relationship with player. Use <str_type> <int_degree> format,\n\n"+
		"  where <type> is:\n"+
		"    D_LI [0-10] --> Likes Player (Will Defend)\n"+
		"    D_NU [0-10] --> Neutral (Default)"+
		"    D_HT [0-10] --> Hates Player (Will Attack)" =
	[
		"D_LI 0" : "D_LI 0"
		"D_NU 0" : "D_NU 0"
		"D_HT 0" : "D_HT 0"
		"D_HT 5" : "D_HT 5"
	]
	Flag_ZombieAIType(choices) : "Flag: Zombie AI Type" : 1 : "Applies the selected property." = 
	[ 
		0 : "Don not use" 
		1 : "Type 1 (unknown yet)" 
		2 : "Type 2 (unknown yet)" 
		3 : "Type 3 (unknown yet)" 
		4 : "Type 4 (unknown yet)" 
		5 : "Type 5 (unknown yet)" 
		6 : "Type 6 (unknown yet)" 
		7 : "Type 7 (unknown yet)" 
		8 : "Type 8 (unknown yet)" 
	]
	Flag_ViewCone(choices) : "Flag: View Cone" : 1 : "Applies the selected property." = [ 0 : "False" 1 : "True" ]
	allow_alert_lookaround(choices) : "Allow Lookaround on Alert" : 0 : "Defines, should NPC be able to look around when alerted, or not." =
	[
		0 : "No"
		1 : "Yes"
	]
	allow_kick_hint_use(choices) : "Allow Kick Hint Usage [-?]" : 0 : "[VTMB] Unknown yet..." =
	[
		0 : "No"
		1 : "Yes"
	]
	floatfreq(integer) : "Floats Frequency" : 5 : "[VTMB] Determines how often this NPC will play float sound lines when player's near him. Higher values will make floats play more often, '0' disables them fully."
	team_name(string) : "Team Name" : "zombies" : "[VTMB] Unknown yet..."
	
	sep_npcrel(string) readonly: "------------------------------------"
	
	// zombie-specific
	remove_distance(integer) : "Remove Distance" : 1024 : "[VTMB] Unknown yet..."
	should_ragdoll(choices) : "Should be Ragdolls [-?]" : 1 : "[VTMB] Unknown yet..." = [ 0 : "No" 1 : "Yes" ]
]






//===================================================================================================================
// npc_BaseVampAI [VTMB-specific]
//===================================================================================================================

@NPCClass base(VBaseNPC,RenderFields) studio() = npc_BaseVampAI : 
	"[VTMB] Base Vampire AI (Unrecognized; meet in Junk Yard -?)."
[
	model(studio) : "Model" : "models/character/npc/common/doppleganger/doppleganger_male.mdl" =
	[
		"models/character/npc/common/doppleganger/doppleganger_male.mdl" : "models/character/npc/common/doppleganger/doppleganger_male.mdl"
	]
	additionalequipment(choices) : "Base Equipment" : "item_w_sw_m64" : "This is the weapon that NPC will basically use." = []
	alternateequipment(choices) : "Alternate Equipment" : "item_w_katana" : "This is the weapon that NPC will use as alternative." = []
	dialogname(vdialog) : "Dialog File" : "dlg/Santa Monica/Nightwatchman.dlg" : "Defines dialogue script depending on certain NPC and situation." =
	[
		"" : "None"
		"dlg/Santa Monica/Nightwatchman.dlg" : "dlg/Santa Monica/Nightwatchman.dlg"
	]
	pl_investigate(choices) : "Player Investigate" : "6" : "[VTMB] Unknown yet..." = []
	hearing(float) : "Hearing Volume" : "1" : "NPC's hearing radius [0...100]. Set '-1' as default [not tested]."
	vision(float) : "Vision Radius" : "2048" : "NPC's vision radius (units). Set '-1' as default [not tested]."

	sep_npcrel(string) readonly: "------------------------------------"
	
	// npc-related
	usescript(string) : "Use Python Script" : "NightwatchmenDlg()" : "This is a Python script that defines additional dialog params [not tested]."

	// ai-related
	base_animal_ken(choices) : "Use Animal Ken" : 0 : "Toggle these characteristics to be applied to NPC's AI [not tested]." = [ 0 : "No" 1 : "Yes" ]
	base_appearance(choices) : "Use Appearance" : 1 : "Toggle these characteristics to be applied to NPC's AI [not tested]." = [ 0 : "No" 1 : "Yes" ]
	base_athletics(choices) : "Use Athletics" : 0 : "Toggle these characteristics to be applied to NPC's AI [not tested]." = [ 0 : "No" 1 : "Yes" ]
	base_brawl(choices) : "Use Brawl" : 0 : "Toggle these characteristics to be applied to NPC's AI [not tested]." = [ 0 : "No" 1 : "Yes" ]
	base_charisma(choices) : "Use Charisma" : 1 : "Toggle these characteristics to be applied to NPC's AI [not tested]." = [ 0 : "No" 1 : "Yes" ]
	base_computers(choices) : "Use Computers" : 0 : "Toggle these characteristics to be applied to NPC's AI [not tested]." = [ 0 : "No" 1 : "Yes" ]
	base_dexterity(choices) : "Use Dexterity" : 1 : "Toggle these characteristics to be applied to NPC's AI [not tested]." = [ 0 : "No" 1 : "Yes" ]
	base_dodge(choices) : "Use Dodge" : 0 : "Toggle these characteristics to be applied to NPC's AI [not tested]." = [ 0 : "No" 1 : "Yes" ]
	base_finance(choices) : "Use Finance" : 0 : "Toggle these characteristics to be applied to NPC's AI [not tested]." = [ 0 : "No" 1 : "Yes" ]
	base_firearms(choices) : "Use Firearms" : 0 : "Toggle these characteristics to be applied to NPC's AI [not tested]." = [ 0 : "No" 1 : "Yes" ]
	base_intelligence(choices) : "Use Intelligence" : 1 : "Toggle these characteristics to be applied to NPC's AI [not tested]." = [ 0 : "No" 1 : "Yes" ]
	base_investigation(choices) : "Use Investigation" : 0 : "Toggle these characteristics to be applied to NPC's AI [not tested]." = [ 0 : "No" 1 : "Yes" ]
	base_leadership(choices) : "Use Leadership" : 0 : "Toggle these characteristics to be applied to NPC's AI [not tested]." = [ 0 : "No" 1 : "Yes" ]
	base_linguistics(choices) : "Use Linguistics" : 0 : "Toggle these characteristics to be applied to NPC's AI [not tested]." = [ 0 : "No" 1 : "Yes" ]
	base_manipulation(choices) : "Use Manipulation" : 1 : "Toggle these characteristics to be applied to NPC's AI [not tested]." = [ 0 : "No" 1 : "Yes" ]
	base_melee(choices) : "Use Melee" : 0 : "Toggle these characteristics to be applied to NPC's AI [not tested]." = [ 0 : "No" 1 : "Yes" ]
	base_occult(choices) : "Use Occult" : 0 : "Toggle these characteristics to be applied to NPC's AI [not tested]." = [ 0 : "No" 1 : "Yes" ]
	base_perception(choices) : "Use Perception" : 1 : "Toggle these characteristics to be applied to NPC's AI [not tested]." = [ 0 : "No" 1 : "Yes" ]
	base_security(choices) : "Use Security" : 0 : "Toggle these characteristics to be applied to NPC's AI [not tested]." = [ 0 : "No" 1 : "Yes" ]
	base_stamina(choices) : "Use Stamina" : 1 : "Toggle these characteristics to be applied to NPC's AI [not tested]." = [ 0 : "No" 1 : "Yes" ]
	base_stealth(choices) : "Use Stealth" : 0 : "Toggle these characteristics to be applied to NPC's AI [not tested]." = [ 0 : "No" 1 : "Yes" ]
	base_strength(choices) : "Use Strength" : 1 : "Toggle these characteristics to be applied to NPC's AI [not tested]." = [ 0 : "No" 1 : "Yes" ]
	base_subterfuge(choices) : "Use Subterfuge" : 0 : "Toggle these characteristics to be applied to NPC's AI [not tested]." = [ 0 : "No" 1 : "Yes" ]
	base_wits(choices) : "Use Wits" : 1 : "Toggle these characteristics to be applied to NPC's AI [not tested]." = [ 0 : "No" 1 : "Yes" ]
]
	
	

	
	

//===================================================================================================================
// npc_payphone [VTMB-specific]
//===================================================================================================================

@NPCClass base(VBaseNPC,VAddNPCFeats,RenderFields) studio() = npc_payphone : 
	"[VTMB] Payphone (fake NPC) entity that can engage in dialogue with player."
[
	model(studio) : "Model" : "models/scenery/street/payphone/payphonereceiver.mdl" =
	[
		"models/scenery/street/payphone/payphonereceiver.mdl" : "models/scenery/street/payphone/payphonereceiver.mdl"
	]
	dialogname(vdialog) : "Dialog File" : "dlg/Santa Monica/Stan_Gimble.dlg" : "Defines dialogue script depending on certain NPC and situation." =
	[
		"dlg/Santa Monica/Stan_Gimble.dlg" : "dlg/Santa Monica/Stan_Gimble.dlg"
		"dlg/Santa Monica/SMphone.dlg" : "dlg/Santa Monica/SMphone.dlg"
		"dlg/Chinatown/Garyphone.dlg" : "dlg/Chinatown/Garyphone.dlg"
		"dlg/Hollywood/Anoncaller.dlg" : "dlg/Hollywood/Anoncaller.dlg"
	]
]





//===================================================================================================================
// npc_VAndreiBlood [VTMB-specific]
//===================================================================================================================

@NPCClass base(VBaseNPC,RenderFields) studio() = npc_VAndreiBlood : 
	"[VTMB] Bloody Andrei transformation (meet in 609 Kings Way)."
[
	model(studio) : "Model" : "models/character/npc/unique/Hollywood/Andrei/Andrei.mdl" =
	[
		"models/character/npc/unique/Hollywood/Andrei/Andrei.mdl" : "models/character/npc/unique/Hollywood/Andrei/Andrei.mdl"
	]
	dialogname(vdialog) : "Dialog File" : "dlg/Hollywood/Andrei.dlg" : "Defines dialogue script depending on certain NPC and situation." =	[]
	stattemplate(choices) : "NPC Stat Template" : "AndreiBlood" : "Goes to data in 'vdata/system/npctemplate***.txt'. NPCs in Hammer are assigned one of these which determines their statistics." = []
	pl_criminal_attack(choices) : "Player Criminal Attack" : "1" : "[VTMB] Unknown yet..." =	[]
	pl_investigate(choices) : "Player Investigate" : "1" : "[VTMB] Unknown yet..." =	[]
	pl_supernatural_attack(choices) : "Player Supernatural Attack" : "1" : "A supernatural level is set to the player for certain actions or by script. When the level is equal or greater thean the threshold, the apropriate action is triggered for the npc." =	[]
	vision(float) : "Vision Radius" : "2400" : "NPC's vision radius (units). Set '-1' as default [not tested]."

	sep_npcrel(string) readonly: "------------------------------------"
	
	// andrei-specific
	TeleportTime(integer) : "Teleport Time (sec)" : 35 : "A time interval between which Andrei makes teleportations."
	MaxLiveHeadrunners(integer) : "Max Headrunners Count" : 4 : "How many live headrunners (tzimisce creations) may be spawned around its boss."
	SummonTime(integer) : "Summon Time [-?]" : 35 : "[VTMB] Unknown yet..."
	SummonPercentage(integer) : "Summon Percentage [-?]" : 80 : "[VTMB] Unknown yet..."
	AndreiPauseTime(integer) : "Andrei Pause Time [-?]" : 85 : "[VTMB] Unknown yet..."
	AndreiPauseTime(integer) : "Andrei Pause Time [-?]" : 85 : "[VTMB] Unknown yet..."
	KillToPause(integer) : "Kill tp Pause [-?]" : 6 : "[VTMB] Unknown yet..."

	// inputs
	input TriggerCombat(integer) : "[VTMB: untested connection]"
]





//===================================================================================================================
// npc_VAsianVampire [VTMB-specific]
//===================================================================================================================

@NPCClass base(VBaseNPC,RenderFields) studio() = npc_VAsianVampire : 
	"[VTMB] Asian Vampire (meet in Santa Monica's Foxy Boxes)."
[
	model(studio) : "Model" : "models/character/npc/unique/Santa_Monica/AsianVampire/AsianVampire.mdl" =
	[
		"models/character/npc/unique/Santa_Monica/AsianVampire/AsianVampire.mdl" : "models/character/npc/unique/Santa_Monica/AsianVampire/AsianVampire.mdl"
	]
	additionalequipment(choices) : "Base Equipment" : "item_w_avamp_blade" : "This is the weapon that NPC will basically use." =	[]
	alternateequipment(choices) : "Alternate Equipment" : "item_w_crossbow" : "This is the weapon that NPC will use as alternative." =	[]
	cantdropweapons(choices) : "Can't Drop Weapons" : 1 : "If set, all NPC's weapons won't be available when it dead." = 	[]
	is_bossmonster(choices) : "NPC is Boss Monter" : 1 : "If set, shows blood scale on screen and process this NPC as a monster." =	[]
	stattemplate(choices) : "NPC Stat Template" : "AsianVampire" : "Goes to data in 'vdata/system/npctemplate***.txt'. NPCs in Hammer are assigned one of these which determines their statistics." = []
]






//===================================================================================================================
// npc_VBach [VTMB-specific]
//===================================================================================================================

@NPCClass base(VBaseNPC,RenderFields) studio() = npc_VBach : 
	"[VTMB] Grunfield Bach, the Society of Leopold leader."
[
	model(studio) : "Model" : "models/character/npc/unique/Malkavian_Mansion/Bach/Bach.mdl" =
	[
		"models/character/npc/unique/Malkavian_Mansion/Bach/Bach.mdl" : "models/character/npc/unique/Malkavian_Mansion/Bach/Bach.mdl"
	]
	additionalequipment(choices) : "Base Equipment" : "item_w_rem_m_700_bach" : "This is the weapon that NPC will basically use." =	[]
	alternateequipment(choices) : "Alternate Equipment" : "item_w_katana" : "This is the weapon that NPC will use as alternative." =	[]
	cantdropweapons(choices) : "Can't Drop Weapons" : 1 : "If set, all NPC's weapons won't be available when it dead." =	[]
	demo_sequence(choices) : "Demo Animation" : "Idle01" : "Default animation sequence for the model to be playing after spawning." = []
	dialogname(vdialog) : "Dialog File" : "dlg/Main Characters/Bach.dlg" : "Defines dialogue script depending on certain NPC and situation." =	[]
	is_bossmonster(choices) : "NPC is Boss Monter" : 1 : "If set, shows blood scale on screen and process this NPC as a monster." =	[]
	stattemplate(choices) : "NPC Stat Template" : "Bach" : "Goes to data in 'vdata/system/npctemplate***.txt'. NPCs in Hammer are assigned one of these which determines their statistics." = []
	npc_perception(choices) : "NPC Perception Level" : 10 : "Defines NPC's Perception ability level [1...10]." = []
	pl_criminal_attack(choices) : "Player Criminal Attack" : "1" : "A criminal level is set to the player for certain actions or by script. When the level is equal or greater thean the threshold, the apropriate action is triggered for the npc. \nFlee overrides attack and a value of 6 means no action because the max value is 5." =	[]
	pl_supernatural_attack(choices) : "Player Supernatural Attack" : "1" : "A supernatural level is set to the player for certain actions or by script. When the level is equal or greater thean the threshold, the apropriate action is triggered for the npc." =	[]
	hearing(float) : "Hearing Volume" : "3.0" : "NPC's hearing radius [0...100]. Set '-1' as default [not tested]."

	// inputs
	input GrenadeEnter(integer) : "[VTMB: untested connection]"
	input GrenadeExit(integer) : "[VTMB: untested connection]"
	input SignalVulnerable(integer) : "[VTMB: untested connection]"
]






//===================================================================================================================
// npc_VBrujah [VTMB-specific]
//===================================================================================================================

@NPCClass base(VBaseNPC,VAddNPCFeats,RenderFields) studio() = npc_VBrujah : 
	"[VTMB] Generic Brujah NPC."
[
	model(studio) : "Model" : "models/character/npc/unique/Santa_Monica/Eugene/Eugene.mdl" =
	[
		"models/character/npc/unique/Santa_Monica/Eugene/Eugene.mdl" : "models/character/npc/unique/Santa_Monica/Eugene/Eugene.mdl"
		"models/character/npc/unique/Santa_Monica/Ghost/Ghost.mdl" : "models/character/npc/unique/Santa_Monica/Ghost/Ghost.mdl"
	]
	cantdropweapons(choices) : "Can't Drop Weapons" : 1 : "If set, all NPC's weapons won't be available when it dead." =	[]
	invincible(choices) : "NPC is Invincible" : 1 : "If set, the player can't kill this NPC." =	[]
	investigate_mode(choices): "Investigate Mode" : 0 : "[not tested] Measures your character's ability to notice minute or hidden details." =	[]
	investigate_mode_combat(choices): "Combat Investigate Mode" : 0 : "[VTMB] Unknown yet..." =	[]
]






//===================================================================================================================
// npc_VCamera [VTMB-specific]
//===================================================================================================================

@NPCClass base(VBaseNPC,VAddNPCFeats,RenderFields) studio() = npc_VCamera : 
	"[VTMB] Tracking Camera entity (fake NPC)."
[
	player_reaction(choices) : "Reaction to Player" : "D_HT 5" : "Type of NPC's relationship with player. Use <str_type> <int_degree> format,\n\n"+
		"  where <type> is:\n"+
		"    D_LI [0-10] --> Likes Player (Will Defend)\n"+
		"    D_NU [0-10] --> Neutral (Default)"+
		"    D_HT [0-10] --> Hates Player (Will Attack)" = []
]








//===================================================================================================================
// npc_VCameraSecurity [VTMB-specific]
//===================================================================================================================

@NPCClass base(VBaseNPC,VAddNPCFeats,RenderFields) studio() = npc_VCameraSecurity : 
	"[VTMB] Security Camera entity (fake NPC)."
[
	player_reaction(choices) : "Reaction to Player" : "D_HT 5" : "Type of NPC's relationship with player. Use <str_type> <int_degree> format,\n\n"+
		"  where <type> is:\n"+
		"    D_LI [0-10] --> Likes Player (Will Defend)\n"+
		"    D_NU [0-10] --> Neutral (Default)"+
		"    D_HT [0-10] --> Hates Player (Will Attack)" =	[]
	pl_investigate(choices) : "Player Investigate" : "1" : "[VTMB] Unknown yet..." =	[]
	hearing(float) : "Hearing Volume" : "0" : "NPC's hearing radius [0...100]. Set '-1' as default [not tested]."
	vision(float) : "Vision Radius" : "750" : "NPC's vision radius (units). Set '-1' as default [not tested]."

	sep_npcrel(string) readonly: "------------------------------------"
	
	// camera-specific
	linked_camera(target_destination) : "Linked Camera" : : "Camera that inherits properties of this one [not tested]."
]






//===================================================================================================================
// npc_VChangBrosBlade [VTMB-specific]
//===================================================================================================================

@NPCClass base(VBaseNPC,RenderFields) studio() = npc_VChangBrosBlade : 
	"[VTMB] Blade-armed Chang brother (meet in Giovanni's basement)."
[
	model(studio) : "Model" : "models/character/npc/unique/Giovanni_Mansion/Chang_Brothers/chang1.mdl" =
	[
		"models/character/npc/unique/Giovanni_Mansion/Chang_Brothers/chang1.mdl" : "models/character/npc/unique/Giovanni_Mansion/Chang_Brothers/chang1.mdl"
	]
	additionalequipment(choices) : "Base Equipment" : "item_w_chang_blade" : "This is the weapon that NPC will basically use." = []
	cantdropweapons(choices) : "Can't Drop Weapons" : 1 : "If set, all NPC's weapons won't be available when it dead." =	[]
	default_camera(vcamerashot) : "Default Camera Shot" : "ChangDialog" : "Default camera-shot definition applied when player interacts with this NPC. Related to 'vdata/CameraShots/*.txt' path." =	[]
	is_bossmonster(choices) : "NPC is Boss Monter" : 1 : "If set, shows blood scale on screen and process this NPC as a monster." =	[]
	stattemplate(choices) : "NPC Stat Template" : "ChangBros" : "Goes to data in 'vdata/system/npctemplate***.txt'. NPCs in Hammer are assigned one of these which determines their statistics."	= []
	npc_perception(choices) : "NPC Perception Level" : 10 : "Defines NPC's Perception ability level [1...10]." = []
	hearing(float) : "Hearing Volume" : "3.0" : "NPC's hearing radius [0...100]. Set '-1' as default [not tested]."
	vision(float) : "Vision Radius" : "3600" : "NPC's vision radius (units). Set '-1' as default [not tested]."
]












//===================================================================================================================
// npc_VChangBrosClaw [VTMB-specific]
//===================================================================================================================

@NPCClass base(VBaseNPC,RenderFields) studio() = npc_VChangBrosClaw : 
	"[VTMB] Claw-armed Chang brother (meet in Giovanni's basement)."
[
	model(studio) : "Model" : "models/character/npc/unique/Giovanni_Mansion/Chang_Brothers/chang2.mdl" =
	[
		"models/character/npc/unique/Giovanni_Mansion/Chang_Brothers/chang2.mdl" : "models/character/npc/unique/Giovanni_Mansion/Chang_Brothers/chang2.mdl"
	]
	additionalequipment(choices) : "Base Equipment" : "item_w_chang_claw" : "This is the weapon that NPC will basically use." =	[]
	cantdropweapons(choices) : "Can't Drop Weapons" : 1 : "If set, all NPC's weapons won't be available when it dead." =	[]
	dialogname(vdialog) : "Dialog File" : "dlg/Giovanni/Chang.dlg" : "Defines dialogue script depending on certain NPC and situation." =	[]
	is_bossmonster(choices) : "NPC is Boss Monter" : 1 : "If set, shows blood scale on screen and process this NPC as a monster." =	[]
	stattemplate(choices) : "NPC Stat Template" : "ChangBrosClaw" : "Goes to data in 'vdata/system/npctemplate***.txt'. NPCs in Hammer are assigned one of these which determines their statistics." = []
	npc_perception(choices) : "NPC Perception Level" : 10 : "Defines NPC's Perception ability level [1...10]." = []
	hearing(float) : "Hearing Volume" : "3.0" : "NPC's hearing radius [0...100]. Set '-1' as default [not tested]."
	vision(float) : "Vision Radius" : "3600" : "NPC's vision radius (units). Set '-1' as default [not tested]."
]










//===================================================================================================================
// npc_VCop [VTMB-specific]
//===================================================================================================================

@NPCClass base(VBaseNPC,VAddNPCFeats,RenderFields) studio() = npc_VCop : 
	"[VTMB] Generic police officer. Behave quietly..."
[
	model(studio) : "Model" : "models/character/npc/common/Cop_Variant/regular_cop/Regular_Cop.mdl" =
	[
		"models/character/npc/common/Cop_Variant/regular_cop/Regular_Cop.mdl" : "models/character/npc/common/Cop_Variant/regular_cop/Regular_Cop.mdl"
	]
	alternateequipment(choices) : "Alternate Equipment" : "item_w_thirtyeight" : "This is the weapon that NPC will use as alternative." =	[]
	pl_criminal_attack(choices) : "Player Criminal Attack" : "1" : "A criminal level is set to the player for certain actions or by script. When the level is equal or greater thean the threshold, the apropriate action is triggered for the npc." =	[]
	pl_criminal_flee(choices) : "Player Criminal Flee" : "5" : "A criminal level is set to the player for certain actions or by script. When the level is equal or greater thean the threshold, the apropriate action is triggered for the npc. \nFlee overrides attack and a value of 6 means no action because the max value is 5." =	[]
	pl_investigate(choices) : "Player Investigate [-?]" : "6" : "[VTMB] Unknown yet..." =	[]
	pl_supernatural_attack(choices) : "Player Supernatural Attack" : "1" : "A supernatural level is set to the player for certain actions or by script. When the level is equal or greater thean the threshold, the apropriate action is triggered for the npc." =	[]
	pl_supernatural_flee(choices) : "Player Supernatural Flee" : "4" : "A supernatural level is set to the player for certain actions or by script. When the level is equal or greater thean the threshold, the apropriate action is triggered for the npc. \nFlee overrides attack and a value of 6 means no action because the max value is 5." =	[]
	stattemplate(choices) : "NPC Stat Template" : "OfficerGeneric" : "Goes to data in 'vdata/system/npctemplate***.txt'. NPCs in Hammer are assigned one of these which determines their statistics." = []

	sep_npcrel(string) readonly: "------------------------------------"
	
	// npc-specific
	floatfreq(integer) : "Floats Frequency" : 8 : "[VTMB] Determines how often this NPC will play float sound lines when player's near him. Higher values will make floats play more often, '0' disables them fully."
	hearing(float) : "Hearing Volume" : "0" : "NPC's hearing radius [0...100]. Set '-1' as default [not tested]."
]






//===================================================================================================================
// npc_VDialogPedestrian [VTMB-specific]
//===================================================================================================================

@NPCClass base(VBaseNPC,VAddNPCFeats,RenderFields) studio() = npc_VDialogPedestrian : 
	"[VTMB] A pedestrian NPC that can engage in dialogue with the player."
[
	model(studio) : "Model" : "models/character/npc/common/citizen/male2/male_citizen_2.mdl" =
	[
		"models/character/npc/common/citizen/male2/male_citizen_2.mdl" : "models/character/npc/common/citizen/male2/male_citizen_2.mdl"
		"models/character/npc/common/prostitute/prostitute_1/prostitute_1.mdl" : "models/character/npc/common/prostitute/prostitute_1/prostitute_1.mdl"
		"models/character/npc/common/prostitute/prostitute_2/prostitute_2_Ref.mdl" : "models/character/npc/common/prostitute/prostitute_2/prostitute_2_Ref.mdl"
		"models/character/npc/common/blueblood/male/Blueblood_Male.mdl" : "models/character/npc/common/blueblood/male/Blueblood_Male.mdl"
	]
	pl_investigate(choices) : "Player Investigate [-?]" : "6" : "[VTMB] Unknown yet..." =	[]

	sep_npcrel(string) readonly: "------------------------------------"
	
	// ped-related
	usescript(string) : "Use Python Script" : : "This is a Python script that defines additional dialog params [not tested]."
	level_reset_type(choices) : "Level Reset Type" : 0 : "Defines dialog resetting mode depending on level changing or reloading [not tested]." =
	[
		0 : "Type 0 (unknown yet)"
		1 : "Type 1 (unknown yet)"
		2 : "Type 2 (unknown yet)"
	]
	spawnflags(Flags) = 
	[
		4 : "Fall to ground (unchecked means *teleport* to ground)" : 1
		8192: "Flag 8192 (unknown yet)" : 1
	]
]






//===================================================================================================================
// npc_VDog [VTMB-specific]
//===================================================================================================================

@NPCClass base(VBaseNPC,VAddNPCFeats) studio() = npc_VDog : 
	"[VTMB] Dog NPC. Not used on original maps."
[
	model(studio) : "Model" : "models/character/monster/dog/feral/dog_feral.mdl" =
	[
		"models/character/monster/dog/feral/dog_feral.mdl" : "models/character/monster/dog/feral/dog_feral.mdl"
		"models/character/monster/dog/guard/dog_guard.mdl" : "models/character/monster/dog/guard/dog_guard.mdl"
		"models/character/monster/rat/crowd/rat_crowd2.mdl" : "models/character/monster/rat/crowd/rat_crowd2.mdl"
		"models/character/monster/cat/cat.mdl" : "models/character/monster/cat/cat.mdl"
	]
	stattemplate(choices) : "NPC Stat Template" : "Rat" : "Goes to data in 'vdata/system/npctemplate***.txt'. NPCs in Hammer are assigned one of these which determines their statistics." = []

	sep_npcrel(string) readonly: "------------------------------------"
	
	// npc-specific
	detection_distance(integer) : "Detection Distance" : 256 : "Defines distance rat can wind the player."
	friendship_level(integer) : "Friendship Level" : 1 : "The level of rat's friendliness in relation to player."
	must_detect(choices) : "Must Detect [-?]" : "1" : "[VTMB] Unknown yet..." =
	[
		0 : "No"
		1 : "Yes"
	]
	fright_distance(integer) : "Fright Distance" : 128 : "Distance that rat will frights the player."
	fright_duration(float) : "Fright Duration" : "5.0" : "Duration of rat's fright when it nearby the player."
	conflict_range(integer) : "Conflict Range" : 100 : "[VTMB] Unknown yet..."
	warn_range(integer) : "Warn Range" : 200 : "[VTMB] Unknown yet..."
]





//===================================================================================================================
// npc_VGargoyle [VTMB-specific]
//===================================================================================================================

@NPCClass base(VBaseNPC,RenderFields) studio() = npc_VGargoyle : 
	"[VTMB] Gargoyle (meet in Asian Theatre, Hollywood)."
[
	model(studio) : "Model" : "models/character/monster/gargoyle/gargoyle.mdl" =
	[
		"models/character/monster/gargoyle/gargoyle.mdl" : "models/character/monster/gargoyle/gargoyle.mdl"
	]
	default_camera(vcamerashot) : "Default Camera Shot" : "vdata/CameraShots/Gargoyle.txt" : "Default camera-shot definition applied when player interacts with this NPC. Related to 'vdata/CameraShots/*.txt' path." =	[]
	dialogname(vdialog) : "Dialog File" : "dlg/Hollywood/Gargoyle.dlg" : "Defines dialogue script depending on certain NPC and situation." =	[]
	is_bossmonster(choices) : "NPC is Boss Monter" : 1 : "If set, shows blood scale on screen and process this NPC as a monster." =	[]
	stattemplate(choices) : "NPC Stat Template" : "Gargoyle" : "Goes to data in 'vdata/system/npctemplate***.txt'. NPCs in Hammer are assigned one of these which determines their statistics." = []
	pl_investigate(choices) : "Player Investigate" : "6" : "[VTMB] Unknown yet..." =	[]
]







//===================================================================================================================
// npc_VGhoulCroucher [VTMB-specific]
//===================================================================================================================

@NPCClass base(VBaseNPC,VAddNPCFeats,RenderFields) studio() = npc_VGhoulCroucher : 
	"[VTMB] Crouched ghoul (meet in Malkavian Mansion)."
[
	model(studio) : "Model" : "models/character/npc/unique/Malkavian_Mansion/Stalker/Stalker.mdl" =
	[
		"models/character/npc/unique/Malkavian_Mansion/Stalker/Stalker.mdl" : "models/character/npc/unique/Malkavian_Mansion/Stalker/Stalker.mdl"
		"models/character/npc/unique/Malkavian_Mansion/Stalker/Stalker_female.mdl" : "models/character/npc/unique/Malkavian_Mansion/Stalker/Stalker_female.mdl"
	]
	additionalequipment(choices) : "Base Equipment" : "item_w_knife" : "This is the weapon that NPC will basically use." =	[]
	stattemplate(choices) : "NPC Stat Template" : "MalkMansionCroucher" : "Goes to data in 'vdata/system/npctemplate***.txt'. NPCs in Hammer are assigned one of these which determines their statistics." = []
	player_reaction(choices) : "Reaction to Player" : "D_HT 5" : "Type of NPC's relationship with player. Use <str_type> <int_degree> format,\n\n"+
		"  where <type> is:\n"+
		"    D_LI [0-10] --> Likes Player (Will Defend)\n"+
		"    D_NU [0-10] --> Neutral (Default)"+
		"    D_HT [0-10] --> Hates Player (Will Attack)" =	[]

	sep_npcrel(string) readonly: "------------------------------------"
	
	// croucher-specific
	disturbed(choices) : "Disturbed" : 0 : "Set this NPC disturbing state." =
	[
		0 : "No"
		1 : "Yes"
	]
	on_fire(choices) : "On Fire [-?]" : 0 : "Set this NPC burning state." =
	[
		0 : "No"
		1 : "Yes"
	]
]








//===================================================================================================================
// npc_VHengeyokai [VTMB-specific]
//===================================================================================================================

@NPCClass base(VBaseNPC,RenderFields) studio() = npc_VHengeyokai : 
	"[VTMB] Hengeyokai, Zygaena's tranformation (meet in chinese fish market)."
[
	model(studio) : "Model" : "models/character/npc/unique/Chinatown/Zygaena/Zygaena.mdl" =
	[
		"models/character/npc/unique/Chinatown/Zygaena/Zygaena.mdl" : "models/character/npc/unique/Chinatown/Zygaena/Zygaena.mdl"
	]
	dialogname(vdialog) : "Dialog File" : "dlg/Chinatown/Zygaena.dlg" : "Defines dialogue script depending on certain NPC and situation." =	[]
	is_bossmonster(choices) : "NPC is Boss Monter" : 1 : "If set, shows blood scale on screen and process this NPC as a monster." =	[]
	stattemplate(choices) : "NPC Stat Template" : "Hengeyokai" : "Goes to data in 'vdata/system/npctemplate***.txt'. NPCs in Hammer are assigned one of these which determines their statistics." = []
	pl_investigate(choices) : "Player Investigate [-?]" : "6" : "[VTMB] Unknown yet..." =	[]

	// inputs
	input StartTransformation(void) : "NPC starts body transforming."
]





//===================================================================================================================
// npc_VHuman [VTMB-specific]
//===================================================================================================================

@NPCClass base(VBaseNPC,VAddNPCFeats,RenderFields) studio() = npc_VHuman : 
	"[VTMB] A Human. Just a mortal, just a means..."
[
	model(studio) : "Model" : "models/character/npc/unique/Santa_Monica/Cal/Cal.mdl" =
	[
		"models/character/npc/unique/Santa_Monica/Cal/Cal.mdl" : "models/character/npc/unique/Santa_Monica/Cal/Cal.mdl"
		"models/character/npc/common/citizen/male2/male_citizen_2.mdl" : "models/character/npc/common/citizen/male2/male_citizen_2.mdl"
	]
	default_camera(vcamerashot) : "Default Camera Shot" : "vdata/CameraShots/Cal.txt" : "Default camera-shot definition applied when player interacts with this NPC. Related to 'vdata/CameraShots/*.txt' path." = []
	default_disposition(choices) : "Default Disposition" : "Bartender" : "Default NPC's disposition. Goes to 'vdata/system/dispositiontable.txt' definitions." =	[]
	pl_criminal_attack(choices) : "Player Criminal Attack" : "2" : "A criminal level is set to the player for certain actions or by script. When the level is equal or greater thean the threshold, the apropriate action is triggered for the npc." =	[]
	pl_criminal_flee(choices) : "Player Criminal Flee" : "4" : "A criminal level is set to the player for certain actions or by script. When the level is equal or greater thean the threshold, the apropriate action is triggered for the npc. \nFlee overrides attack and a value of 6 means no action because the max value is 5." =	[]
	pl_investigate(choices) : "Player Investigate" : "6" : "[VTMB] Unknown yet..." =	[]
	pl_supernatural_attack(choices) : "Player Supernatural Attack" : "2" : "A supernatural level is set to the player for certain actions or by script. When the level is equal or greater thean the threshold, the apropriate action is triggered for the npc." =	[]
	pl_supernatural_flee(choices) : "Player Supernatural Flee" : "3" : "A supernatural level is set to the player for certain actions or by script. When the level is equal or greater thean the threshold, the apropriate action is triggered for the npc. \nFlee overrides attack and a value of 6 means no action because the max value is 5." =	[]

	sep_npcrel(string) readonly: "------------------------------------"
	
	// human-related
	soundgroup(choices) : "Sound Group" : "Unique/Cal" : "The group of sounds relative to 'sound/character/*' that specifies base NPC action sounds. See 'vdata/system/sndscheme_char.txt' for more details." = []
]








//===================================================================================================================
// npc_VHumanCombatant [VTMB-specific]
//===================================================================================================================

@NPCClass base(VBaseNPC,VAddNPCFeats,RenderFields) studio() = npc_VHumanCombatant : 
	"[VTMB] The combatant human NPC."
[
	model(studio) : "Model" : "models/character/npc/common/gangmember_male_1/sabbat_gangmember_1_Ref.mdl" =
	[
		"models/character/npc/common/gangmember_male_1/sabbat_gangmember_1_Ref.mdl" : "models/character/npc/common/gangmember_male_1/sabbat_gangmember_1_Ref.mdl"
		"models/character/npc/common/gangmember_male_2/gangmember_male_2.mdl" : "models/character/npc/common/gangmember_male_2/gangmember_male_2.mdl"
		"models/character/npc/common/gangmember_male_2/gangmember_male_2_alt.mdl" : "models/character/npc/common/gangmember_male_2/gangmember_male_2_alt.mdl"
		"models/character/npc/common/Cop_Variant/regular_cop/Regular_Cop.mdl" : "models/character/npc/common/Cop_Variant/regular_cop/Regular_Cop.mdl"
		"models/character/npc/common/Sabbat_Henchman/Sabbat_Henchman.mdl" : "models/character/npc/common/Sabbat_Henchman/Sabbat_Henchman.mdl"
		"models/character/npc/common/security_guard/Security_Guard.mdl" : "models/character/npc/common/security_guard/Security_Guard.mdl"
		"models/character/npc/common/security_guard/security_guard_skinny/security_guard_skinny.mdl" : "models/character/npc/common/security_guard/security_guard_skinny/security_guard_skinny.mdl"
		"models/character/npc/common/super_swat/super_swat.mdl" : "models/character/npc/common/super_swat/super_swat.mdl"
		"models/character/npc/unique/Chinatown/Temple_Guard/Temple_Guard.mdl" : "models/character/npc/unique/Chinatown/Temple_Guard/Temple_Guard.mdl"
		"models/character/npc/unique/Chinatown/Tong/tong.mdl" : "models/character/npc/unique/Chinatown/Tong/tong.mdl"
		"models/character/npc/unique/Downtown/Russian_Thug/Russian_Thug.mdl" : "models/character/npc/unique/Downtown/Russian_Thug/Russian_Thug.mdl"
		"models/character/npc/unique/Giovanni_Mansion/BodyGuard/BodyGuard.mdl" : "models/character/npc/unique/Giovanni_Mansion/BodyGuard/BodyGuard.mdl"
		"models/character/npc/unique/Society_of_Leopold/Average_vampire_hunter/Average_vampire_hunter.mdl" : "models/character/npc/unique/Society_of_Leopold/Average_vampire_hunter/Average_vampire_hunter.mdl"
		"models/character/npc/unique/Society_of_Leopold/elite_hunter/Elite_Hunter.mdl" : "models/character/npc/unique/Society_of_Leopold/elite_hunter/Elite_Hunter.mdl"
	]
	additionalequipment(choices) : "Base Equipment" : "item_w_thirtyeight" : "This is the weapon that NPC will basically use." =	[]
	alternateequipment(choices) : "Alternate Equipment" : "item_w_knife" : "This is the weapon that NPC will use as alternative." =	[]
	stattemplate(choices) : "NPC Stat Template" : "WarehouseThug" : "Goes to data in 'vdata/system/npctemplate***.txt'. NPCs in Hammer are assigned one of these which determines their statistics." = []
	NPCSquadname(string) : "NPC Squad Name" : : "Childrens' Squad Name"
	
	sep_npcrel(string) readonly: "------------------------------------"
	
	// npc-related
	soundgroup(choices) : "Sound Group" :  : "The group of sounds relative to 'sound/character/*' that specifies base NPC action sounds. See 'vdata/system/sndscheme_char.txt' for more details." = []
	radius(integer) : "Radius [-?]" : : "[VTMB] Unknown yet..."
]








//===================================================================================================================
// npc_VHumanCombatPatrol [VTMB-specific]
//===================================================================================================================

@NPCClass base(VBaseNPC,VAddNPCFeats,RenderFields) studio() = npc_VHumanCombatPatrol : 
	"[VTMB] The human combat patrol (like security guards, etc.)."
[
	model(studio) : "Model" : "models/character/npc/common/security_guard/security_guard_skinny/security_guard_skinny.mdl" =
	[
		"models/character/npc/common/security_guard/security_guard_skinny/security_guard_skinny.mdl" : "models/character/npc/common/security_guard/security_guard_skinny/security_guard_skinny.mdl"
	]
	additionalequipment(choices) : "Base Equipment" : "item_w_thirtyeight" : "This is the weapon that NPC will basically use." =	[]
	alternateequipment(choices) : "Alternate Equipment" : "item_w_baton" : "This is the weapon that NPC will use as alternative." =	[]
	stattemplate(choices) : "NPC Stat Template" : "MuseumGuard" : "Goes to data in 'vdata/system/npctemplate***.txt'. NPCs in Hammer are assigned one of these which determines their statistics." = []
	player_reaction(choices) : "Reaction to Player" : "D_HT 5" : "Type of NPC's relationship with player. Use <str_type> <int_degree> format,\n\n"+
		"  where <type> is:\n"+
		"    D_LI [0-10] --> Likes Player (Will Defend)\n"+
		"    D_NU [0-10] --> Neutral (Default)"+
		"    D_HT [0-10] --> Hates Player (Will Attack)" =	[]
	
	pl_criminal_attack(choices) : "Player Criminal Attack" : "1" : "A criminal level is set to the player for certain actions or by script. When the level is equal or greater thean the threshold, the apropriate action is triggered for the npc." =	[]
	pl_criminal_flee(choices) : "Player Criminal Flee" : "5" : "A criminal level is set to the player for certain actions or by script. When the level is equal or greater thean the threshold, the apropriate action is triggered for the npc. \nFlee overrides attack and a value of 6 means no action because the max value is 5." =	[]
	pl_investigate(choices) : "Player Investigate [-?]" : "1" : "[VTMB] Unknown yet..." =	[]
	pl_supernatural_attack(choices) : "Player Supernatural Attack" : "1" : "A supernatural level is set to the player for certain actions or by script. When the level is equal or greater thean the threshold, the apropriate action is triggered for the npc." =	[]
	pl_supernatural_flee(choices) : "Player Supernatural Flee" : "5" : "A supernatural level is set to the player for certain actions or by script. When the level is equal or greater thean the threshold, the apropriate action is triggered for the npc. \nFlee overrides attack and a value of 6 means no action because the max value is 5." =	[]
]









//===================================================================================================================
// npc_VLasombra [VTMB-specific]
//===================================================================================================================

@NPCClass base(VBaseNPC,VAddNPCFeats,RenderFields) studio() = npc_VLasombra : 
	"[VTMB] Lassombra clan members."
[
	model(studio) : "Model" : "models/character/npc/common/lasoblood/lasoblood.mdl" =
	[
		"models/character/npc/common/Sabbat_Henchman/Sabbat_Henchman.mdl" : "models/character/npc/common/Sabbat_Henchman/Sabbat_Henchman.mdl"
		"models/character/npc/common/lasoblood/lasoblood.mdl" : "models/character/npc/common/lasoblood/lasoblood.mdl"
	]
	additionalequipment(choices) : "Base Equipment" : "item_w_glock_17c" : "This is the weapon that NPC will basically use." =	[]

	stattemplate(choices) : "NPC Stat Template" : "VampireLasombra" : "Goes to data in 'vdata/system/npctemplate***.txt'. NPCs in Hammer are assigned one of these which determines their statistics." = []
	npc_perception(choices) : "NPC Perception Level" : 6 : "Defines NPC's Perception ability level [1...10]." = []
	player_reaction(choices) : "Reaction to Player" : "D_HT 5" : "Type of NPC's relationship with player. Use <str_type> <int_degree> format,\n\n"+
		"  where <type> is:\n"+
		"    D_LI [0-10] --> Likes Player (Will Defend)\n"+
		"    D_NU [0-10] --> Neutral (Default)"+
		"    D_HT [0-10] --> Hates Player (Will Attack)" =	[]
	allow_kick_hint_use(choices) : "Allow Kick Hint Usage [-?]" : 0 : "[VTMB] Unknown yet..." =	[]
	percent_occluded_chase(integer) : "Percent Occluded Chase [-?]" : 0 : "[VTMB] Unknown yet..."
	percent_occluded_cover(integer) : "Percent Occluded Cover [-?]" : 0 : "[VTMB] Unknown yet..."
	percent_occluded_flank(integer) : "Percent Occluded Flank [-?]" : 0 : "[VTMB] Unknown yet..."
	percent_occluded_wait(integer) : "Percent Occluded Wait [-?]" : 100 : "[VTMB] Unknown yet..."
	percent_occluded_walk(integer) : "Percent Occluded Walk [-?]" : 0 : "[VTMB] Unknown yet..."
	bright_route_penalty(integer) : "Bright Route Penalty [-?]" : 10000 : "[VTMB] Unknown yet..."
	stay_entrenched(choices) : "Stay Entrenched [-?]" : 1 : "[VTMB] Unknown yet..." =	[]
]









//===================================================================================================================
// npc_VManBat [VTMB-specific]
//===================================================================================================================

@NPCClass base(VBaseNPC,VAddNPCFeats,RenderFields) studio() = npc_VManBat : 
	"[VTMB] Man-Bat monster NPC."
[
	model(studio) : "Model" : "models/character/monster/manbat/manbat.mdl" =
	[
		"models/character/monster/manbat/manbat.mdl" : "models/character/monster/manbat/manbat.mdl"
	]
	combat_start_activity(choices) : "Initial Combat Activity" : "ACT_INVALID" : "Defines NPC's combat animation when none of actions or outputs applied to him." =	[]
	is_bossmonster(choices) : "NPC is Boss Monter" : 1 : "If set, shows blood scale on screen and process this NPC as a monster." =	[]
	stattemplate(choices) : "NPC Stat Template" : "ManBat" : "Goes to data in 'vdata/system/npctemplate***.txt'. NPCs in Hammer are assigned one of these which determines their statistics." = []
	pl_investigate(choices) : "Player Investigate [-?]" : "6" : "[VTMB] Unknown yet..." =	[]

	// inputs
	input ManBatStun(void) : "[VTMB: untested connection]"
]







//===================================================================================================================
// npc_VMingXiao [VTMB-specific]
//===================================================================================================================

@NPCClass base(VBaseNPC,VAddNPCFeats,RenderFields) studio() = npc_VMingXiao : 
	"[VTMB] Ming Xiao, the spiritual leader of Quei-Jin."
[
	model(studio) : "Model" : "models/character/npc/unique/Chinatown/Ming_Xiao/MingXiao.mdl" =
	[
		"models/character/npc/unique/Chinatown/Ming_Xiao/MingXiao.mdl" : "models/character/npc/unique/Chinatown/Ming_Xiao/MingXiao.mdl"
	]
	default_camera(vcamerashot) : "Default Camera Shot" : "vdata/CameraShots/DialogDefaultWoman.txt" : "Default camera-shot definition applied when player interacts with this NPC. Related to 'vdata/CameraShots/*.txt' path." =	[]	
	stattemplate(choices) : "NPC Stat Template" : "MingXiao" : "Goes to data in 'vdata/system/npctemplate***.txt'. NPCs in Hammer are assigned one of these which determines their statistics." = []
	npc_perception(choices) : "NPC Perception Level" : 9 : "Defines NPC's Perception ability level [1...10]." = []
	combat_start_activity(choices) : "Initial Combat Activity" : "ACT_INVALID" : "Defines NPC's combat animation when none of actions or outputs applied to him." =	[]

	// inputs
	input StartTransformation(void) : "NPC starts body transforming."
]







//===================================================================================================================
// npc_VNewscaster [VTMB-specific]
//===================================================================================================================

@NPCClass base(VBaseNPC,RenderFields) studio() = npc_VNewscaster : 
	"[VTMB] The Newcaster. You could turn on the TV to see him..."
[
	model(studio) : "Model" : "models/character/npc/common/blueblood/male/Newscaster_Male.mdl" =
	[
		"models/character/npc/common/blueblood/male/Newscaster_Male.mdl" : "models/character/npc/common/blueblood/male/Newscaster_Male.mdl"
	]
]






//===================================================================================================================
// npc_VPedestrian [VTMB-specific]
//===================================================================================================================

@NPCClass base(VBaseNPC,VAddNPCFeats,RenderFields) studio() = npc_VPedestrian : 
	"[VTMB] Generic city pedestrian."
[
	model(studio) : "Model" : "models/character/npc/common/citizen/male/male_citizen_1.mdl" =
	[
		"models/character/npc/common/blueblood/female/blueblood_female.mdl" : "models/character/npc/common/blueblood/female/blueblood_female.mdl"
		"models/character/npc/common/blueblood/male/Blueblood_Male.mdl" : "models/character/npc/common/blueblood/male/Blueblood_Male.mdl"
		"models/character/npc/common/bum/Female/bum_female.mdl" : "models/character/npc/common/bum/Female/bum_female.mdl"
		"models/character/npc/common/bum/Male/bum_male.mdl" : "models/character/npc/common/bum/Male/bum_male.mdl"
		"models/character/npc/common/citizen/Chinatown/female1/chinese_girl.mdl" : "models/character/npc/common/citizen/Chinatown/female1/chinese_girl.mdl"
		"models/character/npc/common/citizen/Chinatown/male1/ChinaTown_Male.mdl" : "models/character/npc/common/citizen/Chinatown/male1/ChinaTown_Male.mdl"
		"models/character/npc/common/citizen/female/female_citizen.mdl" : "models/character/npc/common/citizen/female/female_citizen.mdl"
		"models/character/npc/common/citizen/female2/female_citizen_2.mdl" : "models/character/npc/common/citizen/female2/female_citizen_2.mdl"
		"models/character/npc/common/citizen/male/male_citizen_1.mdl" : "models/character/npc/common/citizen/male/male_citizen_1.mdl"
		"models/character/npc/common/citizen/male2/male_citizen_2.mdl" : "models/character/npc/common/citizen/male2/male_citizen_2.mdl"
		"models/character/npc/common/dancer/female_1/Female_Dancer_1.mdl" : "models/character/npc/common/dancer/female_1/Female_Dancer_1.mdl"
		"models/character/npc/common/dancer/female_2/Female_Dancer_2.mdl" : "models/character/npc/common/dancer/female_2/Female_Dancer_2.mdl"
		"models/character/npc/common/dancer/female_3/Female_Dancer_3.mdl" : "models/character/npc/common/dancer/female_3/Female_Dancer_3.mdl"
		"models/character/npc/common/dancer/female_4/Female_Dancer_4.mdl" : "models/character/npc/common/dancer/female_4/Female_Dancer_4.mdl"
		"models/character/npc/common/dancer/male_1/Male_Dancer_1.mdl" : "models/character/npc/common/dancer/male_1/Male_Dancer_1.mdl"
		"models/character/npc/common/dancer/male_2/Male_Dancer_2.mdl" : "models/character/npc/common/dancer/male_2/Male_Dancer_2.mdl"
		"models/character/npc/common/dancer/male_3/Male_Dancer_3.mdl" : "models/character/npc/common/dancer/male_3/Male_Dancer_3.mdl"
		"models/character/npc/common/dancer/male_4/Male_Dancer_4.mdl" : "models/character/npc/common/dancer/male_4/Male_Dancer_4.mdl"
		"models/character/npc/common/ghoul/ventrue/Ventrue_ghoul_male.mdl" : "models/character/npc/common/ghoul/ventrue/Ventrue_ghoul_male.mdl"
		"models/character/npc/common/Goth_kids/female/Goth_Female.mdl" : "models/character/npc/common/Goth_kids/female/Goth_Female.mdl"
		"models/character/npc/common/Goth_kids/male/goth_male.mdl" : "models/character/npc/common/Goth_kids/male/goth_male.mdl"
		"models/character/npc/common/hustler/Hustler_1_Ref.mdl" : "models/character/npc/common/hustler/Hustler_1_Ref.mdl"
		"models/character/npc/common/hustler/Hustler_2_Ref.mdl" : "models/character/npc/common/hustler/Hustler_2_Ref.mdl"
		"models/character/npc/common/lotusblossom_girl/lotusblossom_girl.mdl" : "models/character/npc/common/lotusblossom_girl/lotusblossom_girl.mdl"
		"models/character/npc/common/patron/male/male_patron_1.mdl" : "models/character/npc/common/patron/male/male_patron_1.mdl"
		"models/character/npc/common/patron/male/male_patron_2.mdl" : "models/character/npc/common/patron/male/male_patron_2.mdl"
		"models/character/npc/common/prostitute/prostitute_1/prostitute_1.mdl" : "models/character/npc/common/prostitute/prostitute_1/prostitute_1.mdl"
		"models/character/npc/common/prostitute/prostitute_2/prostitute_2_Ref.mdl" : "models/character/npc/common/prostitute/prostitute_2/prostitute_2_Ref.mdl"
		"models/character/npc/common/raver/females/female_raver_1/female_raver_1.mdl" : "models/character/npc/common/raver/females/female_raver_1/female_raver_1.mdl"
		"models/character/npc/common/raver/females/female_raver_2/female_raver_2.mdl" : "models/character/npc/common/raver/females/female_raver_2/female_raver_2.mdl"
		"models/character/npc/common/stripper/Stripper_reduced_01.mdl" : "models/character/npc/common/stripper/Stripper_reduced_01.mdl"
		"models/character/npc/unique/Downtown/CDCGuy/CDCGuy.mdl" : "models/character/npc/unique/Downtown/CDCGuy/CDCGuy.mdl"
		"models/character/npc/unique/Downtown/Feedbag/Feedbag.mdl" : "models/character/npc/unique/Downtown/Feedbag/Feedbag.mdl"
		"models/character/npc/unique/Santa_Monica/Ghost/Ghost.mdl" : "models/character/npc/unique/Santa_Monica/Ghost/Ghost.mdl"
		"models/character/npc/unique/Santa_Monica/Heather/Heather.mdl" : "models/character/npc/unique/Santa_Monica/Heather/Heather.mdl"
		"models/character/npc/unique/Santa_Monica/Heather/Heather_3.mdl" : "models/character/npc/unique/Santa_Monica/Heather/Heather_3.mdl"
		"models/character/npc/unique/Santa_Monica/Heather/Heather_goth.mdl" : "models/character/npc/unique/Santa_Monica/Heather/Heather_goth.mdl"
	]
	stattemplate(choices) : "NPC Stat Template" : "CivilianGeneric" : "Goes to data in 'vdata/system/npctemplate***.txt'. NPCs in Hammer are assigned one of these which determines their statistics." = []
	pl_criminal_flee(choices) : "Player Criminal Flee" : "2" : "A criminal level is set to the player for certain actions or by script. When the level is equal or greater thean the threshold, the apropriate action is triggered for the npc. \nFlee overrides attack and a value of 6 means no action because the max value is 5." =	[]
	pl_investigate(choices) : "Player Investigate [-?]" : "6" : "[VTMB] Unknown yet..." =	[]
	pl_supernatural_flee(choices) : "Player Supernatural Flee" : "1" : "A supernatural level is set to the player for certain actions or by script. When the level is equal or greater thean the threshold, the apropriate action is triggered for the npc. \nFlee overrides attack and a value of 6 means no action because the max value is 5." =	[]

	sep_npcrel(string) readonly: "------------------------------------"
	
	// npc-specific
	level_reset_type(choices) : "Level Reset Type" : 0 : "Defines dialog resetting mode depending on level changing or reloading [not tested]." =
	[
		0 : "Type 0 (unknown yet)"
		1 : "Type 1 (unknown yet)"
		2 : "Type 2 (unknown yet)"
	]
 	spawnflags(Flags) = 
	[
		4 : "Fall to ground (unchecked means *teleport* to ground)" : 1
		8192: "Flag 8192 (unknown yet)" : 1
	]
]







//===================================================================================================================
// npc_VProneDialog [VTMB-specific]
//===================================================================================================================

@NPCClass base(VBaseNPC,VAddNPCFeats,RenderFields) studio() = npc_VProneDialog : 
	"[VTMB] Prone dialog NPC [unknown yet]."
[
	model(studio) : "Model" : "models/character/npc/unique/Santa_Monica/Mercurio/MercurioDamaged.mdl" =
	[
		"models/character/npc/unique/Downtown/Hannah/Hannah.mdl" : "models/character/npc/unique/Downtown/Hannah/Hannah.mdl"
		"models/character/npc/unique/Santa_Monica/Heather/HeatherNearDeath.mdl" : "models/character/npc/unique/Santa_Monica/Heather/HeatherNearDeath.mdl"
		"models/character/npc/unique/Santa_Monica/Mercurio/MercurioDamaged.mdl" : "models/character/npc/unique/Santa_Monica/Mercurio/MercurioDamaged.mdl"
	]
	default_camera(vcamerashot) : "Default Camera Shot" : "vdata/CameraShots/Mercurio.txt" : "Default camera-shot definition applied when player interacts with this NPC. Related to 'vdata/CameraShots/*.txt' path." =	[]
	default_disposition(choices) : "Default Disposition" : "Damaged" : "Default NPC's disposition. Goes to 'vdata/system/dispositiontable.txt' definitions." =	[]
	stattemplate(choices) : "NPC Stat Template" : "Mercurio" : "Goes to data in 'vdata/system/npctemplate***.txt'. NPCs in Hammer are assigned one of these which determines their statistics." = []
	pl_investigate(choices) : "Player Investigate" : "6" : "[VTMB] Unknown yet..." =	[]

	sep_npcrel(string) readonly: "------------------------------------"
	
	// npc-specific
	ignore_detected_attack(choices) : "Ignore Detected Attack" : 1 : "Ignores when detects attack from other side." =
	[
		0 : "No"
		1 : "Yes"
	]
	floatfreq(integer) : "Floats Frequency" : 8 : "[VTMB] Determines how often this NPC will play float sound lines when player's near him. Higher values will make floats play more often, '0' disables them fully."
]







//===================================================================================================================
// npc_VRat [VTMB-specific]
//===================================================================================================================

@NPCClass base(VBaseNPC,VAddNPCFeats,RenderFields) studio() = npc_VRat : 
	"[VTMB] The rat. Player can feed them if humans are the great luxury at this moment."
[
	model(studio) : "Model" : "models/character/monster/rat/rat.mdl" =
	[
		"models/character/monster/rat/rat.mdl" : "models/character/monster/rat/rat.mdl"
	]
	stattemplate(choices) : "NPC Stat Template" : "Rat" : "Goes to data in 'vdata/system/npctemplate***.txt'. NPCs in Hammer are assigned one of these which determines their statistics." = []
	pl_investigate(choices) : "Player Investigate" : "6" : "[VTMB] Unknown yet..." =	[]

	sep_npcrel(string) readonly: "------------------------------------"
	
	// rat-specific
	detection_distance(integer) : "Detection Distance" : 256 : "Defines distance rat can wind the player."
	friendship_level(integer) : "Friendship Level" : 1 : "The level of rat's friendliness in relation to player."
	ignore_nosferatu(choices) : "Ignore Nosferatu" : 1 : "If set, the rats don't run away from Nosferatu player." = [ 0 : "No" 1 : "Yes" ]
	must_detect(choices) : "Must Detect [-?]" : "1" : "[VTMB] Unknown yet..." = [ 0 : "No" 1 : "Yes" ]
	fright_distance(integer) : "Fright Distance" : 128 : "Distance that rat will frights the player."
	fright_duration(float) : "Fright Duration" : "5.0" : "Duration of rat's fright when it nearby the player."
	conflict_range(integer) : "Conflict Range" : 100 : "[VTMB] Unknown yet..."
	warn_range(integer) : "Warn Range" : 200 : "[VTMB] Unknown yet..."

	sep_npcrel2(string) readonly: "------------------------------------"
	
	// npc-specific
	use_interesting(choices) : "Use Interesting Places" : 1 : "Make NPC to use Interesting Places' features. \nThis and the interesting groups work fine if there are info_nodes in the area of the interesting places." =	[]
	interesting_place_groups(choices) : "Interesting Place Groups" : "20" : "[VTMB] Unknown yet. Type numbers of groups dividing with spaces." =	[]
]








//===================================================================================================================
// npc_VSabbatGunman [VTMB-specific]
//===================================================================================================================

@NPCClass base(VBaseNPC,VAddNPCFeats,RenderFields) studio() = npc_VSabbatGunman : 
	"[VTMB] A Sabbat thug with the gunshot."
[
	model(studio) : "Model" : "models/character/npc/common/Sabbat_Henchman/Sabbat_Henchman.mdl" =
	[
		"models/character/npc/common/Sabbat_Henchman/Sabbat_Henchman.mdl" : "models/character/npc/common/Sabbat_Henchman/Sabbat_Henchman.mdl"
	]
	additionalequipment(choices) : "Base Equipment" : "item_w_ithaca_m_37" : "This is the weapon that NPC will basically use." =	[]
	stattemplate(choices) : "NPC Stat Template" : "SabbatCelerityShottie" : "Goes to data in 'vdata/system/npctemplate***.txt'. NPCs in Hammer are assigned one of these which determines their statistics." = []
	player_reaction(choices) : "Reaction to Player" : "D_HT 5" : "Type of NPC's relationship with player. Use <str_type> <int_degree> format,\n\n"+
		"  where <type> is:\n"+
		"    D_LI [0-10] --> Likes Player (Will Defend)\n"+
		"    D_NU [0-10] --> Neutral (Default)"+
		"    D_HT [0-10] --> Hates Player (Will Attack)" =	[]
]








//===================================================================================================================
// npc_VSabbatLeader [VTMB-specific]
//===================================================================================================================

@NPCClass base(VBaseNPC,RenderFields) studio() = npc_VSabbatLeader : 
	"[VTMB] Andrei, the Tzimisce clan member and Sabbat leader."
[
	model(studio) : "Model" : "models/character/npc/unique/Hollywood/Andrei/Andrei.mdl" =
	[
		"models/character/npc/unique/Hollywood/Andrei/Andrei.mdl" : "models/character/npc/unique/Hollywood/Andrei/Andrei.mdl"
	]
	additionalequipment(choices) : "Base Equipment" : "item_w_sabbatleader_attack" : "This is the weapon that NPC will basically use." =	[]
	dialogname(vdialog) : "Dialog File" : "dlg/Hollywood/Andrei.dlg" : "Defines dialogue script depending on certain NPC and situation." =	[]
	is_bossmonster(choices) : "NPC is Boss Monter" : 1 : "If set, shows blood scale on screen and process this NPC as a monster." =	[]
	stattemplate(choices) : "NPC Stat Template" : "VampireSabbatLeader" : "Goes to data in 'vdata/system/npctemplate***.txt'. NPCs in Hammer are assigned one of these which determines their statistics." = []
	npc_perception(choices) : "NPC Perception Level" : 10 : "Defines NPC's Perception ability level [1...10]." = []

	// inputs
	input StartTransformation(void) : "NPC starts body transforming."
]








//===================================================================================================================
// npc_VScurrying [VTMB-specific]
//===================================================================================================================

@NPCClass base(VBaseNPC,VAddNPCFeats,RenderFields) studio() = npc_VScurrying : 
	"[VTMB] Misc feedable scurrying creations, like rats, cats, snakes, etc."
[
	model(studio) : "Model" : "models/character/monster/rat/rat.mdl" =
	[
		"models/character/monster/rat/rat.mdl" : "models/character/monster/rat/rat.mdl"
	]
	default_camera(vcamerashot) : "Default Camera Shot" : "CabbieSewer" : "Default camera-shot definition applied when player interacts with this NPC. Related to 'vdata/CameraShots/*.txt' path." =	[]	
	dialogname(vdialog) : "Dialog Name" : "dlg/Generic/CabbieSewer.dlg" : "Defines dialogue script depending on certain NPC and situation." =	[]
	stattemplate(choices) : "NPC Stat Template" : "Scurrying" : "Goes to data in 'vdata/system/npctemplate***.txt'. NPCs in Hammer are assigned one of these which determines their statistics." = []
	pl_investigate(choices) : "Player Investigate [-?]" : 6 : "[VTMB] Unknown yet..." =	[]
	hearing(float) : "Hearing Volume" : "0.1" : "NPC's hearing radius [0...100]. Set '-1' as default [not tested]."

	sep_npcrel(string) readonly: "------------------------------------"
	
	// scurrying-specific
	detection_distance(integer) : "Detection Distance" : 0 : "Defines distance creation can wind the player."
	friendship_level(integer) : "Friendship Level" : 6 : "The level of creation's friendliness in relation to player."
	ignore_nosferatu(choices) : "Ignore Nosferatu" : 1 : "If set, the creations don't run away from Nosferatu player." =
	[
		0 : "No"
		1 : "Yes"
	]
	must_detect(choices) : "Must Detect [-?]" : 1 : "[VTMB] Unknown yet..." =
	[
		0 : "No"
		1 : "Yes"
	]
	fright_distance(integer) : "Fright Distance" : 128 : "Distance that creation will frights the player."
	fright_duration(float) : "Fright Duration" : "5.0" : "Duration of creation's fright when it nearby the player."
	conflict_range(integer) : "Conflict Range" : 100 : "[VTMB] Unknown yet..."
	warn_range(integer) : "Warn Range" : 200 : "[VTMB] Unknown yet..."

	sep_npcrel2(string) readonly: "------------------------------------"
	
	// npc-specific
	use_interesting(choices) : "Use Interesting Places" : 1 : "Make NPC to use Interesting Places' features. \nThis and the interesting groups work fine if there are info_nodes in the area of the interesting places." =	[]
	interesting_place_groups(choices) : "Interesting Place Groups" : 21 : "[VTMB] Unknown yet. Type numbers of groups dividing with spaces." =	[]
]








//===================================================================================================================
// npc_VSheriffMan [VTMB-specific]
//===================================================================================================================

@NPCClass base(VBaseNPC,VAddNPCFeats,RenderFields) studio() = npc_VSheriffMan : 
	"[VTMB] The Sheriff man. You just *must* kill this bastard..."
[
	model(studio) : "Model" : "models/character/npc/unique/Downtown/Sheriff/Sheriff_Battle.mdl" =
	[
		"models/character/npc/unique/Downtown/Sheriff/Sheriff_Battle.mdl" : "models/character/npc/unique/Downtown/Sheriff/Sheriff_Battle.mdl"
	]
	additionalequipment(choices) : "Base Equipment" : "item_w_sheriff_sword" : "This is the weapon that NPC will basically use." =	[]
	combat_start_activity(choices) : "Initial Combat Activity" : "ACT_INVALID" : "Defines NPC's combat animation when none of actions or outputs applied to him." =	[]
	is_bossmonster(choices) : "NPC is Boss Monter" : 1 : "If set, shows blood scale on screen and process this NPC as a monster." =	[]
	stattemplate(choices) : "NPC Stat Template" : "SheriffMan" : "Goes to data in 'vdata/system/npctemplate***.txt'. NPCs in Hammer are assigned one of these which determines their statistics." = []
	npc_perception(choices) : "NPC Perception Level" : 10 : "Defines NPC's Perception ability level [1...10]." = []
	pl_criminal_attack(choices) : "Player Criminal Attack" : 1 : "A criminal level is set to the player for certain actions or by script. When the level is equal or greater thean the threshold, the apropriate action is triggered for the npc." =	[]
	pl_investigate(choices) : "Player Investigate" : 6 : "[VTMB] Unknown yet..." =	[]
	pl_supernatural_attack(choices) : "Player Supernatural Attack" : 1 : "A supernatural level is set to the player for certain actions or by script. When the level is equal or greater thean the threshold, the apropriate action is triggered for the npc." =	[]
	interesting_place_groups(choices) : "Interesting Place Groups" : 1 : "[VTMB] Unknown yet. Type numbers of groups dividing with spaces." =	[]

	sep_npcrel(string) readonly: "------------------------------------"
	
	// npc-related
	soundgroup(choices) : "Sound Group" : "Sheriff_Manbat" : "The group of sounds relative to 'sound/character/*' that specifies base NPC action sounds. See 'vdata/system/sndscheme_char.txt' for more details." = []
	spawnflags(Flags) = 
	[
		4 : "Fall to ground (unchecked means *teleport* to ground)" : 1
		8192: "Flag 8192 (unknown yet)" : 1
	]

	// inputs
	input CampEnter(integer) : "[VTMB: untested connection]"
	input CampExit(integer) : "[VTMB: untested connection]"
	input StairsEnter(integer) : "[VTMB: untested connection]"
	input StairsExit(integer) : "[VTMB: untested connection]"
	input StartAttacking(void) : "[VTMB: untested connection]"
	input StartTransformation(void) : "NPC starts body transforming."
]








//===================================================================================================================
// npc_VTaxiDriver [VTMB-specific]
//===================================================================================================================

@NPCClass base(VBaseNPC,VAddNPCFeats,RenderFields) studio() = npc_VTaxiDriver : 
	"[VTMB] A Taxi driver NPC. Can transition the player between levels."
[
	model(studio) : "Model" : "models/character/npc/common/cabbie/Cabbie.mdl" =
	[
		"models/character/npc/common/cabbie/Cabbie.mdl" : "models/character/npc/common/cabbie/Cabbie.mdl"
	]
	default_camera(vcamerashot) : "Default Camera Shot" : "vdata/CameraShots/Cabbie.txt" : "Default camera-shot definition applied when player interacts with this NPC. Related to 'vdata/CameraShots/*.txt' path." =	[]	
	dialogname(vdialog) : "Dialog File" : "dlg/Generic/Cabbie.dlg" : "Defines dialogue script depending on certain NPC and situation." =
	[
		"dlg/Generic/Cabbie.dlg" : "dlg/Generic/Cabbie.dlg"
		"dlg/Main Characters/Caine.dlg" : "dlg/Main Characters/Caine.dlg"
	]
	combat_start_activity(choices) : "Initial Combat Activity" : "ACT_INVALID" : "Defines NPC's combat animation when none of actions or outputs applied to him." =	[]
	invincible(choices) : "NPC is Invincible" : 1 : "If set, the player can't kill this NPC." =	[]
	stattemplate(choices) : "NPC Stat Template" : "Cabbie" : "Goes to data in 'vdata/system/npctemplate***.txt'. NPCs in Hammer are assigned one of these which determines their statistics." = []
	pl_investigate(choices) : "Player Investigate" : "6" : "[VTMB] Unknown yet..." =	[]
	
	sep_npcrel(string) readonly: "------------------------------------"
	
	// taxi-related
	usescript(string) : "Use Python Script" : "1" : "This is a Python script that defines additional dialog params [not tested]."

	spawnflags(Flags) = 
	[
		4 : "Fall to ground (unchecked means *teleport* to ground)" : 1
		8 : "Flag 8 (unknown yet)" : 1
		8192: "Flag 8192 (unknown yet)" : 1
	]
]







	
//===================================================================================================================
// npc_VTzimisce [VTMB-specific]
//===================================================================================================================

@NPCClass base(VBaseNPC,VAddNPCFeats,RenderFields) studio() = npc_VTzimisce : 
	"[VTMB] The Tzimisce's creations, type 1."
[
	model(studio) : "Model" : "models/character/monster/tzimisce/creation1/creation1_full.mdl" =
	[
		"models/character/monster/tzimisce/creation1/creation1_full.mdl" : "models/character/monster/tzimisce/creation1/creation1_full.mdl"
	]
	stattemplate(choices) : "NPC Stat Template" : "TzimisceCreation1" : "Goes to data in 'vdata/system/npctemplate***.txt'. NPCs in Hammer are assigned one of these which determines their statistics." = []
	player_reaction(choices) : "Reaction to Player" : "D_HT 10" : "Type of NPC's relationship with player. Use <str_type> <int_degree> format,\n\n"+
		"  where <type> is:\n"+
		"    D_LI [0-10] --> Likes Player (Will Defend)\n"+
		"    D_NU [0-10] --> Neutral (Default)"+
		"    D_HT [0-10] --> Hates Player (Will Attack)" =	[]
	percent_occluded_chase(integer) : "Percent Occluded Chase [-?]" : 100 : "[VTMB] Unknown yet..."
	percent_occluded_cover(integer) : "Percent Occluded Cover [-?]" : 0 : "[VTMB] Unknown yet..."
	percent_occluded_flank(integer) : "Percent Occluded Flank [-?]" : 0 : "[VTMB] Unknown yet..."
	percent_occluded_wait(integer) : "Percent Occluded Wait [-?]" : 10 : "[VTMB] Unknown yet..."
	percent_occluded_walk(integer) : "Percent Occluded Walk [-?]" : 0 : "[VTMB] Unknown yet..."
	hearing(float) : "Hearing Volume" : "0.4" : "NPC's hearing radius [0...100]. Set '-1' as default [not tested]."
	vision(float) : "Vision Radius" : "1000" : "NPC's vision radius (units). Set '-1' as default [not tested]."
]







	
//===================================================================================================================
// npc_VTzimisceHeadClaw [VTMB-specific]
//===================================================================================================================

@NPCClass base(VBaseNPC,VAddNPCFeats,RenderFields) studio() = npc_VTzimisceHeadClaw : 
	"[VTMB] The Tzimisce's creations, type 2."
[
	model(studio) : "Model" : "models/character/monster/tzimisce/creation2/creation2_full.mdl" =
	[
		"models/character/monster/tzimisce/creation2/creation2_full.mdl" : "models/character/monster/tzimisce/creation2/creation2_full.mdl"
	]
	stattemplate(choices) : "NPC Stat Template" : "TzimisceCreation2" : "Goes to data in 'vdata/system/npctemplate***.txt'. NPCs in Hammer are assigned one of these which determines their statistics." = []
	player_reaction(choices) : "Reaction to Player" : "D_HT 10" : "Type of NPC's relationship with player. Use <str_type> <int_degree> format,\n\n"+
		"  where <type> is:\n"+
		"    D_LI [0-10] --> Likes Player (Will Defend)\n"+
		"    D_NU [0-10] --> Neutral (Default)"+
		"    D_HT [0-10] --> Hates Player (Will Attack)" =	[]
	allow_alert_lookaround(choices) : "Allow Lookaround on Alert" : 0 : "Defines, should NPC be able to look around when alerted, or not." =	[]
	hearing(float) : "Hearing Radius" : "0.4" : "NPC's hearing radius [0...100]. Set '-1' as default [not tested]."
	vision(float) : "Vision Radius" : "1000" : "NPC's vision radius (units). Set '-1' as default [not tested]."
]







	
//===================================================================================================================
// npc_VTzimisceRunner [VTMB-specific]
//===================================================================================================================

@NPCClass base(VBaseNPC,VAddNPCFeats,RenderFields) studio() = npc_VTzimisceRunner : 
	"[VTMB] The Tzimisce's creations, type 3."
[
	model(studio) : "Model" : "models/character/monster/tzimisce/creation3/tzim3.mdl" =
	[
		"models/character/monster/tzimisce/creation3/tzim3.mdl" : "models/character/monster/tzimisce/creation3/tzim3.mdl"
	]
	stattemplate(choices) : "NPC Stat Template" : "TzimisceCreation3" : "Goes to data in 'vdata/system/npctemplate***.txt'. NPCs in Hammer are assigned one of these which determines their statistics." = []
	player_reaction(choices) : "Reaction to Player" : "D_HT 10" : "Type of NPC's relationship with player. Use <str_type> <int_degree> format,\n\n"+
		"  where <type> is:\n"+
		"    D_LI [0-10] --> Likes Player (Will Defend)\n"+
		"    D_NU [0-10] --> Neutral (Default)"+
		"    D_HT [0-10] --> Hates Player (Will Attack)" =	[]
	hearing(float) : "Hearing Radius" : "0.4" : "NPC's hearing radius [0...100]. Set '-1' as default [not tested]."
	vision(float) : "Vision Radius" : "1000" : "NPC's vision radius (units). Set '-1' as default [not tested]."
	radius(float) : "Radius [-?]" : : "[VTMB] Unknown yet..."
]







//===================================================================================================================
// npc_VVampire [VTMB-specific]
//===================================================================================================================

@NPCClass base(VBaseNPC,VAddNPCFeats,RenderFields) studio() = npc_VVampire : 
	"[VTMB] Generic Vampire character."
[
	model(studio) : "Model" : "models/character/npc/unique/Santa_Monica/E/E.mdl" =
	[
		"models/character/monster/Animalism_Beastform/Animalism_Beastform.mdl" : "models/character/monster/Animalism_Beastform/Animalism_Beastform.mdl"
		"models/character/npc/common/Sabbat_Henchman/Sabbat_Henchman.mdl" : "models/character/npc/common/Sabbat_Henchman/Sabbat_Henchman.mdl"
		"models/character/npc/common/Shovelhead/shovelhead.mdl" : "models/character/npc/common/Shovelhead/shovelhead.mdl"
		"models/character/npc/unique/Downtown/Damsel/Damsel.mdl" : "models/character/npc/unique/Downtown/Damsel/Damsel.mdl"
		"models/character/npc/unique/Downtown/LaCroix/Lacroix.mdl" : "models/character/npc/unique/Downtown/LaCroix/Lacroix.mdl"
		"models/character/npc/unique/Downtown/Nines/Nines.mdl" : "models/character/npc/unique/Downtown/Nines/Nines.mdl"
		"models/character/npc/unique/Downtown/Regent/Regent.mdl" : "models/character/npc/unique/Downtown/Regent/Regent.mdl"
		"models/character/npc/unique/Downtown/Sheriff/Sheriff.mdl" : "models/character/npc/unique/Downtown/Sheriff/Sheriff.mdl"
		"models/character/npc/unique/Downtown/Skelter/Skelter.mdl" : "models/character/npc/unique/Downtown/Skelter/Skelter.mdl"
		"models/character/npc/unique/Downtown/Smiling_Jack/Smiling_Jack.mdl" : "models/character/npc/unique/Downtown/Smiling_Jack/Smiling_Jack.mdl"
		"models/character/npc/unique/Downtown/VV/VV.mdl" : "models/character/npc/unique/Downtown/VV/VV.mdl"
		"models/character/npc/unique/Hollywood/Ash/Ash.mdl" : "models/character/npc/unique/Hollywood/Ash/Ash.mdl"
		"models/character/npc/unique/Hollywood/Gary/Nosferatu_Gary.mdl" : "models/character/npc/unique/Hollywood/Gary/Nosferatu_Gary.mdl"
		"models/character/npc/unique/Hollywood/Isaac/Isaac.mdl" : "models/character/npc/unique/Hollywood/Isaac/Isaac.mdl"
		"models/character/npc/unique/Hollywood/Mitnick/Mitnick.mdl" : "models/character/npc/unique/Hollywood/Mitnick/Mitnick.mdl"
		"models/character/npc/unique/Santa_Monica/Beckett/Beckett.mdl" : "models/character/npc/unique/Santa_Monica/Beckett/Beckett.mdl"
		"models/character/npc/unique/Santa_Monica/Jeanette/Jeanette.mdl" : "models/character/npc/unique/Santa_Monica/Jeanette/Jeanette.mdl"
		"models/character/npc/unique/Santa_Monica/Lily/Lily.mdl" : "models/character/npc/unique/Santa_Monica/Lily/Lily.mdl"
		"models/character/npc/unique/Santa_Monica/Serial_Killer/Serial_Killer.mdl" : "models/character/npc/unique/Santa_Monica/Serial_Killer/Serial_Killer.mdl"
		"models/character/npc/unique/Santa_Monica/Therese/Therese.mdl" : "models/character/npc/unique/Santa_Monica/Therese/Therese.mdl"
		"models/character/npc/unique/Santa_Monica/Tourette/Tourette.mdl" : "models/character/npc/unique/Santa_Monica/Tourette/Tourette.mdl"
	]
	additionalequipment(choices) : "Base Equipment" : "item_w_claws" : "This is the weapon that NPC will basically use." =	[]
	stattemplate(choices) : "NPC Stat Template" : "VampireGeneric" : "Goes to data in 'vdata/system/npctemplate***.txt'. NPCs in Hammer are assigned one of these which determines their statistics." = []

	// vampire-specific
	soundgroup(choices) : "Sound Group" : "Unique/E" : "The group of sounds relative to 'sound/character/*' that specifies base NPC action sounds. See 'vdata/system/sndscheme_char.txt' for more details." = []
	follower_boss(choices) : "Follower Boss [-?]" : "" : "[VTMB] Unknown yet..." =
	[
		"" : "None"
		"Default" : "Default"
		"!player" : "Player"
	]
]
	
	
	
	

//===================================================================================================================
// npc_VVampireBoss [VTMB-specific]
//===================================================================================================================

@NPCClass base(VBaseNPC,VAddNPCFeats,RenderFields) studio() = npc_VVampireBoss : 
	"[VTMB] Vampire boss NPC."
[
	model(studio) : "Model" : "models/character/monster/wolf_form_2/Wolf_Form_2.mdl" =
	[
		"models/character/monster/wolf_form_2/Wolf_Form_2.mdl" : "models/character/monster/wolf_form_2/Wolf_Form_2.mdl"
		"models/character/npc/unique/Chinatown/Ming_Xiao/MingXiao.mdl" : "models/character/npc/unique/Chinatown/Ming_Xiao/MingXiao.mdl"
	]
	dialogname(vdialog) : "Dialog File" : "dlg/Main Characters/Beckett.dlg" : "Defines dialogue script depending on certain NPC and situation." =
	[
		"dlg/Main Characters/Beckett.dlg" : "dlg/Main Characters/Beckett.dlg"
		"dlg/Main Characters/MingXiao2.dlg" : "dlg/Main Characters/MingXiao2.dlg"
	]

	pl_investigate(choices) : "Player Investigate" : 6 : "[VTMB] Unknown yet..." =	[]

	sep_npcrel(string) readonly: "------------------------------------"
	
	// npc-specific
	MorphModel(studio) : "Morph Model" : "models/character/npc/unique/Santa_Monica/Beckett/Beckett.mdl" : "The model that renders when NPC transforms to another form." =
	[
		"models/character/npc/unique/Santa_Monica/Beckett/Beckett.mdl" : "models/character/npc/unique/Santa_Monica/Beckett/Beckett.mdl"
		"models/character/npc/unique/Downtown/Nines/Nines.mdl" : "models/character/npc/unique/Downtown/Nines/Nines.mdl"
	]

	// connections
	input TransformModel(void) : "[VTMB: untested connection]"
]


	
	
	

//===================================================================================================================
// npc_VWerewolf [VTMB-specific]
//===================================================================================================================

@NPCClass base(VBaseNPC,RenderFields) studio() = npc_VWerewolf : 
	"[VTMB] Werewolf NPC (meet in Griffith's Park)."
[
	model(studio) : "Model" : "models/character/monster/werewolf/werewolf.mdl" =
	[
		"models/character/monster/werewolf/werewolf.mdl" : "models/character/monster/werewolf/werewolf.mdl"
	]
	
	// connections
	input ToggleDoorState(integer) : "Toogle door state between 'can crush' and 'cannot crush'."
	output OnConditionDeathTriggered(void) : "[VTMB: untested connection]"
	output OnBeginCrushAnimation(void) : "Fired when crush animation begins."
	output OnFinishCrushAnimation(void) : "Fired when crush animation finish."
]
	
	
	
	
	
	
	

//===================================================================================================================
// npc_VYukie [VTMB-specific]
//===================================================================================================================

@NPCClass base(VBaseNPC,VAddNPCFeats,RenderFields) studio() = npc_VYukie : 
	"[VTMB] Yukie (meet in Chinatown's Ramen Shop)."
[
	model(studio) : "Model" : "models/character/npc/unique/Chinatown/Yukie/Yukie.mdl" =
	[
		"models/character/npc/unique/Chinatown/Yukie/Yukie.mdl" : "models/character/npc/unique/Chinatown/Yukie/Yukie.mdl"
	]
	additionalequipment(choices) : "Base Equipment" : "item_w_katana" : "This is the weapon that NPC will basically use." =	[]
	alternateequipment(choices) : "Alternate Equipment" : "item_w_crossbow" : "This is the weapon that NPC will use as alternative." =	[]
	default_camera(vcamerashot) : "Default Camera Shot" : "DialogDefaultWoman" : "Default camera-shot definition applied when player interacts with this NPC. Related to 'vdata/CameraShots/*.txt' path." =	[]
	dialogname(vdialog) : "Dialog File" : "dlg/Chinatown/Yukie.dlg" : "Defines dialogue script depending on certain NPC and situation." =	[]
	stattemplate(choices) : "NPC Stat Template" : "Yukie" : "Goes to data in 'vdata/system/npctemplate***.txt'. NPCs in Hammer are assigned one of these which determines their statistics." = []
	player_reaction(choices) : "Reaction to Player" : "D_LI 5" : "Type of NPC's relationship with player. Use <str_type> <int_degree> format,\n\n"+
		"  where <type> is:\n"+
		"    D_LI [0-10] --> Likes Player (Will Defend)\n"+
		"    D_NU [0-10] --> Neutral (Default)"+
		"    D_HT [0-10] --> Hates Player (Will Attack)" =	[]
	pl_investigate(choices) : "Player Investigate" : 6 : "[VTMB] Unknown yet..." = []
]

	



	
	
	

//===================================================================================================================
// npc_VZombie [VTMB-specific]
//===================================================================================================================

@NPCClass base(VBaseNPC,VAddNPCFeats,RenderFields) studio() = npc_VZombie : 
	"[VTMB] Zombie - that says it all."
[
	model(studio) : "Model" : "models/character/monster/undead/male/undead_Male.mdl" =
	[
		"models/character/monster/undead/female/undead_female.mdl" : "models/character/monster/undead/female/undead_female.mdl"
		"models/character/monster/undead/Female2/undead_Female2.mdl" : "models/character/monster/undead/Female2/undead_Female2.mdl"
		"models/character/monster/undead/male/undead_Male.mdl" : "models/character/monster/undead/male/undead_Male.mdl"
		"models/character/monster/undead/Male2/undead_male_2.mdl" : "models/character/monster/undead/Male2/undead_male_2.mdl"
		"models/character/npc/common/ebola_victim/female/ebola_victim_female_zombie.mdl" : "models/character/npc/common/ebola_victim/female/ebola_victim_female_zombie.mdl"
		"models/character/npc/common/ebola_victim/male/ebola_victim_male_zombie.mdl" : "models/character/npc/common/ebola_victim/male/ebola_victim_male_zombie.mdl"
	]
	additionalequipment(choices) : "Base Equipment" : "item_w_fists" : "This is the weapon that NPC will basically use." =	[]
	cantdropweapons(choices) : "Can't Drop Weapons" : 1 : "If set, all NPC's weapons won't be available when it dead." =	[]
	stattemplate(choices) : "NPC Stat Template" : "Zombie" : "Goes to data in 'vdata/system/npctemplate***.txt'. NPCs in Hammer are assigned one of these which determines their statistics." = []
	player_reaction(choices) : "Reaction to Player" : "D_HT 5" : "Type of NPC's relationship with player. Use <str_type> <int_degree> format,\n\n"+
		"  where <type> is:\n"+
		"    D_LI [0-10] --> Likes Player (Will Defend)\n"+
		"    D_NU [0-10] --> Neutral (Default)"+
		"    D_HT [0-10] --> Hates Player (Will Attack)" =	[]

	sep_npcrel(string) readonly: "------------------------------------"
	
	// zombie-specific
	ZombieAIType(choices) : "Zombie AI Type" : 8 : "Type of AI (like actbusy, behaviors, reactions, etc.) that will be applied to zombie NPC." =
	[
		0 : "Do not use"
		1 : "Type 1 (unknown yet)"
		2 : "Type 2 (unknown yet)"
		3 : "Type 3 (unknown yet)"
		4 : "Type 4 (unknown yet)"
		5 : "Type 5 (unknown yet)"
		6 : "Type 6 (unknown yet)"
		7 : "Type 7 (unknown yet)"
		8 : "Type 8 (unknown yet)"
	]
	friendship_level(integer) : "Friendship Level" : 1 : "The level of NPC's friendliness in relation to player."
	conflict_range(integer) : "Conflict Range" : 100 : "[VTMB] Unknown yet..."
	warn_range(integer) : "Warn Range" : 200 : "[VTMB] Unknown yet..."
	remove_distance(integer) : "Remove Distance" : 1000 : "[VTMB] Unknown yet..."
	should_ragdoll(choices) : "Should be Ragdolls [-?]" : 1 : "[VTMB] Unknown yet..." = [ 0 : "No" 1 : "Yes" ]

	// inputs
	input SetZombieAIType(string) : "[VTMB] Changes zombie's AI type between FearPlayer, FearFacing, Wander, AttackRandom, AttackNearestGate, AttackNextNearestGate, AttackPlayer."
]	




















//******************************************************************************************************************
//******************************************************************************************************************
// 
// End of FGD
// 
//******************************************************************************************************************
//******************************************************************************************************************

vampire-adds.fgd

//====== Copyright © 2003-2017, Troika Games, Inc. All rights reserved. =======
//
// Purpose: Vampire Bloodlines game definition file (.fgd) 
// Version: 1.42 beta
// Edition: Original VtMB [Additional Base]
// Written: Psycho-A
//
//=============================================================================


//-------------------------------------------------------------------------------------------------------------------
// NOTE1: These entities found in game code but not included for its potetial useless and inoperability.
//-------------------------------------------------------------------------------------------------------------------

	// activity_copy_prop
	// ai_hint
	// ai_network
	// aitesthull
	// auspex_aura
	// beam
	// bodyque
	// camera_animated
	// camera_track
	// debug_entity
	// dynamic_prop
	// entityflame
	// disc_particle
	// env_glow
	// env_steamjet
	// env_swarm_bats
	// filter_base
	// flame_cluster
	// func_plat
	// func_wall
	// funCBaseFlex
	// gib
	// gravity_pellet
	// grenade
	// info_constraint_anchor
	// info_intermission
	// info_player_deathmatch
	// instanced_scripted_scene
	// light_glspot
	// logic_proximity
	// momentary_door
	// multisource
	// npc_crow
	// npc_generic_bathack
	// npc_TestBaseHumanoid
	// npc_VTest
	// npc_VPlaceholder
	// npc_VChangBros
	// npc_VCombatman
	// npc_VMercurio
	// npc_VMoleman
	// npc_sabbat
	// physics_prop
	// physics_prop_ragdoll
	// player
	// player_manager
	// player_pickup
	// playerevents
	// prop_base
	// prop_model_state
	// prop_ragdoll_special
	// raggib
	// scripted_scene
	// sheriff_teleport_bats
	// simple_physics_brush
	// simple_physics_prop
	// soundent
	// speaker
	// tectonic
	// te_tester
	// test_traceline
	// trigger
	// trigger_brush
	// vampire_skill
	// vampireprojectile
	// vampireprojectile_mingxiaospit
	// vdisciplineprojectile
	// viewmodel
	// weapon_physcannon
	// window_pane
	// worldevents



//-------------------------------------------------------------------------------------------------------------------
// NOTE2: All of entities below are workable and compatible with Source Engine but not used in game.
//-------------------------------------------------------------------------------------------------------------------

//*******************************************************************************************************************
//*******************************************************************************************************************
//
// AI Entities
//
//*******************************************************************************************************************
//*******************************************************************************************************************


//====================================================================================================================
// ai_changehintgroup [common, HL2-based]
//====================================================================================================================

@PointClass base(Targetname) sphere(Radius)  size(-8 -8 -8, 8 8 8) = ai_changehintgroup : "Change Hint Group"
[
	SearchType(choices) : "Search Type" : 0 : "How to search for the entities to change." = 
	[
		0 : "Entity Name"
		1 : "Classname"
		2 : "Old Hint Group"
	] 
	SearchName(string) : "Name to search for"
	NewHintGroup(string) : "New Hint Group"
	Radius(string) : "Search Radius" : "0.0" : "Radius to search (0 for all of map)"
	hintlimiting(choices) : "Hint Limit Nav" : 0 : "Limits NPC to using specified hint group for navigation requests, does not limit local navigation." =
	[
		0 : "No"
		1 : "Yes"
	]

	input Kill( void ) : "Removes this entity from the world"
	input Activate( void ) : "Change the Hint Group"
]




//====================================================================================================================
// ai_changetarget [common, HL2-based]
//====================================================================================================================

@PointClass base(Targetname) size(-8 -8 -8, 8 8 8) = ai_changetarget : "Change Target"
[
	target(target_destination) : "Target entity" : : "Name of entity whose target will be changed."
	m_iszNewTarget(string) : "New Target"

	// Inputs
	input Kill( void ) : "Removes this entity from the world"
	input Activate( void ) : "Changes the entities target"
]




//====================================================================================================================
// ai_goal_standoff [common, HL2-based]
//====================================================================================================================

@PointClass base(Targetname) iconsprite("editor/ai_goal_standoff.vmt") = ai_goal_standoff : "AI Goal Standoff"
[
	actor(target_destination) : "Actor(s) to affect"
//	goal(string) : "Target Entity (self by default) [NOT IMPLEMENTED]"

	StartActive(choices) : "Start Active" : 0 =
	[
		0 : "No"
		1 : "Yes"
	]

	HintGroupChangeReaction(Choices) : "Reaction to tactical change" : 1 : "What to do if leader moves, threat is neutralized, hint group changes, etc" =
	[
		0 : "Move when ready (default AI)"
		1 : "Move when seek cover"
		2 : "Move immediately"
	]

	Aggressiveness(Choices) : "Aggressiveness" : 2 =
	[
		0 : "Very low"
		1 : "Low"
		2 : "Medium"
		3 : "High"
		4 : "Very High"
		// Custom agression disabled
		// 		100 : "Custom"
	]

	PlayerBattleline(choices) : "Player battleline" : 1 : "Player defines a battle line, applies to allies only" =
	[
		0 : "No"
		1 : "Yes"
	]

	StayAtCover(choices) : "Stay at cover location" : 0 : "When have suitable cover, don't change it (disables advancing to battle line)" =
	[
		0 : "No"
		1 : "Yes"
	]

	// Inputs
	input Activate( void ) : "Begin contesting position"
	input Deactivate( void ) : "Cease contesting position"
	input SetAggressiveness(integer) : "Set aggressiveness"
]



//====================================================================================================================
// ai_sound [common, HL2-based]
//====================================================================================================================

@PointClass base(Targetname,Parentname)
line (
	255 255 255,
	targetname,
	parentname
)
sphere(volume) iconsprite("editor/ai_sound.vmt") = ai_sound :
	"This entity makes sounds or smells that can be sensed by NPCs, but not by the player. This can be used " +
	"to cause reactions in nearby NPCs.\n\n" +
	"Sound Types\n" +
	"  Combat: Will cause most NPCs to become alert\n" +
	"  World: Will cause most NPCs to become alert\n" +
	"  Danger: Will cause most NPCs to move away from the position of the sound\n" +
	"  Bullet Impact: \n" +
	"  Carcass: \n" +
	"  Meat: \n" +
	"  Garbage: \n" +
	"  Thumper: causes antlions to run away briefly\n" +
	"  Readiness: (Low, Medium, High) Causes player companions that can hear this sound to change readiness\n"
[																									  
	input InsertSound(Integer) : "Insert a sound in the AI sound list"

	soundtype(choices) : "Sound Type" : 0 : "The type of sound or smell will determine the reaction of NPCs that sense it." =
	[
		1: "Combat"
		2: "World"
		//4: "Player (Don't use)"
		8: "Danger"
		16: "Bullet Impact"
		32: "Carcass"
		64: "Meat"
		128: "Garbage"
		256: "Thumper"
	]
]












//*******************************************************************************************************************
//*******************************************************************************************************************
//
// Environmental Effects
//
//*******************************************************************************************************************
//*******************************************************************************************************************


//====================================================================================================================
// env_firesensor [common]
//====================================================================================================================

@PointClass base(Targetname,Parentname)
line (
	255 255 255,
	targetname,
	parentname
)
size(-4 -4 -4, 4 4 4) color(255 255 0) sphere(fireradius) = env_firesensor : 
	"An entity that detects changes in heat nearby."
[
	spawnflags(flags) =
	[
		1:	"Start On" : 1
	]

	fireradius(float) : "Radius" : 128
	heatlevel(float) : "Heat level" : 32
	heattime(float) : "Time at level" : 0

	// Inputs
	input Enable(void)				: "Enable fire source"
	input Disable(void)				: "Disable fire source"
	output OnHeatLevelStart(void)	: "Fires when the heat level has been detected for the given length of time"
	output OnHeatLevelEnd(void)		: "Fires when the heat level is no longer detected."
]




//====================================================================================================================
// env_microphone [common]
//====================================================================================================================

@PointClass base(Targetname,Parentname,EnableDisable)
line (
	255 255 255,
	targetname,
	parentname
)
iconsprite("editor/env_microphone.vmt") sphere(MaxRange) color(0 0 255) = env_microphone :
	"An entity that acts as a microphone. It works in one of two modes. If it has a 'Speaker' set, it picks up all sounds within the specified sound range, " +
	"and rebroadcasts them through the Speaker entity. In this Speaker mode, it ignores the Hears X spawnflags and does not fire the SoundLevel output. " +
	"If it has no Speaker set, it measures the sound level at a point, and outputs the sound level as a value between 0 and 1. In Measuring mode, it only hears sounds that match the Hear X spawnflags."
[
	target(target_destination) : "Measure target" : : "The name of an entity where the sound level will be measured."
	SpeakerName(target_destination) : "Speaker" : "" : "The name of a speaker entity through which to play any sounds heard by this microphone."

	spawnflags(flags) =
	[
		1 : "Hears combat sounds" : 1
		2 : "Hears world sounds" : 1
		4 : "Hears player sounds" : 1
		8 : "Hears bullet impacts" : 1
		16: "Swallows sounds routed through speakers" : 0
	]

	Sensitivity(float) : "Sensitivity (0 - 10)" : 1 : "Microphone sensitivity, 0=deaf, 1=default, 10=extremely sensitive)"
	SmoothFactor(float) : "Smoothing (0 - 1)" : 0 : "Smoothing factor, 0=no smoothing, 1=maximum smoothing)"
	MaxRange(float) : "Maximum hearing range (0=infinite)" : 240 : "Sounds beyond this range won't be heard, irrelevant of attenuation. "+
		"WARNING: setting this to zero (or a value > 1024) when the microphone is connected to a speaker entity can be very bad for performance!!"

	// Outputs
	output SoundLevel(float) : "Fires when the sound level at the point changes."
	output OnRoutedSound(void) : "Fires whenever a heard sound is routed out through the specified speaker (if any)."
]



//====================================================================================================================
// env_player_surface_trigger [common]
//====================================================================================================================

@PointClass base(Targetname) = env_player_surface_trigger : 
	"An entity that monitors the material of the surface the player is standing on, and fires outputs whenever it changes to/from a specific material."
[
	gamematerial(choices) : "Game Material to Watch" : "0" : "The material to watch. When the player stands on/off this material, this entity's outputs will be fired." =
	[
		0 : "None (player's in the air)"
		67 : "Concrete"
		77 : "Metal"
		68 : "Dirt"
		86 : "Vent"
		71 : "Grate"
		84 : "Tile"
		83 : "Slosh"
		87 : "Wood"
		80 : "Computer"
		89 : "Glass"
		70 : "Flesh"
		73 : "Clip"
		79 : "Foliage"
		78 : "Sand"
	]
	
	// Inputs
	input Enable(void) : "Start watching the player's surface."
	input Disable(void) : "Stop watching the player's surface."

	// Outputs
	output OnSurfaceChangedToTarget(void) : "Fired when the player moves onto the specified game material."
	output OnSurfaceChangedFromTarget(void) : "Fired when the player moves off the specified game material."
]



//====================================================================================================================
// env_soundscape [common]
//====================================================================================================================

@PointClass base(Targetname,Parentname,EnableDisable)
line (
	255 255 255,
	targetname,
	parentname
)
sphere() iconsprite("editor/env_soundscape.vmt") line(255 255 255, targetname, position0) line(255 255 255, targetname, position1) line(255 255 255, targetname, position2) line(255 255 255, targetname, position3) line(255 255 255, targetname, position4) line(255 255 255, targetname, position5) line(255 255 255, targetname, position6) line(255 255 255, targetname, position7) = env_soundscape : 
	"An entity to control sound in an area. The active soundscape at any time is the last one that had line-of-sight to the player, and was within the radius."
[
	radius(integer) : "Radius" : 128
	soundscape(choices) : "Soundscape" : "Nothing" =
	[
		"Nothing"				: "Nothing"
		"Automatic"				: "Automatic"
		"GenericIndoor"			: "Indoor"
		"GenericOutdoor"		: "Outdoor"
	]
	position0(target_destination) : "Sound Position 0" : "" : "A sound position that will be referenced inside the soundscape text file. Usually used to position a set of sounds within the world."
	position1(target_destination) : "Sound Position 1" : "" : "A sound position that will be referenced inside the soundscape text file. Usually used to position a set of sounds within the world."
	position2(target_destination) : "Sound Position 2" : "" : "A sound position that will be referenced inside the soundscape text file. Usually used to position a set of sounds within the world."
	position3(target_destination) : "Sound Position 3" : "" : "A sound position that will be referenced inside the soundscape text file. Usually used to position a set of sounds within the world."
]



//====================================================================================================================
// env_terrainmorph [common, HL2-based]
//====================================================================================================================

@PointClass base(Targetname,Parentname)
line (
	255 255 255,
	targetname,
	parentname
)
size(-4 -4 -4, 4 4 4) color(0 180 0) = env_terrainmorph : 
	"Morphs terrain by pulling vertices along a normal.\n\n" +
	"Place this entity the desired distance from a terrain surface and set ANGLES " +
	"to the normal along which you want to pull the surface's vertices. If you set the INSTANT spawnflag, " +
	"the morph will take place instantly instead of over time.\n"
[
	startradius( integer ) : "Start Radius" : 500 : "Radius of the effect when morphing begins. Only this value is used" +
													"if the effect is flagged to occur instantly."
	goalradius( integer ) : "Goal Radius" : 100 : "Radius of the effect at the end of morphing. The radius of this effect will change from "+
												  "Start Radius to Goal Radius over the duration of this effect. This value is ignored if the effect is flagged to occur instantly."

	duration( integer ) : "Duration" : 3 : "The morph will take place over this period of time (seconds). Ignored if flagged to occur instantly"

	fraction( integer ) : "Displacement Fraction" : 1 : "If set to 1, the terrain surface will be pulled exactly to this entity's position." +
														" If set to 0.5, the surface will be pulled exactly half way to this entity's position. " +
														"If set to 2, the surface will be pulled to an imaginary point twice as far away as this entity. " +
														"(Any Displacement Fraction greater than 1.0 will result in clipping. The surface cannot be pulled beyond " +
														"This entity's position and any vertices attemping will clip to this entity's position. You may use this feature to create mesas.)"

	// Inputs
	input BeginMorph(void) : "Begin Morph"

	spawnflags(flags) =
	[
		1: "Instant" : 0 
	]
]












//*******************************************************************************************************************
//*******************************************************************************************************************
//
// Function Brushes
//
//*******************************************************************************************************************
//*******************************************************************************************************************


//====================================================================================================================
// func_platrot [common]
//====================================================================================================================
// VTMB-adaptation:
//  removed: Shadow,minlight

@BaseClass = BasePlat
[
 	input Toggle(void) : "Toggles the platform's state."
	input GoUp(void) : "Tells the platform to go up."
	input GoDown(void) : "Tells the platform to go down."
]

@SolidClass base(TargetnameRot,Parentname,p_Origin,RenderFields,BasePlat)
line (
	255 255 255,
	targetname,
	parentname
)
= func_platrot : 
	"A brush entity that moves vertically, and can rotate while doing so." 
[
	spawnflags(Flags) =
	[
		1: "Toggle" : 1
		64: "X Axis" : 0
		128: "Y Axis" : 0
	]
	noise1(sound) : "Movement Sound" : : "The sound to play when the brush moves."
	noise2(sound) : "Stop Sound" : : "The sound to play when the brush stops moving."
	speed(integer) : "Speed of Rotation" : 50 : "Speed at which the brush rotates, in degrees per second."
	height(integer) : "Travel Altitude" : 0 : "The vertical distance from the starting position that this platform moves. If negative, the platform will lower."
	rotation(integer) : "Spin amount" : 0 : "The amount this platform should rotate as it moves, in degrees."
]



//====================================================================================================================
// func_rot_button [common]
//====================================================================================================================

@SolidClass
base (
	TargetnameRot,
	Parentname,
	p_Origin,
	EnableDisable,
	e_func_button,
	RenderFields,
	o_VUsableExt
)
line (
	255 255 255,
	targetname,
	parentname
)
= func_rot_button : 
	"A brush entity that's designed to be used for a rotating player-useable button. When used by the player, it rotates to a pressed position."
[
	sep_rotbut1(string) readonly: "------------------------------------"

	master(string) : "Master (Obsolete)" : : "Legacy support: The name of a master entity. If the master hasn't been activated, this button cannot be used."
	health(integer) : "Health (Obsolete)" : 0 : "Legacy method of specifying whether or not the button can be shot to activate it. Use the 'Damage Activates' spawnflag instead."
	sounds(choices) : "Sounds" : 21 = 
	[
		0: "None (Silent)"
		21: "Squeaky"
		22: "Squeaky Pneumatic"
		23: "Ratchet Groan"
		24: "Clean Ratchet"
		25: "Gas Clunk"
	]
	distance(integer) : "Distance (deg)" : 90 : "The amount, in degrees, that the button should rotate when it's pressed."
	// TODO: move spawnflags into Button base class?
	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
		512: "Damage Activates": 0
		1024: "Use Activates": 0
		2048: "Starts locked" : 0
	]
]



//====================================================================================================================
// momentary_rot_button [common]
//====================================================================================================================

@SolidClass
base (
	TargetnameRot,
	Parentname,
	p_Origin,
	RenderFields,
	o_VUsableExt
)
line (
	255 255 255,
	targetname,
	parentname
)
= momentary_rot_button : 
	"A brush entity that's designed to be used for rotating wheels, where the player can rotate them to arbitrary positions before stopping."
[
	sep_mombut1(string) readonly: "------------------------------------"

	speed(integer) : "Speed (deg/sec)" : 50 : "The amount, in degrees, that the wheel turns per second."
	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" : 90 : "The maximum amount, in degrees, that the wheel is allowed to rotate."
	returnspeed(integer) : "Auto-return speed" : 0 : "If the 'Toggle' spawnflag is not set, the speed at which the wheel auto-returns when left alone, in degrees per second."

	sep_mombut2(string) readonly: "------------------------------------"

	startposition(float) : "Start Position" : 0 : "Postion when spawned. The value is a range between 0.0 and 1.0, where 0 is the unrotated position and 1 is the rotated position + 'Distance'."
	startdirection(choices) : "Start Direction" : "Forward" =
	[
		-1 : "Forward"		 // Reverses upon USE, so are
		1 : "Backward"	 // reversed here.
	]
	master(string) : "Master (Obsolete)" : : "Legacy support: The name of a master entity. If the master hasn't been activated, this button cannot be used."

	spawnflags(flags) =
	[
		1: "Not Solid" : 1
		32: "Toggle (Disable Auto Return)" : 1
		64: "X Axis" : 0
		128: "Y Axis" : 0
		1024: "Use Activates" : 1
		2048: "Starts locked" : 0
		8192: "Jiggle when used while locked" : 0
	]

	// Inputs
	input Lock(void) : "Lock the button, preventing it from functioning."
	input Unlock(void) : "Unlock the button, allowing it to function."
	input SetPosition(string) : "Move to a position. The parameter must be a value between 0 and 1, where 0 is the unrotated position and 1 is the rotated position + 'Distance'."

	// Outputs
	output Position(integer)   : "Fired whenever the button moves. The output is the position of button from 0 to 1, where 0 is the unrotated position and 1 is the rotated position + 'Distance'."
	output OnPressed(integer)  : "Fired when the button is first pressed."
	output OnUnpressed(integer): "Fired when the button is first released from being pressed."
	output OnFullyClosed(void) : "Fired when the button has reached position 1, the rotated position + 'Distance'."
	output OnFullyOpen(void)   : "Fired when the button has reached position 0, the unrotated starting position."
]















//*******************************************************************************************************************
//*******************************************************************************************************************
//
// Nodes
//
//*******************************************************************************************************************
//*******************************************************************************************************************


//====================================================================================================================
// info_node_air [common]
//====================================================================================================================

@PointClass base(Node) studio("models/editor/air_node.mdl") color(232 171 8)  = info_node_air :
	"A navigation node for flying NPCs. Air navigation nodes are baked into the nodegraph so that NPCs can move " +
	"to them. Air nodes do not fall to the ground when they spawn."
[
	nodeheight(integer) : "NodeHeight"  : 0
]


//====================================================================================================================
// info_node_air_hint [common]
//====================================================================================================================
// VTMB-adaptation:
//  removed: base(Targetname,Angles) (already included)

@PointClass base(HintNode) studio("models/editor/air_node_hint.mdl") color(232 171 8) line(255 255 255, nodeid, TargetNode) = info_node_air_hint :
	"A navigation node for flying NPCs that includes some context information for NPCs that are interested in it. The hint might " +
	"indicate a window that could be looked into, or an item of interest that could be commented on. Many hint nodes are NPC-specific, " +
	"so it's helpful to use naming conventions like 'Crow: Fly to point' in the hint choices list. The angles of a hint node indicate what direction " +
	"the NPC should face to perform the hint behavior."
[
	nodeheight(integer) : "NodeHeight"  : 0
]


//====================================================================================================================
// info_node_hint [common]
//====================================================================================================================
// VTMB-adaptation:
//   removed: outputs (unsup)

@PointClass base(HintNode) studio("models/editor/ground_node_hint.mdl") color(232 219 8) = info_node_hint :
	"A navigation node for ground moving NPCs that includes some context information for NPCs that are interested in it. The hint might " +
	"indicate a window that could be looked out of, or an item of interest that could be commented on. Many hint nodes are NPC-specific, " +
	"so it's helpful to use naming conventions like 'Crow: Fly to point' in the hint choices list. The angles of a hint node indicate what direction " +
	"the NPC should face to perform the hint behavior.\n\n" +
	"It's important to understand the distinction between scripts, such as scripted_sequence and scripted_schedule, and info_hint entities. Scripts summon " +
	"NPCs to specific cue points to play their parts, while hints provide context information to the AI that they use to perform their " +
	"behaviors. Hints require code support in the NPC, while scripts are generic and may require only animations to play. Use a hint if the behavior is driven " +
	"by the AI, use a script if the behavior is driven by the map."
[
]










//*******************************************************************************************************************
//*******************************************************************************************************************
//
// Logic Entities
//
//*******************************************************************************************************************
//*******************************************************************************************************************


//====================================================================================================================
// logic_branch [common]
//====================================================================================================================

@PointClass base(Targetname) iconsprite("editor/logic_branch.vmt") = logic_branch :
	"Tests a boolean value and fires an output based on whether the value is true or false. " +
	"Use this entity to branch between two potential sets of events."
[
	// Keys
	InitialValue(integer) : "Initial value" : : "Initial value for the boolean value (0 or 1)."
	
	// Inputs
	input SetValue(bool) : "Sets the boolean value without performing the comparison. Use this to hold a value for a future test."
	input SetValueTest(bool) : "Sets the boolean value and tests it, firing OnTrue or OnFalse based on the value."
	input Test(void) : "Tests the input value and fires OnTrue or OnFalse based on the value."
	
	// Outputs
	output OnTrue(bool) : "Fires when the input value is true (nonzero)." 
	output OnFalse(bool) : "Fires when the input value is false (zero)." 
]


//====================================================================================================================
// logic_compare [common]
//====================================================================================================================

@PointClass base(Targetname) iconsprite("editor/logic_compare.vmt") = logic_compare :
	"Compares an input value to another value. " +
	"If the input value is less than the compare value, the OnLessThan output is fired with the input value. " +
	"If the input value is equal to the compare value, the OnEqualTo output is fired with the input value. " +	
	"If the input value is greater than the compare value, the OnGreaterThan output is fired with the input value."
[
	// Keys
	InitialValue(integer) : "Initial value" : : "Initial value for the input value."
	CompareValue(integer) : "Compare value" : : "The value to compare against."
	
	// Inputs
	input SetValue(float) : "Sets the value that will be compared against the compare value."
	input SetValueCompare(float) : "Sets the value that will be compared against the compare value and performs the comparison."
	input SetCompareValue(float) : "Sets the compare value."
	input Compare(void) : "Forces a compare of the input value with the compare value."
	
	// Outputs
	output OnLessThan(float) : "Fires when the input value is less than the compare value. Sends the input value as data." 
	output OnEqualTo(float) : "Fires when the input value is equal to the compare value. Sends the input value as data." 
	output OnNotEqualTo(float) : "Fires when the input value is different from the compare value. Sends the input value as data." 
	output OnGreaterThan(float) : "Fires when the input value is greater than the compare value. Sends the input value as data."
]


//====================================================================================================================
// logic_lineto [common]
//====================================================================================================================

@PointClass base(Targetname) size(-8 -8 -8, 8 8 8) = logic_lineto : 
	"An entity that calculates and outputs a vector from one entity to another." 
[
	source(target_destination) : "Start entity" : : "Name of the entity the line should start from."
	target(target_destination) : "End entity" : : "Name of the entity that line should end at."
	
	// Outputs
	output Line(vector) : "Fired when the vector, from the start entity to the end entity, changes. Passes along the vector as a parameter."
]


//====================================================================================================================
// logic_multicompare [common]
//====================================================================================================================

@PointClass base(Targetname) iconsprite("editor/logic_multicompare.vmt") = logic_multicompare :
	"Compares a set of inputs to each other. If they are all the same, fires an OnEqual output. " +
	"If any are different, fires the OnNotEqual output."
[
	// keys
	IntegerValue(integer) : "Integer Value (optional)"
	ShouldComparetoValue(choices) : "Should use Integer Value" : 0 =
	[
		0 : "No"
		1 : "Yes"
	]

	// Inputs
	input InputValue(integer) : "Input value"
	input CompareValues(void) : "Compares the values and fires appropriate outputs"

	// Outputs
	output OnEqual(void) : "Fires if the values are equal"
	output OnNotEqual(void) : "Fires if the values are not equal"
]



















//*******************************************************************************************************************
//*******************************************************************************************************************
//
// NPCs
//
//*******************************************************************************************************************
//*******************************************************************************************************************


//===================================================================================================================
// CLASS: BaseNPC [common]
//===================================================================================================================
// VTMB-adaptation:
//  removed: Angles,Shadow (included)

@BaseClass base(Targetname,RenderFields,DamageFilter) color(0 200 200) = BaseNPC
[
	target(target_destination) : "Target path corner" : : "If set, the name of a path corner entity that this NPC will walk to after spawning."
	squadname(String) : "Squad Name"
	hintgroup(String) : "Hint Group"
	hintlimiting(choices) : "Hint Limit Nav" : 0 : "Limits NPC to using specified hint group for navigation requests, does not limit local navigation." =
	[
		0 : "No"
		1 : "Yes"
	]

	spawnflags(Flags) = 
	[
		1 : "Wait Till Seen" : 0
		2 : "Gag" : 0
		4 : "Fall to ground" : 1
		8 : "Drop Healthkit" : 0
		16 : "Efficient" : 0
		128: "Wait For Script" : 0
		256: "Long Visibility/Shoot" : 0
		512: "Fade Corpse" : 0
		1024: "Think outside PVS" : 0
		2048: "Template NPC (used by npc_maker, will not spawn)" : 0
	]

	physdamagescale(float) : "Physics Impact Damage Scale" : "1.0" : "Scales damage energy when this character is hit by a physics object. NOTE: 0 means this feature is disabled for backwards compatibility."
	output OnDamaged(void) : "This NPC takes damage"
	output OnDeath(void) : "This NPC is killed" 
	output OnHalfHealth(void) : "This NPC reaches half of its maximum health"
	output OnHearWorld(void) : "This NPC hears a sound (other than combat or the player)"
	output OnHearPlayer(void) : "This NPC hears the player"
	output OnHearCombat(void) : "This NPC hears combat sounds"

	output OnFoundEnemy(string) : "Fired when establish line of sight to enemy (output's entity)"
	output OnLostEnemyLOS(void) : "Fired when lost line of sight to enemy"
	output OnLostEnemy(void) : "Fired when lost enemy"

	output OnFoundPlayer(string) : "Fired when establish line of sight to player (output's player entity)"
	output OnLostPlayerLOS(void) : "Fired when lost line of sight to player"
	output OnLostPlayer(void) : "Fired when lost player"

	// Inputs
	input SetRelationship(string) : "Changes this entity's relationship with another entity or class"
	input SetHealth(integer) : "Set this entity's health"
	input SetBodyGroup(integer) : "Hack: Sets this NPC's body group, by index (from 0 - n). You'd better know what you are doing!"
	input physdamagescale(float) : "Sets the value that scales damage energy when this character is hit by a physics object. NOTE: 0 means this feature is disabled for backwards compatibility."
	input Ignite(void) : "Ignite, burst into flames"
]



//===================================================================================================================
// monster_generic [common, HL2-based]
//===================================================================================================================

@PointClass base(BaseNPC,RenderFields) studio() = monster_generic : "Generic Script NPC"
[
	spawnflags(Flags) = 
	[
		4 : "Not solid"	: 0
	]
	model(studio) : "Model"
	body(Integer) : "Body" : 0
]
	
	

//===================================================================================================================
// npc_bullseye [common]
//===================================================================================================================

@NPCClass base(Parentname, BaseNPC) iconsprite("editor/bullseye.vmt") color(255 0 0) = npc_bullseye : "Bullseye"
[
	// Unlike other NPCs level designers are allowed to set the health on bullseyes
	health(Integer) : "Health" : 35

	spawnflags(Flags) = 
	[
		65536   : "Not Solid" : 0
		131072  : "Take No Damage" : 0
		262144  : "Enemy Damage Only" : 0
		524288  : "Bleed" : 0
		1048576 : "Perfect Accuracy" : 0
	]
	output OnTargeted(void) : "Fires when targeted"
	output OnReleased(void) : "Fires when no longer targeted"
]


















//*******************************************************************************************************************
//*******************************************************************************************************************
//
// Physics Entities
//
//*******************************************************************************************************************
//*******************************************************************************************************************


//===================================================================================================================
// phys_constraintsystem [common]
//===================================================================================================================
// VTMB-adaptation:
//  removed: additionaliterations (new)

@PointClass base(Targetname) = phys_constraintsystem : 
	"An entity used to manage a group of interacting constraints and keep them stable. " +
	"All constraints on a set of entities should be placed in the same system, or they will fight each other during simulation."
[
]



//===================================================================================================================
// phys_keepupright [common]
//===================================================================================================================

@PointClass base(TargetnameRot) = phys_keepupright : "A controller that tries to keep an entity facing a particular direction."
[
	spawnflags(flags) =
	[
		1: "Start inactive" : 0
	]

	attach1(target_destination) : "Target Entity" : "" : "The entity to align to the desired angles."
	angularlimit(float) : "Angular Limit" : "15" : "The maximum angular velocity that this controller can compensate for, in degrees per second."

	// Inputs
	input TurnOn(void) : "Enable the controller."
	input TurnOff(void) : "Disable the controller." 
]



//===================================================================================================================
// phys_motor [common]
//===================================================================================================================

@PointClass base(Targetname) halfgridsnap size(-8 -8 -8, 8 8 8) = phys_motor : 
	"An entity that tries to spin a target entity at a particular speed."
[
	speed(string) : "Rotation Speed" : "0" : "Angular speed (units are degress/second)"
	spinup(string) : "Spin up time" : "1" : "spin up time in seconds (also affects the rate at which speed changes happen)"
	inertiafactor(float) : "System Interia Scale" : "1.0" : "Make this larger if the object being driven is constrained to a set of heavier objects."
	axis(vecline) : "Rotation Axis" : ""

	spawnflags(flags) =
	[
		// starts on by default
		1: "Start On" : 1
		// Disable world collisions on hinges
		2: "No world collision" : 0
		// motor also acts as a hinge constraining the object to this axis
		4: "Hinge Object" : 1
		// Maintain local relationship with the attached object (NOT WORKING YET)
//		8: "Orient Locally" : 1
	]
	attach1(target_destination) : "Attached Object" : "" : "Object to apply the force to"

	input SetSpeed(float) : "Sets target speed"
	input TurnOn(void) : "Turns motor on"
	input TurnOff(void) : "Turns motor off"
]
	
	
	
//===================================================================================================================
// phys_pulleyconstraint [common]
//===================================================================================================================

@PointClass base(TwoObjectPhysics) halfgridsnap studio("models/editor/axis_helper.mdl") = phys_pulleyconstraint : 
	"A constraint that is essentially two length constraints and two points. Imagine it as a virtual rope connected to two objects, each suspended from a pulley above them."+
	"The constraint keeps the sum of the distances between the pulley points and their suspended objects constant."
[
	addlength(float) : "Additional Length" : "0" : "Add (or subtract) this amount to the rest length of the pulley rope."
	gearratio(float) : "Pulley Gear Ratio" : "1" : "Add (or subtract) this amount to the rest length of the pulley rope."
	position2(vecline) : "Pulley Position 2" : : "The position of the pulley for Entity 2. The pulley for Entity 1 is the origin of this constraint entity. Entity 1 is always suspended from pulley point 1, and Entity 2 is always suspended from pulley point 2."
	spawnflags(flags) =
	[
		1: "No Collision until break" : 1
		2: "Keep Rigid" : 0
	]
]	
	
		
	
//===================================================================================================================
// phys_slideconstraint [common]
//===================================================================================================================

@PointClass base(TwoObjectPhysics) halfgridsnap studio("models/editor/axis_helper.mdl") = phys_slideconstraint : 
	"A constraint that constrains an entity along a line segment."
[
	spawnflags(flags) =
	[
		1: "No Collision until break" : 1
		2: "Limit Endpoints" : 0
	]
	slideaxis(vecline) : "Sliding Axis"
	slidefriction(float) : "Friction" : "0" : "Resistance/friction in the constraint"
]
	
	
	
//===================================================================================================================
// phys_spring [common]
//===================================================================================================================

@PointClass base(Targetname) halfgridsnap = phys_spring : 
	"A physically simulated spring. "+
	"'Length' is what's known as the 'natural spring length'. This is how long the spring would "+
	"be if it was at rest (nothing hanging on it or attached). When you attach something to the "+
	"spring, it will stretch longer than its 'natural length'. The amount of stretch is "+
	"determined by the 'Sprint Constant'. The larger the spring constant the less stretch the spring."
[
	spawnflags(flags) =
	[
		1 : "Force only on stretch" : 0
	]

	attach1(target_destination) : "Entity 1" : ""
	attach2(target_destination) : "Entity 2" : ""

	springaxis(vecline) : "Spring Axis" : "" : "Use the helper. Drag it out to match the virtual spring."
	length(string) : "Spring Length" : "0" : "How long the spring would be if it was at rest (nothing hanging on it or attached). 0 means the length of the brush."
	constant(string) : "Spring Constant" : "50" : "Stiffness of the spring.  The larger the number the less the spring will stretch."
	damping(string) : "Damping Constant" : "2.0" : "How much energy the spring loses.  The larger the number, the less bouncy the spring."
	relativedamping(string) : "Relative Damping Constant" : "0.1" : "The amount of energy the spring loses proportional to the relative velocity of the two objects the spring is attached to."
	// UNDONE: add max tension and what event to fire when it breaks
	breaklength(string) : "Break on Length" : "0" : "If the spring's length ever exceeds this length, the spring breaks."

	// Inputs
	input SetSpringConstant(float) : "Set the Spring Constant."
	input SetSpringLength(float) : "Set the Spring Length."
	input SetSpringDamping(float) : "Set the Spring Damping."
]
	
	
	
//===================================================================================================================
// phys_torque [common]
//===================================================================================================================
	
@PointClass base(ForceController) halfgridsnap = phys_torque : 
	"An angular thruster. Use it to apply angular force to an entity."
[
	// Angular acceleration (units are degress/s^2)
	force(string) : "Angular Acceleration" : "0"
	axis(vecline) : "Rotation Axis" : ""
]

	
	
//===================================================================================================================
// physics_cannister [common]
//===================================================================================================================

@PointClass base(TargetnameRot) sphere(expradius) studioprop() = physics_cannister : 
	"A physically simulated gas cannister that can have its cap shot off, at which point gas will start escaping and cause the cannister to fly around. If it takes enough damage, it will explode."
[
	model(studio) : "World model" : "models/fire_equipment/w_weldtank.mdl" : "Model to use for render/physics"
	spawnflags(flags) = 
	[
		1 : "Start Asleep" : 0
		2 : "Explodes" : 1
	]

	expdamage(string) : "Explosion Damage" : "200.0" : "Magnitude of radius damage to do upon explosion"
	expradius(string) : "Explosion Radius" : "250.0" : "Radius of the explosion damage"
	health(integer) : "Health" : 25 : "How much damage the cannister takes before exploding."

	thrust(string) : "Thrust" : "3000.0" : "Amount of thrust"
	fuel(string) : "Fuel Seconds" : "12.0" : "Time that thrust lasts"
	rendercolor(color255) : "Smoke Color (R G B)" : "255 255 255"
	renderamt(integer) : "Smoke Alpha (0 - 255)" : 128
	gassound(sound) : "Thruster Sound" : "ambient/objects/cannister_loop.wav"

	// input
	input Activate(void) : "Starts the thruster."
	input Deactivate(void) : "Stops the thruster."
	input Explode(void) : "Triggers the explosion."
	input Wake(void) : "Wakes up the cannister if it is sleeping."

	// outputs
	output OnActivate(void) : "Fired when the cannister is activated."
]
	
	
	
	
	
	
	
	
	
	
	
	
	
//*******************************************************************************************************************
//*******************************************************************************************************************
//
// Point Entities
//
//*******************************************************************************************************************
//*******************************************************************************************************************


//===================================================================================================================
// player_loadsaved [common, HL2-based]
//===================================================================================================================

@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = player_loadsaved : "Load Auto-Saved game" 
[
	duration(string) : "Fade Duration (seconds)" : "2"
	holdtime(string) : "Hold Fade (seconds)" : "0"
	renderamt(integer) : "Fade Alpha" : 255
	rendercolor(color255) : "Fade Color (R G B)" : "0 0 0"
	loadtime(string) : "Reload delay" : "0"

	input Reload(void) : "Ends this game and reloads"
]

	
	
	
//===================================================================================================================
// player_weaponstrip [common]
//===================================================================================================================

@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = player_weaponstrip : "Strips player's weapons"
[
	input Strip(void) : "Strip player's weapons"
]

	
	
	
//===================================================================================================================
// point_anglesensor [common]
//===================================================================================================================

@PointClass base(Targetname,Parentname,EnableDisable)
line (
	255 255 255,
	targetname,
	parentname
)
= point_anglesensor :
	"An entity that detects if another entity points in a given direction for a period of time."
[
	target(target_destination) : "Target entity name" : : "Name of the entity whose angles will be sensed."
	lookatname(target_destination) : "Look at entity"
	duration(float) : "Duration in seconds"
	tolerance(integer) : "Tolerance in degrees"

	// Inputs
	input Toggle(void) : "Toggles the sensor between enabled and disabled."
	input Test(void) : "Checks to see if the target entity is facing the lookat entity within the specified tolerance, " +
		"firing either the OnFacingLookat or OnNotFacingLookat output based on the result."
	
	// Outputs
	output TargetDir(vector) : "Fired when the forward direction of the target entity changes. Passes the new forward direction as a parameter."
	output OnFacingLookat(void) : "Fired when the target entity points at the lookat entity for more than the " +
		"specified duration."
	output OnNotFacingLookat(void) : "Fires in response to a CheckFacing input when the target entity is not " +
		"pointing at the lookat entity."
]
	
	
	
//===================================================================================================================
// point_hurt [common]
//===================================================================================================================

@PointClass base(Targetname) sphere(DamageRadius) = point_hurt :
	"An entity that does damage to all entities in a radius around itself, with a specified delay." +
	"If 'Target Entity' is specified, the damage is only done to that entity."
[
	DamageTarget(string) : "Target Entity" : "" : "If specified, only this entity will take damage. Otherwise, all entities within the Radius will take damage."
	
	DamageRadius(float) : "Radius" : 256 : "All entities within this radius of this entity will take damage. If a 'Target Entity' is specified, only that entity will take damage."
	Damage(integer) : "Damage" : 5 : "Damage done to all affected entities each time this entity fires."
	DamageDelay(float) : "Delay" : 1 : "Delay between refires, in seconds."
	
	DamageType(choices) : "Damage Type" : 0 : "Type of damage to inflict on entities damaged." =
	[
		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"
	]

	// Inputs
	input Hurt(void) : "Force a single fire, damaging either the Target Entity or all entities within the radius."
	input TurnOn(void) : "Enable this entity. It will start damaging entities everytime it fires, and refire based upon the specified Delay."
	input TurnOff(void) : "Disable this entity. It will stop damaging entities."
	input Toggle(void) : "Toggle this entity between On/Off state."
]
	


	
	
	
	








//*******************************************************************************************************************
//*******************************************************************************************************************
//
// Triggers
//
//*******************************************************************************************************************
//*******************************************************************************************************************


//===================================================================================================================
// trigger_transition [common]
//===================================================================================================================

@SolidClass base(Targetname) = trigger_transition : 
	"A volume that's used to control which entities go through the level transition. Create one or more trigger_transitions and "+
	"give them the same name as the changelevel landmark. Any entities within the trigger_transition(s) will go to the next map."+
	"See trigger_changelevel for more info."
[
]



//===================================================================================================================
// trigger_proximity [common]
//===================================================================================================================

@SolidClass base(ExtTrigger) = trigger_proximity :
	"Measures the distance of the player within the trigger volume from a given point (and within " +
	"a given radius). The NearestPlayerDistance output will be 0 when the player is at the center point, " +
	"and 1 when the player is at the radius."
[
	measuretarget(target_destination) : "Point to Measure From" : : "The name of a target entity who's origin is the point to measure the player's distance from."
	radius(string) : "Radius to measure within" : 256 : "The radius to which the distance should be mapped. If the player is outside the radius he will be ignored."
	
	// Outputs
	output NearestEntityDistance(integer) : "Fired continuously when entities are touching the trigger volume. The output parameter is the distance from the "+
						"Point to Measure From to the nearest entity that passed the trigger filters. The distance is mapped to the radius distance, "+
						"so it will be 0 when the entity is on the point, and 1 when the entity is at the edge of the radius."
]











//*******************************************************************************************************************
//*******************************************************************************************************************
//
// Misc Point Entities
//
//*******************************************************************************************************************
//*******************************************************************************************************************


//====================================================================================================================
// keyframe_track [common]
//====================================================================================================================

@KeyFrameClass base(TargetnameRot,Parentname,KeyFrame) size(-6 -6 -6, 6 6 6) color(255 200 0) keyframe() = keyframe_track : 
	"Animation KeyFrame"
[
]


//====================================================================================================================
// move_keyframed [common]
//====================================================================================================================

@MoveClass base(Targetname,Parentname,KeyFrame,Mover) size(-8 -8 -8, 8 8 8) color(255 170 0) animator() = move_keyframed : 
	"Keyframed Move Behavior"
[
]


//====================================================================================================================
// math_colorblend [common]
//====================================================================================================================

@PointClass base(Targetname) = math_colorblend :
	"Used to create a blend between two colors for controlling the color of another entity."
[
	spawnflags(flags) = 
	[
		1 : "Ignore out of range input values" : 1
	]

	inmin(integer) : "Minimum Valid Input Value" : 0 : "Input values below this value will be ignored."
	inmax(integer) : "Maximum Valid Input Value" : 1 : "Input values above this value will be ignored."
	colormin(color255) : "Output RGB color when input is min." : "0 0 0" : "When the input value is equal to 'Minimum Valid Input Value', this is the output RGB color."
	colormax(color255) : "Output RGB color when input is max." : "255 255 255" : "When the input value is equal to 'Maximum Valid Input Value', this is the output RGB color."

	// Inputs
	input InValue(float) : "Input value and fire the output with the remapped value."
	
	// Outputs
	output OutColor(color255) : "Fired when the InValue input is received, with the remapped RGB color as the parameter."
]


//====================================================================================================================
// math_remap [common]
//====================================================================================================================

@PointClass base(Targetname,EnableDisable) = math_remap :
	"An entity that remaps a range of input values to a given range of output values."
[
	spawnflags(flags) = 
	[
		1 : "Ignore out of range input values" : 1
		2 : "Clamp output to output range" : 2
	]

	in1(integer) : "Minimum Valid Input Value" : 0 : "Input values below this value will be ignored."
	in2(integer) : "Maximum Valid Input Value" : 1 : "Input values above this value will be ignored."
	out1(integer) : "Output Value When Input Is Min." : : "When the input value is equal to 'Minimum Valid Input Value', this is the output value."
	out2(integer) : "Output Value When Input Is Max." : : "When the input value is equal to 'Maximum Valid Input Value', this is the output value."

	// Inputs
	input InValue(float) : "Input value and fire the output with the remapped value."
	
	// Outputs
	output OutValue(float) : "Fired when the InValue input is received, with the remapped input value as the parameter."
]


//===================================================================================================================
// path_corner [common, HL2-based]
//===================================================================================================================
// VTMB-adaptation:
//  removed: Angles (included)

@PointClass base(TargetnameRot) size(16 16 16) line(255 255 255, targetname, target) color(247 181 82) = path_corner : "Generic path point"
[
	spawnflags(Flags) =
	[
		1: "Wait for retrigger" : 0
		2: "Teleport to THIS path_corner" : 0
	]
	target(target_destination) : "Next stop target"
	wait(integer) : "Wait here (secs)" : 0
	speed(integer) : "New Train Speed" : 0
	yaw_speed(integer) : "New Train rot. Speed" : 0

	// Inputs 
	input SetNextPathCorner(string) : "Sets next pathcorner"

	// Outputs
	output OnPass(void) : "Fires when a path follower passes this point"
]


//===================================================================================================================
// path_corner_crash [common, HL2-based]
//===================================================================================================================

@PointClass base(Targetname) size(16 16 16) color(255 0 0) = path_corner_crash : "Flying Object Crash Path"
[
	target(target_destination) : "Next stop target"
]

	
//===================================================================================================================
// scripted_target [common, HL2-based]
//===================================================================================================================

@PointClass base(Targetname,Parentname)
line (
	255 255 255,
	targetname,
	parentname
)
iconsprite("editor/info_target.vmt")  = scripted_target : "Scripted Target"
[
	StartDisabled(choices) : "Start Disabled" : 1 =
	[
		0 : "No"
		1 : "Yes"
	]

	m_iszEntity(npcclass) : "Target NPC"
	m_flRadius(integer) : "Search Radius (0=everywhere)" : 0 : "Radius to search within for an NPC to use. 0 searches everywhere."

	MoveSpeed(integer) : "Move Speed" : 5			// How quickly should target move between scripted targets
	PauseDuration(integer) : "Pause Duration" : 0		// How long should target pause at scripted target
	EffectDuration(integer) : "Effect Duration" : 2		// How long should any associated effect last

	target(target_destination) : "Next Target"		// Next scripted target

	// Inputs
	input Enable(void) : "Enable this entity"
	input Disable(void) : "Disable this entity"

	// Outputs
	output AtTarget(void) : "Fires when NPC reaches this target"
	output LeaveTarget(void) : "Fires when NPC leaves this target"
]































//-------------------------------------------------------------------------------------------------------------------
// NOTE3: Entities below are VtMB-specific. Some of it may not work properly...
//-------------------------------------------------------------------------------------------------------------------


//*******************************************************************************************************************
//*******************************************************************************************************************
//
// NPCs
//
//*******************************************************************************************************************
//*******************************************************************************************************************


//===================================================================================================================
// npc_generic [VTMB-specific]
//===================================================================================================================

@NPCClass base(VBaseNPC,VAddNPCFeats) studio() = npc_generic : 
	"[VTMB] Generic scripted NPC. Not used on original maps."
[
	model(studio) : "Model" : "models/character/npc/common/citizen/male2/male_citizen_2.mdl"
]


//===================================================================================================================
// Clan-specific NPCs [VTMB-specific]
//===================================================================================================================

@NPCClass base(VBaseNPC,VAddNPCFeats) studio() = npc_VGangrel : "[VTMB] Generic Gangrel-clan NPC. Not used on original maps."		[ model(studio) : "Model" : "models/character/pc/male/gangrel/armor_0/gangrel_male_armor_0.mdl" ]
@NPCClass base(VBaseNPC,VAddNPCFeats) studio() = npc_VMalkavian : "[VTMB] Generic Malkavian-clan NPC. Not used on original maps."	[ model(studio) : "Model" : "models/character/pc/male/malkavian/armor_0/malkavian_male_armor_0.mdl" ]
@NPCClass base(VBaseNPC,VAddNPCFeats) studio() = npc_VNosferatu : "[VTMB] Generic Nosferatu-clan NPC. Not used on original maps."	[ model(studio) : "Model" : "models/character/pc/male/nosferatu/armor_0/nosferatu.mdl" ]
@NPCClass base(VBaseNPC,VAddNPCFeats) studio() = npc_VToreador : "[VTMB] Generic Toreador-clan NPC. Not used on original maps."		[ model(studio) : "Model" : "models/character/pc/male/toreador/armor_0/toreador_male_armor_0.mdl" ]
@NPCClass base(VBaseNPC,VAddNPCFeats) studio() = npc_VTremere : "[VTMB] Generic Tremere-clan NPC. Not used on original maps."		[ model(studio) : "Model" : "models/character/pc/male/tremere/armor_0/tremere_male_armor_0.mdl" ]
@NPCClass base(VBaseNPC,VAddNPCFeats) studio() = npc_VVentrue : "[VTMB] Generic Ventrue-clan NPC. Not used on original maps."		[ model(studio) : "Model" : "models/character/pc/male/ventrue/armor_0/ventrue_male_armor_0.mdl" ]
@NPCClass base(VBaseNPC,VAddNPCFeats) studio() = npc_VHunter : "[VTMB] Generic Hunter-clan NPC. Not used on original maps."			[ model(studio) : "Model" : "models/character/pc/male/average_vampire_hunter/average_vampire_hunter_pc.mdl" ]









//*******************************************************************************************************************
//*******************************************************************************************************************
//
// Animal NPCs
//
//*******************************************************************************************************************
//*******************************************************************************************************************


//===================================================================================================================
// npc_VAnimal [VTMB-specific]
//===================================================================================================================

@NPCClass base(VBaseNPC,VAddNPCFeats) studio() = npc_VAnimal : 
	"[VTMB] Animal NPC. Not used on original maps."
[
	model(studio) : "Model" : "models/character/monster/cat/cat.mdl"
	stattemplate(choices) : "NPC Stat Template" : "Rat" : "Goes to data in 'vdata/system/npctemplate***.txt'. NPCs in Hammer are assigned one of these which determines their statistics." = []

	// npc-specific
	detection_distance(integer) : "Detection Distance" : 256 : "Defines distance rat can wind the player."
	friendship_level(integer) : "Friendship Level" : 1 : "The level of rat's friendliness in relation to player."
	must_detect(choices) : "Must Detect [-?]" : "1" : "[VTMB] Unknown yet..." =
	[
		0 : "No"
		1 : "Yes"
	]
	fright_distance(integer) : "Fright Distance" : 128 : "Distance that rat will frights the player."
	fright_duration(float) : "Fright Duration" : "5.0" : "Duration of rat's fright when it nearby the player."
	conflict_range(integer) : "Conflict Range" : 100 : "[VTMB] Unknown yet..."
	warn_range(integer) : "Warn Range" : 200 : "[VTMB] Unknown yet..."
]


//===================================================================================================================
// npc_VDog [VTMB-specific]
//===================================================================================================================

@NPCClass base(VBaseNPC,VAddNPCFeats) studio() = npc_VDog : 
	"[VTMB] Dog NPC. Not used on original maps."
[
	model(studio) : "Model" : "models/character/monster/dog/feral/dog_feral.mdl"
	stattemplate(choices) : "NPC Stat Template" : "Rat" : "Goes to data in 'vdata/system/npctemplate***.txt'. NPCs in Hammer are assigned one of these which determines their statistics." = []

	// npc-specific
	detection_distance(integer) : "Detection Distance" : 256 : "Defines distance rat can wind the player."
	friendship_level(integer) : "Friendship Level" : 1 : "The level of rat's friendliness in relation to player."
	must_detect(choices) : "Must Detect [-?]" : "1" : "[VTMB] Unknown yet..." =
	[
		0 : "No"
		1 : "Yes"
	]
	fright_distance(integer) : "Fright Distance" : 128 : "Distance that rat will frights the player."
	fright_duration(float) : "Fright Duration" : "5.0" : "Duration of rat's fright when it nearby the player."
	conflict_range(integer) : "Conflict Range" : 100 : "[VTMB] Unknown yet..."
	warn_range(integer) : "Warn Range" : 200 : "[VTMB] Unknown yet..."
]
	

//===================================================================================================================
// npc_VBatSwarm [VTMB-specific]
//===================================================================================================================

@NPCClass base(VBaseNPC,VAddNPCFeats) studio() = npc_VBatSwarm : 
	"[VTMB] Bat swarm. Not used on original maps."
[
	model(studio) : "Model" : "models/character/monster/animalism_bat/animalism_bat.mdl"

	// npc-specific
	detection_distance(integer) : "Detection Distance" : 256 : "Defines distance rat can wind the player."
	friendship_level(integer) : "Friendship Level" : 1 : "The level of rat's friendliness in relation to player."
	must_detect(choices) : "Must Detect [-?]" : "1" : "[VTMB] Unknown yet..." =
	[
		0 : "No"
		1 : "Yes"
	]
	fright_distance(integer) : "Fright Distance" : 128 : "Distance that rat will frights the player."
	fright_duration(float) : "Fright Duration" : "5.0" : "Duration of rat's fright when it nearby the player."
	conflict_range(integer) : "Conflict Range" : 100 : "[VTMB] Unknown yet..."
	warn_range(integer) : "Warn Range" : 200 : "[VTMB] Unknown yet..."
]








//*******************************************************************************************************************
//*******************************************************************************************************************
//
// Monster NPCs
//
//*******************************************************************************************************************
//*******************************************************************************************************************


//===================================================================================================================
// npc_VStalker [VTMB-specific]
//===================================================================================================================

@NPCClass base(VBaseNPC,VAddNPCFeats) studio() = npc_VStalker : 
	"[VTMB] Stalker NPC. Not used on original maps."
[
	model(studio) : "Model" : "models/character/npc/unique/Malkavian_Mansion/Stalker/Stalker.mdl"
	additionalequipment(choices) : "Base Equipment" : "item_w_knife" : "This is the weapon that NPC will basically use." =
	[
		"0" : "Nothing"
		"item_w_bush_hook" : "item_w_bush_hook"
		"item_w_crossbow_flaming" : "item_w_crossbow_flaming"
		"item_w_deserteagle" : "item_w_deserteagle"
		"item_w_fireaxe" : "item_w_fireaxe"
		"item_w_fists" : "item_w_fists"
		"item_w_flamethrower" : "item_w_flamethrower"
		"item_w_katana" : "item_w_katana"
		"item_w_knife" : "item_w_knife"
		"item_w_occultblade" : "item_w_occultblade"
	]
	stattemplate(choices) : "NPC Stat Template" : "MalkMansionCroucher" : "Goes to data in 'vdata/system/npctemplate***.txt'. NPCs in Hammer are assigned one of these which determines their statistics." = []
	player_reaction(choices) : "Reaction to Player" : "D_HT 5" : "Type of NPC's relationship with player. Use <str_type> <int_degree> format,\n\n"+
		"  where <type> is:\n"+
		"\tD_LI [0-10] --> Likes Player (Will Defend)\n"+
		"\tD_NU [0-10] --> Neutral (Default)\n"+
		"\tD_HT [0-10] --> Hates Player (Will Attack)" =
	[
		"D_LI 0" : "D_LI 0"
		"D_NU 0" : "D_NU 0"
		"D_HT 0" : "D_HT 0"
		"D_HT 5" : "D_HT 5"
	]

	// npc-specific
	disturbed(choices) : "Disturbed" : 0 : "Set this NPC disturbing state." =
	[
		0 : "No"
		1 : "Yes"
	]
	on_fire(choices) : "On Fire [-?]" : 0 : "Set this NPC burning state." =
	[
		0 : "No"
		1 : "Yes"
	]
]


//===================================================================================================================
// npc_VMingXiaoTentacle [VTMB-specific]
//===================================================================================================================

@NPCClass base(VBaseNPC,VAddNPCFeats) studio() = npc_VMingXiaoTentacle : 
	"[VTMB] Ming Xiao's tentacles. Not used on original maps."
[
	model(studio) : "Model" : "models/character/monster/mingxiao/mingxiao_tenticle/mingxiao_tenticle.mdl"
	stattemplate(choices) : "NPC Stat Template" : "MingXiao" : "Goes to data in 'vdata/system/npctemplate***.txt'. NPCs in Hammer are assigned one of these which determines their statistics." = []
]


//===================================================================================================================
// npc_VSheriffSwarm [VTMB-specific]
//===================================================================================================================

@NPCClass base(VBaseNPC,VAddNPCFeats) studio() = npc_VSheriffSwarm : 
	"[VTMB] Sheriff's bat swarm. Not used on original maps."
[
	model(studio) : "Model" : "models/character/npc/unique/downtown/Sheriff/batswarm.mdl"
	stattemplate(choices) : "NPC Stat Template" : "SheriffMan" : "Goes to data in 'vdata/system/npctemplate***.txt'. NPCs in Hammer are assigned one of these which determines their statistics." = []
]


//===================================================================================================================
// npc_VFrenzyShadow [VTMB-specific]
//===================================================================================================================

@NPCClass base(VBaseNPC,VAddNPCFeats) studio() = npc_VFrenzyShadow : 
	"[VTMB] Frenzy shadow (unknown). Not used on original maps."
[
]










//*******************************************************************************************************************
//*******************************************************************************************************************
// 
// Misc
// 
//*******************************************************************************************************************
//*******************************************************************************************************************


//===================================================================================================================
// trigger_fog [VTMB-specific]
//===================================================================================================================

@SolidClass base(VBaseTrigger,Parentname)
= trigger_fog : 
	"[VTMB] A trigger that controls fog on map. Not used on original maps."
[
]




//===================================================================================================================
// game_ui [common]
//===================================================================================================================
// VTMB-adaptation:
//  added: description note
//  removed: Unpressed* outputs (new)

@PointClass
base (
	Targetname
) size(-8 -8 -8, 8 8 8)
= game_ui :
	"An entity used to override player input when the player is looking at it. \n\n"+
	"[VTMB] Note: Does not appear to work."
[
	FieldOfView(float) : "FieldOfView" : "-1.0" : "The amount of tolerance in the view checking when determining whether the player's input is still under control. 1.0 = straight ahead, 0.0 = +/- 90 degrees, -1.0 = all directions. If the player isn't within the tolerance, the player regains control."

	spawnflags(flags) =
	[
		32 : "Freeze Player" : 1
		64 : "Hide Weapon" : 1
		128 : "+Use Deactivates" : 0
		256 : "Jump Deactivates" : 0
	]
	
	// Inputs
	input Deactivate(void) : "Return Player Control."
	input Activate(void) : "Take Player Control."

	// Outputs
	output PlayerOn(void) : "Fired whenever this entity starts controlling the player's input."
	output PlayerOff(void) : "Fired whenever this entity stops controlling the player's input."
	output PressedMoveLeft(void) : "Fired whenever the player presses the moveleft key."
	output PressedMoveRight(void) : "Fired whenever the player presses the moveright key."
	output PressedForward(void) : "Fired whenever the player presses the forward key."
	output PressedBack(void) : "Fired whenever the player presses the backward key."
	output PressedAttack(void) : "Fired whenever the player presses the attack key."
	output PressedAttack2(void) : "Fired whenever the player presses the secondary attack key."

	output XAxis(string) : "An output that fires whenever the X axis of the player's input changes. i.e. -1 when the player has moveleft key down, 1 when the player has moveright key down, and 0 if neither."
	output YAxis(string) : "An output that fires whenever the Y axis of the player's input changes. i.e. -1 when the player has backward key down, 1 when the player has forward key down, and 0 if neither."
	output AttackAxis(string) : "An output that fires whenever the state of the player's attack key changes. i.e. 1 when the player has the attack key down, 0 otherwise."
	output Attack2Axis(string) : "An output that fires whenever the state of the player's secondary attack key changes. i.e. 1 when the player has the secondary attack key down, 0 otherwise."
]




//===================================================================================================================
// hud_counter [VTMB-specific]
//===================================================================================================================

@PointClass base(Targetname) iconsprite("editor/logic_timer.vmt") = hud_counter : 
	"[VTMB] Show numerical value on screen.\nNOTE: Never have gotten it to work."
[
	setvalue(integer) : "Count Time" : 240 : "Set time value."
	setxpos(float) : "X Position" : -1 : "Set X position on screen."
	setypos(float) : "Y Position" : -1 : "Set Y position on screen."

	// inputs
	input setvalue(integer) : "Set time value."
	input setxpos(void) : "Set X position on screen."
	input setypos(void) : "Set Y position on screen."
	input TurnOn(void) : "Turn on the countdown."
	input TurnOff(void) : "Turn off the countdown."
]


//===================================================================================================================
// hud_image [VTMB-specific]
//===================================================================================================================

@PointClass base(Targetname) = hud_image :
	"[VTMB] Image that draws on player HUD. Not used on original maps."
[
	definition_file(choices) : "Definition Script" : "data/signs/start_game_popup.txt" : "Image definition script related to '<moddir>/VData/Signs/*.txt' file. \n\nPlease, add full moddir-related path and file extension (vdata/signs/mysign.txt) if you're using a custom (not included in this list) script file." =
	[
		"vdata/signs/start_game_popup.txt" : "start_game_popup"
		"vdata/signs/temp_intro.txt" : "temp_intro"
		"vdata/signs/tutorial_popup.txt" : "tutorial_popup"
	]
	fade_in(float) : "Fade-In (secs)" : "0.5" : "Fade-in effect when sign opens."
	fade_out(float) : "Fade-Out (secs)" : "0.5" : "Fade-out effect when sign closes."
	pause(choices) : "Pause When Reading" : 1 : "Pauses game process when sign shows on-screen." =
	[
		0 : "No"
		1 : "Yes"
	]
	spawnflags(flags) =
	[
		1: "Flag 1 (unknown yet)" : 1
		4: "Flag 4 (unknown yet)" : 1
	]
	input ChangeFile(string) : "Changes image definition file."
]


//===================================================================================================================
// prop_ragdoll_attached [VTMB-specific]
//===================================================================================================================

@PointClass base(Studiomodel,EnableDisable) studioprop() = prop_ragdoll_attached :
	"A ragdoll prop that can be attached using it's bones (not tested). Not uses on original maps."
[
	attach_type(integer) : "Attach Type" : 0 : "[VTMB] Unknown yet..."
	bone(choices) : "Attaching Bone" : "<none>" : "Model's bone, which is attached [not tested]." =
	[
		"" : "<none>"
		"Bip01 Head" : "Bip01 Head"
		"Bip01 L Hand" : "Bip01 L Hand"
		"Bip01 R Hand" : "Bip01 R Hand"
		"Bip01 Neck" : "Bip01 Neck"
		"Bip01 Pelvis" : "Bip01 Pelvis"
		"Bip01 Spine" : "Bip01 Spine"
		"Bip01 Spine01" : "Bip01 Spine01"
		"Bip01 Spine02" : "Bip01 Spine02"
		"Bip01 Spine03" : "Bip01 Spine03"
	]
 	physdamagescale(float) : "Physics Impact Damage Scale" : "0.1" : "Scales damage energy when this object is hit by a physics object. NOTE: 0 means this feature is disabled for backwards compatibility. \nSet to 1.0 for materials as strong as flesh, smaller numbers indicate stronger materials."
	spawnflags(flags) = 
	[
		4 : "Debris (don't collide with anything)" : 1
	]
	input physdamagescale(float) : "Set the Physics Impact Damage Scale for this character. NOTE: 0 means this feature is disabled for backwards compatibility."
]









//*******************************************************************************************************************
//*******************************************************************************************************************
// 
// End of FGD
// 
//*******************************************************************************************************************
//*******************************************************************************************************************

vampire-base.fgd

//====== Copyright © 2003-2017, Troika Games, Inc. All rights reserved. =======
//
// Purpose: Vampire Bloodlines game definition file (.fgd) 
// Version: 1.63 beta
// Edition: Original VtMB [Base]
// Written: Psycho-A
//
//=============================================================================

// Generic World Definitions
@mapsize(-16384, 16384)



//*******************************************************************************************************************
//*******************************************************************************************************************
//
// Main Classes
//
//*******************************************************************************************************************
//*******************************************************************************************************************


//====================================================================================================================
// CLASS: WorldBase [common]
//====================================================================================================================
// VTMB-adaptation:
//  removed: coldworld,minoccludeearea,maxoccludeearea (unsup)
//  removed: maxpropscreenwidth,maxpropscreenwidth,detailmaterial (unsup)
//  removed: chaptertitle,gametitle (doesn't work)
//  replaced: skyname "santamonica"
//  added: commentary (for developers and decompilers)
//  added: levelscript,sounds
//  added: fog* params (env_fog_controller base)
//  added: wetness_fadein,wetness_fadeout,wetness_fadetarget
//  added: copwaitarea,safearea,nosferatu_tolerrant,nofrenzyarea

@BaseClass = worldbase
[
	message(string) : "Map Description"
	skyname(choices) : "SkyBox Texture Name" : "santamonica" =
	[
		"black" : "black"
		"chinatown" : "chinatown"
		"hav" : "hav"
		"holly" : "holly"
		"holylight" : "holylight"
		"la" : "la"
		"moon" : "moon"
		"pier" : "pier"
		"santamonica" : "santamonica"
		"warehouse" : "warehouse"
		"warehouse2" : "warehouse2"
		"warehouse3" : "warehouse3"
	]
// exist but unused
//	startdark(choices) : "Level Fade In" : 0 =
//	[	
//		0 : "No"
//		1 : "Yes"
//	]
//	newunit(choices) : "New Level Unit" : 0 : "Used to clear out savegame data of previous levels to keep the savegame size as small as possible. Only set it to Yes if the player cannot return to any previous levels." = 
//	[
//		0 : "No, keep current"
//		1 : "Yes, clear previous levels"
//	]
// need to implement...
//	detailvbsp(string) : "Detail.vbsp file" : "detail.vbsp" : "Detail.vbsp file to use for emitting detail props (found in directory <root>/modname)"

// vtmb ----
	levelscript(choices) : "Level Python Script" : "santamonica" : "[VTMB] This is a Python Script that controls level functionality. \nThe name is relative to 'python/' directory of game." = 
	[
		"bradbury" : "bradbury"
		"cemetery" : "cemetery"
		"chinatown" : "chinatown"
		"crackhouse" : "crackhouse"
		"demo" : "demo"
		"downtown" : "downtown"
		"fusyndicate" : "fusyndicate"
		"gallery" : "gallery"
		"giovanni" : "giovanni"
		"griffith" : "griffith"
		"hollywood" : "hollywood"
		"leopold" : "leopold"
		"malkavian" : "malkavian"
		"museum" : "museum"
		"santamonica" : "santamonica"
		"temple" : "temple"
		"theatre" : "theatre"
		"tutorial" : "tutorial"
		"ventrue" : "ventrue"
		"warehouse" : "warehouse"
		"warrens" : "warrens"
	]

	comment(string) : "Developer Commentary" : "Created with Bloodlines SDK"

	sep_wsarea(string) readonly: "------------------------------------"

	safearea(choices) : "Area: Safety Type" : 1 : "[VTMB] Selects safety type for map area." = 
	[
		0 : "Combat"
		1 : "Masquerade"
		2 : "Elysium"
	]
	copwaitarea(choices) : "Area: Cops Waiting" : 1 : "[VTMB] Use this map as a place where player can wait the cop's escape." =
	[
		0 : "No"
		1 : "Yes"
	]
	nosferatu_tolerrant(choices) : "Area: Nosferatu-Tolerant" : 0 : "[VTMB] Nosferatu doesn't need to hide for the Masquerade at this area." =
	[
		0 : "No"
		1 : "Yes"
	]
	nofrenzyarea(choices) : "Area: No-Frenzy" : 0 : "[VTMB] Player will not fall Frenzy at this area." =
	[
		0 : "No"
		1 : "Yes"
	]

	sep_wsfog(string) readonly: "------------------------------------"

// came from env_fog_controller
	fogenable(choices) : "Fog: Enabled" : 0 : "[VTMB] Enable fog effect on this map" = [ 0 : "No" 1 : "Yes" ]
	fogcolor(color255) : "Fog: Primary Color" : "255 255 255" : "[VTMB] Primary (main) fog color."
	fogcolor2(color255) : "Fog: Secondary Color" : "255 255 255" : "[VTMB] Secondary fog color that fog transitions into."
	fogstart(float) : "Fog: Start Distance" : "500.0" : "[VTMB] Fog start distance (from player)."
	fogend(float) : "Fog: End Distance" : "2000.0" : "[VTMB] Fog end distance."
	fogblend(choices) : "Fog: Blend Colors" : 0 : "[VTMB] Blend fog between the two defined colors." = [ 0 : "No" 1 : "Yes" ]
	fogdir(angle) : "Fog: Primary Direction" : "1 0 0" : "[VTMB] Primary fog direction."
 // ----

	sep_wsweather(string) readonly: "------------------------------------"

	wetness_fadein(float) : "Wetness: Fade In Time" : "5.0" : "[VTMB] Controls wetness default fadein time on the map."
	wetness_fadeout(float) : "Wetness: Fade Out Time" : "10.0" : "[VTMB] Controls wetness default fadeout time on the map."
	wetness_fadetarget(float) : "Wetness: Fade Target" : "0.0" : "[VTMB] Controls wetness target on the map. Not tested yet..."

	sep_wsother(string) readonly: "------------------------------------"

	MaxRange(integer) : "Max Range (Far Z)" : 4096 : "[VTMB] Far Z Clip Plane. Overrides VVIS max radius [FixMe?]."
	sounds(choices) : "Sounds (Unused)" : 1 : "[VTMB] Purpose not recognized. \nAlmost all game maps have this On [HL1 legacy?]." =
	[
		0 : "Disable"
		1 : "Enable"
	]
]


//====================================================================================================================
// worldspawn [common]
//====================================================================================================================
// added vrad compiling options to process.
// inserted to use modified classes.

@SolidClass base(worldbase) = worldspawn : 
	"This is the world entity. Each map can only contain one, and it's automatically created for you."
[
// Custom compiling options...
	
	sep_wsoptions(string) readonly: "------------------------------------"

	vrad_lightsmooth(choices) : "Lighting: Smoothing Scale" : : "Tells VRAD compiler to apply specified scale factor for smoothing to all light \n" +
																"falloffs given by light* entity's 'Fall-Off..' or '0-percent distance'. May cause \n" +
																"recompiled original maps to look softer, helps with sharp cutoffs. \n"+
																"Use with care. If not sure, keep it at zero value." =
	[
		"-1.00" : "-1.00 (Disable smoothing at all)"
		"-0.75" : "-0.75 (Big decreasing, very sharp)"
		"-0.50" : "-0.50 (Medium decreasing, more sharper)"
		"-0.25" : "-0.25 (Small decreasing, a bit sharper)"
		   ""   :  "0.00 (No scaling, use original values)"
		 "0.25" :  "0.25 (Small increasing, a bit smoother)"
		 "0.50" :  "0.50 (Medium increasing, more smoother)"
		 "0.75" :  "0.75 (Big increasing, very smooth)"
		 "1.00" :  "1.00 (Disable all light cut-offs)"
	]
	vrad_lightscale(choices) : "Lighting: Brightness Scale" : : "Tells VRAD compiler to scale overall light brightness on map with given value. \n" +
																"May be usefull for testing purposes to quickly reduce or increase luminosity on the map. \n" +
																"Use with care. If not sure, keep it at '1.00' value." =
	[
		"0.25" : "0.25 (Very dark)"
		"0.33" : "0.33 (Much darker)"
		"0.50" : "0.50 (Half-bright)"
		"0.66" : "0.66 (Less darker)"
		"0.75" : "0.75 (Small darker)"
		"0.87" : "0.87 (A bit darker)"
		  ""   : "1.00 (As is, default)"
		"1.25" : "1.25 (A bit brighter)"
		"1.50" : "1.50 (Small brighter)"
		"2.00" : "2.00 (Twice brighter)"
		"3.00" : "3.00 (Much brighter)"
		"4.00" : "4.00 (Very bright)"
	]

	vrad_use_phymodels(choices) : "Lighting: Collision Shadows" : : "By default, VRAD compiler uses computed convex hull for prop_static's \n" +
														   "shadow casting. Enabling this option will tell it to use collision meshes (.phy files) " +
														   "for this. If .phy file not found, the convex hull will be used vice versa. \n"+
														   "Use with care! If not sure, keep it disabled." =
	[
		""  : "No"
		"1" : "Yes"
	]

	vvis_force_fast(choices) : "Compiling: Force Fast" : : "Use this to disable the VVIS second pass if it for some reason freezes on full \n" +
														   "compiling or going too slow. It mainly doesn't make some affect on map's visual " +
														   "appearance, so it also may help compiling large and really hard maps." =
	[
		""  : "No"
		"1" : "Yes"
	]
]



















//====================================================================================================================
// CLASS: Angles, Origin [common]
//====================================================================================================================
// not changed.

@BaseClass = p_Angles
[ 
	angles(angle) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" : "This entity's orientation in the world. Pitch is rotation around the Y axis, " +
		"yaw is the rotation around the Z axis, roll is the rotation around the X axis."
]

@BaseClass = p_Origin
[ 
	origin(origin) : "Origin (X Y Z)" : : "The position of this entity's center in the world. Rotating entities typically rotate around their origin."
]



//====================================================================================================================
// CLASS: Targetname+ [common]
//====================================================================================================================
// VTMB-adaptation:
//  added: TargetnameRot (with Angles)
//  added: StartHidden
//  added: ScriptHide/Unhide
//  added: FadeOutKill
//  removed: OnUser*/FireUser*, KillHierarchy, AddOutput (unsup)

@BaseClass
= c_TargetName
[
	targetname(target_source) : "Name" : : "The name that other entities refer to this entity by."

	// inputs
	input Kill(void) : "Removes this entity from the world."
	input FadeOutKill(float): "[VTMB] Fades entity during given time and then removes this from world."
]

@BaseClass
= c_ScriptHide
[
	StartHidden(choices) : "Start Hidden" : 0 : "[VTMB] Don't spawn the entity while the script command didn't sent." = [ 0 : "No" 1 : "Yes" ]
 // inputs
	input ScriptHide(void) : "[VTMB] Hide entity by specific python script."
	input ScriptUnhide(void) : "[VTMB] Spawn entity by specific python script if it was hided."
]


@BaseClass
base (
	c_TargetName,
	c_ScriptHide 
)
= Targetname []

@BaseClass
base (
	c_TargetName,
	p_Angles,
	c_ScriptHide
)
= TargetnameRot []





//====================================================================================================================
// CLASS: Parentname [common]
//====================================================================================================================
// VTMB-adaptation:
//  removed: SetParentAttachment* (unsup)
//  renamed: Parent -> Parent Entity
//  added: line() to target entity

@BaseClass
= Parentname
[ 
	parentname(target_destination) : "Parent Entity" : : "The name of this entity's parent in the movement hierarchy. Entities with parents move with their parent."

	// Inputs
	input SetParent(string) : "Changes the entity's parent in the movement hierarchy."
	input ClearParent(void) : "Removes this entity from the the movement hierarchy, leaving it free to move independently."
]



//====================================================================================================================
// CLASS: Global [common]
//====================================================================================================================
// VTMB-adaptation:
//  renamed: Global Entity Name -> Global Name

@BaseClass = p_Global 
[ 
	globalname(string) : "Global Name" : "" : "Name by which this entity is linked to another entity in a different map. When the player transitions to a new map, entities in the new map with globalnames matching entities in the previous map will have the previous map's state copied over their state."
]



//====================================================================================================================
// CLASS: EnableDisable [common]
//====================================================================================================================
// not changed.

@BaseClass = EnableDisable
[
	StartDisabled(choices) : "Start Disabled" : 0 =
	[
		0 : "No"
		1 : "Yes"
	]

	// Inputs
	input Enable(void) : "Enable this entity."
	input Disable(void) : "Disable this entity."
]



//====================================================================================================================
// CLASS: Shadow [common]
//====================================================================================================================
// renamed.

@BaseClass
= p_DisableShadows
[
	disableshadows(choices) : "Disable Shadows" : 0 : "Disables shadow casing from this object." =
	[
		0 : "No"
		1 : "Yes"
	]
]



//====================================================================================================================
// CLASS: RenderFxChoices [common]
//====================================================================================================================
// renamed.

@BaseClass
= p_RenderFxChoices
[
	sep_rfmain(string) readonly: "------------------------------------"

	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)"
		23: "Cull By Distance (TEST)"
		24: "Spotlight FX"
		26: "Fade Near"
	]
]



//====================================================================================================================
// CLASS: RenderFields [common]
//====================================================================================================================
// VTMB-adaptation:
//  added: disableshadows (legacy)
//  improved shadows' descriptions
//  merged with RenderFxChoices
//  disabled disablereceiveshadows (not affects)

@BaseClass
= f_RenderFields
[
	sep_rfmain(string) readonly: "------------------------------------"
]

@BaseClass
base (
	f_RenderFields,
	p_DisableShadows,
	p_RenderFxChoices
)
= RenderFields
[
// doesn't make any significant effect
//	disablereceiveshadows(choices) : "Disable Receiving Shadows" : 0 : "Disables shadows on object receiving from world and other objects." = [ 0 : "No" 1 : "Yes" ]

	rendermode(choices) : "Render Mode" : 0 : "Used to set a non-standard rendering mode on this entity. See also 'FX Amount' and 'FX Color'." =
	[
		0: "Normal"
		1: "Color"
		2: "Texture"
		3: "Glow"
		4: "Solid"
		5: "Additive"
		7: "Additive Fractional Frame"
		9: "World Space Glow"
		10: "Don't Render"
	]
	renderamt(integer) : "Render Amount (0-255)" : 255 : "The FX amount is used by the selected Render Mode."
	rendercolor(color255) : "Render Color (R G B)" : "255 255 255" : "The FX color is used by the selected Render Mode."

	input Alpha(integer) : "Set the object's alpha (0 - 255)."
	input Color(color255) : "Set the object's color (R G B)."
]





//====================================================================================================================
// CLASS: Studiomodel [common]
//====================================================================================================================
// VTMB-adaptation:
//  added: base(Targetname,Angles) (used by all)
//  added: skin-transition params
//  removed: some io's (new)
//  improved skin control

@BaseClass
= p_Model
[
	model(studio) : "Model" :  : "Entity's world model ('models/<file>.mdl')."
]

@BaseClass
base (
	TargetnameRot,
	p_Model
)
= Studiomodel
[
	skin(choices) : "Default Skin" : 0 : "Some models have multiple versions of their textures, called skins. \nSet this to a number other than 0 to use that skin instead of the default." =
	[ 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 10:10 11:11 12:12 13:13 14:14 15:15 16:16 17:17 18:18 19:19 20:20 21:21 22:22 23:23 24:24 25:25 26:26 27:27 28:28 29:29 30:30 31:31 ]
	crossfade_skin_time(float) : "Skin Crossfade Time" : "2.0" : "The time that needed for cross-fading transition between model's skins given by output (in seconds)."
	disableshadows(choices) : "Disable Shadows" : 0 : "Disables shadow casing from this object." = [ 0 : "No" 1 : "Yes" ]

	// inputs
	input Skin(integer) : "Changes the model skin to the specified number."
	input SetSkin(integer) : "[VTMB] Changes the model skin to the specified number (same as 'skin')."
	input SetSkinFadeTime(float) : "[VTMB] Sets fade time between skin transitions."
	input FadeToSkin(integer) : "[VTMB] Fades to specified skin (define number)."
]

// FIXME!!!
@BaseClass base(TargetnameRot) = Studiomodel2
[
// vtmb ----
	demo_sequence(choices) : "Demo Animation" : "None" : "Default animation sequence for the model to be playing after spawning." = 
	[
		"None" : "None"
		"idle" : "Idle"
	]
	npc_transparent(choices) : "NPC-Transparent" : 1 : "[VTMB] NPCs are transparent for this object [not tested]." =
	[
		0 : "No"
		1 : "Yes"
	]
]



//===================================================================================================================
// CLASS: DamageFilter [common]
//===================================================================================================================
// not changed.

@BaseClass = DamageFilter
[ 
	damagefilter(target_destination) : "Damage Filter" : "" : "Name of the filter entity that controls which entities can damage us."
	input SetDamageFilter(string) : "Sets the entity to use as damage filter. Pass in an empty string to clear the damage filter."
]




//====================================================================================================================
// CLASS: VUseConnects [VTMB-specific]
//====================================================================================================================

@BaseClass = o_VUsableExt
[ 
	// outputs
	output OnUseBegin(void) : "[VTMB] Determines what to do when using the entity began."
	output OnUseEnd(void) : "[VTMB] Determines what to do when using the entity over."
]



//===================================================================================================================
// CLASS: VBreakingConnects [common, VTMB-adapted]
//===================================================================================================================

@BaseClass = o_VBreakable
[
	// inputs
	input Break(void) : "Breaks the breakable."
	input SetHealth(integer) : "Sets a new value for the breakable's health. If the breakable's health reaches zero it will break."
	input AddHealth(integer) : "Adds health to the breakable. If the breakable's health reaches zero it will break."
	input RemoveHealth(integer) : "Removes health from the breakable. If the breakable's health reaches zero it will break."
	input SetDebris(integer) : "Set debris type spawned when entity breaks [not tested]."

	// outputs
	output OnBreak(void) : "Fired when this breakable breaks."
	output OnHealthChanged(float) : "Fired when the health of this breakable changes, passing the new value of health as a percentage of max health, from [0..1]."
]


//===================================================================================================================
// CLASS: KeyFrame [common]
//===================================================================================================================
// not changed.

@BaseClass = KeyFrame
[
	NextKey(target_destination) : "Next KeyFrame" : : "Name of the next keyframe along this keyframe path."
	MoveSpeed(integer) : "Speed (units per second)" : 64					// NEEDHELP
]


//===================================================================================================================
// CLASS: Mover [common]
//===================================================================================================================
// not changed.

@BaseClass = Mover
[
	PositionInterpolator(choices) : "Position Interpolator" : 0 =
	[
		0 : "Linear"
		1 : "Catmull-Rom Spline"
	]
]


































//*******************************************************************************************************************
//*******************************************************************************************************************
//
// ITEMS
//
//*******************************************************************************************************************
//*******************************************************************************************************************


//====================================================================================================================
// CLASS: Item [hl2-based]
//====================================================================================================================
// VTMB-adaptation:
//  added: new io's
//  removed: fade* params (unused)
//  removed: OnCacheInteraction,OnPlayerTouch (unsup)

@BaseClass color(0 0 200) base(TargetnameRot,p_DisableShadows) = Item
[
	spawnflags(Flags) =
	[
		1 : "Start Constrained" : 0
	]
	
// vtmb ----
	output OnPlayerPickup(void) : "Fired whenever the player picks up this item (with +USE)."
]








//====================================================================================================================
// CLASSes: IconSets [VTMB-specific]
//====================================================================================================================

@BaseClass = VUseIcons
[
	use_icon(choices) : "Use Icon" : 0 : "An icon that indicates when player can be able to use this entity and it is openable." = 
	[
		0: "None"
		0: " "
		0: " -- door icons --"
		10: "Door (Openable)"
		58: "Door (Player wanted)"
		59: "Door (Transition)"
		60: "Hatch (Transition)"
		0: " "
		0: " -- buttons, switches --"
		12: "Switch (wall)"
		64: "Switch (power)"
		31: "Elevator button: Up"
		32: "Elevator button: Down"
		21: "Elevator button: 1"
		22: "Elevator button: 2"
		23: "Elevator button: 3"
		24: "Elevator button: 4"
		25: "Elevator button: 5"
		26: "Elevator button: 6"
		27: "Elevator button: 7"
		28: "Elevator button: B"
		29: "Elevator button: G"
		49: "Elevator button: PH"
		30: "Elevator button: Locked"
		0: " "
		0: " -- locks, keys --"
		3:  "Default lock"
		4:  "Key"
		5:  "Access card"
		53: "Electronic lock"
		54: "Electronic lock (deny)"
		0: " "
		0: " -- sign icons --"
		18: "Note"
		40: "Clipboard"
		41: "Printed Papers"
		36: "Book"
		50: "Bus stop Map"
		51: "Sewer Transition map"
		57: "Sewer Lines map"
		46: "Giovanni book"
		0: " "
		0: " -- usable icons --"
		2:  "Computer"
		6:  "Lootable crate"
		7:  "TV monitor"
		43: "Phonograph"
		48: "Web camera"
		38: "Reel recorder"
		42: "Projector light"
		34: "Valve wheel"
		61: "Pedestal"
		35: "Stove"
		37: "Sconce"
		16: "Tubes"
		0: " "
		0: " -- talking icons --"
		15: "Talk NPC (Male)"
		14: "Talk NPC (Female)"
		8:  "Phone"
		47: "Payphone"
		0: " "
		0: " -- place icons --"
		17: "Use Bomb"
		55: "Breakable"
		62: "Dance (Male)"
		63: "Dance (Female)"
		0: " "
		0: " -- other icons --"
		9:  "Physic Hand"
		19: "Stealth succeed"
		20: "Stealth chance"
		33: "Sword"
		45: "Slaughter"
		52: "Skull"
		73: "Pushable prop"
		66: "Malk Chaos"
		67: "Malk Key"
		68: "Malk Mind"
		69: "Malk Order"
		70: "Malk Sight"
		71: "Malk Time"
		72: "Malk Mind"
		0: " "
		0: " -- unused icons --"
		1:  "Carry body (unused)"
		13: "Switch 1 (13)"
		39: "Key (39)"
		44: "Phonograph (44)"
		56: "Bus stop Map (56)"
		11: "Empty (11)"
		65: "Empty (65)"
	]
]

@BaseClass = VLockedIcons
[
	locked_icon(choices) : "Locked Icon" : 3 : "An icon that indicates locked state of this entity." = 
	[
		0: "None"
		0: " "
		0: " -- door icons --"
		10: "Door (Openable)"
		58: "Door (Player wanted)"
		59: "Door (Transition)"
		60: "Hatch (Transition)"
		0: " "
		0: " -- buttons, switches --"
		12: "Switch (wall)"
		64: "Switch (power)"
		31: "Elevator button: Up"
		32: "Elevator button: Down"
		21: "Elevator button: 1"
		22: "Elevator button: 2"
		23: "Elevator button: 3"
		24: "Elevator button: 4"
		25: "Elevator button: 5"
		26: "Elevator button: 6"
		27: "Elevator button: 7"
		28: "Elevator button: B"
		29: "Elevator button: G"
		49: "Elevator button: PH"
		30: "Elevator button: Locked"
		0: " "
		0: " -- locks, keys --"
		3:  "Default lock"
		4:  "Key"
		5:  "Access card"
		53: "Electronic lock"
		54: "Electronic lock (deny)"
		0: " "
		0: " -- sign icons --"
		18: "Note"
		40: "Clipboard"
		41: "Printed Papers"
		36: "Book"
		50: "Bus stop Map"
		51: "Sewer Transition map"
		57: "Sewer Lines map"
		46: "Giovanni book"
		0: " "
		0: " -- usable icons --"
		2:  "Computer"
		6:  "Lootable crate"
		7:  "TV monitor"
		43: "Phonograph"
		48: "Web camera"
		38: "Reel recorder"
		42: "Projector light"
		34: "Valve wheel"
		61: "Pedestal"
		35: "Stove"
		37: "Sconce"
		16: "Tubes"
		0: " "
		0: " -- talking icons --"
		15: "Talk NPC (Male)"
		14: "Talk NPC (Female)"
		8:  "Phone"
		47: "Payphone"
		0: " "
		0: " -- place icons --"
		17: "Use Bomb"
		55: "Breakable"
		62: "Dance (Male)"
		63: "Dance (Female)"
		0: " "
		0: " -- other icons --"
		9:  "Physic Hand"
		19: "Stealth succeed"
		20: "Stealth chance"
		33: "Sword"
		45: "Slaughter"
		52: "Skull"
		73: "Pushable prop"
		66: "Malk Chaos"
		67: "Malk Key"
		68: "Malk Mind"
		69: "Malk Order"
		70: "Malk Sight"
		71: "Malk Time"
		72: "Malk Mind"
		0: " "
		0: " -- unused icons --"
		1:  "Carry body (unused)"
		13: "Switch 1 (13)"
		39: "Key (39)"
		44: "Phonograph (44)"
		56: "Bus stop Map (56)"
		11: "Empty (11)"
		65: "Empty (65)"
	]
]








































//*******************************************************************************************************************
//*******************************************************************************************************************
//
// SOUND
//
//*******************************************************************************************************************
//*******************************************************************************************************************


//===================================================================================================================
// ambient_generic [common]
//===================================================================================================================
// VTMB-adaptation:
//  removed: fadeinsecs,fadeoutsecs
//  added: Parentname
//  added: fadein,fadeout (legacy)
//  added: flag_force_looping
//  added: flag_no_sfx
//  added: flag_no_voice_duck
//  added: flag_skip_collide
//  added: sound_event
//  added: sound_event_level
//  added: sound_event_owner

@PointClass
base (
	Targetname,
	Parentname
)
line (
	255 255 255,
	targetname,
	parentname
)
color(192 192 192)
iconsprite("editor/ambient_generic.vmt")
sphere(radius)
= ambient_generic : 
	"Universal ambient sound. Use it to play and control a single sound."
[
	message(sound) : "Sound Name" :  : "Name of WAV/MP3 sound file to play. \nAlso supports HL2-style GameSound script entries."
	health(integer) : "Volume" : 10 : "Sound volume, expressed as a range from 0 to 10, where 10 is the loudest."
	pitch(integer) : "Pitch" : 100 : "Sound pitch, expressed as a range from 1 to 255, where 100 is the sound's default pitch."
	radius(string) : "Max Audible Distance" : 1250 : "Maximum distance at which this sound is audible."
	SourceEntityName(target_destination) : "Source Entity Name" :  : "If an entity is specified, sound will come from this named entity instead of the location of ambient_generic."

	sep_ambgmisc(string) readonly: "------------------------------------"

	// additionals
	volstart(integer) : "Start Volume" : 0							// NEEDHELP
	pitchstart(integer) : "Start Pitch" : 100						// NEEDHELP

// vtmb ----
	fadein(integer) : "Fade in time (0-100)" : 0 : "[VTMB] Fade-in time when sound starts playing [by input?]."
	fadeout(integer) : "Fade out time (0-100)" : 0 : "[VTMB] Fade-out time when sound stops playing [by input?]."
	
	sound_event(choices) : "Sound Event Type" : 0 : "[VTMB] Unknown yet..." = [ 0:0 1:1 2:2 3:3 4:4 ]
	sound_event_level(choices) : "Sound Event Level" : 2 : "[VTMB] Unknown yet..." = [ 0:0 1:1 2:2 3:3 4:4 ]
	sound_event_owner(target_destination) : "Sound Event Owner" : : "[VTMB] Unknown yet..."

	sep_ambgflgs(string) readonly: "------------------------------------"

	// special flags
	flag_force_looping(choices) : "Flag: Force Loop" : 0 : "[VTMB] Force enables looping even if wave has not looping cue-points." = [ 0 : "False" 1 : "True" ]
	flag_no_sfx(choices) : "Flag: No SFX" : 0 : "[VTMB] Defines, can sound accept sound effects or not (not tested)." = [ 0 : "False" 1 : "True" ]
	flag_no_voice_duck(choices) : "Flag: No Voice Duck" : 0 : "[VTMB] Force enables or disables voice duck option on this sound." = [ 0 : "False" 1 : "True" ]
	flag_skip_collide(choices) : "Flag: Skip Collision" : 0 : "[VTMB] Ignore collisions on sourfaces (not tested)." = [ 0 : "False" 1 : "True" ]

	sep_ambgunkn(string) readonly: "------------------------------------"

	preset(choices) : "Dynamic Presets" : 0 =						// NEEDHELP
	[
		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"
	]
	spinup(integer) : "Spin up time (0-100)" : 0					// NEEDHELP
	spindown(integer) : "Spin down time (0-100)" : 0				// NEEDHELP
	lfotype(integer) : "LFO type (0-3)" : 0 : "0) off 1) sqr 2) tri 3) rnd"		// NEEDHELP
	lforate(integer) : "LFO rate (0-1000)" : 0						// NEEDHELP
	lfomodpitch(integer) : "LFO mod pitch (0-100)" : 0				// NEEDHELP
	lfomodvol(integer) : "LFO mod vol (0-100)" : 0					// NEEDHELP
	cspinup(integer) : "Incremental Spinup Count" : 0				// NEEDHELP

	// flags
	spawnflags(flags) =
	[
		1: "Play everywhere" : 0
		16: "Start Silent": 0
		32: "Is NOT Looped": 0
	]

	// inputs
	input Pitch(integer) : "Sets the sound pitch, expressed as a range from 1 to 255, where 100 is the sound's default pitch."
	input PlaySound(void) : "Starts the sound."
	input StopSound(void) : "Stops the sound if it is playing."
	input ToggleSound(void) : "Toggles the sound between playing and stopping."
	input Volume(integer) : "Sets the sound volume, expressed as a range from 0 to 10, where 10 is the loudest."
	
	// outputs
	output OnTrigger(void) : "[VTMB] Fired when entity is triggered [need to check!]."
]








































//*******************************************************************************************************************
//*******************************************************************************************************************
// 
// BUTTONS
// 
//*******************************************************************************************************************
//*******************************************************************************************************************


//====================================================================================================================
// CLASS: Button [common]
//====================================================================================================================
// VTMB-adaptation:
//  added: base(Targetname)
//  added: base(Parentname)
//  added: base(Shadow)
//  added: speed (from common ents)
//  added: health (from common ents)
//  added: sounds (from common ents)
//  added: wait (from common ents)
//  fixed: sounds (description)
//  removed: PressIn,PressOut

@BaseClass base(TargetnameRot,Parentname,p_Origin) = Button
[
	speed(integer) : "Speed" : 5 : "The speed that the button moves, in inches per second."
	health(integer) : "Strength" : 0 : "Legacy method of specifying whether or not the button can be shot to activate it. Use the 'Damage Activates' spawnflag instead."
	sounds(choices) : "Sounds" : 0 : "[Legacy] Type of sound (defined in source code) played when button pressed. Not used in VTMB game, but supported. It's better to use ambient_generic connection instead." = 
	[
		"": "None"
	]
	wait(integer) : "Delay Before Reset (-1 stay)" : 3 : "Amount of time, in seconds, after the button has been pressed before it returns to the starting position. Once it has returned, it can be used again. If the value is set to -1, the button never returns."

	// Inputs
	input Lock(void) : "Lock the button, preventing it from functioning."
	input Unlock(void) : "Unlock the button, allowing it to function."
	input Press(void) : "Activate the button as if it was pressed."

	// Outputs
	output OnDamaged(void) : "Fired when the button is damaged."
	output OnPressed(void) : "Fired when the button is pressed."
	output OnPressedLocked(void) : "Fired when the button is used while locked."
	output OnIn(void) : "Fired when the button reaches the in/pressed position."
	output OnOut(void) : "Fired when the button reaches the out/released position."
]





//===================================================================================================================
// func_button [common]
//===================================================================================================================
// VTMB-adaptation:
//  removed: master (obsolete),movedir
//  removed: locked_sentence, unlocked_sentence
//  removed: base(DamageFilter)
//  removed: base(Angles) (included)
//  removed: OnUseLocked,PressIn,PressOut (unsup)
//  added: use_filter_name

@BaseClass
= e_func_button
[
	sep_butmove(string) readonly: "------------------------------------"

	speed(integer) : "Moving Speed" : 5 : "The speed that the button moves, in inches per second."
	angles(angle) : "Move Direction" : "0 0 0" : "Specifies the direction of motion to move when the button is used (Pitch, Yaw, Roll)."
	wait(integer) : "Delay Before Reset (-1 stay)" : -1 : "Amount of time, in seconds, after the button has been pressed before it returns to the starting position. Once it has returned, it can be used again. \nIf the value is set to -1, the button never returns."

	sep_buticon(string) readonly: "------------------------------------"

	use_icon(choices) : "Use Icon" : 12 : "An icon that indicates unlocked state of this entity." =
	[
		 0: "None"
		 3: "Lock"
		 4: "Key"
		10: "Door (open)"
		12: "Switch (wall)"
		64: "Switch (power)"
		 7: "TV screen"

		15: "Talk NPC (male)"
		14: "Talk NPC (female)"

		 6: "Lootable container"
		34: "Drop/Valve wheel"
		36: "Arrow left/Book"
		38: "Reel recorder"
		48: "Web camera"
		55: "Breakable"
		60: "Sewer hatch (transition)"
	]
	locked_icon(choices) : "Locked Icon" : 3 : "An icon that indicates locked state of this entity." =
	[
		 0: "None"
		 3: "Lock"
		12: "Switch (wall)"
		64: "Switch (power)"

		58: "Door (player wanted)"
		6:  "Lootable container"
		34: "Drop/Valve wheel"
		11: "Stakeable/Empty"
	]

	sep_butsnds(string) readonly: "------------------------------------"

	// sounds
	soundgroup(choices) : "Sound Group" : "small_metal_switch" : "[VTMB] The group of sounds relative to 'sound/usable/switches/<groupname>/<action>.wav' that specifies 'on/off' sounds." = 
	[
		"" : "None"
		"elevator_button" : "Elevator Button"
		"large_metal_lever" : "Large Metal Lever"
		"manhole_cover" : "Manhole Cover"
		"medium_metal_switch" : "Medium Metal Switch"
		"small_metal_switch" : "Small Metal Switch"
		"wall_light_switch" : "Wall Light Switch"
		"radio" : "Radio"
		"tv" : "TV"
	]
	locked_sound(choices) : "Locked Sound" : "environmental/electronic/deny_beep.wav" : "Sound file played when the player tries to use the button, and fails because it's locked." =
	[
		"" : "None"
		"environmental/electronic/deny_beep.wav" : "environmental/electronic/deny_beep.wav"
	]
	unlocked_sound(choices) : "Unlocked Sound" : "environmental/electronic/button_beep.wav" : "Sound file played when the button is unlocked." =
	[
		"" : "None"
		"environmental/electronic/button_beep.wav" : "environmental/electronic/button_beep.wav"
	]
	sounds(choices) : "Pressed Sound" :  : "Sound file played when button pressed." =
	[
		"" : "None"
		"environmental/electronic/button_beep.wav" : "environmental/electronic/button_beep.wav"
	]

	sep_butadds(string) readonly: "------------------------------------"
	
	lip(integer) : "Lip (inches)" : 0 : "The amount, in inches, of the button to leave sticking out of the wall it recedes into when pressed. Negative values make the button recede even further into the wall."
	health(integer) : "Button Strength" : 0 : "Method of specifying whether or not the button can be damaged to activate it. \nYou may also use the 'Damage Activates' spawnflag instead if supported."
	use_filter_name(filterclass) : "Usage Filter" : : "[VTMB] Link to 'filter_activator_*' entity that defines usage filtering [not tested]."

	spawnflags(flags) =
	[
		1: "Don't move" : 0
		32: "Toggle" : 0
		256: "Touch Activates": 0
		512: "Damage Activates": 0
		1024: "Use Activates" : 1
		2048: "Starts Locked" : 0
		4096: "Sparks" : 0
		128: "Flag 128 (unknown yet)" : 0
		8192: "Flag 8192 (unknown yet)" : 0
	]
	
	// Inputs
	input Lock(void) : "Lock the button, preventing it from functioning."
	input Unlock(void) : "Unlock the button, allowing it to function."
	input Press(void) : "Activate the button as if it was pressed."

	// Outputs
	output OnDamaged(void) : "Fired when the button is damaged."
	output OnPressed(void) : "Fired when the button is pressed."
	output OnPressedLocked(void) : "Fired when the button is used while locked."
	output OnIn(void) : "Fired when the button reaches the in/pressed position."
	output OnOut(void) : "Fired when the button reaches the out/released position."
]

@SolidClass
base (
	Targetname,
	Parentname,
	p_Origin,
	e_func_button,
	RenderFields
)
= func_button :
	"A brush entity that's designed to be used for a player-useable button (Pitch Yaw Roll). When used by the player, it moves to a pressed position."
[
	// RF order fix
]

































//*******************************************************************************************************************
//*******************************************************************************************************************
// 
// Doors
// 
//*******************************************************************************************************************
//*******************************************************************************************************************


//====================================================================================================================
// CLASS: VDoor [common + VTMB-specific]
//====================================================================================================================
// VTMB-adaptation:
//  merged with VDoorBase*
//  moved: Shadow (RenderFields)
//  removed: master (obsolete)
//  removed: noise1,noise2 (unused)
//  removed: startclosesound,closesound (unsup)
//  removed: locked_sound,unlocked_sound
//  removed: loopmovesound
//  removed: forceclosed,ignoredebris,message (unsupported)
//  removed: locked_sentence (obsolete)
//  removed: unlocked_sentence (obsolete)
//  added: linked_door,soundgroup
//  added: *_icon,noopenwanted

@BaseClass
base (
	Targetname,
	Parentname,
	p_Origin,
	p_Global
)
color(0 255 0)
= VDoorBase1
[
	sep_doormain(string) readonly: "------------------------------------"
	speed(integer) : "Moving Speed" : 100 : "The speed at which the door moves."
	// distance(choices) -> func_door_rotating
	// angles(angle) -> func_door
]

@BaseClass
= VDoorBase2
[
	// basic
	wait(integer) : "Delay Before Reset (-1 stay)" : 8 : "Amount of time, in seconds, after the door has opened before it closes. Once it has closed, it can be used again. If the value is set to -1, the door never closes itself."
	linked_door(target_destination): "Name of Linked Door" : : "[VTMB] Door that inherits properties of this entity and works simultaneously."

	sep_doorfeat(string) readonly: "------------------------------------"

	// feats
	soundgroup(choices) : "Sound Group" : "standard_door" : "[VTMB] The group of sounds relative to 'sound/usable/openable/<groupname>/<action>.wav' that specifies open/close/swing/locked sounds." = 
	[
		"" : "None"
		"car_trunk" : "Car Trunk"
		"chainlink_gate" : "Chain-link Gate"
		"heavy_iron_gate" : "Heavy Iron Gate"
		"light_iron_gate" : "Light Iron Gate"
		"jewelry_box" : "Jewelry Box"
		"metal_chest" : "Metal Chest"
		"metal_hatch" : "Metal Hatch"
		"metal_heavy_powered" : "Metal Heavy-Powered"
		"old_wood_window" : "Old Wood Window"
		"push_arm_door" : "Push Arm Door"
		"sliding_glass_door" : "Sliding Glass Door"
		"sliding_glass_window" : "Sliding Glass Window"
		"sliding_plywood" : "Sliding Plywood"
		"squeaky_metal door" : "Squeaky Metal Door"
		"squeaky_wood door" : "Squeaky Wood Door"
		"standard_door" : "Standard Door"
		"stone_door" : "Stone Door"
		"wood_cabnet" : "Wood Cabnet"
		"wood_drawer" : "Wood Drawer"
		"wooden_chest" : "Wooden Chest"
	]
	use_icon(choices) : "Use Icon" : 3 : "An icon that indicates when player can be able to open this door." = 
	[
		 0: "None"
		10: "Door (default)"
		58: "Door (player wanted)"
		59: "Door (transition)"
		12: "Wall switch"
		34: "Drop/Valve wheel"
		35: "Arrow/Stove's oven"
		 6: "Lootable container"
		73: "Pushable prop (-)"
	]
	locked_icon(choices) : "Locked Icon" : 3 : "An icon that indicates locked state of this entity." =
	[
		 0: "None"
		 3: "Default lock"
		54: "Electronic lock (locked)"
		58: "Door (player wanted)"
	]

	sep_dooradd1(string) readonly: "------------------------------------"

	// add prefs
	noopenwanted(choices) : "Block if Wanted" : 0 : "[VTMB] When player is wanted by cops, this door cannot be open." = [ 0: "No" 1: "Yes" ]
	lip(integer) : "Lip (inches)" : 0 : "The amount, in inches, of the door to leave sticking out of the wall it recedes into when open. Negative values make the door recede even further into the wall."
	// climbable(choices) -> func_door_rotating
	// use_override(target_destination) -> func_door
]

@BaseClass
= VDoorBase3
[
	// add prefs
	delay(integer) : "Delay (?)" : 0 : "[VTMB] Unknown yet..."

	sep_dooradd2(string) readonly: "------------------------------------"

	// physics
	dmg(integer) : "Blocking Damage" : 0 : "Amount of damage done to entities that block the movement of this door, per frame."
	health(integer) : "Door's Strength" : 0 : "Number of points of damage to take before door open. \n'0' = don't yield."

	// flags
	spawnflags(flags) =
	[
		1: "Starts Open" : 0
		4: "Non-solid to Player" : 0
		8: "Passable" : 0
	    32: "Toggle" : 0
		256: "Use Opens" : 1
		512: "NPCs Can't" : 0
		1024: "Touch Opens" : 0
		2048: "Starts Locked" : 0
		4096: "Door Silent" : 0
		8192: "Flag 8192 (unknown yet)" : 0
	]

	// inputs
	input Open(void) : "Open the door, if it is not fully open."
	input Close(void) : "Close the door, if it is not fully closed."
	input Toggle(void) : "Toggle the door between open and closed."
	input Lock(void) : "Lock the door."
	input Unlock(void) : "Unlock the door."
	input SetSpeed(float) : "Set the door speed."
	
	// outputs
	output OnClose(void) : "Fired when the door starts closing."
	output OnOpen(void) : "Fired when the door starts opening."
	output OnFullyOpen(void) : "Fired when the door reaches the fully open position. Reversed if 'Start Open' flag is set."
	output OnFullyClosed(void) : "Fired when the door reaches the fully closed position. Reversed if 'Start Open' flag is set."
	output OnBlockedClosing(void) : "Fired when the door is blocked while closing."
	output OnBlockedOpening(void) : "Fired when the door is blocked while opening."
	output OnUnblockedClosing(void) : "Fired when the door is unblocked while closing."
	output OnUnblockedOpening(void) : "Fired when the door is unblocked while opening."
	output OnLockedUse(void) : "Fired when the player uses the door, but it is locked."
]




//===================================================================================================================
// func_door [common]
//===================================================================================================================
// VTMB-adaptation:
//  moved: base(VDoor)
//  removed: movedir
//  removed: filtername (unused)
//  added: use_override

@BaseClass
= p_DoorMoveDir
[	// order fix
	angles(angle) : "Move Direction (Y Z X)" : "0 0 0" : "The direction the door will move, when it opens (Pitch Yaw Roll)."
]

@BaseClass
= p_DoorUseOverride
[	// order fix
	use_override(target_destination) : "Use Override Entity" : : "[VTMB] Unknown yet..."
]

@SolidClass
base (
	VDoorBase1,
	p_DoorMoveDir,
	VDoorBase2,
	p_DoorUseOverride,
	VDoorBase3,
	RenderFields
)
= func_door :
	"A brush entity for using as a player-useable door that moving along defined axis."
[
	soundgroup(choices) : "Sound Group" : "sliding_plywood" : "[VTMB] The group of sounds relative to 'sound/usable/openable/<groupname>/<action>.wav' that specifies open/close/swing/locked sounds." = []
]




//===================================================================================================================
// func_door_rotating [common]
//===================================================================================================================
// VTMB-adaptation:
//  moved: base(VDoor)
//  removed: solidbsp (unused)
//  added: climbable

@BaseClass
= p_DoorMoveDist
[	// order fix
	distance(choices) : "Moving Distance (degs)" : 90 : "The amount, in degrees, that the button should rotate when it's open." = [ 10:10 20:20 30:30 45:45 60:60 75:75 90:90 100:100 110:110 135:135 180:180 360:360 ]
]

@BaseClass
= p_DoorClimbable
[	// order fix
	climbable(choices) : "Door is Climbable" : 0 : "[VTMB] Determines, can player climb this door, or not [not tested fully - works?]." = [ 0: "No" 1: "Yes" ]
]

@SolidClass
base (
	VDoorBase1,
	p_DoorMoveDist,
	VDoorBase2,
	p_DoorClimbable,
	VDoorBase3,
	RenderFields
)
= func_door_rotating :
	"A brush entity for using as a rotating player-useable door." 
[
	spawnflags(flags) =
	[
		2 : "Reverse Dir" : 0
		16: "One-way" : 0
		64: "X Axis" : 0
		128: "Y Axis" : 0
	]
]
































//*******************************************************************************************************************
//*******************************************************************************************************************
//
// AI Script Entities
//
//*******************************************************************************************************************
//*******************************************************************************************************************


//====================================================================================================================
// CLASS: BaseScripted [common, HL2-based]
//====================================================================================================================
// VTMB-adaptaion:
//  removed: m_bLoopActionSequence (new)
//  removed: m_bSynchPostIdles (new)
//  removed: m_bIgnoreGravity (new)
//  removed: m_bDisableNPCCollisions (new)
//  removed: OnCancelSequence (new)
//  removed: OnCancelFailedSequence (new)
//  removed: m_iszEntry (unsup)
//  improved prefs sorting

@BaseClass
base (
	TargetnameRot,
	Parentname
)
color(255 0 255)
sphere(m_flRadius) = BaseScripted
[
	sep_bsmain(string) readonly: "------------------------------------"

	m_iszEntity(target_destination) : "Target NPC" : : "The name or class name (such as 'npc_VVampire') of an NPC to use for this script."
	m_flRadius(integer) : "Search Radius" : 512 : "Radius to search within for an NPC to use. \n'0' searches everywhere."

	sep_bsanims(string) readonly: "------------------------------------"

	m_iszPreIdle(string) : "Pre-Idle Initial Animation" :  : "[VTMB] The name of the sequence (such as 'ready01') or activity (such as 'ACT_READY') to play before pre-action animation if the NPC must wait for the script to be triggered. Not used on original maps [not tested]."
	m_iszIdle(string) : "Pre-Action Idle Animation" :  : "The name of the sequence (such as 'idle01') or activity (such as 'ACT_IDLE') to play before the action animation if the NPC must wait for the script to be triggered. \nUse 'Start on Spawn' flag or MoveToPosition input to play this idle animation."
	m_iszPlay(string) : "Action Animation" :  : "The name of the main sequence (such as 'reload02') or activity (such as 'ACT_RELOAD') to play."
	m_iszPostIdle(string) : "Post-Action Idle Animation" :  : "The name of the sequence (such as 'idle02') or activity (such as 'ACT_IDLE2') to play after the action animation."
	m_iszCustomMove(string) : "Custom Move Animation" :  : "Used in conjunction with the 'Custom movement' setting for the 'Move to Position' property, specifies the sequence (such as 'crouch_run01') or activity (such as 'ACT_RUN') to use while moving to the scripted position."

	sep_bsmisc1(string) readonly: "------------------------------------"

	m_flRepeat(integer) : "Repeat Rate (ms)" : 0
	m_fMoveTo(Choices) : "Move to Position" : 1 =
	[
		0 : "No"
		1 : "Walk"
		2 : "Run"
		3 : "Custom movement"
		4 : "Instantaneous"
		5 : "No - Turn to Face"
	]
	m_iszNextScript(target_destination) : "Next Script" : : "The name of the script to run immediately after this script completes. The NPC will not return to AI between the two scripts."

	sep_bsents(string) readonly: "------------------------------------"

	// Inputs
	input BeginSequence(void) : "Summons an NPC to act out the scripted sequence."
	input MoveToPosition(void) : "Summons an NPC to the script location. They will play their scripted idle (or ACT_IDLE if none is specified) until BeginSequence is triggered."
	input CancelSequence(void) : "Stops the scripted sequence. If fired after a sequence starts, this input will not take effect until the NPC finishes playing the scripted action animation."

	// Outputs
	output OnBeginSequence(void) : "Fires when the action animation begins playing."
	output OnEndSequence(void) : "Fires when the action animation completes."
	output OnScriptEvent01(void) : "Fires when a 'trigger' anim event occurs while playing the script. Use { event 1003 framenum 1 } in the QC."
	output OnScriptEvent02(void) : "Fires when a 'trigger' anim event occurs while playing the script. Use { event 1003 framenum 2 } in the QC."
	output OnScriptEvent03(void) : "Fires when a 'trigger' anim event occurs while playing the script. Use { event 1003 framenum 3 } in the QC."
	output OnScriptEvent04(void) : "Fires when a 'trigger' anim event occurs while playing the script. Use { event 1003 framenum 4 } in the QC."
	output OnScriptEvent05(void) : "Fires when a 'trigger' anim event occurs while playing the script. Use { event 1003 framenum 5 } in the QC."
	output OnScriptEvent06(void) : "Fires when a 'trigger' anim event occurs while playing the script. Use { event 1003 framenum 6 } in the QC."
	output OnScriptEvent07(void) : "Fires when a 'trigger' anim event occurs while playing the script. Use { event 1003 framenum 7 } in the QC."
	output OnScriptEvent08(void) : "Fires when a 'trigger' anim event occurs while playing the script. Use { event 1003 framenum 8 } in the QC."
]






//====================================================================================================================
// aiscripted_schedule [common, HL2-based]
//====================================================================================================================
// VTMB adaptation:
//  removed: graball,interruptability (unsup)

@PointClass
base (
	Targetname
)
sphere(m_flRadius)
color(255 0 255)
iconsprite("editor/aiscripted_schedule")
= aiscripted_schedule :
	"Issues a command to an NPC without taking the NPC out of its AI. This does not seize control of the NPC as " +
	"a scripted_sequence does." 
[
	sep_aissmain(string) readonly: "------------------------------------"

	m_iszEntity(target_destination) : "Target NPC" : : "The name or class name (such as 'npc_VVampire') of an NPC to use for this script."
	m_flRadius(integer) : "Search Radius" : 0 : "Radius to search within for an NPC to use. \n'0' searches everywhere."

	sep_aisshent(string) readonly: "------------------------------------"

	forcestate(choices) : "AI State to Set" : 0 =
	[
		0 : "<None>"
		1 : "Set state to IDLE"
		2 : "Set state to ALERT"
		3 : "Set state to COMBAT"
	]	
	schedule(choices) : "Schedule to Run" : 1 =
	[
		0 : "<None>"
		1 : "Walk to Goal Entity"
		2 : "Run to Goal Entity"
		3 : "Set enemy to Goal Entity"
		4 : "Walk Goal Path"
		5 : "Run Goal Path"
		6 : "Set enemy to Goal Entity AND Run to Goal Entity"
	]
	goalent(target_destination) : "Goal Entity" : : "Provides the name of a schedule-specific goal entity (see 'Schedule to run')"

	spawnflags(Flags) = 
	[
		4 : "Repeatable" : 0
		1024 : "Search Cyclically" : 0
		2048 : "Don't Complain" : 0
	]

	// Inputs
	input StartSchedule(void) : "Starts the scripted schedule. This will first locate an NPC that " +
		"matches the given target, then tell the NPC to run the specified schedule."
]






//===================================================================================================================
// scripted_sequence [common]
//===================================================================================================================
// VTMB-adaptation:
//  removed: Angles (included)
//  removed: DXLevelChoice (unused)
//  removed: onplayerdeath (unsup)
//  added: radius (unkn)

@PointClass
base (
	BaseScripted
)
sphere(m_flRadius)
studio("models/editor/scriptedsequence.mdl")
= scripted_sequence :
	"Grabs an NPC and makes them play a specified set of animations. The NPC can be told to move to the scripted sequence position or can "+
	"be told to play the script wherever they currently are. "+
	"Multiple scripted sequences of the same name will frame-synchronize in the action animation once all the actors have moved to position. "+
	"This allows tight interaction between actors (one actor grabbing another, hitting them, etc.) The flow is as follows:\n\n"+
	"1) Move to position using the specified movement animation. If 'Move to Position' is set to NONE, skip to step 2.\n"+
	"2) If forced to wait for another actor to move to position, play the pre-action idle animation, otherwise skip to step 3. If there is no pre-action idle specified, ACT_IDLE is used.\n"+
	"3) Fire the OnBeginSequence output.\n"+
	"4) Play the action animation. If no action animation is specified, skip to step 5.\n"+
	"5) Play the post-action idle animation. If none is specified, skip to step 6. If the 'Loop in Post Idle' spawnflag is set, keep playing the post-action idle until the script is cancelled. If no post-action idle animation is specified, ACT_IDLE is used.\n"+
	"6) Fire the OnEndSequence output.\n"+
	"7) If a next script to play is specified, hand the NPC to the next script and repeat this process for that script.\n\n"+
	"The MoveToPosition input runs steps 1 and 2, then waits while playing the pre-action idle animation until the BeginSequence input is received.\n\n"+
	"If the sequence has motion extraction in it, set the 'Don't Teleport NPC On End' spawnflag."
[
	radius(integer) : "Sequence Radius (?)" : 10 : "[VTMB] Untested yet..."

	spawnflags(Flags) = 
	[
		4 : "Repeatable" : 0
		8 : "Leave Corpse" : 0
		16 : "Start on Spawn" : 0
		32: "No Interruptions" : 0
		64: "Override AI" : 0
		128: "Don't Teleport NPC On End" : 0
		256: "Loop in Post Idle" : 0
		512: "Priority Script" : 0
		4096: "Allow actor death" : 0
		8192: "Flag 8192 (unknown yet)" : 0
	]
]







































//*******************************************************************************************************************
//*******************************************************************************************************************
//
// CAMERA Entities
//
//*******************************************************************************************************************
//*******************************************************************************************************************


//===================================================================================================================
// sky_camera [common]
//===================================================================================================================
// VTMB-adaptation:
//  removed: Angles,use_angles (unsup)

@PointClass
color(0 0 255)
studio("models/editor/camera.mdl")
size(-6 -6 -6, 6 6 6)
= sky_camera :
	"An entity used to control the 3D Skybox. \nIts origin is used to determine the 3D Skybox's position relative to the map. \nPlace this entity, in the 3D Skybox, at the point where the origin of the map should be."
[
	scale(integer) : "3D Skybox scale" : 16 : "Scale of 3D skybox."
	fogenable(choices) : "Enable Fog" : 0 = [ 0 : "No" 1 : "Yes" ]

	sep_scfog(string) readonly: "------------------------------------"

	fogstart(float) : "Fog Start Distance" : 500 : "Distance at which the skybox fog should start."
	fogend(float) : "Fog End Distance" : 5000 : "Distance at which the skybox fog should be fully opaque."
	fogcolor(color255) : "Fog Primary Color" : "255 255 255"
	fogcolor2(color255) : "Fog Secondary Color" : "255 255 255"
	fogdir(angle) : "Fog Primary Dir" : "1 0 0"
	fogblend(choices) : "Fog Blend" : 0 = [ 0 : "No" 1 : "Yes" ]
]




























	
	
	
	








//*******************************************************************************************************************
//*******************************************************************************************************************
// 
// PARTICLE Effects
// 
//*******************************************************************************************************************
//*******************************************************************************************************************


//===================================================================================================================
// CLASS: BModelParticleSpawner [common]
//===================================================================================================================
// VTMB-apaptation:
//  added: base(Tragetname,EnableDisable) (used by all)
//  improved descriptions

@BaseClass
base (
	Targetname,
	EnableDisable
)
= BModelParticleSpawner
[ 
	sep_bpsmain(string) readonly: "------------------------------------"

	Color(color255) : "Particle Color (R G B)" : "205 201 182"
	SpawnRate(integer) : "Particles Per Second" : 20 : "Number of particles to spawn, per second."
	SpeedMax(string) : "Maximum Particle Speed" : 2 : "Maximum speed that the particles can move after spawning."
	LifetimeMin(string) : "Minimum Particle Lifetime" : 3 : "Minimum number of seconds until each particle dies. Particles live for a random duration between this and 'Maximum Particle Lifetime'."
	LifetimeMax(string) : "Maximum Particle Lifetime" : 5 : "Maximum number of seconds until each particle dies. Particles live for a random duration between 'Minimum Particle Lifetime' and this."
	DistMax(integer) : "Maximum Visible Distance" : 1024 : "Maximum distance at which particles are visible. They fade to translucent at this distance."

	Frozen(choices) : "Freeze After First Cycle" : 0 : "When set, this entity spawns the number of particles in 'Particle Per Second' immediately, and then goes inactive." =
	[
		0 : "No"
		1 : "Yes"
	]

	sep_bpsent(string) readonly: "------------------------------------"

	// Inputs
	input TurnOn(void) : "Turn on."
	input TurnOff(void) : "Turn off."
]



//====================================================================================================================
// env_laser [common]
//====================================================================================================================

@PointClass base(Targetname,Parentname,p_RenderFxChoices) size(-4 -4 -4, 4 4 4) line(255 255 255, targetname, LaserTarget) = env_laser : 
	"An entity that creates a laser beam between itself and a given target."
[
	LaserTarget(target_destination) : "Target of Laser" : : "Name of entity or entities to strike at, randomly chosen if there are multiple entities with the given name."
	renderamt(integer) : "Brightness (1 - 255)" : 100
	rendercolor(color255) : "Beam Color (R G B)" : "255 255 255"
	width(float) : "Width of beam in pixels" : 2
	NoiseAmplitude(integer) : "Amount of noise (0-255)" : 0
	texture(sprite) : "Sprite Name" : "sprites/beama.vmt"
	EndSprite(sprite) : "End Sprite" : ""
	TextureScroll(integer) : "Texture Scroll Rate (0-100)" : 35
	framestart(integer) : "Starting Frame" : 0
	damage(string) : "Damage / second" : "100" : "How much damage this laser does per second to things it hits."
	spawnflags(flags) = 
	[
		1 : "Start On" : 0
		16: "StartSparks" : 0
		32: "EndSparks" : 0
		64: "Decal End" : 0
	]

	// Inputs
	input TurnOn(void) : "Turns the laser on."
	input TurnOff(void) : "Turns the laser off."
	input Toggle(void) : "Toggles the laser between on and off."
]



//===================================================================================================================
// env_physexplosion [common]
//===================================================================================================================
// VTMB-adaptation:
//  removed: inner_radius (new)
//  removed: OnPushedPlayer (new)
//  removed: SpawnFlags(8) (unsup)

@PointClass
base (
	Targetname,
	Parentname
)
line (
	255 255 255,
	targetname,
	parentname
)
sphere(radius)
iconsprite("editor/env_physexplosion.vmt")
= env_physexplosion :
	"An entity that creates an explosion at its origin. If the no-damage spawnflag is set, the explosion won't be visible, but will apply force to any physics objects within its radius."
[
	sep_pemain(string) readonly: "------------------------------------"

	magnitude(string) : "Magnitude" : 500 : "Amount of physics force applied by the explosion."
	radius(string) : "Clamp Radius (0=auto)" : 0 : "If specified, the radius in which the explosion damages entities. \nIf unspecified, the radius will be based on the magnitude."
	targetentityname(target_destination) : "Limit to Entity" :  : "If specified, the explosion will only affect the matching entity."

	spawnflags(flags) =
	[
		1 : "No Damage - Only Force" : 1
		2 : "Push players" : 0
		4 : "Push radially - not as a sphere" : 0
		16 : "Disorient player if pushed" : 0
	]

	// Inputs
	input Explode(void) : "Trigger the explosion."
]



//===================================================================================================================
// func_dustmotes [common]
//===================================================================================================================
// VTMB-adaptation:
//  added: SpriteName

@SolidClass base(BModelParticleSpawner) = func_dustmotes : 
	"A brush entity that spawns sparkling dust motes within its volume. \nProbably doesn't work in VtMB (use func_particle instead)."
[
	SizeMin(string) : "Minimum Particle Size" : 7
	SizeMax(string) : "Maximum Particle Size" : 12
	Alpha(integer) : "Particle Alpha" : 100
// vtmb ----
	SpriteName(sprite) : "Sprite Name" : "particle/sparkles.vmt" : "[VTMB] Material of the sprite to be drawn."
]








































//*******************************************************************************************************************
//*******************************************************************************************************************
// 
// ENVIRONMENTAL Effects
// 
//*******************************************************************************************************************
//*******************************************************************************************************************


//===================================================================================================================
// CLASS: gibshooterbase [common]
//===================================================================================================================
// VTMB-adaptation:
//  removed: gibanglevelocity (new)
//  removed: lightingorigin (new)
//  removed: gibangles (unsup)

@BaseClass
base (
	Targetname,
	Parentname
) = GibShooterBase
[
	sep_gsmain(string) readonly: "------------------------------------"

	angles(angle) : "Gib Direction (Y Z X)" : "0 0 0" : "The direction the gibs will fly."
	m_iGibs(integer) : "Number of Gibs" : 8 : "Total number of gibs to shoot each time it's activated."
	delay(string) : "Delay between shots" : 0 : "Delay (in seconds) between shooting each gib. \nIf 0, all gibs shoot at once."
	m_flVelocity(integer) : "Gib Velocity" : 200 : "Speed of the fired gibs"
	m_flVariance(string) : "Course Variance" : "0.25" : "How much variance in the direction gibs are fired."
	m_flGibLife(string) : "Gib Life" : 4 : "Time in seconds for gibs to live +/- 5%"

	spawnflags(Flags) = 
	[
		1 : "Repeatable"  : 0
	]

	// Inputs
	input Shoot(void) : "Force the gibshooter to create and shoot a gib."
]




//===================================================================================================================
// env_beam [common]
//===================================================================================================================
// VTMB-adaptation:
//  changed: texture("materials/sprites/beama.vmt")
//  removed: filtername (new)
//  removed: HDRColorScale (new)
//  removed: decalname (new)
//  removed: TouchType,OnTouchedByEntity (unsup)
//  mark as unsupported: some io's
//  resorted parameters

@PointClass
base (
	Targetname,
	Parentname,
	p_RenderFxChoices
)
line (
	255 255 255,
	targetname,
	parentname
)
line (
	255 255 0,
	targetname,
	LightningStart,
	targetname,
	LightningEnd
)
color(0 224 192)
size(-4 -4 -4, 4 4 4)
= env_beam :
	"An entity that creates a visible beam between two points. The points can be attached to entities to make the beam move around."
[
	renderamt(integer) : "Brightness (1 - 255)" : 100
	rendercolor(color255) : "Beam Color (R G B)" : "255 255 255"

	sep_beam1(string) readonly: "------------------------------------"

	LightningStart(target_destination) : "Starting Entity" : "" : "Entity that the beam starts at."
	LightningEnd(target_destination) : "Ending Entity" : "" : "Entity that the beam ends at."

	Radius(integer) : "Radius" : 256 : "If the 'Random Strike' spawnflag is set, this radius determines the area within which the endpoints will randomly strike."
	life(float) : "Life (seconds, 0=infinite)" : 0 : "Amount of time before the beam dies. Setting to zero will make the beam stay forever. \n'0' means infinite."
	BoltWidth(float) : "Width of beam" : 6 : "Pixel width of the beam."
	NoiseAmplitude(float) : "Amount of noise (0-255)" : 15 : "The amount of noise in the beam. 0 is a perfectly straight beam."

	sep_beam2(string) readonly: "------------------------------------"

	texture(sprite) : "Sprite Name" : "materials/sprites/beama.vmt" : "The material used to draw the beam."
	TextureScroll(integer) : "Texture Scroll Rate (0-100)" : 35 : "Rate at which the beam texture should scroll along the beam."
	framerate(integer) : "Frames per 10 seconds" : 0 : "Framerate at which the beam texture should animate, if it has multiple frames."
	framestart(integer) : "Starting Frame" : 0 : "The frame to start the beam texture on."
	StrikeTime(float) : "Strike again time (secs)" : 2 : "Refire time between random strikes of the beam. Only used if the 'Random Strike' spawnflag is set."

	sep_beam3(string) readonly: "------------------------------------"

	damage(float) : "Damage / second" : 0 : "How much damage this beam does per second to things it hits when it is continually on, or instantaneously if it strikes. \nFor continuous damage, the value should be greater than 10 or it may not work."
	impact_particle(choices) : "Impact Particle" : "particles/Sparks_Warrens_Computers_emitter.txt" : "[VTMB] Particle spawned on impact [not tested]." = []
	faces_player(choices) : "Faces Player" : 1 : "[VTMB] Take damage to player? [not tested]" = [ 0: "No" 1: "Yes" ]

	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
		512: "Taper Out" : 0
	]
	
	// Inputs
	input TurnOn(void) : "Turns the beam on."
	input TurnOff(void) : "Turns the beam off."
	input Toggle(void) : "Toggles the beam between on and off."
	input StrikeOnce(void) : "Causes the beam to strike once. It will stay on for its set Life and then turn off (it will never turn off if Life is set to zero)."
	input Alpha(integer) : "Sets the beam's alpha (0 - 255)."
	input Color(color255) : "Sets the beam's render color (R G B)."
	input Amplitude(float) : "Set the amplitude of beam noise (0 - 255)."
	input ScrollSpeed(float) : "Set the scroll speed in units per second (0 - 100)."
	input Width(float) : "Set the width of the beam, in pixels."
	input Noise(float) : "[VTMB] Set amount of noise? [not tested]."
]




//===================================================================================================================
// env_cubemap [common]
//===================================================================================================================
// not changed.

@PointClass
color(0 0 255)
sidelist(sides)
iconsprite("editor/env_cubemap.vmt")
= env_cubemap :
	"An entity that creates a sample point for the Cubic Environment Map."
[
	cubemapsize(choices) : "Cubemap Size" : 0 =
	[
		0 : "Default"
		1 : "1x1"
		2 : "2x2"
		3 : "4x4"
		4 : "8x8"
		5 : "16x16"
		6 : "32x32"
		7 : "64x64"
		8 : "128x128"
		9 : "256x256"
	]
	sides(sidelist) : "Brush faces" : : "(Optional) Brushes faces to directly attach to the env_cubemap. \nPress Pick then click on faces in the 3D View to select them. \nUse CTRL while clicking to add or remove from the selection."
]




//===================================================================================================================
// env_fade [common]
//===================================================================================================================
// not changed.

@PointClass
base (
	Targetname
)
iconsprite("editor/env_fade")
= env_fade :
	"An entity that controls screen fades."
[
	sep_fade(string) readonly: "------------------------------------"

	duration(string) : "Duration (seconds)" : "2.0" : "The time that it will take to fade the screen in or out."
	holdtime(string) : "Hold Fade (seconds)" : "1.0" : "The time to hold the faded in/out state."
	renderamt(integer) : "Fade Alpha" : 255 : "Alpha of the fade, where 0 = fully transparent and 255 = fully opaque." 
	rendercolor(color255) : "Fade Color (R G B)" : "0 0 0"

	spawnflags(flags) =
	[
		1: "Fade From" : 0
		2: "Modulate" : 0
		8: "Stay Out" : 0
	]

	// Inputs
	input Fade(void) : "Start the screen fade."

	// Outputs
	output OnBeginFade(void) : "Fired when the fade has begun."
]




//====================================================================================================================
// env_fog_controller [common]
//====================================================================================================================
// VTMB-adaptation
//	removed: angles (unused)
//  removed: DXLevelChoice (unused)
//	removed: fogblend (moved to worldspawn)
//	removed: fogcolor/2 (moved to worldspawn)
//	removed: fogdir (moved to worldspawn)
//	removed: fogenable (moved to worldspawn)
//	removed: fogstart/end (moved to worldspawn)
//	removed: farz (moved to worldspawn)

@PointClass base(Targetname) iconsprite("editor/fog_controller.vmt") color(255 255 255) = env_fog_controller : 
	"An entity that controls the fog and view distance in the map. \nIn VtMB all Fog values moved to Map properties (worldspawn), so using env_fog_controller you just may control them in real time via inputs."
[
	targetname(target_source) : "Name" : "fog_controller" : "The name that other entities refer to this entity by."

	// Inputs
	input SetStartDist(float) : "Sets fog start distance"
	input SetEndDist(float) : "Sets fog end distance"
	input TurnOn(void) : "Turns fog on"
	input TurnOff(void) : "Turns fog off"
	input SetColor(color255) : "Sets primary fog color."
	input SetColorSecondary(color255) : "Sets secondary fog color."
]





//===================================================================================================================
// env_physimpact [common]
//===================================================================================================================
// VTMB-adaptation:
//  fixed: angles(angle),desc
//  added: target_position
//  added: Origin

@PointClass
base (
	Targetname,
	Parentname
)
line (
	255 255 255,
	targetname,
	parentname
)
line (
	255 255 0,
	targetname,
	directionentityname
)
halfgridsnap
iconsprite("editor/env_physexplosion.vmt")
= env_physimpact : 
	"An entity that will cause a physics impact on another entity."
[
	sep_pimain(string) readonly: "------------------------------------"

	angles(angle) : "Impact Angles (Y Z X)" : "0 0 0" : "Direction to project the impact."
	magnitude(integer) : "Magnitude" : 50 : "Strength of the impact."
	distance(integer) : "Distance" : 64 : "How far to project the impact (if 0 uses a default value)."
	target_position(vecline) : "Target Position (X Y Z)" :  : "[VTMB] Position (world's origin) that impact will be projected? [not tested]."
	directionentityname(target_destination) : "Point to Entity" :  : "If set, 'Distance' and Angle settings are ignored and the direction and distance to the target entity will be used. \n[VTMB] Target Position too [not tested]?"

	spawnflags(flags) =
	[
		1: "No fall-off" : 0
		2: "Infinite Length" : 0
		4: "Ignore Mass" : 0
		8: "Ignore Surface Normal When Applying Force" : 1
	]

	// Inputs
	input Impact(void) : "Trigger the impact"
]






//===================================================================================================================
// env_shake [common]
//===================================================================================================================
// VTMB-adaptation:
//  changed default values

@PointClass
base (
	Targetname,
	Parentname
)
line (
	255 255 255,
	targetname,
	parentname
)
sphere()
iconsprite("editor/env_shake.vmt")
= env_shake :
	"An entity to control screen shake on players." 
[
	sep_shkmain(string) readonly: "------------------------------------"

	amplitude(float) : "Amplitude (0-16)" : 4 : "The amount of noise in the screen shake. Should be a range between 0 and 16."
	radius(float) : "Effect Radius" : 256 : "The radius around this entity in which to affect players."
	duration(float) : "Duration (seconds)" : 1 : "The length of time in which to shake the player's screens."
	frequency(float) : "Frequency" : "2.5" : "The frequency used to apply the screen shake. Should be a value between 0 and 255, where 0.1 = jerk, and 255.0 = rumble."

	spawnflags(flags) =
	[
		1: "GlobalShake" : 0
		4: "In Air" : 0		// shakes objects even if they are not onground
		8: "Physics" : 0	// shakes physically as well as the camera
	 // FixMe: works in vtmb?
		16: "Ropes" : 0		// shakes ropes too.
		32: "DON'T shake view (for shaking ropes or physics only)" : 0
		64: "DON'T Rumble Controller" : 0
	]

	// Inputs
	input Amplitude(string) : "Set the amplitude (0-16)"
	input Frequency(string) : "Set the frequence. Should be a value between 0 and 255, where 0.1 = jerk, and 255.0 = rumble."
	input StartShake(void) : "Start the shake."
	input StopShake(void) : "Stop the shake."
]






//===================================================================================================================
// env_shooter [common]
//===================================================================================================================
// VTMB-adaptation:
//  replaced: shootmodel("models/gibs/metalgibs.mdl")
//  removed: gibgravityscale (new)
//  removed: massoverride (new)
//  removed: nogibshadows (unsup)

@BaseClass
= e_env_shooter
[
	sep_shkent(string) readonly: "------------------------------------"

	shootmodel(studio) : "Shooter Model" : "models/gibs/metalgibs.mdl" : "Thing to shoot out. Can be a .mdl or a .vmt."
	shootsounds(choices) :"Material Sound" : -1 =
	[
		-1: "None"
		0: "Glass"
		1: "Wood"
		2: "Metal"
		3: "Flesh"
		4: "Concrete"  
	]
	simulation(choices) :"Simulate" : 0 =
	[
		0: "Point"
		1: "Physics"
		2: "Ragdoll"
	]
	skin(choices) : "Gib Skin" : 0 : "Some models have multiple versions of their textures, called skins. Set this to a number other than 0 to use that skin on all gibs produced by this shooter." =
	[ 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 10:10 11:11 12:12 13:13 14:14 15:15 16:16 17:17 18:18 19:19 20:20 21:21 22:22 23:23 24:24 25:25 26:26 27:27 28:28 29:29 30:30 31:31 ]

	spawnflags(flags) =
	[
		2 : "On fire" : 0
		4 : "Strict remove after lifetime" : 0
		1 : "Flag 1 (unknown yet)" : 0
	]
]


@PointClass
base (
	GibShooterBase,
	e_env_shooter,
	RenderFields
)
line (
	255 255 255,
	targetname,
	parentname
)
iconsprite("editor/env_shooter.vmt")
= env_shooter :
	"An entity that shoots models, or sprites, out of its origin."
[
	// RF order fix
]







//===================================================================================================================
// env_spark [common]
//===================================================================================================================
// VTMB-adaptation:
//  added: new io's

@PointClass
base (
	TargetnameRot,
	Parentname
)
line (
	255 255 255,
	targetname,
	parentname
)
iconsprite("editor/env_spark.vmt")
= env_spark :
	"An entity used to create sparks at its origin." 
[
	sep_sprkmain(string) readonly: "------------------------------------"

	MaxDelay(string) : "Max Delay" : 0 : "The longest delay between sparks (in seconds)."
	Magnitude(choices) : "Magnitude" : 1 : "The size of the sparks." =
	[
		1 : "Small"
		2 : "Medium"
		5 : "Large"
		8 : "Huge"
	]
	TrailLength(choices) : "Spark Trail Length" : 1 =
	[
		1 : "Short"
		2 : "Medium"
		3 : "Long"
	]

	spawnflags(flags) =
	[
		64: "Start On" : 0
		128: "Glow" : 0
		256: "Silent" : 0
		512: "Directional" : 0
	]
	
	// Inputs
	input StartSpark(void) : "Start the spark effect."
	input StopSpark(void) : "Stop the spark effect."
	input ToggleSpark(void) : "Toggle the on/off state of the spark effect."
	input SparkOnce(void) : "Spark once."
	
	// Outputs
	output OnSpark(void) : "[VTMB] Fired when the spark effect started."
]






//===================================================================================================================
// env_sprite [common]
//===================================================================================================================
// VTMB-adaptation:
//  added: spawnflag (4)
//  added: base(Angles) (used)
//  removed: DXLevelChoice (unused)
//  removed: GlowProxySize (new)
//  removed: HDRColorScale (new)
//  removed: Color*Value (new)
//  added: new io's
//  fix: disableshadows = 1

@PointClass
base (
	TargetnameRot,
	Parentname,
	RenderFields
)
line (
	255 255 255,
	targetname,
	parentname
)
size(-2 -2 -2, 2 2 2)
sprite()
color(20 140 20)
= env_sprite :
	"An entity that controls the drawing of a sprite in the world." 
[
	disableshadows(choices) : "Disable Shadows" : 1 : "Disables shadow casing from this sprite." = [ 0 : "No" 1 : "Yes" ]
	sep_sprtmain(string) readonly: "------------------------------------"

	framerate(float) : "Framerate" : "10.0" : "Rate at which the sprite should animate, if at all."
	model(sprite) : "Sprite Name" : "sprites/glowa.vmt" : "Material of the sprite to be drawn. \n\nYou can also use models."
	scale(float) : "Sprite Scale" : "1.0" : "Scale multiplier of the sprite."

	spawnflags(flags) =
	[
		1: "Start On" : 0
		2: "Play Once" : 0
		4: "Flag 4 (unknown yet)" : 0
	]

	// Inputs
	input Alpha(integer) : "Sets the sprite's alpha (0 - 255)."
	input Color(color255) : "Sets the sprite's color (R G B)."
	input HideSprite(void) : "Hide the sprite. Won't be drawn until the 'ShowSprite' input is received."
	input SetScale(float) : "Set the sprite's scale (0 - 8.0)."
	input ShowSprite(void) : "Show the sprite."
	input ToggleSprite(void) : "Toggle the sprite between hidden and shown."
 // vtmb
	input TurnOn(void) : "[VTMB] Set state of sprite to On."
	input TurnOff(void) : "[VTMB] Set state of sprite to Off."
	input Toggle(void) : "[VTMB] Toggle the sprite between hidden and shown."
]





//===================================================================================================================
// env_steam [common]
//===================================================================================================================
// VTMB-adaptation:
//  removed: rollspeed (new)

@PointClass
base (
	TargetnameRot,
	Parentname
)
line (
	255 255 255,
	targetname,
	parentname
)
color(255 255 255)
studioprop("models/editor/spot_cone.mdl")
= env_steam :
	"An entity used to create a jet of steam."
[
	sep_stmmain(string) readonly: "------------------------------------"

	InitialState(choices) : "Initial State" : 1 = 
	[
		0 : "Off"
		1 : "On"
	]

	//Type of particle to spew out
	type(choices) : "Particle Type" : 0 =
	[
		0 : "Normal"
		1 : "Heat Wave"
	]
	Rate(integer) : "Emission rate" : 26 : "The rate of particle emission. i.e. particles per second."
	Speed(integer) : "Speed" : 120 : "The default speed at which the particles move after they spawn."
	SpreadSpeed(integer) : "Spread Speed" : 15 : "The amount of random spread in the particle's velocity after they spawn."
	JetLength(integer) : "Length of steam jet" : 80 : "The length of the jet determines the lifetime of each particle."

	sep_stmappr(string) readonly: "------------------------------------"

	StartSize(integer) : "Particle start size" : 10 : "The initial size of the particles after they spawn."
	EndSize(integer) : "Particle end size" : 10 : "The size of the particles at the point at which they are removed."
	rendercolor(color255) : "Color (R G B)" : "255 255 255"
	renderamt(integer) : "Translucency (0-255)" : 100

	spawnflags(flags) =
	[
		1 : "Emissive" : 0
	]
	
	// Inputs
	input TurnOn(void) : "Turns the steam jet on."
	input TurnOff(void) : "Turns the steam jet off."
	input Toggle(void) : "Toggles the steam jet between on and off."
	input JetLength(integer) : "Sets the length of steam jet."
	input Rate(integer) : "Sets the particle emission rate in particles per second."
	input Speed(integer) : "Sets the default speed of the particles in units per second."
	input SpreadSpeed(integer) : "Sets the spread speed in units per second."
]






































//*******************************************************************************************************************
//*******************************************************************************************************************
// 
// FILTERS
// 
//*******************************************************************************************************************
//*******************************************************************************************************************


//===================================================================================================================
// CLASS: BaseFilter [common]
//===================================================================================================================
// VTMB-adaptation:
//  removed: Negated
//  added: reverse_outcome ('negated' analogue)

@BaseClass
base (
	Targetname
)= BaseFilter
[
	sep_fltmain(string) readonly: "------------------------------------"

	reverse_outcome(choices) : "Reverse Outcome" : 0 : "[VTMB] Whether to reverse the result of the subfilters, after combining them using the Logic Type chosen [not tested]. \n"+
		"Reversing the outcome using the AND logic type means that any subfilter must fail for this filter to pass. \n"+
		"Reversing the outcome using the OR logic type means that all subfilters must fail for this filter to pass." =
	[
		0 : "No"
		1 : "Yes"
	]

	// Inputs
	input TestActivator(void) : "Test the activator against the filter and fires OnPass or OnFail output."

	// Outputs
	output OnPass(void) : "Fired in response to TestActivator input if the activator passes the filter."
	output OnFail(void) : "Fired in response to TestActivator input if the activator fails to pass the filter."
]



//===================================================================================================================
// filter_activator_class [common]
//===================================================================================================================
// VTMB-adaptation:
//  changed: filterclass value

@FilterClass
base (
	BaseFilter
)
iconsprite("editor/filter_class.vmt")
= filter_activator_class :
	"A filter that filters by the class name of the activator."
[
	filterclass(filterclass) : "Filter Class Name" :  : "The class name to filter by. If the filter mode is Allow, only entities whose "+
		"class name matches the given string will pass the filter. If the filter mode is Disallow, "+
		"all entities EXCEPT those whose class name matches the given string will pass the filter."
]



//===================================================================================================================
// filter_activator_name [common]
//===================================================================================================================

@FilterClass
base (
	BaseFilter
)
iconsprite("editor/filter_name.vmt")
= filter_activator_name :
	"A filter that filters by the name of the activator."
[
	filtername(target_destination) : "Filter Name" : : "The name to filter by. If the filter mode is Allow, only entities whose "+
		"name matches the given string will pass the filter. If the filter mode is Disallow, "+
		"all entities EXCEPT those whose name matches the string will pass the filter."
]



//===================================================================================================================
// filter_multi [common]
//===================================================================================================================
// VTMB-adaptation:
//  removed: Negated (new)

@FilterClass
base (
	BaseFilter
)
iconsprite("editor/filter_multiple.vmt")
= filter_multi :
	"A filter that tests the activator against multiple filters. This allows you to build more complex filters, such as"+
	"'Allow anyone on Team 1 who is also class engineer', or 'Allow everyone except classes npc_VZombie and npc_VTzimisce'."
[
	filtertype(choices) : "Logic Type" : 0 =
	[
		0 : "AND (all filters must pass)"
		1 : "OR (any filter must pass)"
	]
	
	sep_fltflts(string) readonly: "------------------------------------"
	Filter01(filterclass) : "Filter 1" : : "Activator filter to test."
	Filter02(filterclass) : "Filter 2" : : "Activator filter to test."
	Filter03(filterclass) : "Filter 3" : : "Activator filter to test."
	Filter04(filterclass) : "Filter 4" : : "Activator filter to test."
	Filter05(filterclass) : "Filter 5" : : "Activator filter to test."
]








































//*******************************************************************************************************************
//*******************************************************************************************************************
// 
// FUNCTION Entities
// 
//*******************************************************************************************************************
//*******************************************************************************************************************


//===================================================================================================================
// func_areaportal [common]
//===================================================================================================================
// VTMB-adaptation:
//  removed: PortalVersion (unsup)

@SolidClass
base (
	Targetname
)
color(0 255 255)
= func_areaportal :
	"A portal brush used to manage visibility in maps. Portals define areas, which are spaces " +
	"that are connected in the map. Both sides of a portal cannot touch the same area, for example, a " +
	"doughnut shaped map would require at least two portals to divide the map into two areas. A linear map " +
	"could be divided into two areas with a single area portal."
[
	sep_aptmain(string) readonly: "------------------------------------"
	target(target_destination) : "Name of Linked Door" : : "(Optional) The name of a door whose open/closed state controls the on/off state of this area portal."
	StartOpen(choices) : "Initial State" : 0 =
	[
		0 : "Closed"
		1 : "Open"
	]
 
	// Inputs
	input Open(void) : "Open the portal. When the portal is open is can be seen through."
	input Close(void) : "Close the portal. When the portal is closed it cannot be seen through."
	input Toggle(void) : "Toggle the open/closed state of the portal."
]




//===================================================================================================================
// func_areaportalwindow [common]
//===================================================================================================================
// VTMB-adaptation:
//  removed: PortalVersion (new)
//  removed: Inputs (new)
//  changed: Fade*Dist(choices)

@SolidClass
base (
	Targetname
)
color(0 128 255)
= func_areaportalwindow :
	"An entity that can be used to optimize the visibility in a map. \n"+
	"If you seal off an area with them, when the viewer moves the specified distance away from them, they will go opaque and the parts inside the area will not be drawn. \n"+
	"The 'target' brush model should enclose the func_areaportal window so no parts of it are culled by the window. \n"+
	"If you use the optional foreground brush model, then it should enclose the 'target' brush model."
[
	sep_apwmain(string) readonly: "------------------------------------"

	target(target_destination)  : "Rendered Window" : : "The name of a brush model to render as the window."
	FadeStartDist(choices) : "Fade Start Distance" : 384 : "When the viewer is closer than this distance, the alpha is set to 'TranslucencyLimit'." =
	[
		16 : 16
		32 : 32
		64 : 64
		96 : 96
		128 : 128
		192 : 192
		256 : 256
		384 : 384
		512 : 512
		768 : 768
	]
	FadeDist(choices) : "Fade End Distance" : 768 : "When the viewer is at this distance, the portal becomes solid and closes off." =
	[
		32 : 32
		64 : 64
		96 : 96
		128 : 128
		192 : 192
		256 : 256
		384 : 384
		512 : 512
		768 : 768
		1024 : 1024
	]

	sep_apwadds(string) readonly: "------------------------------------"
	TranslucencyLimit(string) : "Translucency Limit"  : "0.0" : "This value limits the translucency of the bmodel and prevents it from becoming invisible when the viewer is right on top of it."
	BackgroundBModel(target_destination) : "Foreground Brush" :  : "(Optional) brush model that is drawn after the fading brush model. This model should have alpha in its textures so you can see through it."
]






//===================================================================================================================
// func_brush [common]
//===================================================================================================================
// VTMB-adaptation:
//  removed: Shadow (included)
//  removed: excludednpc (new)
//  removed: invert_exclusion (new)
//  removed: solidbsp (new)
//  removed: vrad_brush_cast_shadows (new)
//  removed: spawnflags (new)
//  removed: inputs (new)
//  added: new io's

@BaseClass
= e_func_brush
[
	sep_brshmain(string) readonly: "------------------------------------"

	Solidity(choices) : "Solidity" : 0 : "Used to control the solidity/collision of these brushes." =
	[
		0 : "Toggle"
		1 : "Never Solid"
		2 : "Always Solid"
	]
	climbable(choices) : "Brush is Climbable" : 0 : "[VTMB] Determines, can player climb to this brush, or not." = [ 0 : "No" 1 : "Yes" ]
	
	InputFilter(choices) : "Input Filter" : 0 : "Used to specify which inputs this entity will accept." =
	[
		0 : "Allow all inputs"
		8 : "Ignore Touch/Untouch"
		16 : "Ignore Use"
		32 : "Ignore All"
	]

	// inputs
	input Toggle(void) : "[VTMB] Toggle this brush state between enabled and disabled."
]

@SolidClass
base (
	Targetname,
	Parentname,
	p_Global,
	EnableDisable,
	e_func_brush,
	RenderFields
)
line (
	255 255 255,
	targetname,
	parentname
)
= func_brush :
	"An brush built entity with various features.\n"+
	"[VTMB] Adds additional properties to object that it would not normally have. \nFor example, makes something climbable, or usable or solid that is not normally so (e.g. making a cat statue usable)."
[
	sep_brshorig(string) readonly: "------------------------------------"
	origin(string) : "Origin (X Y Z)" : : "The position of this entity's center in the world. Rotating entities typically rotate around their origin. \n\nWarning: if the current brush used as func_areaportalwindow's rendering target, it's necessarily to leave Origin values to be empty, or set it to 0 0 0!"
]







//===================================================================================================================
// func_detail [common]
//===================================================================================================================
// not changed.

@SolidClass
color(0 180 0)
= func_detail :
	"An entity that turns its brushes into detail brushes. Detail brushes do NOT contribute to visibility in the PVS. World geometry "+
	"is not clipped to detail brushes, so if you have a small detail clump attached to a wall, the wall won't be cut up by the detail brush. "+
	"func_detail is great for high-frequency brush geometry that's visual detail only. It is also ideal for reducing map VIS time."
[
]







//===================================================================================================================
// func_illusionary [common]
//===================================================================================================================
// VTMB-adaptation:
//  removed: minlight (unsup)

@SolidClass
base (
	Targetname,
	Parentname,
	p_Origin,
	RenderFields
)
line (
	255 255 255,
	targetname,
	parentname
)
= func_illusionary :
	"Fake Wall/Light with no collision."
[
]







//===================================================================================================================
// func_ladder [common]
//===================================================================================================================
// not changed.

@SolidClass
color(180 180 0)
= func_ladder :
	"An entity that turns its brushes into ladder brushes. Player may climb it."
[
]







//===================================================================================================================
// func_lod [common]
//===================================================================================================================
// not changed.
// inserted to use modified classes.

@SolidClass
base (
	Targetname
)
sphere(DisappearDist)
= func_lod :
	"Brush-built model that fades out over a specified distance. Useful for creating world detail that doesn't need to be drawn far away, for performance reasons."
[
	DisappearDist(integer)    : "Disappear Distance" : 2000 : "Distance at which these brushes should fade out."
	Solid(choices) : "Solid" : 0 : "Set whether or not these brushes should collide with other entities." =
	[
		0: "Solid"
		1: "Non-Solid"
	]
]









//===================================================================================================================
// func_monitor [common, HL2-based]
//===================================================================================================================
// VTMB-adaptation:
//  added: desc.note
//  added: view_entity
//  added: spawnflags

@BaseClass
halfgridsnap
= e_func_monitor
[
	sep_monmain(string) readonly: "------------------------------------"

	origin(vecline) : "Look Origin" : : "World's 'X Y Z' origin that defined player's look position when he's using this monitor."
	target(target_destination) : "Camera Name" : : "Name of camera entity that will translate picture on this monitor."
	view_entity(target_destination) : "View Entity" : : "[VTMB] Entity to view and manage, e.g. TV set [not tested]."

	spawnflags(flags) =
	[
		1: "Flag 1 (unknown yet)" : 0
	]

	// Inputs
	input SetCamera(string) : "Override the camera to use for this monitor. Takes the name of a point_camera entity in the map."
]

@SolidClass
base (
	Targetname,
	Parentname,
	p_Origin,
	p_Global,
	EnableDisable,
	e_func_monitor,
	e_func_brush,
	RenderFields
)
line (
	255 255 255,
	targetname,
	parentname
)
= func_monitor :
	"A monitor that renders the view from a given point_camera entity. \n"+
	"[VTMB] This plugin connects a monitor prop to a camera and enables turning it on or off."
[
	// RF order fix
]








//===================================================================================================================
// func_movelinear [common]
//===================================================================================================================
// VTMB-adaptation:
//  removed: outputs (new)
//  removed: movedir (->angles)
//  added: new spawnflags
//  added: loopsound
//  added: new io's
//  improved descriptions

@SolidClass
base (
	Targetname,
	Parentname,
	p_Origin
)
line (
	255 255 255,
	targetname,
	parentname
)
= func_movelinear :
	"A brush entity that moves linearly along a given distance, in a given direction."
[
	sep_mlmain(string) readonly: "------------------------------------"

	angles(angle) : "Move Direction (Y Z X)" : "-90 0 0" : "The direction the brushes will move, when told to."
	movedistance(float) : "Move Distance (Inches)" : 50 : "The distance from the starting point that the brush should move, in inches."
	speed(integer) : "Move Speed (Inch/sec)" : 20 : "The speed that the brush moves, in inches per second."
	startposition(float) : "Start Position (0-1)" : 0 : "Position of brush when spawned. \nThe range is a value between 0.0 and 1.0, where 0 is the starting position and 1 is the starting position + (move direction * move distance)."	

	sep_mlsnds(string) readonly: "------------------------------------"

	startsound(sound) : "Start Sound" :  : "Sound played when the brush starts moving. \nClick down arrow if you want to choice default sounds." =
	[
		"area/special/observatory/observation_doors_start_1.wav" : "Area/Special/Observatory/Observation_Doors_Start_1.wav"
		"usable/openable/metal_heavy_powered/open.wav" : "Usable/Openable/Metal_Heavy_Powered/Open.wav"
		"usable/openable/sliding_plywood/swing.wav" : "Usable/Openable/Sliding_Plywood/Swing.wav"
		"environmental/machines/elevator_operate.wav" : "Environmental/Machines/Elevator_Operate.wav"
	]
	stopsound(sound) : "Stop Sound" :  : "Sound played when the brush stops moving. \nClick down arrow if you want to choice default sounds." =
	[
		"area/special/observatory/observation_doors_stop_1.wav" : "Area/Special/Observatory/Observation_Doors_Stop_1.wav"
		"usable/openable/metal_heavy_powered/close.wav" : "Usable/Openable/Metal_Heavy_Powered/Close.wav"
		"usable/openable/sliding_plywood/close.wav" : "Usable/Openable/Sliding_Plywood/Close.wav"
		"environmental/machines/elevator_stop.wav" : "Environmental/Machines/Elevator_Stop.wav"
	]
	loopsound(sound) : "Movement Sound" :  : "[VTMB] Sound played when the brush moves. \nClick down arrow if you want to choice default sounds." =
	[
		"area/special/observatory/observation_doors_loop_1.wav" : "Area/Special/Observatory/Observation_Doors_Loop_1.wav"
		"usable/openable/metal_heavy_powered/swing.wav" : "Usable/Openable/Metal_Heavy_Powered/Swing.wav"
		"surfaces/concrete/scrape1.wav" : "Surfaces/Concrete/Scrape1.wav"
	]

	sep_mlmisc(string) readonly: "------------------------------------"

	blockdamage(float) : "Block Damage" : 0 : "The amount of damage to do to any entity that blocks the brushes, per frame."
	
	spawnflags(flags) =
	[
		8 : "Not Solid" : 0
		32 : "Flag 32 (unknown yet)" : 0
		256 : "Flag 256 (unknown yet)" : 0
	]

	// Inputs
	input Open(void) : "Move the brush to the end position (starting position + (move direction * move distance)) [not tested]."
	input Close(void) : "Move the brush to the starting position [not tested]."

	// inputs
	input StartMoving(void) : "[VTMB] Start brush moving."
	input StopMoving(void) : "[VTMB] Stop brush moving."
	input ToggleMovement(void) : "[VTMB] Toggle movement between start and stop."
	input SetPosition(float) : "Move the brush to a specific position between 0.0 and 1.0, where 0 is the starting position and 1 is the starting position + (move direction * move distance)."
	input SetSpeed(float) : "Set the speed and update immediately."

	// outputs
	output Position(integer) : "[VTMB] Fired whenever the brush moves. The output is the position of brush from 0 to 1..."
	output OnStop(void) : "[VTMB] Fired when brush stopped its moving."

	output OnReachStart(void) : "[VTMB] Fired when brush reaches start movement point."
	output OnReachEnd(void) : "[VTMB] Fired when brush reaches end movement point."
	
	output OnMoveTowardsStart(void) : "[VTMB] Fired when move toward starts [untested]."
	output OnMoveTowardsEnd(void) : "[VTMB] Fired when move toward ends [untested]."
]









//===================================================================================================================
// func_rotating [common]
//===================================================================================================================
// VTMB-adaptation:
//  removed: Shadow (included)
//  removed: solidbsp (new)
//  removed: StopAtStartPos,
//  mark as unsupported: message
//  improved controls

@BaseClass
= e_func_rotating
[
	sep_rotmain(string) readonly: "------------------------------------"

	maxspeed(integer) : "Max Rotation Speed" : 10 : "The maximum rotation speed of the brushes, in degrees per second."
	fanfriction(integer) : "Friction (0 - 100%)" : 20 : "The amount of rotational friction. Value must be between 0 and 100 %."
	dmg(integer) : "Blocking Damage" : 0 : "Damage done to any entity that blocks the rotation, per frame."

	sep_rotsnds(string) readonly: "------------------------------------"

	message(sound) : "Rotating Sound" :  : "Sound to play while rotating." =
	[
		"environmental/machines/electric_fan2.wav" : "Environmental/Machines/Electric_Fan2.wav"
		"environmental/machines/fan large rusty.wav" : "Environmental/Machines/Fan Large Rusty.wav"
		"environmental/machines/fan noir.wav" : "Environmental/Machines/Fan Noir.wav"
		"environmental/machines/fan noir fast.wav" : "Environmental/Machines/Fan Noir Fast.wav"
		"environmental/machines/fan noir huge.wav" : "Environmental/Machines/Fan Noir Huge.wav"
		"environmental/machines/large_fan.wav" : "Environmental/Machines/Large_Fan.wav"
	]
	volume(integer) : "Volume (10=max)" : 10 : "The volume of the rotation sound."
	sounds(choices) : "Sounds Type" : 0 : "[VTMB] Sounds to play when rotating [not tested - works?]." =
	[
		0: "None (Silent)"
		21: "lever or wheel: turn + move sqeek"
		22: "lever or wheel: latch + release gas"
		23: "lever or wheel: ratchet + sqeek"
		24: "lever or wheel: large ratchet"
		25: "lever or wheel: clanky + gas release"
		26: "lever or wheel: latch + large metal thud"
		27: "lever or wheel: smaller ratchet"
		28: "lever or wheel: smaller lever move"
	]

	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 Sound Radius" : 0
		256: "Medium Sound Radius" : 0
		512: "Large Sound Radius" : 1
	]

	// Inputs
	input SetSpeed(float) : "Set the speed as a ratio of the specified Max Rotation Speed, where 0 is stopped and 1 is the Max Rotation Speed.."
	input Start(void) : "Start the rotator rotating."
	input Stop(void) : "Stop the rotator from rotating."
	input StartForward(void) : "Start the rotator rotating forward."
	input StartBackward(void) : "Start the rotator rotating backward."
	input Toggle(void) : "Toggle the rotator between rotating and not rotating."
	input Reverse(void) : "Reverse the direction of rotation of the rotator."
]

@SolidClass
base (
	TargetnameRot,
	Parentname,
	p_Origin,
	e_func_rotating,
	RenderFields
)
line (
	255 255 255,
	targetname,
	parentname
)
= func_rotating :
	"A rotating brush entity."
[
	// RF order fix
]






































//*******************************************************************************************************************
//*******************************************************************************************************************
// 
// INTERFACE
// 
//*******************************************************************************************************************
//*******************************************************************************************************************


//===================================================================================================================
// game_text [common]
//===================================================================================================================
// VTMB-adaptation:
//  fixed: description
//  fixed: y position
//  removed: master (unused)
//  added: new io's

@PointClass
base (
	Targetname
)
iconsprite("editor/game_text.vmt")
= game_text : 
	"An entity that displays text on screen." 
[
	message(string) : "Message Text" : "" : "Message to display onscreen. \n\nYou can also define variables from localized 'resource/*.txt' files (e.g. #MyMessage)."

	x(float) : "X Pos (-1=center)" : "-1"  : "Horizontal position on the player's screens to draw the text. \nThe value should be between 0 and 1, where 0 is the far left of the screen and 1 is the far right. \n-1 centers the text."
	y(float) : "Y Pos (-1=center)" : "0.8" : "Vertical position on the player's screens to draw the text. \nThe value should be between 0 and 1, where 0 is the top of the screen and 1 is the bottom. \n-1 centers the text."

	sep_gtmain(string) readonly: "------------------------------------"

	effect(Choices) : "Text Effect" : 0 =
	[
		0 : "Fade In/Out"
		1 : "Credits"
		2 : "Scan Out"
	]

	color(color255) : "Text Color 1" : "100 100 100"
	color2(color255) : "Text Color 2" : "240 192 64"

	sep_gtftime(string) readonly: "------------------------------------"

	fadein(float) : "Fade in Time" : "1.5" : "The time it should take for the text to fully fade in (or character full scan)."
	fadeout(float) : "Fade Out Time" : "0.5" : "The time it should take for the text to fade out, after the hold time has expired."
	holdtime(float) : "Hold Time" : "1.2" : "The time the text should stay onscreen, after fading in, before it begins to fade out."
	fxtime(float) : "Scan Time" : "0.25" : "(Scan effect only) If the 'Text Effect' is set to Scan Out, this is the time it should take to scan out all the letters in the text."

	sep_gtadds(string) readonly: "------------------------------------"

	channel(choices) : "Text Channel" : 1 : "You can have up to four individual game_text messages onscreen at once, stored in channels. Select which channel this text should be placed in, which will overwrite any active message already in that channel." =
	[
		1 : "Channel 1"
		2 : "Channel 2"
		3 : "Channel 3" 
		4 : "Channel 4"
	]

	spawnflags(flags) =
	[
		1: "All Players" : 0
	]

	// Inputs
	input Display(void) : "Display the message text."
	input DisplayWindow(void) : "[VTMB] Displays enveloping message window."
	input CloseWindow(void) : "[VTMB] Closes enveloping message window."
]









































//*******************************************************************************************************************
//*******************************************************************************************************************
// 
// Hints & Nodes
// 
//*******************************************************************************************************************
//*******************************************************************************************************************


//===================================================================================================================
// CLASS: Node [common]
//===================================================================================================================
// VTMB-adaptation:
//  added: base(TargetnameRot) (used by all)

@BaseClass
base (
	TargetnameRot
)
= Node 
[
	sep_nodes(string) readonly: "------------------------------------"
	nodeid(integer) readonly: "Node ID"
]


//===================================================================================================================
// CLASS: HintNode [common]
//===================================================================================================================
// VTMB-adaptation:
//  removed: usunes hinntype's values
//  removed: hintactivity,nodeFOV (new)
//  removed: TargetNode,IgnoreFacing (new)
//  removed: MinimumState,MaximumState (new)
//  removed: spawnflags (new)

@BaseClass
base (
	Node
)
= HintNode 
[
	hinttype(choices) : "Hint Type" : 0 = 
	[
		  0 : "None"

		  2: "World: Window"
		 12: "World: Act Busy Hint"
		 13: "World: Visually Interesting"
		 14: "World: Visually Interesting (Don't aim at)"
		 15: "World: Inhibit Combine Mines within 15 feet"
		 16: "World: Visually Interesting (Stealth mode)"

		100: "Crouch Cover Medium"
		101: "Crouch Cover Low"

		10100: "10100: Unknown VtMB's"
		19000: "19000: Unknown VtMB's"
	]

	// Does not inherit from EnableDisable, as node itself will
	// use that.  This is enabling/disabling of the hint only
	StartHintDisabled(choices) : "Start Hint Disabled" : 0 =
	[
		0 : "No"
		1 : "Yes"
	]
	Group(string) : "Hint Group" :  : "If specified, gives the hint a specific group name. \nUseful for hint nodes that need to be logically grouped together. \nNPCs may also refuse to use hint nodes that don't match their hint group."

	// Inputs
	input EnableHint(void) : "Enable hint."
	input DisableHint(void) : "Disable hint."
]





//===================================================================================================================
// info_hint [common]
//===================================================================================================================
// VTMB-adaptation:
//  moved: base(Targetname,Angles) (already included)

@PointClass
base (
	HintNode
)
studio("models/editor/node_hint.mdl")
color(255 255 255)
= info_hint :
	"A hint that is not used for navigation. They don't go into the nodegraph, nor do they fall to the ground. Use these to provide " +
	"some spatial context for NPCs, such as 'look here if you can't find the player' or 'throw rocks at this spot'."
[
]



//===================================================================================================================
// info_node [common]
//===================================================================================================================
// VTMB-adaptation:
//  removed: spawnflags (new)

@PointClass
base (
	Node
)
studio("models/editor/ground_node.mdl")
color(232 219 8) = info_node :
	"A navigation node for ground moving NPCs. Navigation nodes are baked into the nodegraph so that NPCs can move " +
	"to them. Ground nodes fall to the ground when they spawn."
[
]




//===================================================================================================================
// info_node_climb [common]
//===================================================================================================================
// VTMB-adaptation
//  removed: base(Targetname,Angles) (already included)
//  added: hinttype

@PointClass base(HintNode) studio("models/editor/climb_node.mdl") color(153 215 103) = info_node_climb : 
	"A climb-node for AI navigation. Only usable by NPCs that can climb."
[
	hinttype(choices) : "Hint" : 10000 = [ 10000 : "Untested VTMB's (10000)" ]	
]




//===================================================================================================================
// info_node_link [common]
//===================================================================================================================
// VTMB-adaptation:
//  removed: linktype (new)
//  removed: InvertAllow (new)
//  removed: spawnflags (new)

@PointClass base(Targetname) color(220 180 0) size(-8 -8 -8, 8 8 8) line(255 255 255, nodeid, StartNode, nodeid, EndNode) = info_node_link :
	"A dynamic connection between two navigation nodes. You specify the node IDs of the start and end nodes, and then you can use entity I/O " +
	"to turn on and off the connection. This could be used to create or destroy a connection in the nodegraph because of some event in your map " +
	"(a bridge being created/destroyed, etc)."
[
    StartNode(integer) : "Start node ID" : : "The node ID of one end of the node connection."
    EndNode(integer) : "End node ID" : : "The node ID of one end of the node connection."
	initialstate(choices) : "Initial State" : 1 =
	[
		0 : "Off"
		1 : "On"
	]
	AllowUse(string) : "Allow Pass When Off" : : "Entity or class to allow passage even when node is off"

	// Inputs
	input TurnOn(void) : "Turn the link on."
	input TurnOff(void) : "Turn the link off."
]










































//*******************************************************************************************************************
//*******************************************************************************************************************
// 
// INFO Entities
// 
//*******************************************************************************************************************
//*******************************************************************************************************************


//===================================================================================================================
// info_landmark [common]
//===================================================================================================================
// VTMB-adaptation:
//  added: base(Parentname,Angles)
//  added: spawnflags
//  added: new io's

@PointClass
base (
	TargetnameRot,
	Parentname
)
line (
	255 255 255,
	targetname,
	parentname
)
iconsprite("editor/info_landmark")
= info_landmark :
	"An entity that acts as a landmark for transitions to another level. \nThere should be a corresponding info_landmark entity in the next map. \nEntities will be transitioned to the next level relative to the info_landmark entities."
[
	spawnflags(flags) =
	[
		1 : "Flag 1 (unknown yet)" : 0
		2 : "Flag 2 (unknown yet)" : 0
	]

	// outputs
	output OnSpawnNoCopCars(void) : "Fired when no cop cars spawns."
	output OnSpawnOneCopCar(void) : "Wired when one cop car spawns."
	output OnSpawnTwoCopCars(void) : "Wired when two cop cars spawns."
	output OnDelaySpawnOneCopCar(void) : "Wired when spawning one cop car delays [-?]."
	output OnDelaySpawnTwoCopCars(void) : "Wired when spawning two cop cars delays [-?]."
	output OnCopsInPursuit(void) : "Fired when cops are in pursuit state."
	output OnHeightenedAlert(void) : "Fired when player have heightened alert level."
	output OnEnterMapHere(void) : "Wired when player enters map in this place."
]




//===================================================================================================================
// info_player_start [common]
//===================================================================================================================
// VTMB-adaptation:
//  removed: PlayerClass (unneeded)

@PointClass
base (
	p_Angles
)
color(0 255 0)
studio("models/editor/playerstart.mdl")
= info_player_start :
	"This entity indicates the position and facing direction at which the player will spawn. Any number of "+
	"info_player_start entities may be placed in a map for when working in cordoned-off portions of the map. "+
	"When multiple info_player_start entities are present in a map, set the 'Master' spawnflag on one of them "+
	"to indicate which one should be used when running the entire map."
[
	spawnflags(flags) =
	[
		1: "Master (Has priority if multiple info_player_starts exist)" : 0
	]
]




//===================================================================================================================
// info_target [common]
//===================================================================================================================
// VTMB-adaptation:
//  removed: spawnflags,angles (unsup)

@PointClass
base (
	Targetname,
	Parentname
)
line (
	255 255 255,
	targetname,
	parentname
)
iconsprite("editor/info_target.vmt")
= info_target :
	"An entity that does nothing. Very useful as a positioning entity for other entities to refer to (i.e. the endpoint of an env_beam)"
[
]




//===================================================================================================================
// info_lighting [common]
//===================================================================================================================
// VTMB-adaptation:
//  changed: targetname = "sprp_lighting_0"

@PointClass
iconsprite("editor/info_lighting.vmt")
= info_lighting :
	"An entity that can be used to change the lighting origin of a prop_static. \nSet the prop_static's Lighting Origin to point at this entity to "+
	"make the prop_static light as if it was at the info_lighting's origin. \nGood for prop_static entities that are embedded in world geometry (like rocks/windows/etc)."
[
	targetname(target_source) : "Name" : "sprp_lighting_0" : "The name that static props refer to this entity using its 'Lighting Origin' property."
]



//===================================================================================================================
// info_teleport_destination [common]
//===================================================================================================================
// VTMB-adaptation:
//  added: desc.note

@PointClass
base (
	TargetnameRot,
	Parentname
)
line (
	255 255 255,
	targetname,
	parentname
)
color(0 255 0)
studio("models/editor/playerstart.mdl")
= info_teleport_destination :
	"An entity that does nothing itself, but can be used to specify the destination for a trigger_teleport entity. An info_target can be used instead. \n\n"+
	"[VTMB] Note: Despite its name, teleportation doesn't require a special node. Any named Entity will do. This class is mostly used to clarify the nodes purpose to an observant reader."
[
]




//===================================================================================================================
// point_teleport [common]
//===================================================================================================================
// VTMB-adaptation:
//  added: output (OnEnterMapHere)
//  fixed: display icon

@PointClass
base (
	TargetnameRot
)
iconsprite("editor/info_target.vmt")
= point_teleport :
	"An entity that teleports a target entity to this position and angles. \n"+
	"If 'Teleport Home' spawn flag is set, teleports the target entity to its spawn position instead. \n"+
	"If object is physically simulated, simulation is turned off when teleported."
[
	sep_ptmain(string) readonly: "------------------------------------"
	target(target_destination) : "Entity To Teleport" : "!player" : "Name of the entity that will be teleported."

	spawnflags(flags) =
	[
		1 : "Teleport Home" : 0
	]

	// connections
	input Teleport(void) : "Teleport the target entity."
	output OnEnterMapHere(void) : "Fired when player enters map in place of this entity [not tested]."
]




//===================================================================================================================
// infodecal [common]
//===================================================================================================================
// VTMB-adaptation:
//  removed: base(Angles)
//  removed: Targetname,Activate (unsup)
//  removed: LowPriority (new)


@PointClass
decal()
studio("models/editor/axis_helper_thick.mdl")
= infodecal :
	"An entity that places a decal on the world. If the decal has no target name, it will immediately apply itself when the level is loaded. "+
	"If it has a name specified, it won't apply until it receives the 'Activate' input."
[
	texture(decal) : "Decal Texture"
]








































//*******************************************************************************************************************
//*******************************************************************************************************************
// 
// LIGHTS
// 
//*******************************************************************************************************************
//*******************************************************************************************************************


//===================================================================================================================
// CLASS: Light [common]
//===================================================================================================================
// VTMB-adaptation:
//  removed: _lightHDR,_lightscaleHDR (new)
//  removed: _hardfalloff (new)
//  added: fade_time
//  added: _distance_smooth
//  renamed: _distance

@BaseClass
color(180 10 180)
= Light
[
	_light(color255) : "Brightness" : "255 255 255 200" : "Set the light color and brightness. \nFirst three values defines RGB color tint, fourth is light intensity (roughly equivalent to Watts)."

	sep_litstyles(string) readonly: "------------------------------------"

	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" : "" : "Set a custom pattern of light brightness for this light. Pattern format is a string of characters, where 'a' is total darkness, 'z' fully bright. i.e. 'aaggnnttzz' would be a steppy fade in from dark to light."
	fade_time(float) : "Pattern Fade Time" : "0.05" : "[VTMB] The time during which the light fades to given pattern when 'FadeToPattern' input sent."

	sep_litattn(string) readonly: "------------------------------------"

	_constant_attn(string)	: "Constant" : "0" : "Constant/Linear/Quadratic: \nThese three values determine how the intensity of the emitted light falls off over distance."
	_linear_attn(string)	: "Linear" : "0" : "Constant/Linear/Quadratic: \nThese three values determine how the intensity of the emitted light falls off over distance."
	_quadratic_attn(string)	: "Quadratic" : "1" : "Constant/Linear/Quadratic: \nThese three values determine how the intensity of the emitted light falls off over distance."
	_distance(choices) : "Cut-Off Distance" : 0 : "This is the distance that light is allowed to cast, in inches. \n0 means maximum (natural falloff), other values will cut light brightness outside specified radius if it's cast farther. \nUse 'Cutoff smoothing factor' to control falloff smoothness." =
	[
		0 : "None"
		16 : 16
		32 : 32
		48 : 48
		64 : 64
		80 : 80
		96 : 96
		128 : 128
		160 : 160
		192 : 192
		224 : 224
		256 : 256
		320 : 320
		400 : 400
		512 : 512
		768 : 768
		1024 : 1024
	]
	_distance_smooth(choices) : "Cut-Off Smoothing Factor" :  : "Defines smoothing factor of light falloff radius given by 'Cutoff Distance'. \nValue '0' gives no smoothing (sharp unrealistic falloff, Troika's default), '0.5' - medium smoothing, and '1.0' disables falloff at all (radius will be ignored)." =
	[
		""     : "0.0 (No smoothing)"
		"0.1"  : "0.1"
		"0.2"  : "0.2"
		"0.25" : "0.25 (Slight smoothing)"
		"0.3"  : "0.3"
		"0.4"  : "0.4"
		"0.5"  : "0.5 (Medium smoothing)"
		"0.6"  : "0.6"
		"0.7"  : "0.7"
		"0.75" : "0.75 (Strong smoothing)"
		"0.8"  : "0.8"
		"0.9"  : "0.9"
		"1.0"  : "1.0 (Disable cut-off)"
	]
	_fifty_percent_distance(string) : "50-percent falloff distance" : "0": "Distance at which brightness should fall off to 50%. \nIf set, overrides Linear, Constant, Quadratic and Maximum Distance paramaters."
	_zero_percent_distance(string) : "0-percent falloff distance" : "0": "Distance at which brightness should fall off to negligible (1/256)%. \nMust set '50-percent falloff distance' to use."

	spawnflags(Flags) =
	[
		1 : "Initially dark" : 0
		4 : "Flag 4 (unknown yet)" : 0
	]

	// Inputs
	input TurnOn(void) : "Turn the light on."
	input TurnOff(void) : "The the light off."
	input Toggle(void) : "Toggle the light's current state."
	input SetPattern(string) : "Set a custom pattern of light brightness for this light. Pattern format is a string of characters, where 'a' is total darkness, 'z' fully bright. i.e. 'aaggnnttzz' would be a steppy fade in from dark to light."
	input FadeToPattern(string) : "Fades from first value in old pattern, to first value in the new given pattern. Pattern format is a string of characters, where 'a' is total darkness, 'z' fully bright. i.e. 'aaggnnttzz' would be a steppy fade in from dark to light."
]




//===================================================================================================================
// light [common]
//===================================================================================================================
// VTMB-adaptation:
//  used modified class
//  changed descriptions
//  removed: target

@PointClass
base (
	Targetname,
	Light
)
iconsprite("editor/light.vmt")
light()
sphere(_distance)
sphere(_fifty_percent_distance)
sphere(_zero_percent_distance)
= light :
	"An invisible omnidirectional light source."
[
]




//===================================================================================================================
// light_spot [common]
//===================================================================================================================
// VTMB-adaptation:
//  used modified class
//  changed descriptions
//  resorted elements

@PointClass
base (
	TargetnameRot,
	Light
)
lightprop("models/editor/spot.mdl")
lightcone()
sphere(_distance)
sphere(_fifty_percent_distance)
sphere(_zero_percent_distance)
= light_spot :
	"An invisible and directional spotlight."
[
	sep_litspot(string) readonly: "------------------------------------"

	_inner_cone(integer) : "Inner (bright) angle" : 30 : "Inner cone that focused main light. \nAllowed values: 0-90 (degrees)."
	_cone(integer) : "Outer (fading) angle" : 45 : "Outer cone that contains diffused light. \nAllowed values: 0-90 (degrees)."
	pitch(integer) : "Pitch (Tilt)" : -90 : "The downward pitch of the spotlight (degrees). \n0 is horizontal, -90 is straight down."
	_exponent(integer) : "Focus" : 1 : "Defines focusing of inner cone. \nAllowed values: 0-100. \nThe larger values gives more hard falloff."

	sep_litpoint(string) readonly: "------------------------------------"
	target(target_destination) : "Entity to point at" : : "The name of an entity in the map that the spotlight will point at. This will override the spotlight's angles."
]




//===================================================================================================================
// light_dynamic [common]
//===================================================================================================================
// VTMB-adaptation:
//  changed descriptions

@PointClass
base (
	TargetnameRot,
	Parentname
)
line (
	255 255 255,
	targetname,
	parentname
)
iconsprite("editor/light.vmt")
sphere(distance)
sphere(spotlight_radius)
lightcone()
size(-4 -4 -4, 4 4 4)
= light_dynamic :
	"An invisible lightsource that changes in some way over time." 
[
	sep_ltdmain(string) readonly: "------------------------------------"
	_light(color255) : "Light color" : "255 255 255"
	brightness(integer) : "Light brightness" : 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"
	]
	distance(choices) : "Maximum distance" : 128 : "This is the distance that light is allowed to cast, in inches." =
	[
		16 : 16
		32 : 32
		48 : 48
		64 : 64
		80 : 80
		96 : 96
		128 : 128
		160 : 160
		192 : 192
		224 : 224
		256 : 256
		320 : 320
		400 : 400
		512 : 512
		768 : 768
		1024 : 1024
	]

	sep_ltdspot(string) readonly: "------------------------------------"
	_inner_cone(integer) : "Inner (bright) angle" : 30 : "Inner cone that focused main light. \nAllowed values: 0-90 (degrees)."
	_cone(integer) : "Outer (fading) angle" : 45 : "Outer cone that contains diffused light. \nAllowed values: 0-90 (degrees)."
	pitch(integer) : "Pitch (Tilt)" : -90 : "The downward pitch of the spotlight (degrees). \n0 is horizontal, -90 is straight down."
	spotlight_radius(choices) : "Spotlight end radius" : 128 : "This is the radius of the light, in inches, at the object that it is hitting. \nLarger radiuses give more far and bright spots. \nAffects the world lighting only." =
	[
		16 : 16
		32 : 32
		48 : 48
		64 : 64
		80 : 80
		96 : 96
		128 : 128
		160 : 160
		192 : 192
		224 : 224
		256 : 256
		320 : 320
		400 : 400
		512 : 512
		768 : 768
		1024 : 1024
	]

	sep_ltdadds(string) readonly: "------------------------------------"
	target(target_destination) : "Entity to point at" : : "The name of an entity in the map that the dynamic light will point at."

	spawnflags(Flags) = 
	[ 
		1 : "Do not light world" : 0 
		2 : "Do not light models" : 0
		4 : "Add Displacement Alpha" : 0
		8 : "Subtract Displacement Alpha" : 0
	]

	// Inputs
	input Color(color255) : "Set the light's render color (R G B)."
	input brightness(integer) : "Set the light brightness."
	input distance(float) : "Set the maximum light distance."
	input _inner_cone(integer) : "Set the inner (bright) angle."
	input _cone(integer) : "Set the outer (fading) angle."
	input spotlight_radius(float) : "Set the radius of the spotlight at the end point."
	input style(integer) : "Change the lightstyle (see Appearance field for possible values)."
	input TurnOn(void) : "Turn the light off."
	input TurnOff(void) : "Turn the light on."
	input Toggle(void) : "Toggle the light on/off."
]




//===================================================================================================================
// light_environment [common]
//===================================================================================================================
// VTMB-adaptation:
//  removed: _*HDR values (unsup)
//  removed: SunSpreadAngle (new)
//  fixed: pitch (duplicated)
//  added: lightcone() to view
//  renamed: Pitch -> Sun Angle

@PointClass
base(
	p_Angles
)
iconsprite("editor/light_env.vmt")
lightcone(60) = light_environment :
	"Sets the color and angle of the light from the sun and sky."
[
	_light(color255) : "Brightness" : "100 112 128 40"
	_ambient(color255) : "Ambient" : "32 56 100 20"
	pitch(integer) : "Sun Angle" : -90 : "The downward pitch of the light from the sun (or from other most bright area of the sky). \n0 is horizontal, -90 is straight down."
]








































//*******************************************************************************************************************
//*******************************************************************************************************************
// 
// LOGICAL Entities
// 
//*******************************************************************************************************************
//*******************************************************************************************************************


//===================================================================================================================
// logic_auto [common]
//===================================================================================================================
// VTMB-adaptation:
//  removed: OnBackgroundMap (new)
//  removed: OnMultiNewMap,OnMultiNewRound (new)
//  removed: OnMapSpawn,OnNewGame,OnLoadGame,OnMapTransition (unsup)
//  removed: globalstate (unused)
//  marked as unsupported: Outputs
//  added: targetname
//  added: StartHidden
//  added: spawnflags(2)

@PointClass
base (
	Targetname
)
iconsprite("editor/logic_auto.vmt")
= logic_auto :
	"Fires outputs when a map spawns. " +
	"If 'Remove on fire' flag is set the logic_auto is deleted after firing. " +
	"It can be set to check a global state before firing. This allows you to only fire events based on "+
	"what took place in a previous map."
[
	spawnflags(Flags) =
	[
		1 : "Remove on fire" : 1
		2 : "Flag 2 (unknown yet)" : 0
	]
	// outputs
	output OnMapLoad(void) : "[VTMB] Fired when the map loaded."
]



//===================================================================================================================
// logic_case [common]
//===================================================================================================================
// not changed.

@PointClass
base (
	Targetname
)
iconsprite("editor/logic_case.vmt")
= logic_case :
	"Compares an input to up to 16 preset values. If the input value is the same as " +
	"any of the preset values, an output corresponding to that value is fired.\n\n" +
	"For example: if Case01 is set to 2 and Case02 is set to 5, and the input value is 5, " +
	"the OnCase02 output will be fired.\n\n" +
	"This entity can also be used to select from a number of random targets via the " +
	"PickRandom input. One of the OnCase outputs that is connected to another entity will " +
	"be picked at random and fired."
[
	sep_casem(string) readonly: "------------------------------------"

	Case01(string) : "Case 01"
	Case02(string) : "Case 02"
	Case03(string) : "Case 03"
	Case04(string) : "Case 04"
	Case05(string) : "Case 05"
	Case06(string) : "Case 06"
	Case07(string) : "Case 07"
	Case08(string) : "Case 08"
	Case09(string) : "Case 09"
	Case10(string) : "Case 10"
	Case11(string) : "Case 11"
	Case12(string) : "Case 12"
	Case13(string) : "Case 13"
	Case14(string) : "Case 14"
	Case15(string) : "Case 15"
	Case16(string) : "Case 16"

	// Inputs
	input InValue(string) : "Input value to compare to the case values"
	input PickRandom(void) : "Fires a random OnCase output with at least one connection"
	
	// Outputs
	output OnCase01(void) : "Fires when the input value equals the Case01 value"
	output OnCase02(void) : "Fires when the input value equals the Case02 value"
	output OnCase03(void) : "Fires when the input value equals the Case03 value"
	output OnCase04(void) : "Fires when the input value equals the Case04 value"
	output OnCase05(void) : "Fires when the input value equals the Case05 value"
	output OnCase06(void) : "Fires when the input value equals the Case06 value"
	output OnCase07(void) : "Fires when the input value equals the Case07 value"
	output OnCase08(void) : "Fires when the input value equals the Case08 value"
	output OnCase09(void) : "Fires when the input value equals the Case09 value"
	output OnCase10(void) : "Fires when the input value equals the Case10 value"
	output OnCase11(void) : "Fires when the input value equals the Case11 value"
	output OnCase12(void) : "Fires when the input value equals the Case12 value"
	output OnCase13(void) : "Fires when the input value equals the Case13 value"
	output OnCase14(void) : "Fires when the input value equals the Case14 value"
	output OnCase15(void) : "Fires when the input value equals the Case15 value"
	output OnCase16(void) : "Fires when the input value equals the Case16 value"
	output OnDefault(void) : "Fires when the input value does not equal any of the Case values"
]



//===================================================================================================================
// logic_choreographed_scene [common, HL2-based]
//===================================================================================================================
// VTMB-adaptation:
//  added: vtmb-notes
//  removed: target > 4 (new)
//  removed: OnTrigger > 4 (new)
//  removed: busyactor,onplayerdeath (new)
//  removed: some inputs (new)
//  added: Angles,BaseAnim,MaleAnim,FemaleAnim
//  added: override_speech_target
//  added: position_start,position_end
//  added: force_lod,force_lod_2
//  added: hide_ents,full_sound

@PointClass
base (
	TargetnameRot
)
color(0 0 255)
iconsprite("editor/choreo_scene.vmt")
= logic_choreographed_scene :
	"Manages a choreographed scene of one or more actors.\n\n"+
	"[VTMB] Notes:\n\n"+
    "Some MDL files contain skeletal animation info for more than 1 model."+
    "logic_choreographed_scene allows you to identify default models for use by the animation.\n\n"+
    "The 'SceneFile' contains references to named Entities and Duration information for the animation (is it looping, 1 shot, how long should it play, etc...).\n"+
	"Note that this does NOT restrict the model.\n\n"+
    "You can create the model at runtime to be any compatible model you wish ( VTMB does this in the intro ), so long as you name it accordingly.\n\n"+
    "'BaseAnim' points to the MDL file containing the multi-skeletal animation."

[
	sep_scnmain(string) readonly: "------------------------------------"

	// Keys
	SceneFile(vscene) : "Scene file"

	// Links
	target1(target_destination) : "Target 1"
	target2(target_destination) : "Target 2"
	target3(target_destination) : "Target 3"
	target4(target_destination) : "Target 4"

	sep_scnanim(string) readonly: "------------------------------------"

	BaseAnim(studio) : "Base Animation" : : "[VTMB] Points to the MDL file containing the multi-skeletal animation."
	MaleAnim(studio) : "Male Animation" : : "[VTMB] Points to the MDL file containing male multi-skeletal animation."
	FemaleAnim(studio) : "Female Animation" : : "[VTMB] Points to the MDL file containing female multi-skeletal animation."

	sep_scnadd1(string) readonly: "------------------------------------"

	override_speech_target(target_destination) : "Override Speech Target" : : "[VTMB] Overrides speech sound source with this target entity."

	position_start(integer) : "Start Position" : 0 : "[VTMB] Unknown yet..."
	position_end(integer) : "End Position" : 0 : "[VTMB] Unknown yet..."

	sep_scnadd2(string) readonly: "------------------------------------"

	full_sound(choices) : "Full Sound" : 1 : "[VTMB] Unknown yet..." = [ 0 : "No" 1 : "Yes" ]
	hide_ents(choices) : "Hide Entities" : 0 : "[VTMB] Unknown yet..." = [ 0 : "No" 1 : "Yes" ]
	force_lod(choices) : "Force LOD" : 0 : "[VTMB] Unknown yet..." = [ 0 : "No" 1 : "Yes" ]
	force_lod_2(choices) : "Force LOD 2" : 0 : "[VTMB] Unknown yet..." = [ 0 : "No" 1 : "Yes" ]

	// Inputs
	input Start(void) : "Starts playback of the scene file"
	input Pause(void) : "Pauses playback of the scene file"
	input Resume(void) : "Resumes playback of the scene if it has been paused"
	input Cancel(void) : "Cancels playback of the scene"

	// Outputs
	output OnStart(void) : "The scene has started"
	output OnCompletion(void) : "The scene has completed"
	output OnCanceled(void) : "The scene has been canceled"
	output OnTrigger1(void) : "Scene trigger 1"
	output OnTrigger2(void) : "Scene trigger 2"
	output OnTrigger3(void) : "Scene trigger 3"
	output OnTrigger4(void) : "Scene trigger 4"
]




//===================================================================================================================
// logic_relay [common]
//===================================================================================================================
// VTMB-adaptation:
//  added: new spawnflags
//  added: new outputs
//  removed OnSpawn,CancelPending (unsup)

@PointClass
base (
	Targetname,
	EnableDisable
)
iconsprite("editor/logic_relay.vmt")
= logic_relay :
	"A message forwarder. Fires an OnTrigger output when triggered, and " +
	"can be disabled to prevent forwarding outputs.\n\n" +
	"Useful as an intermediary between one entity and another for turning " +
	"on or off an I/O connection, or as a container for holding a set of " +
	"outputs that can be triggered from multiple places."
[
	spawnflags(flags) =
	[
		1: "Only trigger once" : 0
		2: "Allow fast retrigger" : 0
	 // vtmb
		8: "Flag 8 (unknown yet)" : 0
		16: "Flag 16 (unknown yet)" : 0
		32: "Flag 32 (unknown yet)" : 0
		1024: "Flag 1024 (unknown yet)" : 0
	]

	// Inputs
	input Trigger(void) : "Trigger the relay, causing its OnTrigger output to fire if it is enabled."
	input Toggle(void) : "Toggle the relay between enabled and disabled."

	// Outputs
	output OnTrigger(void) : "Fired when the relay is triggered. If the relay is set to only trigger once, it will delete itself after firing this output."
	//output OnDialogEnd(void) : "[VTMB] Fired when dialog ends [not tested]."
	//output OnMapLoad(void) : "[VTMB] Fired when the map is loaded for any reason."
]





//===================================================================================================================
// logic_timer [common]
//===================================================================================================================
// VTMB-adaptation:
//  added: new spawnflag
//  removed: AddToTimer (new)
//  removed: SubtractFromTimer (new)

@PointClass
base (
	Targetname,
	EnableDisable
)
iconsprite("editor/logic_timer.vmt")
= logic_timer :
	"An entity that fires a timer event at regular, or random, intervals. It can also be set to oscillate between" + 
	"a high and low end, in which case it will fire alternating high/low outputs each time it fires."
[
	sep_ltmain(string) readonly: "------------------------------------"

	UseRandomTime(choices) : "Use Random Time" : 0 =
	[
		0 : "No"
		1 : "Yes"
	]
	LowerRandomBound(float) : "Minimum Random Interval" :  : "If 'Use Random Time' is set, this is the minimum time between timer fires. The time will be a random number between this and the 'Maximum Random Interval'."
	UpperRandomBound(float) : "Maximum Random Interval" :  : "If 'Use Random Time' is set, this is the maximum time between timer fires. The time will be a random number between the 'Minimum Random Interval' and this."
	RefireTime(float) : "Refire Interval" :  : "If 'Use Random Time' isn't set, this is the time between timer fires, in seconds."

	spawnflags(flags) =
	[
		1 : "Oscillator (alternates between OnTimerHigh and OnTimerLow outputs)" : 0
		2 : "Flag 2 (unknown yet)" : 0
	]

	// Inputs
	input RefireTime(integer) : "Set a new Refire Interval."
	input ResetTimer(void) : "Reset the timer. It will fire after the Refire Interval expires."
	input RefireTimer(void) : "[VtMB] Reset the timer. It will fire after the Refire Interval expires."
	input FireTimer(void) : "Force the timer to fire immediately."
	input Enable(void) : "Enable the timer."
	input Disable(void) : "Disable the timer."
	input Toggle(void) : "Toggle the timer on/off."
	input LowerRandomBound(float) : "Set a new Minimum Random Interval."
	input UpperRandomBound(float) : "Set a new Maximum Random Interval."

	// Outputs
	output OnTimer(void) : "Fired when the timer expires."
	output OnTimerHigh(void) : "Fired every other time for an oscillating timer."
	output OnTimerLow(void) : "Fired every other time for an oscillating timer."
]





//===================================================================================================================
// math_counter [common]
//===================================================================================================================
// VTMB-adaptation:
//  removed: some io's (new)

@PointClass
base (
	Targetname,
	EnableDisable
)
iconsprite("editor/math_counter.vmt")
= math_counter :
	"Holds a numeric value and performs arithmetic operations upon it. If either the minimum or maximum " +
	"legal value is nonzero, OutValue will be clamped to the legal range, and the OnHitMin/OnHitMax " +
	"outputs will be fired at the appropriate times. If both min and max are set to zero, no clamping is " +
	"performed and only the OutValue output will be fired."
[
	sep_mcmain(string) readonly: "------------------------------------"

	// Keys
	startvalue(integer) : "Initial Value" : 0 : "Starting value for the counter."
	min(integer) : "Minimum Legal Value" : 0 : "Minimum legal value for the counter. If min=0 and max=0, no clamping is performed."
	max(integer) : "Maximum Legal Value" : 0 : "Maximum legal value for the counter. If min=0 and max=0, no clamping is performed."

	// Inputs
	input Add(integer) : "Add an amount to the counter and fire the OutValue output with the result."
	input Divide(integer): "Divide the counter by an amount and fire the OutValue output with the result."
	input Multiply(integer): "Multiply the counter by an amount and fire the OutValue output with the result."
	input SetValue(integer): "Set the counter to a new value and fire the OutValue output with the result."
	input Subtract(integer): "Subtract an amount from the counter and fire the OutValue output with the result."

	// Outputs
	output OutValue(integer) : "Fired when the counter value changes."
	output OnHitMin(void) : "Fired when the counter value meets or goes below the min value. The counter must go back above the min value before the output will fire again."
	output OnHitMax(void) : "Fired when the counter value meets or exceeds the max value. The counter must go below the max value before the output will fire again."
]









































//*******************************************************************************************************************
//*******************************************************************************************************************
//
// Moving, Keyframes and Ropes
//
//*******************************************************************************************************************
//*******************************************************************************************************************


//===================================================================================================================
// CLASS: RopeKeyFrame [common]
//===================================================================================================================
// VTMB-adaptation:
//  removed: DxLevelChoice (unused)
//  removed: NoWind (new)
//  added: MoveTime,RopeShader,TimeControl (VtMB's)
//  added: NextKey,MoveSpeed (from Mover)

@BaseClass
base (
	Targetname,
	Parentname
)
= RopeKeyFrame
[
	sep_rkfmain(string) readonly: "------------------------------------"

	// visual
	Type(choices) : "Rope Type" : 0 =
	[
		0  : "Rope"
		1  : "Semi-rigid"
		2  : "Rigid"
	]
	RopeMaterial(material) : "Rope Material" : "cable/cable" : "The material to use when rendering the rope." //=
//	[
//	// MaterialList:
//		"cable/barbedwire" : "cable/barbedwire"
//		"cable/cable" : "cable/cable"
//		"cable/cautiontape" : "cable/cautiontape"
//		"cable/chain" : "cable/chain"
//		"cable/chainb" : "cable/chainb"
//		"cable/christmaslight_green" : "cable/christmaslight_green"
//		"cable/christmaslight_red" : "cable/christmaslight_red"
//		"cable/christmaslight_yellow" :"cable/christmaslight_yellow"
//		"cable/metalcable" : "cable/metalcable"
//		"cable/rope" : "cable/rope"
//	]
	Width(string) : "Rope Width (1-64)" : "2" : "Width of the rope, in units."
	TextureScale(string) : "Texture Scale" : "1" : "This changes the texture resolution. \nThe default resolution is 4 pixels per inch. Larger values stretch the texture and smaller values scrunch it up."

	sep_rkfpref(string) readonly: "------------------------------------"

	Slack(integer) : "Slack" : 25 : "How much extra length the rope has (by default it has the length between its two endpoints in the editor)."
	Subdiv(integer) : "Subdivision" : 2 : "Number of subdivisions between each rope segment. Maximum value is 8. Higher values make smoother ropes, but are slower to render."
	Barbed(choices) : "Barbed" : 0 : "Test effect that makes the rope look sharper and more barbed." = [ 0: "No" 1: "Yes" ] 

	sep_rkfadd1(string) readonly: "------------------------------------"

	Dangling(choices) : "Start Dangling" : 0 : "When set to Yes, the rope starts out detached from its target endpoint." = [ 0: "No" 1: "Yes" ] 
	Collide(choices) : "Collide with world" : 0 = [ 0: "No" 1: "Yes" ]
	Breakable(choices) : "Breakable" : 0 : "When set to yes, the rope can be detached from either endpoint when shot." = [ 0: "No" 1: "Yes" ] 
	Tension(integer) : "Rope Tension" : 20 : "[VTMB] Rope's tension when breakable [not tested]."

	sep_rkfadd2(string) readonly: "------------------------------------"

	NextKey(target_destination) : "Next KeyFrame" : : "Name of the next keyframe along this keyframe path."
	MoveSpeed(integer) : "Move Speed (units/s)" : 64
	MoveTime(float) : "Move Time (secs)" : "1" : "[VTMB] Rope movie time [not tested]."
	TimeControl(choices) : "Time Modifier" : 0 : "[VTMB] Unknown yet..." =
	[
		0 : "Linear"
		1 : "Accel"
		2 : "Deaccel"
	]

	spawnflags(Flags) = 
	[
		1 :  "Auto Resize" : 0
	]

	// Inputs
	input SetScrollSpeed(float) : "Set the speed at which the texture scrolls."
	input SetForce(string) : "Apply a force instantaneously to the rope. The parameter should be a vector containing the force to be applied (X Y Z)."
	input Break(void) : "Break the rope, if it's marked to do so."
]




//===================================================================================================================
// keyframe_rope [common]
//===================================================================================================================

@KeyFrameClass
base (
	RopeKeyFrame
)
studio("models/editor/axis_helper_thick.mdl")
keyframe()
= keyframe_rope :
	"A node entity that marks a point in a rope. The first node in the rope should be a move_rope, followed by 1 or more keyframe_ropes."
[
	RopeShader(choices) : "Rope Shader" : 0 : "[VTMB] Shader that will be used for entity processing/rendering." =
	[
		0 : "Shader 0 (default)"
		2 : "Shader 2 (unknown yet)"
		5 : "Shader 5 (unknown yet)"
	]
]




//===================================================================================================================
// move_rope [common]
//===================================================================================================================

@MoveClass
base (
	RopeKeyFrame
)
studio("models/editor/axis_helper.mdl")
animator()
= move_rope :
	"The first node in set of nodes that are used to place ropes in the world. It should connect to 1 or more keyframe_rope entities."
[
	PositionInterpolator(choices) : "Position Interpolator" : 2 : "Curve Type. \nCurrently only type 2 (Rope) is fully supported." =
	[
		0 : "Linear"
		1 : "Catmull-Rom Spline"
		2 : "Rope"
	]
	RopeShader(choices) : "Rope Shader" : 0 : "[VTMB] Shader that will be used for entity processing/rendering." =
	[
		0 : "Shader 0 (default)"
		2 : "Shader 2 (unknown yet)"
		5 : "Shader 5 (unknown yet)"
	]
]








































//*******************************************************************************************************************
//*******************************************************************************************************************
// 
// PHYSICS POINT Entities
// 
//*******************************************************************************************************************
//*******************************************************************************************************************


//===================================================================================================================
// CLASS: TwoObjectPhysics [common]
//===================================================================================================================
// VTMB-adaptation:
//  removed: teleportfollowdistance (new)
//  added: output OnConstraintBroken

@BaseClass
base (
	Targetname
)
= TwoObjectPhysics
[
	sep_tppmain(string) readonly: "------------------------------------"

	attach1(target_destination) : "Entity 1" : "" : "Name of first attached entity."
	attach2(target_destination) : "Entity 2" : "" : "Name of second attached entity."
	constraintsystem(target_destination) : "Constraint System Manager" : "" : "The name of a phys_constraintsystem that this constraint should be a part of. All constraints on a set of entities should be placed in the same system, or they will fight each other during simulation. \nNot used in VtMB [testing needed]."

	sep_tppbrk(string) readonly: "------------------------------------"

	forcelimit(float) : "Force Limit to Break (lbs)" : 0 : "The amount of force an impact must apply to the constraint to break it. A way of calculating this is to set it to the mass of an object that would break this constraint if it were resting on the constrainted objects."
	torquelimit(float) : "Torque Limit to Break (lbs*dist)" : 0 : "The amount of torque required to break the constraint. A way of calculating this is to multiply any reference mass by the resting distance (from the center of mass of the object) needed to break the constraint."
	breaksound(sound) : "Sound to Play on Break" :  : "A sound played when the constraint is broken. \nNot used in VtMB [testing needed]."
	
	spawnflags(flags) =
	[
		1: "No Collision until break" : 0
	 // 2: is defined independently by subclasses, do not reuse
		4: "Start inactive" : 0
		8: "Change mass to keep stable attachment to world" : 0
		16: "Do not connect entities until turned on" : 0
	]

	// Inputs
	input Break(void) : "Force the constraint to break."
	input TurnOn(void) : "Enable the constraint. \nDo this when the objects don't exist when the constraint spawns - or when you have deactivated the constraint. \nBroken constraints can NOT be turned on. \nThey have been deleted."
	input TurnOff(void) : "Disable this constraint."

	// Outputs
	output OnBreak(void) : "Fired when the constraint breaks."
]



//===================================================================================================================
// CLASS: ForceController [common]
//===================================================================================================================
// not changed.
// inserted to use modified classes.

@BaseClass
base (
	Targetname
)
= ForceController
[
	sep_fcmain(string) readonly: "------------------------------------"

	attach1(target_destination) : "Attached Object" : "" : "Object to apply the force to."
	forcetime(string) : "Time of Force (0=inf)" : "0" : "Automatic shut-off after this time has passed (0 = stay on forever or until deactivated)"

	spawnflags(flags) =
	[
		// Thrust is on by default (will turn off in forcetime)
		1: "Start On" : 0
		// Apply linear force (if off, torque only)
		2: "Apply Force" : 1
		// Apply rotational force (torque - if off, linear only)
		4: "Apply Torque" : 1
		// Maintain local relationship with the attached object
		8: "Orient Locally" : 1
		// Impulse is independent of object's mass (impulse is acceleration NOT force)
		16: "Ignore Mass" : 0
	]

	input Activate(void) : "Turn the force on"
	input Deactivate(void) : "Turn the force off"
	input Scale(string) : "Set Force Scale"
]



//===================================================================================================================
// phys_ballsocket [common]
//===================================================================================================================
// not changed.
// inserted to use modified classes.

@PointClass
base (
	TwoObjectPhysics
)
line (
	255 255 255,
	attach1,
	attach2
)
iconsprite("editor/phys_ballsocket.vmt")
= phys_ballsocket :
	"A constraint that keeps the position of two objects fixed, relative to the constraint's origin. It does not affect rotation."
[
]



//===================================================================================================================
// phys_constraint [common]
//===================================================================================================================
// not changed.
// inserted to use modified classes.

@PointClass
base(
	TwoObjectPhysics
)
line (
	255 255 255,
	attach1,
	attach2
)
studio("models/editor/axis_helper.mdl")
= phys_constraint : 
	"A constraint that keeps the relative position and orientation of two objects fixed."
[
	spawnflags(flags) =
	[
		1: "No Collision until break" : 1
	]
]



//===================================================================================================================
// phys_convert [common]
//===================================================================================================================
// VTMB-adaptation:
//  removed: massoverride (new)
//  added: vtmb-note
//  added: makedebris
//  added: make_physhand_target

@PointClass
base(
	Targetname
)
line (
	255 255 255,
	targetname,
	target
)
size(-8 -8 -8, 8 8 8)
color(0 0 255)
= phys_convert :
	"Turns an arbitrary entity into a physically simulated entity. i.e. brush entities will behave like func_physbox, model entities behave like prop_physics. \n\n"+
	"Note: In VtMB game it usually uses to convert door to debris."
[
	sep_fcmain(string) readonly: "------------------------------------"

	target(target_destination) : "Entity to convert" : : "Name of the entity that will be converted to a physics object when the ConvertTarget input is fired."
	swapmodel(studio) : "Model Swap Entity" : : "Unknown yet. Not used in VTMB maps but supported [testing needed]."
	
	makedebris(choices) : "Make Debris" : 1 : "[VTMB] Makes debris when conversion end." = [ 0 : "No" 1 : "Yes" ]
	make_physhand_target(choices) : "Make Phys-hand Target" : 1 : "[VTMB] Makes debris that can be taked by physical hands." = [ 0 : "No" 1 : "Yes" ]

	spawnflags(flags) =
	[
		1: "Convert Asleep" : 0
		2: "Convert As Debris" : 0
	]

	// Inputs
	input ConvertTarget(void) : "Converts this entity's target to a physically simulated object." 
	// Outputs
	output OnConvert(void) : "Fires after the conversion has taken place."
]



//===================================================================================================================
// phys_hinge [common]
//===================================================================================================================
// VTMB-adaptation:
//  deleted: episodic properties (new)
//  deleted: SystemLoadScale (new)
//  deleted: SetAngularVelocity (new)

@PointClass
base(
	TwoObjectPhysics
)
line (
	255 255 255,
	attach1,
	attach2
)
halfgridsnap
size(-8 -8 -8, 8 8 8)
color(255 128 0)
= phys_hinge :
	"A physically simulated hinge. Use the helper to define the axis of rotation."
[
	sep_hinge(string) readonly: "------------------------------------"

	hingefriction(float) : "Hinge Friction" : 0 : "Resistance/friction in the hinge"
	hingeaxis(vecline) : "Hinge Axis" : : "World's origin to edit [not tested]."

	spawnflags(flags) =
	[
		2: "Flag 2 (unknown yet)" : 0
	]
]



//===================================================================================================================
// phys_thruster [common]
//===================================================================================================================
// not changed.

@PointClass
base (
	TargetnameRot,
	ForceController
)
= phys_thruster :
	"An entity used to apply constant acceleration to a physics object. "+
	"The force and torque is calculated using the position and direction of the thruster as an impulse. So moving those off the object's center "+
	"will cause torque as well. Torque can be removed by unchecking the 'apply torque' flag. The position of the thruster can be forced to be "+
	"at the object's center by checking to 'ignore pos' flag."
[
	force(string) : "Force" : 0 : "Force (will be integrated, units are force kg*in/s^2)"
	
	spawnflags(flags) =
	[
		// Put the thrust at the object center
		32: "Ignore Pos" : 0
	]
]








































//*******************************************************************************************************************
//*******************************************************************************************************************
// 
// PHYSICS BRUSH Entities
// 
//*******************************************************************************************************************
//*******************************************************************************************************************


//===================================================================================================================
// func_breakable [common]
//===================================================================================================================
// VTMB-adaptation:
//  removed: Shadow (included)
//  removed: _minlight,spawnobject,minhealthdmg (unused)
//  added: explosion_params
//  added: dmg_filter_name

@BaseClass
= e_func_breakable
[
	sep_bbmain(string) readonly: "------------------------------------"

	material(choices) : "Material Type" : 0 : "Set to the material type of the brush. Used to decide what sounds to make when damaged, and what gibs to produce when broken." =
	[
		0: "Glass"
		1: "Wood"
		2: "Metal"		
		3: "Flesh"
		4: "CinderBlock"
		5: "Ceiling Tile"
		6: "Computer"
		7: "Unbreakable Glass"
		8: "Rocks"
		10: "None"
	]
	health(integer) : "Object Strength" : 5 : "Number of points of damage to take before breaking. \n'0' means don't break."

	sep_bbxplo(string) readonly: "------------------------------------"

	ExplodeDamage(float) : "Explosion Damage" : 0 : "If non-zero, when this entity breaks it will create an explosion that causes the specified amount of damage. See also 'Explosion Radius'."
	ExplodeRadius(float) : "Explosion Radius" : 0 : "If non-zero, when this entity breaks it will create an explosion with a radius of the specified amount. See also 'Explosion Damage'."
	explodemagnitude(integer) : "Explosion Magnitude" : 0 : "If non-zero, when this entity breaks it will create an explosion that causes the specified amount of damage."
	explosion_params(target_destination) : "Explosion Parameters" : : "[VTMB] A link to the 'params_explosion' entity that defines common explosion parameters."

	sep_bbdmg(string) readonly: "------------------------------------"

	explosion(choices) : "Gibs Direction" : 0 : "Used to decide which direction to throw gibs when broken." =
	[
		0: "Random"
		1: "Relative to Attack"
	]
	pressuredelay(float) : "Pressure Delay" : 0 : "Delay, in seconds, after 'broken' by pressure before breaking apart (allows for sound to play before breaking apart)."
	dmg_filter_name(target_destination) : "Damage Filter" : : "[VTMB] Name of the filter entity that controls which entities can damage us [not tested]."

//	physdamagescale(float) : "Impact Damage Scale" : "1.0" : "Scales damage energy when this object is hit by a physics object. NOTE: 0 means this feature is disabled for backwards compatibility. \nSet to 1.0 for materials as strong as flesh, smaller numbers indicate stronger materials."
	collideable_gibs(choices) : "Collidable Gibs" : 0 : "[VTMB] Collide model's gibs with environment when it breaks [not tested]." = 
	[
		0 : "Mode 0 (unknown)"
		1 : "Mode 1 (unknown)"
		2 : "Mode 2 (unknown)"
	]
	
	spawnflags(flags) =
	[
		1 : "Only Break on Trigger" : 0
		2 : "Break on Touch" : 0
		4 : "Break on Pressure" : 0
		512: "Break immediately on Physics" : 0
		1024: "Don't take physics damage" : 0
		2048: "Don't allow bullet penetration": 0
		256: "Flag 256 (unknown yet)" : 1
	]

	// inputs
	input SetDamageable(integer) : "[VTMB] Set this entity as able to make damage [not tested]."
	input PhysDamageScale(float) : "Set the Physics Impact Damage Scale for this character. \nNote: 0 means this feature is disabled for backwards compatibility [not tested]."
]

@SolidClass
base (
	Targetname,
	Parentname,
	p_Origin,
	p_Global,
	e_func_breakable,
	o_VBreakable,
	RenderFields
)
line (
	255 255 255,
	targetname,
	parentname
)
sphere (
	ExplodeRadius
)
= func_breakable :
	"A brush entity that can be broken from damage, or an input." 
[
	// RF order fix
]





//===================================================================================================================
// func_breakable_surf [common]
//===================================================================================================================
// VTMB-adaptation:
//  removed: Shadow (duplicated)
//  added: new spawnflag (256)
//  added: lowerleft,lowerright
//  added: upperleft,upperright
//  added: error (unknown)
//  removed: input Shatter

@BaseClass
= e_func_breakable_surf
[
	sep_bbmain(string) readonly: "------------------------------------"

	material(choices) : "Material Type" : 0 : "Set to the material type of the brush. Used to decide what sounds to make when damaged, and what gibs to produce when broken." =
	[
		0: "Glass"
		1: "Wood"
		2: "Metal"		
		3: "Flesh"
		4: "CinderBlock"
		5: "Ceiling Tile"
		6: "Computer"
		7: "Unbreakable Glass"
		8: "Rocks"
		10: "None"
	]
	surfacetype(choices) : "Surface Type" : 0 = 
	[
		0 : "Glass"
		1 : "Tile"
	]
	health(integer) : "Object Strength" : 5 : "Number of points of damage to take before breaking. \n'0' means don't break."
	fragility(integer) : "Object Fragility" : 100 : "If the 'Surface Type' is set to Glass, this value sets how fragile the glass pieces are after the surface has been broken."

	sep_bbdmg(string) readonly: "------------------------------------"

	explodemagnitude(integer) : "Explode Magnitude" : 0 : "If non-zero, when this entity breaks it will create an explosion that causes the specified amount of damage."
	explosion(choices) : "Gibs Direction" : 0 : "Used to decide which direction to throw gibs when broken." =
	[
		0: "Random"
		1: "Relative to Attack"
	]
	pressuredelay(float) : "Pressure Delay" : 0 : "Delay, in seconds, after 'broken' by pressure before breaking apart (allows for sound to play before breaking apart)."
	dmg_filter_name(target_destination) : "Damage Filter" : : "[VTMB] Name of the filter entity that controls which entities can damage us [not tested]."

//	physdamagescale(float) : "Impact Damage Scale" : "1.0" : "Scales damage energy when this object is hit by a physics object. NOTE: 0 means this feature is disabled for backwards compatibility. \nSet to 1.0 for materials as strong as flesh, smaller numbers indicate stronger materials."
	collideable_gibs(choices) : "Collidable Gibs" : 0 : "[VTMB] Collide model's gibs with environment when it breaks [not tested]." = 
	[
		0 : "Mode 0 (unknown)"
		1 : "Mode 1 (unknown)"
		2 : "Mode 2 (unknown)"
	]

	sep_bbbnds(string) readonly: "------------------------------------"

	lowerleft(vecline) : "Lower-Left Vertex" :  : "[VTMB] World's X/Y/Z-origin. Purpose unknown."
	lowerright(vecline) : "Lower-Right Vertex" :  : "[VTMB] World's X/Y/Z-origin. Purpose unknown."
	upperleft(vecline) : "Upper-Left Vertex" :  : "[VTMB] World's X/Y/Z-origin. Purpose unknown."
	upperright(vecline) : "Upper-Right Vertex" :  : "[VTMB] World's X/Y/Z-origin. Purpose unknown."
	error(string) : "Error Level (?)" : 0 :"[VTMB] Unknown, probably not used..."

	spawnflags(Flags) = 
	[
		1 : "Physics damage decals" : 0
		2 : "Take damage from held objects" : 0
		256 : "Flag 256 (unknown yet)" : 0
	]

	// inputs
	input SetDamageable(integer) : "[VTMB] Set this entity as able to make damage [not tested]."
]

@SolidClass
base (
	Targetname,
	Parentname,
	p_Global,
	e_func_breakable_surf,
	o_VBreakable,
	RenderFields
)
line (
	255 255 255,
	targetname,
	parentname
)
quadbounds()
= func_breakable_surf :
	"A breakable surface, for partially breakable glass / tile / etc.  All faces but the desired visible one must be marked as NODRAW and that" +
	"face must be 4 sided.  The material applied to the visible face must be set up to be breakable." 
[
	// RF order fix
]





//===================================================================================================================
// func_physbox [common]
//===================================================================================================================
// VTMB-adaptation:
//  removed: Shadow (included)
//  mark as unsupported: HL2-spawnflags
//  removed: some spawnflags (new)
//  added: new spawnflags
//  removed: _minlight (unused)
//  removed: OnMotionEnabled (new)
//  removed: BreakableBrush (unused)
//  removed: overridescript (unused)
//  removed: forcetoenablemotion (new)
//  removed: notsolid (new)
//  removed: preferredcarryangles (unused)
//  removed: some physgun io's
//  removed: inputs EnableMotion,DisableMotion,ForceDrop,Sleep
//  removed: outputs OnPlayerUse,OnMotionEnabled
//  removed: hl2-spawnflags

@BaseClass
= e_func_physbox
[
	sep_pbmain(string) readonly: "------------------------------------"

	health(integer) : "Strength" : 0 : "Number of points of damage to take before breaking. \n0 means don't break."
	
	override_mass(float) : "Override Mass" : -1 : "[VTMB] Override the default object's mass value with this one. \n'-1' = don't override (use automatic)."
	physdamagescale(float) : "Impact Damage Scale" : "1.0" : "[VTMB] Scales damage energy when this object is hit by a physics object. \nNote: 0 means this feature is disabled for backwards compatibility. \nSet to 1.0 for materials as strong as flesh, smaller numbers indicate stronger materials."
	Damagetype(choices) : "Impact Damage Type" :  : "Type of damage to inflict on object damaged. \nNot used on original VtMB maps and not tested [works?]." = [ 0: "Blunt" 1: "Sharp" ]

	spawnflags(flags) =
	[
		1  : "Start Asleep" : 1
		16 : "Don't collide with the player or debris" : 0
		8  : "Flag 8 (unknown yet)" : 0
		32 : "Flag 32 (unknown yet)" : 0
	]

	// Inputs
	input Wake(void) : "Wake up this physics object, if it is sleeping."
	input PhysDamageScale(float) : "[VTMB] Set the Physics Impact Damage Scale for this character. \nNote: 0 means this feature is disabled for backwards compatibility [not tested]."

	// Outputs
	output OnDamaged(void) : "Fired when this entity is damaged."
	output OnAwakened(void) : "Fired when this entity becomes awake (collision/force is applied)."
	output OnPhysGunPickup(void) : "Fired when a player picks this object up, either with the physgun or +USE."
	output OnPhysGunDrop(void) : "Fired when a player drops this object."
]

@SolidClass
base (
	Targetname,
	p_Origin,
	Parentname,
	p_Origin,
	p_Global,
	e_func_physbox,
	o_VBreakable,
	RenderFields
)
line (
	255 255 255,
	targetname,
	parentname
)
= func_physbox :
	"A brush entity that's physically simulated."
[
	// RF order fix
]






//===================================================================================================================
// func_pushable [common, obsolete]
//===================================================================================================================

@BaseClass
= e_func_pushable
[
	sep_pushmain(string) readonly: "------------------------------------"

	mass(float) : "Object Mass" : "60" : "Set mass of this object."
	speed_damp(float) : "Speed Damping" : "10" : "Friction."
	rotate_damp(float) : "Rotate Damping" : "10" : "Rotate resistance."

	// inputs
	input SetDamageable(integer) : "Set this entity as able to make damage."
]

@SolidClass
base (
	Targetname,
	p_Origin,
	e_func_pushable,
	o_VBreakable,
	RenderFields
) = func_pushable :
	"A brush entity that can be pushed by player. Almost same as 'func_physbox' and now is obsolete."
[
	// RF order fix
]









































//*******************************************************************************************************************
//*******************************************************************************************************************
// 
// TRIGGERS
// 
//*******************************************************************************************************************
//*******************************************************************************************************************


//===================================================================================================================
// CLASS: VBaseTrigger [VTMB-specific]
//===================================================================================================================

@BaseClass
base (
	Targetname,
	EnableDisable
)
= VBaseTrigger
[
	spawnflags(flags) = 
	[
		1: "Clients" : 1
		2: "NPCs" : 0
		4: "Pushables": 0
		8: "Physics Objects" : 0
		16: "Only player ally NPCs?" : 0
	]

 	// inputs
	input Enable(void) : "Enable this trigger."
	input Disable(void) : "Disable this trigger."
	input Toggle(void) : "Toggle this trigger between enabled and disabled states."
	input ToggleFlagClient(void) : "Toggle client's ability to use this trigger."
	input ToggleFlagNPC(void) : "Toggle NPC's ability to use this trigger."
	input EnableFlagClient(void) : "Enable client's ability to use this trigger."
	input EnableFlagNPC(void) : "Enable NPC's ability to use this trigger."
	input DisableFlagClient(void) : "Disable client's ability to use this trigger."
	input DisableFlagNPC(void) : "Disable NPC's ability to use this trigger."

	// outputs
	output OnStartTouch(void) : "Fired when an entity starts touching this trigger. The touching entity must pass this trigger's filter-flags to cause this output to fire."
	output OnEndTouch(void) : "Fired when an entity stops touching this trigger. Only entities that passed this trigger's filter-flags will cause this output to fire."
]




//===================================================================================================================
// CLASS: Trigger [common]
//===================================================================================================================
// VTMB-adaptation:
//  merged with TriggerOnce
//  replaced: base(VBaseTrigger)
//  moved: spawnflags -> VBaseTrigger
//  removed: OnStartTouch/OnEndTouch,Toggle (duplicated)
//  removed: unused spawnflags (new)
//  removed: OnStartTouchAll,OnEndTouchAll (unused)

@BaseClass
base (
	VBaseTrigger,
	Parentname,
	p_Origin,
	p_Global
)
= ExtTrigger
[
	sep_trig(string) readonly: "------------------------------------"
	filtername(filterclass) : "Filter Name" : : "Filter to use to see if activator triggers me. \nSee filter_activator_name for more explanation."

	spawnflags(flags) = 
	[
		128: "Fire Once Only?" : 0
	]

	// Outputs
	output OnTrigger(void) : "Fired whenever the trigger is activated."
]




//===================================================================================================================
// trigger_autosave [common]
//===================================================================================================================
// VTMB-adaptation:
//  removed: master (obsolete)
//  removed: DangerousTimer (new)
//  removed: MinimumHitPoints (new)
//  removed: NewLevelUnit (new)

@SolidClass
base(
	Targetname
)
= trigger_autosave :
	"A trigger volume that autosaves game when the player touches it."
[
]




//===================================================================================================================
// trigger_changelevel [common]
//===================================================================================================================
// VTMB-adaptation:
//  replaced: base(Targetname,Parentname,VBaseTrigger)
//  added: Tip_Size
//  removed: ChangeLevel (unsupported)
//  removed: spawnflag (4 - new)

@SolidClass
base (
	VBaseTrigger,
	Parentname
)
line (
	255 255 255,
	targetname,
	parentname
)
= trigger_changelevel :
	"An entity that triggers a level change.\n" +
	"Place an info_landmark in both maps that marks the 'same' location in each map.\n"+
	"TIPS & TRICKS: To fire events in the next level, use the OnLevelChange output to turn on "+
	"an env_global in the current level.  Create a logic_auto in the next level that checks "+
	"for the state set by the env_global.\n\n"+
	"To control which entities go through the level transition, create one or more trigger_transitions and "+
	"give them the same name as the landmark. Any entities within the trigger_transition(s) will go to the next map."
[
	sep_trig(string) readonly: "------------------------------------"

	map(string) : "New Map Name"
	landmark(target_destination) : "Landmark Name"
	Tip_Size(choices) : "Loading Tip Size" : 0 : "[VTMB] Size of tips shown when map loads [not tested]." =
	[
		0 : "0 (Default)"
	]

	spawnflags(flags) =
	[
		2: "Disable Touch" : 0
	]

	// connections
	input ChangeNow(void) : "[VTMB] Cause the level change. Use this when triggering the level change with a button, etc."
	output OnChangeLevel(void) : "Fired when the level changes."
	output OnTrigger(void) : "Fired whenever the trigger is activated."
]




//===================================================================================================================
// trigger_hurt [common]
//===================================================================================================================
// VTMB-adaptation:
//  removed: master (obsolete)
//  removed: nodmgforce (new)
//  removed: damagemodel (new)
//  removed: damagecap (new)
//  added: damagevelocitydir
//  added: damagevelocitymag
//  added: damagevelocitypos
//  added: origin (helps damagevelocitypos)

@SolidClass
base (
	VBaseTrigger,
	Parentname,
	p_Origin
)
halfgridsnap
= trigger_hurt :
	"A trigger volume that damages entities that touch it. \nBug Warning: Can't be parented directly to NPCs! Use some proxy entity as intermediate parent chain."
[
	sep_trig(string) readonly: "------------------------------------"

	damage(integer) : "Damage" : 10 : "The amount of damage done to entities that touch this trigger. The damage is done every half-second. See also 'Damage Model' for extra details on how damage can be dealt."
	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"
	]
// vtmb ----
	damagevelocitydir(choices) : "Damage Velocity Direction" : 0 : "[VTMB] Unknown yet..." =
	[
		0 : "0 (Z?)"
		1 : "1 (X?)"
		2 : "2 (Y?)"
	]
	damagevelocitymag(float) : "Damage Velocity Magnitude" : 0 : "[VTMB] Unknown yet..."
	damagevelocitypos(vecline) : "Damage Velocity Position" :  : "[VTMB] Specify X Y Z origin on the map here [not tested]."

	// Inputs
	input SetDamage(float) : "Set a new amount of damage for this trigger."
	input HurtNow(void) : "[VTMB] Hurts the target object on output fired."
	
	// Outputs
	output OnHurt(void) : "Fired whenever this trigger hurts something other than a player."
	output OnHurtPlayer(void) : "Fired whenever this trigger hurts a player."
]




//===================================================================================================================
// trigger_impact [common]
//===================================================================================================================
// not changed.

@SolidClass
base (
	TargetnameRot
)
= trigger_impact :
	"A trigger volume that can be told to push all physics objects that are inside of it in the direction specified by this trigger's angles.\n"+
	"Also outputs the force at the time of impact for anyone else that wants to use it."
[
	sep_trig(string) readonly: "------------------------------------"

	Magnitude(float) : "Magnitude" : 500 : "The strength of the impact. Negative values reverse the direction."
	noise(float) : "Noise" : "0.1" : "The amount of directional noise (0-1). 0 = no noise, 1 = random direction."
	viewkick(float) : "View-kick" : "0.05" : "The amount to kick player's view if the player is in the trigger. \nProportional to magnitude (0-1)."

	// Inputs
	input Impact(void) : "Fire the impact, pushing all entities within the volume."
	input SetMagnitude(float) : "Set the magnitude of the impact."

	// Outputs
	output ImpactForce(string) : "Fired after an impact. The parameter passed along is the force of the impact that was generated."
]




//===================================================================================================================
// trigger_look [common]
//===================================================================================================================
// VTMB-adaptation:
//  removed: Timeout/OnTimeout (unsup)

@SolidClass
base (
	VBaseTrigger
)
= trigger_look :
	"An entity used to trigger something when the player looks at something. It fires 'OnTrigger' when the player "+
	"looks at a target entity for the given amount of time, while within the trigger volume. If the player leaves "+
	"the trigger or looks away from the target entity the clock resets. If the 'Use Velocity instead of facing' spawnflag " +
	"is checked, the trigger uses the player's velocity instead of the player's view, so it determines whenever the player "+
	"is moving toward the target entity. Useful for triggering when players are driving a vehicle at something."+
	"NOTE: Only designed for single-player game. "
[
	sep_trig(string) readonly: "------------------------------------"

	target(target_destination) : "Look Target" : : "The name of the entity to be looked at."
	LookTime(string) : "LookTime" : "0.5" : "The time, in seconds, that the player must look the target before firing the output. Resets if player leaves trigger, or looks outside the Field of View threshold."
	FieldOfView(string) : "Field of View" : "0.9" : "How close the player has to be looking at the target. 1.0 = straight ahead\n 0.0 = +/- 90 degrees\n -1.0 = all directions)."

	spawnflags(flags) = 
	[ 
		128: "Fire Once only" : 1 
		256: "Use Velocity instead of facing" : 0
	]

	// Outputs
	output OnTrigger(void) : "Fired when the trigger is activated."
]



//===================================================================================================================
// trigger_multiple [common]
//===================================================================================================================
// VTMB-adaptation:
//  removed: TouchTest (new)
//  removed: OnTouching,OnNotTouching (new)

@SolidClass
base (
	ExtTrigger
)
line (
	255 255 255,
	targetname,
	parentname
)
= trigger_multiple :
	"A trigger volume that can be triggered multiple times."
[
	wait(float) : "Delay Before Reset" : 1 : "Amount of time, in seconds, after the trigger_multiple has triggered before it can be triggered again. If set to -1, it will never trigger again (in which case you should just use a trigger_once)."
]




//===================================================================================================================
// trigger_once [common]
//===================================================================================================================
// not changed.
// inserted to use modified classes.

@SolidClass
base (
	ExtTrigger
)
line (
	255 255 255,
	targetname,
	parentname
)
= trigger_once :
	"A trigger volume that removes itself after it is triggered once."
[
]




//===================================================================================================================
// trigger_push [common]
//===================================================================================================================
// VTMB-adaptation:
//  removed: alternateticksfix (new)
//  removed: spawnflag (256 - new)
//  added: inputs SetSpeed,SetTargetSpeed
//  added: inputs SetAcceleration,Accel

@SolidClass
base (
	Targetname,
	VBaseTrigger
)
= trigger_push :
	"A trigger volume that pushes entities that touch it."
[
	sep_trig(string) readonly: "------------------------------------"

	speed(integer) : "Speed of Push" : 200 : "The speed at which to push entities away, in inches / second."
	angles(angle) : "Push Direction (Y Z X)" : "0 0 0" : "Angles indicating the direction to push touched entities."
//	pushdir(angle) : "Push Direction (Y Z X)" : "0 0 0" : "Angles indicating the direction to push touched entities."
	accel(float) : "Acceleration" : 20 : "[VTMB] Accel/deaccel to the specified speed, as a ratio of max speed. Negative values reverse the direction [-1, 1]."

	spawnflags(flags) = 
	[
		128: "Once Only" : 0
	]

	// inputs
	input SetSpeed(float) : "[VTMB] Set the trigger pushing speed (not tested)."
	input SetTargetSpeed(float) : "[VTMB] Set the target pushing speed (not tested)."
	input SetAcceleration(float) : "[VTMB] Set the moving acceleration (not tested)."
	input Accel(float) : "[VTMB] Set accel value (unknown)."
]




//===================================================================================================================
// trigger_teleport [common]
//===================================================================================================================
// VTMB-adaptation:
//  added: crossfade
//  removed: spawnflag (32 - new)

@SolidClass
base (
	VBaseTrigger
)
= trigger_teleport :
	"A trigger volume that teleports entities that touch it. Entities are teleported to the Remote Destination, and have their angles "+
	"set to that of the Remote Destination's. If a Local Destination Landmark is specified, teleported entities are offset from the target "+
	"by their initial offset from the landmark, and their angles are left alone."
[
	sep_trig(string) readonly: "------------------------------------"

	target(target_destination) : "Remote Destination" : : "The entity specifying the point to which entities should be teleported."
	landmark(target_destination) : "Local Destination Landmark" : : "If specified, then teleported entities are offset from the target by their initial offset from the landmark."
	crossfade(float) : "Crossfade Time (secs)" : "0.5" : "[VTMB] Time of fade effect between player's transitions."
]








































//*******************************************************************************************************************
//*******************************************************************************************************************
//
// Basic Props
//
//*******************************************************************************************************************
//*******************************************************************************************************************


//===================================================================================================================
// prop_static [common]
//===================================================================================================================
// VTMB-adaptation:
//  merged with prop_static_base class
//  removed: DXLevelChoice (unused)
//  removed: screenspacefade,fadescale,ignorenormals (new)
//  removed: disablevertexlighting,disableselfshadowing (new)

@PointClass
base(
	p_Angles,
	p_Model
)
sphere(fademindist)
sphere(fademaxdist)
color(144 160 112)
studioprop()
= prop_static :
	"A prop that doesn't move and doesn't animate."
[
	skin(choices) : "Skin" : 0 : "Some models have multiple versions of their textures, called skins. Set this to a number other than 0 to use that skin instead of the default." =
	[ 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 10:10 11:11 12:12 13:13 14:14 15:15 16:16 17:17 18:18 19:19 20:20 21:21 22:22 23:23 24:24 25:25 26:26 27:27 28:28 29:29 30:30 31:31 ]

	sep_sprp(string) readonly: "------------------------------------"

	solid(choices) : "Collisions" : 6 : "Model's collision type." =
	[
		0: "Not Solid"
		2: "Use Bounding Box"
		6: "Use VPhysics"
	]
	disableshadows(choices) : "Disable Shadows" : 0 : "Disables lightmaps generation from this object." =
	[
		0 : "No"
		1 : "Yes"
	]
	fademindist(float) : "Start Fade Dist/Pixels" : -1 : "Distance at which the prop starts to fade (<0 = use fademaxdist). If 'Screen Space Fade' is selected, this represents the number of pixels wide covered by the prop when it starts to fade."
	fademaxdist(float) : "End Fade Dist/Pixels" : 0 : "Maximum distance at which the prop is visible (0 = don't fade out). If 'Screen Space Fade' is selected, this represents the *minimum* number of pixels wide covered by the prop when it fades."
	lightingorigin(target_destination) : "Lighting Origin" : "" : "Select an info_lighting to specify a location to sample lighting from, instead of using this entity's origin."
// UNIMPLEMENTED!!
//	shadowmodel(choices) : "Shadows Model Type" :  : "[New in v1.44] Overrides sub-model used for computing lightmaps casting from this prop. "+
//		"\nConvex hull is computed hull for current mesh; \nThe collision model is pre-rendered physics model that specified in .phy file."+
//		"\nIf phymodel is not found, the convex hull will be used instead." =
//	[
//		"" : "Convex Hull"
//		1  : "Collision Model"
//	]
]








//===================================================================================================================
// CLASS: c_ExplosionParams [VTMB-specific]
//===================================================================================================================

@BaseClass
= c_ExplosionParams
[
	ExplodeDamage(float) : "Explosion Damage" : 0 : "If non-zero, when this entity breaks it will create an explosion that causes the specified amount of damage. See also 'Explosion Radius'."
	ExplodeRadius(float) : "Explosion Radius" : 0 : "If non-zero, when this entity breaks it will create an explosion with a radius of the specified amount. See also 'Explosion Damage'."
	explosion_params(target_destination) : "Explosion Parameters" : : "[VTMB] A link to the 'params_explosion' entity that defines common explosion parameters."
]








//===================================================================================================================
// CLASS: prop_dynamic_base [common]
//===================================================================================================================
// VTMB-adaptation:
//  removed: DXLevelChoice (unused)
//  added: new solid value
//  added: new spawnflags
//  removed: spawnflags (64+ -new)
//  replaced: LoopSequence-> DefaultAnim
//  removed: SetBodyGroup (unused)
//  removed: SetPlaybackRate (new)
//  removed: lightingorigin (new)
//  removed: BaseFadeProp (unused)
//  removed: input SetBodyGroup (duplicated now)
//  removed: some io's (new)
//  added: new io's

@BaseClass
base (
	Studiomodel,
	Parentname,
	p_Global,
	o_VBreakable
)
color(127 127 255)
= PropDynamicBase
[
	sep_dprpcol(string) readonly: "------------------------------------"

	// collisions
	solid(choices) : "Collisions" : 6 : "Model's collision type." =
	[
		0: "Not Solid"
		2: "Use Bounding Box"
		6: "Use VPhysics"
		3: "Use Convex Hull"
	]
	npc_transparent(choices) : "NPC-Transparent" : 1 : "[VTMB] NPCs are transparent for this object [not tested]." = [ 0 : "No" 1 : "Yes" ]
	npc_opaque(choices) : "NPC-Opaque" :  : "[VTMB] Should be NPC opaque for this object or not [not tested]." = [ "" : "No" 1 : "Yes" ]

	sep_dprpanims(string) readonly: "------------------------------------"

	// animations
	demo_sequence(choices) : "Demo Sequence" : "None" : "[VTMB] Default animation sequence for the model to be playing after spawning." = [ "None" : "None"  "idle" : "Idle" ]
	LoopSequence(choices) : "Loop Sequence" :  : "[VTMB] The name of the idle animation that this prop will revert to whenever it finishes a random or forced animation." = [ "" : "None"  "idle" : "Idle" ]
	RandomAnimation(choices) : "Randomly Animate" : 0 : "If set, this prop will randomly choose and play animations, based upon the times specified in 'Min/Max Random Anim Time'. Inbetween the random animations, it will revert to playing the 'Default Animation'." = [ 0: "No" 1: "Yes" ]
	MinAnimTime(float) : "Min Random Anim Time" : 5 : "Minimum time between random animations."
	MaxAnimTime(float) : "Max Random Anim Time" : 10 : "Maximum time between random animations."

	sep_dprpphys(string) readonly: "------------------------------------"

	// physic params
	collideable_gibs(choices) : "Collidable Gibs" : 0 : "[VTMB] Collide model's gibs with environment when it breaks [not tested]." = 
	[
		0 : "Mode 0 (unknown)"
		1 : "Mode 1 (unknown)"
		2 : "Mode 2 (unknown)"
	]
	health(integer) : "Prop's Strength" : 0 : "[VTMB] Number of points of damage to take before breaking this prop. \n'0' = not breakable."

	// flags
	spawnflags(flags) =
	[
		16 : "Break on Touch" : 0
		32 : "Break on Pressure" : 0
	 // vtmb's
		1 : "Flag 1 (unknown yet)" : 0
		2 : "Flag 2 (unknown yet)" : 0
		4 : "Flag 4 (unknown yet)" : 0
		8192 : "Flag 8192 (unknown yet)" : 0
	]
	
	// inputs
	input SetAnimation(string) : "Force the prop to play an animation. The parameter should be the name of the animation."

	input PhysDamageScale(float) : "[VTMB] Set the Physics Impact Damage Scale for this character. \nNOTE: 0 means this feature is disabled for backwards compatibility [not tested]."
	input SetCausesImpactDamage(integer) : "[VTMB] Set amount of damage that this prop causes on selected output [not tested]."

	// Outputs
	output OnAnimationBegun(void) : "Fired whenever a new animation has begun playing."
	output OnAnimationDone(void) : "Fired whenever an animation is complete."
	output OnAnimationLoop(void) : "[VTMB] Fired whenever a new animation has looping."
]



//===================================================================================================================
// prop_dynamic [common]
//===================================================================================================================
// VTMB-adaptation:
//  added: explosion_params
//  added: input (SetCausesImpactDamage)

@BaseClass
= e_prop_dynamic
[
	physdamagescale(float) : "Impact Damage Scale" :  : "[VTMB] Scales damage energy when this object is hit by a physics object. \nNote: 0 means this feature is disabled for backwards compatibility. \nSet to 1.0 for materials as strong as flesh, smaller numbers indicate stronger materials."
	blocks_traces(choices) : "Blocks Traces" : 0 : "[VTMB] Unknown yet..." =
	[
		0 : "No"
		1 : "Yes"
	]
]

@PointClass
base (
	PropDynamicBase,
	c_ExplosionParams,
	e_prop_dynamic,
	RenderFields
)
//line (
//	255 255 255,
//	targetname,
//	parentname
//)
studioprop()
= prop_dynamic :
	"A prop that can be placed in hierarchy and can play animations. It can also be configured to break when it takes enough damage. "+
	"Note that the health of the object will be overridden by the health inside the model, to ensure consistent health game-wide."
[
	// RF order fix
]

 
//===================================================================================================================
// prop_dynamic_ornament [common]
//===================================================================================================================
// not changed.
// inserted to use modified classes.

@BaseClass
= e_prop_dynamic_ornament
[
	sep_dprpownr(string) readonly: "------------------------------------"
	InitialOwner(target_destination) : "Initial Target" : : "Name of the entity that this ornament should attach to, at startup."

	// Inputs
	input SetAttached(string) : "Attach the ornament to a different entity. Parameter should be the name of entity to attach to."
	input Detach(string) : "Detach from the Target Entity and become invisible. The ornament can be re-attached with the SetAttached input."
]

@PointClass
base (
	PropDynamicBase,
	e_prop_dynamic_ornament,
	RenderFields
)
//line (
//	255 255 255,
//	targetname,
//	parentname
//)
color(127 127 255)
studioprop()
= prop_dynamic_ornament :
	"A way to attach one studio model to another as an ornament. It will render in the way that player/NPC weapons render."
[
	// RF order fix
]









//===================================================================================================================
// CLASS: BasePropPhysics [common]
//===================================================================================================================
// VTMB-adaptation:
//  removed: DXLevelChoice (unused)
//  removed: spawnflags (64+ -new)
//  removed: inertiaScale,massScale,overridescript (unused)
//  removed: damagetoenablemotion,forcetoenablemotion (unused)
//  removed: fademindist,fademaxdist (unused)
//  removed: puntsound (new) 
//  removed: shadowcastdist (new)
//  removed: physcannon io's (new)
//  removed: damageforces io's (new)
//  removed: puntsound io's (new)
//  removed: DisableFloating (new)
//  removed: OnMotionEnabled (new)
//  removed: OnOutOfWorld (new)
//  removed: OnPlayerUse (unsup)
//  added: explosion_params
//  added: override_mass
//  added: npc_kickable
//  added: new io's

@BaseClass
base (
	Studiomodel,
	p_Global,
	o_VBreakable
)
color (127 63 0)
= BasePropPhysics
[
	sep_pprpmisc(string) readonly: "------------------------------------"

	// demoseq/colls
	demo_sequence(choices) : "Demo Sequence" : "None" : "[VTMB] Default animation sequence for the model to be playing after spawning." = [ "None" : "None"  "idle" : "Idle" ]
	npc_transparent(choices) : "NPC-Transparent" : 1 : "[VTMB] NPCs are transparent for this object [not tested]." = [ 0 : "No" 1 : "Yes" ]
	npc_kickable(choices) : "NPC-Kickable" : 1 : "[VTMB] NPCs can push and kick this object." = [ 0 : "No" 1 : "Yes" ]

	sep_dprpphys(string) readonly: "------------------------------------"

	// physic params
	collideable_gibs(choices) : "Collidable Gibs" : 0 : "[VTMB] Collide model's gibs with environment when it breaks [not tested]." = 
	[
		0 : "Mode 0 (unknown)"
		1 : "Mode 1 (unknown)"
		2 : "Mode 2 (unknown)"
	]
	override_mass(float) : "Mass Override" : -1 : "[VTMB] A scale multiplier for the object's mass."
	health(integer) : "Prop's Strength" : 0 : "[VTMB] Number of points of damage to take before breaking this prop. \n'0' = not breakable."
	physdamagescale(float) : "Impact Damage Scale" :  : "Scales damage energy when this object is hit by a physics object. \nNote: 0 means this feature is disabled for backwards compatibility. \nSet to 1.0 for materials as strong as flesh, smaller numbers indicate stronger materials."

	// flags
	spawnflags(flags) =
	[
		1 : "Start Asleep" : 1
		2 : "Don't take physics damage" : 0
		4 : "Debris - Don't collide with the player or other debris" : 0
		8 : "Motion Disabled" : 0
		8192 : "Flag 8192 (unknown yet)" : 0
	]
	
	// inputs
	input PhysDamageScale(float) : "[VTMB] Set the Physics Impact Damage Scale for this character. \nNOTE: 0 means this feature is disabled for backwards compatibility [not tested]."
	input SetCausesImpactDamage(integer) : "[VTMB] Set amount of damage that this prop causes on selected output [not tested]."

	// outputs
	output OnAwakened(void) : "Fired when this entity becomes awake (collision/force is applied to it while it's asleep)."
	output OnPlayerPickup(void) : "Fired whenever the player picks up this prop (with the physcannon or with +USE)."
]




//===================================================================================================================
// prop_physics [common]
//===================================================================================================================
// VTMB-adaptation:
//  removed: inputs (new)
//  fixed: RenderFields

@PointClass
base (
	BasePropPhysics,
	c_ExplosionParams,
	RenderFields
)
studioprop()
= prop_physics :
	"A prop that physically simulates as a single rigid body. It can be constrained to other physics objects using hinges "+
	"or other constraints. It can also be configured to break when it takes enough damage. "+
	"Note that the health of the object will be overridden by the health inside the model, to ensure consistent health game-wide. "+
	"If the model used by the prop is configured to be used as a prop_dynamic (i.e. it should not be physically simulated) then it CANNOT be "+
	"used as a prop_physics. Upon level load it will display a warning in the console and remove itself. Use a prop_dynamic instead."
[
	// RF order fix
]








//===================================================================================================================
// prop_ragdoll [common]
//===================================================================================================================
// VTMB-adaptation:
//  removed: DXLevelChoice (unused)
//  removed: spawnflags (new)
//  added: new spawnflag (32,8192)
//  removed: angleOverride (new)
//  removed: StartRagdollBoogie (new)
//  removed: BaseFadeProp (unused)
//  removed: inputs (new)

@BaseClass
= e_prop_ragdoll
[
	model(studio) : "Model" :  : "Object's model ('models/<file>.mdl'). \nMust be multi-boned and have a ragdoll animation in itself. \nClick arrow key and scroll down if want to use one of game's defaults." =
	[
		"models/character/monster/undead/female/undead_femalepart1.mdl" : "models/character/monster/undead/female/undead_femalepart1.mdl"
		"models/character/monster/undead/female/undead_femalepart2.mdl" : "models/character/monster/undead/female/undead_femalepart2.mdl"
		"models/character/monster/undead/female/undead_femalepart3.mdl" : "models/character/monster/undead/female/undead_femalepart3.mdl"
		"models/character/npc/common/citizen/female2/female_citizen_d.mdl" : "models/character/npc/common/citizen/female2/female_citizen_d.mdl"
		"models/character/npc/common/citizen/male2/male_citizen_2.mdl" : "models/character/npc/common/citizen/male2/male_citizen_2.mdl"
		"models/character/npc/common/corpse/corpse3.mdl" : "models/character/npc/common/corpse/corpse3.mdl"
		"models/character/npc/common/corpse/corpse3_noarm.mdl" : "models/character/npc/common/corpse/corpse3_noarm.mdl"
		"models/character/npc/common/corpse/corpse3_nolegs.mdl" : "models/character/npc/common/corpse/corpse3_nolegs.mdl"
		"models/character/npc/common/corpse/security_guard/Corpse2_torso.mdl" : "models/character/npc/common/corpse/security_guard/Corpse2_torso.mdl"
		"models/character/npc/common/corpse/security_guard/sg_corpse_full.mdl" : "models/character/npc/common/corpse/security_guard/sg_corpse_full.mdl"
		"models/character/npc/common/corpse/security_guard/sg_headless.mdl" : "models/character/npc/common/corpse/security_guard/sg_headless.mdl"
		"models/character/npc/common/lotusblossom_girl/lotusblossom_girl.mdl" : "models/character/npc/common/lotusblossom_girl/lotusblossom_girl.mdl"
		"models/character/npc/common/security_guard/security_guard_skinny/security_guard_skinny.mdl" : "models/character/npc/common/security_guard/security_guard_skinny/security_guard_skinny.mdl"
		"models/character/npc/common/skeleton/skeleton_female.mdl" : "models/character/npc/common/skeleton/skeleton_female.mdl"
		"models/character/npc/common/skeleton/skeleton_male.mdl" : "models/character/npc/common/skeleton/skeleton_male.mdl"
		"models/character/npc/common/super_swat/super_swat.mdl" : "models/character/npc/common/super_swat/super_swat.mdl"
		"models/character/npc/unique/Chinatown/Tong/tong.mdl" : "models/character/npc/unique/Chinatown/Tong/tong.mdl"
		"models/character/npc/unique/Downtown/Headless_Corpse/headless_corpse.mdl" : "models/character/npc/unique/Downtown/Headless_Corpse/headless_corpse.mdl"
		"models/character/npc/unique/Hollywood/Sewer_Worker/Sewer_Worker.mdl" : "models/character/npc/unique/Hollywood/Sewer_Worker/Sewer_Worker.mdl"
		"models/character/npc/unique/Malkavian_Mansion/Stalker/Stalker.mdl" : "models/character/npc/unique/Malkavian_Mansion/Stalker/Stalker.mdl"
		"models/character/npc/unique/Malkavian_Mansion/Stalker_Female/stalker_female.mdl" : "models/character/npc/unique/Malkavian_Mansion/Stalker_Female/stalker_female.mdl"
		"models/character/npc/unique/Santa_Monica/Brian/Brian.mdl" : "models/character/npc/unique/Santa_Monica/Brian/Brian.mdl"
		"models/character/npc/unique/santa_monica/malcolm/jasper.mdl" : "models/character/npc/unique/santa_monica/malcolm/jasper.mdl"
		"models/character/npc/unique/santa_monica/vandal/andrew.mdl" : "models/character/npc/unique/santa_monica/vandal/andrew.mdl"
	]
	sep_rprpspec(string) readonly: "------------------------------------"

	npc_transparent(choices) : "NPC-Transparent" : 1 : "[VTMB] NPCs are transparent for this object [not tested]." = [ 0 : "No" 1 : "Yes" ]
	physdamagescale(float) : "Physics Impact Damage Scale" : "1.0" : "[VTMB] Scales damage energy when this object is hit by a physics object. \nNote: 0 means this feature is disabled for backwards compatibility. \nSet to 1.0 for materials as strong as flesh, smaller numbers indicate stronger materials."

	spawnflags(flags) = 
	[
		4 : "Debris (don't collide with something)" : 0
		32 : "Flag 32 (unknown yet)" : 0
		8192 : "Flag 8192 (unknown yet)" : 0
	]

	input PhysDamageScale(float) : "[VTMB] Set the Physics Impact Damage Scale for this character. NOTE: 0 means this feature is disabled for backwards compatibility."
]

@PointClass
base (
	Studiomodel,
	e_prop_ragdoll,
	RenderFields
)
studioprop()
= prop_ragdoll :
	"A prop that physically simulates and can be articulated with internal joints. The joint constraints are part of the physics model."
[
	// RF order fix
]








































//*******************************************************************************************************************
//*******************************************************************************************************************
// 
// NPCs
// 
//*******************************************************************************************************************
//*******************************************************************************************************************


//===================================================================================================================
// CLASS: VBaseNPC [VTMB-specific]
//===================================================================================================================

@BaseClass base(Studiomodel) = VBaseNPC
[
	sep_npcmain(string) readonly: "------------------------------------"
	
	base_gender(choices) : "Base Gender" : 1 : "Sets base NPC gender, such as male and female [seems to have no effect]." =
	[
		0 : "Female"
		1 : "Male"
	]

	default_disposition(choices) : "Default Disposition" : "Neutral" : "Default NPC's disposition. Goes to 'vdata/system/dispositiontable.txt' definitions." =
	[
		"Neutral" : "Neutral"
		"Anger" : "Anger"
		"Joy" : "Joy"
		"Sad" : "Sad"
		"Fear" : "Fear"
		"Disgust" : "Disgust"
		"Apathy" : "Apathy"
		"Flirtatious" : "Flirtatious"
		"Confused" : "Confused"
		"Lay" : "Lay"
		"Damaged" : "Damaged"
		"Dead" : "Dead"
		"Sitting" : "Sitting"
		"ChairDamaged" : "ChairDamaged"
		"BehindBack" : "BehindBack"
		"Therese" : "Therese"
		"Bartender" : "Bartender"
		"Lily" : "Lily"
		"PrinceSitting" : "PrinceSitting"
	]

	player_reaction(choices) : "Reaction to Player" : "D_NU 0" : "Type of NPC's relationship with player. Use <str_type> <int_degree> format,\n\n"+
		"  where <type> is: \n"+
		"    D_LI [0-10] --> Likes Player (Will Defend); \n"+
		"    D_NU [0-10] --> Neutral (Default); \n"+
		"    D_HT [0-10] --> Hates Player (Will Attack)." =
	[
		"D_LI 0" : "Likes (level 0)"
		"D_LI 1" : "Likes (level 1)"
		"D_LI 2" : "Likes (level 2)"
		"D_LI 3" : "Likes (level 3)"
		"D_LI 4" : "Likes (level 4)"
		"D_LI 5" : "Likes (level 5)"
		"D_LI 6" : "Likes (level 6)"
		"D_LI 7" : "Likes (level 7)"
		"D_LI 8" : "Likes (level 8)"
		"D_LI 9" : "Likes (level 9)"
		"D_LI 10": "Likes (level 10)"
		"D_NU 0" : "Neutral (level 0)"
		"D_NU 1" : "Neutral (level 1)"
		"D_NU 2" : "Neutral (level 2)"
		"D_NU 3" : "Neutral (level 3)"
		"D_NU 4" : "Neutral (level 4)"
		"D_NU 5" : "Neutral (level 5)"
		"D_NU 6" : "Neutral (level 6)"
		"D_NU 7" : "Neutral (level 7)"
		"D_NU 8" : "Neutral (level 8)"
		"D_NU 9" : "Neutral (level 9)"
		"D_NU 10": "Neutral (level 10)"
		"D_HT 0" : "Hates (level 0)"
		"D_HT 1" : "Hates (level 1)"
		"D_HT 2" : "Hates (level 2)"
		"D_HT 3" : "Hates (level 3)"
		"D_HT 4" : "Hates (level 4)"
		"D_HT 5" : "Hates (level 5)"
		"D_HT 6" : "Hates (level 6)"
		"D_HT 7" : "Hates (level 7)"
		"D_HT 8" : "Hates (level 8)"
		"D_HT 9" : "Hates (level 9)"
		"D_HT 10": "Hates (level 10)"
	]

	dialogname(vdialog) : "Dialog File" : "" : "Defines dialogue script depending on certain NPC and situation." =
	[
		"" : "None"
	]
	
	default_camera(vcamerashot) : "Default Camera Shot" : "DialogDefault" : "Default camera-shot definition applied when player interacts with this NPC. Related to 'vdata/CameraShots/*.txt' path." =
	[
	// CameraShotsList:
		"DialogDefault" : "DialogDefault"
		"vdata/CameraShots/dialogdefaultwoman.txt" : "DialogDefaultWoman"
		"vdata/CameraShots/dialogdefaultfastmove.txt" : "DialogDefaultFastMove"
		"vdata/CameraShots/dialoglowcenter.txt" : "DialogLowCenter"
		"vdata/CameraShots/dialoglowleft.txt" : "DialogLowLeft"
		"vdata/CameraShots/dialoglowright.txt" : "DialogLowRight"
		"vdata/CameraShots/dialogmediumshot.txt" : "DialogMediumShot"
		"vdata/CameraShots/dialogoverplayerleftshoulder.txt" : "DialogOverPlayerLeftShoulder"
		"vdata/CameraShots/dynamic1.txt" : "Dynamic1"
		"vdata/CameraShots/dynamic2.txt" : "Dynamic2"
		"vdata/CameraShots/dynamic3.txt" : "Dynamic3"
		"vdata/CameraShots/dynamic4.txt" : "Dynamic4"
		"vdata/CameraShots/dynamic5.txt" : "Dynamic5"
		"vdata/CameraShots/dynamic6.txt" : "Dynamic6"
		"vdata/CameraShots/dynamic7.txt" : "Dynamic7"
		"vdata/CameraShots/dynamic8.txt" : "Dynamic8"
		"vdata/CameraShots/dynamic9.txt" : "Dynamic9"
		"vdata/CameraShots/longapproachcloseup.txt" : "LongApproachCloseUp"
		"vdata/CameraShots/lookattarget.txt" : "LookAtTarget"
		"vdata/CameraShots/lookattarget_b.txt" : "LookAtTarget_B"
		"vdata/CameraShots/lookattarget_snap.txt" : "LookAtTarget_Snap"
		"vdata/CameraShots/lookattargethead_snap.txt" : "LookAtTargetHead_Snap"
		"vdata/CameraShots/center.txt" : "Center"
		"vdata/CameraShots/centerfullview.txt" : "CenterFullView"
		"vdata/CameraShots/lowcenter.txt" : "LowCenter"
		"vdata/CameraShots/mediumshot.txt" : "MediumShot"
		"vdata/CameraShots/npcfollow.txt" : "NPCFollow"
		"vdata/CameraShots/npcfollowcut.txt" : "NPCFollowCut"
		"vdata/CameraShots/npcfollowfromplayer.txt" : "NPCFollowFromPlayer"
		"vdata/CameraShots/npcfollowmove.txt" : "NPCFollowMove"
	]

	sep_npcequip(string) readonly: "-------------------------------------"

	additionalequipment(choices) : "Base Equipment" : 0 : "This is the weapon that NPC will basically use." =
	[
		"0" : "Nothing"
		"item_w_avamp_blade" : "item_w_avamp_blade"
		"item_w_baseball_bat" : "item_w_baseball_bat"
		"item_w_baton" : "item_w_baton"
		"item_w_bush_hook" : "item_w_bush_hook"
		"item_w_colt_anaconda" : "item_w_colt_anaconda"
		"item_w_crossbow" : "item_w_crossbow"
		"item_w_crossbow_flaming" : "item_w_crossbow_flaming"
		"item_w_deserteagle" : "item_w_deserteagle"
		"item_w_fireaxe" : "item_w_fireaxe"
		"item_w_fists" : "item_w_fists"
		"item_w_flamethrower" : "item_w_flamethrower"
		"item_w_glock_17c" : "item_w_glock_17c"
		"item_w_grenade_frag" : "item_w_grenade_frag"
		"item_w_ithaca_m_37" : "item_w_ithaca_m_37"
		"item_w_katana" : "item_w_katana"
		"item_w_knife" : "item_w_knife"
		"item_w_mac_10" : "item_w_mac_10"
		"item_w_occultblade" : "item_w_occultblade"
		"item_w_remington_m_700" : "item_w_remington_m_700"
		"item_w_rem_m_700_bach" : "item_w_rem_m_700_bach"
		"item_w_severed_arm" : "item_w_severed_arm"
		"item_w_sheriff_sword" : "item_w_sheriff_sword"
		"item_w_sledgehammer" : "item_w_sledgehammer"
		"item_w_steyr_aug" : "item_w_steyr_aug"
		"item_w_supershotgun" : "item_w_supershotgun"
		"item_w_thirtyeight" : "item_w_thirtyeight"
		"item_w_throwing_star" : "item_w_throwing_star"
		"item_w_tire_iron" : "item_w_tire_iron"
		"item_w_torch" : "item_w_torch"
		"item_w_uzi" : "item_w_uzi"
		"item_w_zombie_fists" : "item_w_zombie_fists"
	]

	alternateequipment(choices) : "Alternate Equipment" : 0 : "This is the weapon that NPC will use as alternative." =
	[
		"0" : "Nothing"
		"item_w_avamp_blade" : "item_w_avamp_blade"
		"item_w_baseball_bat" : "item_w_baseball_bat"
		"item_w_baton" : "item_w_baton"
		"item_w_bush_hook" : "item_w_bush_hook"
		"item_w_colt_anaconda" : "item_w_colt_anaconda"
		"item_w_crossbow" : "item_w_crossbow"
		"item_w_crossbow_flaming" : "item_w_crossbow_flaming"
		"item_w_deserteagle" : "item_w_deserteagle"
		"item_w_fireaxe" : "item_w_fireaxe"
		"item_w_fists" : "item_w_fists"
		"item_w_flamethrower" : "item_w_flamethrower"
		"item_w_glock_17c" : "item_w_glock_17c"
		"item_w_grenade_frag" : "item_w_grenade_frag"
		"item_w_ithaca_m_37" : "item_w_ithaca_m_37"
		"item_w_katana" : "item_w_katana"
		"item_w_knife" : "item_w_knife"
		"item_w_mac_10" : "item_w_mac_10"
		"item_w_occultblade" : "item_w_occultblade"
		"item_w_remington_m_700" : "item_w_remington_m_700"
		"item_w_rem_m_700_bach" : "item_w_rem_m_700_bach"
		"item_w_severed_arm" : "item_w_severed_arm"
		"item_w_sheriff_sword" : "item_w_sheriff_sword"
		"item_w_sledgehammer" : "item_w_sledgehammer"
		"item_w_steyr_aug" : "item_w_steyr_aug"
		"item_w_supershotgun" : "item_w_supershotgun"
		"item_w_thirtyeight" : "item_w_thirtyeight"
		"item_w_throwing_star" : "item_w_throwing_star"
		"item_w_tire_iron" : "item_w_tire_iron"
		"item_w_torch" : "item_w_torch"
		"item_w_uzi" : "item_w_uzi"
		"item_w_zombie_fists" : "item_w_zombie_fists"
	]

	cantdropweapons(choices) : "Can't Drop Weapons" : 0 : "If set, all NPC's weapons won't be available when it dead." = [ 0 : "No" 1 : "Yes" ]
	
	combat_start_activity(choices) : "Initial Combat Activity" : "-1" : "Defines NPC's combat animation when none of actions or outputs applied to him." =
	[
		"-1" : "None (default)"
		"ACT_INVALID" : "Invalid"
	]

	is_bossmonster(choices) : "NPC is Boss Monster" : 0 : "If set, shows blood scale on screen and process this NPC as a monster." =	[ 0 : "No" 1 : "Yes" ]
	invincible(choices) : "NPC is Invincible" : 0 : "If set, the player can't kill this NPC." = [ 0 : "No" 1 : "Yes" ]

	sep_npcstat(string) readonly: "------------------------------------"

	stattemplate(choices) : "NPC Stat Template" : "NPCGeneric" : "Goes to data in 'vdata/system/npctemplate***.txt'. NPCs in Hammer are assigned one of these which determines their statistics." =
	[
		"NPCGeneric" : "NPCGeneric"
		"CivilianGeneric" : "CivilianGeneric"
		"VampireGeneric" : "VampireGeneric"
		"Bum" : "Bum"
		"BumFastFood" : "BumFastFood"
		"Cabbie" : "Cabbie"
		"Doggie" : "Doggie"
		"Human" : "Human"
		"OfficerGeneric" : "OfficerGeneric"
		"Rat" : "Rat"
		"Zombie" : "Zombie"
		"AndreiBlood" : "AndreiBlood"
		"Ash" : "Ash"
		"AsianVampire" : "AsianVampire"
		"Bach" : "Bach"
		"Barabus" : "Barabus"
		"BeachhouseDennis" : "BeachhouseDennis"
		"BeachhouseThug" : "BeachhouseThug"
		"BishopVick" : "BishopVick"
		"BloodGuardian" : "BloodGuardian"
		"BloodHuntAuspex" : "BloodHuntAuspex"
		"BloodHuntCelerity" : "BloodHuntCelerity"
		"BloodHuntFortitude" : "BloodHuntFortitude"
		"BloodHuntPotence" : "BloodHuntPotence"
		"BloodHuntPresence" : "BloodHuntPresence"
		"BloodHuntProtean" : "BloodHuntProtean"
		"Blueblood" : "Blueblood"
		"BluebloodFastfood" : "BluebloodFastfood"
		"Bomberman" : "Bomberman"
		"BrotherKanker" : "BrotherKanker"
		"Bruno" : "Bruno"
		"CDC" : "CDC"
		"ChangBros" : "ChangBros"
		"ChangBrosClaw" : "ChangBrosClaw"
		"Chastity" : "Chastity"
		"ChunkGuard" : "ChunkGuard"
		"ClinicGuard" : "ClinicGuard"
		"CrackhousePlagueVictim" : "CrackhousePlagueVictim"
		"DaneGenCop" : "DaneGenCop"
		"DaneLessCop" : "DaneLessCop"
		"DoggieTemp" : "DoggieTemp"
		"DowntownThug" : "DowntownThug"
		"DowntownThugFastFood" : "DowntownThugFastFood"
		"DowntownTong" : "DowntownTong"
		"FuSecurity" : "FuSecurity"
		"Gargoyle" : "Gargoyle"
		"Gimble" : "Gimble"
		"Hengeyokai" : "Hengeyokai"
		"Hooker" : "Hooker"
		"HunterHuntingAsh38" : "HunterHuntingAsh38"
		"HunterHuntingAshCrossbows" : "HunterHuntingAshCrossbows"
		"HunterHuntingAshElite" : "HunterHuntingAshElite"
		"HunterSafeArea" : "HunterSafeArea"
		"HunterSafeArea2" : "HunterSafeArea2"
		"HunterSafeArea3" : "HunterSafeArea3"
		"Jezebel" : "Jezebel"
		"Johnny" : "Johnny"
		"Julius" : "Julius"
		"Killer" : "Killer"
		"LuFang" : "LuFang"
		"MalkMansionCroucher" : "MalkMansionCroucher"
		"MalkMansionStalker" : "MalkMansionStalker"
		"MalkMansionStalkerBurning" : "MalkMansionStalkerBurning"
		"ManBat" : "ManBat"
		"ManBatMinion" : "ManBatMinion"
		"ManBatOfficer" : "ManBatOfficer"
		"Mandarin" : "Mandarin"
		"Mercurio" : "Mercurio"
		"MingXiao" : "MingXiao"
		"MingXiaoProxy" : "MingXiaoProxy"
		"MingXiaoTentacle" : "MingXiaoTentacle"
		"MuseumGuard" : "MuseumGuard"
		"Nagaraja" : "Nagaraja"
		"Nos_Attacked" : "Nos_Attacked"
		"Plague-Bum" : "Plague-Bum"
		"RussianMafia" : "RussianMafia"
		"RussianMafia_Igor" : "RussianMafia_Igor"
		"RussianMafia_IgorCronies" : "RussianMafia_IgorCronies"
		"RussianMafiaElite" : "RussianMafiaElite"
		"SabbatAuspexMac10" : "SabbatAuspexMac10"
		"SabbatAuspexShottie" : "SabbatAuspexShottie"
		"SabbatAuspexSteyr" : "SabbatAuspexSteyr"
		"SabbatCelerityGlock" : "SabbatCelerityGlock"
		"SabbatCelerityMac10" : "SabbatCelerityMac10"
		"SabbatCelerityShottie" : "SabbatCelerityShottie"
		"SabbatFireMage" : "SabbatFireMage"
		"SabbatFortitudeShottie" : "SabbatFortitudeShottie"
		"SabbatGhoulGlock" : "SabbatGhoulGlock"
		"SabbatGhoulMac10" : "SabbatGhoulMac10"
		"SabbatGhoulMelee" : "SabbatGhoulMelee"
		"SabbatGhoulShottie" : "SabbatGhoulShottie"
		"SabbatPresenceShottie" : "SabbatPresenceShottie"
		"SabbatWithPotence" : "SabbatWithPotence"
		"SabbatWithProtean" : "SabbatWithProtean"
		"Scurrying" : "Scurrying"
		"SheriffMan" : "SheriffMan"
		"ShovelHead" : "ShovelHead"
		"SOC_average" : "SOC_average"
		"SOC_elite" : "SOC_elite"
		"sp_gio_average" : "sp_gio_average"
		"sp_gio_strong" : "sp_gio_strong"
		"sp_gio_weak" : "sp_gio_weak"
		"SuperSWAT" : "SuperSWAT"
		"SWAT" : "SWAT"
		"TongMugger" : "TongMugger"
		"TongThug" : "TongThug"
		"Tpl_firebolt" : "Tpl_firebolt"
		"Tpl_standard" : "Tpl_standard"
		"Tpl_star" : "Tpl_star"
		"Tpl_sword" : "Tpl_sword"
		"Tutorial_Jack" : "Tutorial_Jack"
		"TutorialShovelhead" : "TutorialShovelhead"
		"TutorialThug" : "TutorialThug"
		"TzimisceCreation1" : "TzimisceCreation1"
		"TzimisceCreation2" : "TzimisceCreation2"
		"TzimisceCreation3" : "TzimisceCreation3"
		"VampireBrujah" : "VampireBrujah"
		"VampireBrujahElite" : "VampireBrujahElite"
		"VampireBrujahThug" : "VampireBrujahThug"
		"VampireCritical" : "VampireCritical"
		"VampireGangrel" : "VampireGangrel"
		"VampireLasombra" : "VampireLasombra"
		"VampireLasombraBoss" : "VampireLasombraBoss"
		"VampireNosferatu" : "VampireNosferatu"
		"VampireSabbatLeader" : "VampireSabbatLeader"
		"VampireToreador" : "VampireToreador"
		"VentrueGhouls" : "VentrueGhouls"
		"VentrueSecurity" : "VentrueSecurity"
		"VentrueSecurityFastFood" : "VentrueSecurityFastFood"
		"WarehouseSabbatClaws" : "WarehouseSabbatClaws"
		"WarehouseThug" : "WarehouseThug"
		"WarehouseThugFastFood" : "WarehouseThugFastFood"
		"WarehouseThugLesser" : "WarehouseThugLesser"
		"Werewolf" : "Werewolf"
		"Yukie" : "Yukie"
		"Zhao" : "Zhao"
		"Clear" : "Clear"
	]
	npc_perception(choices) : "NPC Perception Level" : 3 : "Defines NPC's Perception ability level [1...10]." = [ 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 10:10 ]

	allow_alert_lookaround(choices) : "Allow Lookaround on Alert" : 1 : "Defines, should NPC be able to look around when alerted, or not." = 	[ 0 : "No" 1 : "Yes" ]
	allow_kick_hint_use(choices) : "Allow Kick Hint Usage" : 1 : "[VTMB] Unknown yet..." = 	[ 0 : "No" 1 : "Yes" ]

	sep_npcfeats(string) readonly: "------------------------------------"

	pl_criminal_attack(choices) : "Player Criminal Attack" : 6 : "A criminal level is set to the player for certain actions or by script. When the level is equal or greater thean the threshold, the apropriate action is triggered for the npc." =
	[
		"-1" : "None"
		"1" : "Level 1"
		"2" : "Level 2"
		"3" : "Level 3"
		"4" : "Level 4"
		"5" : "Level 5"
		"6" : "Level 6 (default)"
	]
	pl_criminal_flee(choices) : "Player Criminal Flee" : 6 : "A criminal level is set to the player for certain actions or by script. When the level is equal or greater thean the threshold, the apropriate action is triggered for the npc. \nFlee overrides attack and a value of 6 means no action because the max value is 5." =
	[
		"-1" : "None"
		"1" : "Level 1"
		"2" : "Level 2"
		"3" : "Level 3"
		"4" : "Level 4"
		"5" : "Level 5"
		"6" : "Level 6 (no action)"
	]
	pl_investigate(choices) : "Player Investigate" : -1 : "[VTMB] Unknown yet..." =
	[
		"-1" : "None"
		"1" : "Mode 1"
		"2" : "Mode 2"
		"3" : "Mode 3"
		"4" : "Mode 4"
		"5" : "Mode 5"
		"6" : "Mode 6 (default)"
	]
	pl_supernatural_attack(choices) : "Player Supernatural Attack" : 6 : "A supernatural level is set to the player for certain actions or by script. When the level is equal or greater thean the threshold, the apropriate action is triggered for the npc." =
	[
		"-1" : "None"
		"1" : "Level 1"
		"2" : "Level 2"
		"3" : "Level 3"
		"4" : "Level 4"
		"5" : "Level 5"
		"6" : "Level 6 (default)"
	]
	pl_supernatural_flee(choices) : "Player Supernatural Flee" : 6 : "A supernatural level is set to the player for certain actions or by script. When the level is equal or greater thean the threshold, the apropriate action is triggered for the npc. \nFlee overrides attack and a value of 6 means no action because the max value is 5." =
	[
		"-1" : "None"
		"1" : "Level 1"
		"2" : "Level 2"
		"3" : "Level 3"
		"4" : "Level 4"
		"5" : "Level 5"
		"6" : "Level 6 (no action)"
	]

	investigate_mode(choices): "Investigate Mode" : -1 : "[not tested] Measures your character's ability to notice minute or hidden details." =
	[
		"-1" : "None (default)"
		"1" : "Mode 1"
		"2" : "Mode 2"
		"3" : "Mode 3"
		"4" : "Mode 4"
		"5" : "Mode 5"
		"6" : "Mode 6 (often)"
	]
	investigate_mode_combat(choices): "Investigate Mode Combat" : -1 : "[VTMB] Unknown yet..." =
	[
		"-1" : "None (default)"
		"1" : "Mode 1"
		"2" : "Mode 2"
		"3" : "Mode 3"
		"4" : "Mode 4"
		"5" : "Mode 5"
		"6" : "Mode 6 (often)"
	]

	sep_npcmisc1(string) readonly: "------------------------------------"
	
	squadname(string) : "Squad Name" : : "NPCs that are in the same squad (i.e. have matching squad names) will share information about enemies, and will take turns attacking and covering each other."
	follower_type(choices) : "Follower Type" : "Default" : "This is defined in 'vdata/system/rules.txt' under the heading 'Npc_Follower_Info'. Determines at which distances a follower backs off from its boss, starts waking to the boss, or starts running to the boss." =
	[
		"Default" : "Default"
	]

	hearing(float) : "Hearing Volume" : "-1" : "NPC's hearing radius [0...100]. Set '-1' as default [not tested]."
	vision(float) : "Vision Radius" : "-1" : "NPC's vision radius (units). Set '-1' as default [not tested]."

	hint_groups(choices) : "Hint Groups" : "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32" : "Hint groups are used by NPCs to restrict their hint-node searching to a subset of the map's hint nodes. Only hint nodes with matching hint group names will be considered by this NPC. Enter the hint grops numbers here (e.g. '5 12 23 31')." =
	[
		"0" : "None (0)"
		"1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32" : "All (1-32)"
	]

	sep_npcimage(string) readonly: "------------------------------------"
	
	clothescolor1(color255) : "NPC's Clothes Color 1" : "0 0 0 0" : "Overrides cloth's diffuse texture color."
	clothescolor2(color255) : "NPC's Clothes Color 2" : "0 0 0 0" : "Overrides cloth's diffuse texture color."
	skincolor(color255) : "NPC's Skin Color" : "0 0 0 0" : "Overrides NPC's skin diffuse texture color."
	haircolor(color255) : "NPC's Hair Color" : "0 0 0 0" : "Overrides NPC's hair diffuse texture color."
	trimcolor(color255) : "NPC's Skin Color" : "0 0 0 0" : "Overrides NPC's trim diffuse texture color."

	sep_npcproc(string) readonly: "------------------------------------"
	
	percent_occluded_chase(integer) : "Percent Occluded Chase" : 30 : "[VTMB] Unknown yet..."
	percent_occluded_cover(integer) : "Percent Occluded Cover" : 30 : "[VTMB] Unknown yet..."
	percent_occluded_flank(integer) : "Percent Occluded Flank" : 20 : "[VTMB] Unknown yet..."
	percent_occluded_wait(integer) : "Percent Occluded Wait" : 10 : "[VTMB] Unknown yet..."
	percent_occluded_walk(integer) : "Percent Occluded Walk" : 10 : "[VTMB] Unknown yet..."

	sep_npcadd1(string) readonly: "------------------------------------"
	
	physdamagescale(float) : "Physics Impact Damage Scale" : "1.0" : "Scales damage energy when this character is hit by a physics object. With a value of 0 the NPC will take no damage from physics."
	usescript(string) : "Use Python Script" : : "This is a Python script that defines additional dialog params [not tested]."
	nav_ignore_physics_props(choices) : "AI Ignore Physics Props" : 0 : "When defined, the NPC will ignore physics props' collisions when navigated between AI-nodes." =
	[
		0 : "No"
		1 : "Yes"
	] 

	spawnflags(Flags) = 
	[
		4 : "Fall to ground (unchecked means *teleport* to ground)" : 1
		16 : "Efficient - Don't acquire enemies or avoid obstacles" : 0
		256: "Long Visibility/Shoot" : 0
		2048: "Template NPC (used by npc_maker, will not spawn)" : 0
		4096: "Do Alternate collision for this NPC (player avoidance)" : 0
		8192: "Don't drop weapons" : 0
	 // vtmb
		1 : "Flag 1 (unknown yet)" : 0
		2 : "Flag 2 (unknown yet)" : 0
		8 : "Flag 8 (unknown yet)" : 0
		16384 : "Flag 16384 (unknown yet)" : 0
		32768 : "Flag 32768 (unknown yet)" : 0
	]

	// Inputs
	input SetHealth(integer) : "Set this NPC's health."
	input SetBodyGroup(integer) : "Hack: Sets this NPC's body group, by index (from 0 - n). You'd better know what you are doing!"
	input SetRelationship(string) : "Changes this entity's relationship with another entity or class. Format: <entityname/classname> <D_HT/D_FR/D_LI/D_NU> <priority>"
	input physdamagescale(float) : "Sets the value that scales damage energy when this character is hit by a physics object. NOTE: 0 means this feature is disabled for backwards compatibility."
	input SpawnTempParticle(string) : "Spawns temporary particle (define particle script in params) [not tested]."

	input pl_investigate(string) : "[VTMB: untested connection]"
	input pl_criminal_flee(string) : "Set a criminal flee level"
	input pl_criminal_attack(string) : "Set a criminal attack level"
	input pl_supernatural_flee(string) : "Set a supernatural flee level"
	input pl_supernatural_attack(string) : "Set a supernatural attack level"
	input WalkToNode(string) : "Makes NPC walk to selected node."
	input TweakParam(string) : "[VTMB: untested connection]"
	input SetupPatrolType(string) : "[VTMB: untested connection]"
	input FollowPatrolPath(string) : "[VTMB: untested connection]"
	input ClearPatrolPath(void) : "[VTMB: untested connection]"
	input StartPlayerDialog(void) : "[VTMB: untested connection]"
	input StartPlayerDialogRemote(void) : "[VTMB: untested connection]"
	input StartPlayerDialogUnforced(void) : "[VTMB: untested connection]"
	input FleeAndDie(void) : "[VTMB: untested connection]"
	input Faint(void) : "[VTMB: untested connection]"
	input DisableThink(integer) : "[VTMB: untested connection]"
	input TeleportToEntity(string) : "[VTMB: untested connection]"
	input TakeDamage(integer) : "Take specified amount of damage to object."
	input MakeInvincible(integer) : "Make NPC invincible."
	input UseInteresting(integer) : "Allow use Interesting Places feature."
	input SetInvestigateMode(integer) : "Set investigate mode [-?]."
	input SetInvestigateModeCombat(integer) : "Set investigate mode on combat [-?]."
	input SetSpeechVolume(string) : "Set NPC's speech volume."
	input PlayDialogFile(string) : "Play dialog file that will be aplied to this NPC."
	input AllowAlertLookaround(void) : "[VTMB: untested connection]"
	input StayEntrenched(integer) : "[VTMB: untested connection]"
	input AllowKickHintUse(void) : "[VTMB: untested connection]"
	input SetScriptedDiscipline(string) : "[VTMB: untested connection]"
	input SetBloodShieldDiscipline(integer) : "[VTMB: untested connection]"
	input SetFollowerBoss(string) : "[VTMB: untested connection]"
	input SetFollowerType(string) : "Set the NPC follower type."
	input SetFallToGround(integer) : "[VTMB: untested connection]"
	input ChangeSchedule(string) : "[VTMB: untested connection]"
	input SetDontFacePlayerInDialog(integer) : "[VTMB: untested connection]"
	input SetBossMonster(integer) : "Make this NPC to be a boss monster."
	input AllowOpenDoors(integer) : "Give the NPC ability to open doors."
	input SetMovementMultiplier(void) : "[VTMB: untested connection]"
	input SetDefaultDialogCamera(void) : "Set camera shot to dialog-default."
	input HumanityAdd(void) : "Add humanity point to player."
	input Bloodloss(void) : "Take blood point [-?]."
	input Bloodgain(void) : "Gain blood level [-?]."
	input ClearActiveDisciplines(void) : "Clears currently launched disciplines."
	input Inventory_Remove(void) : "[VTMB: untested connection]"
	input MoneyAdd(void) : "Add amount of money."
	input MoneyRemove(void) : "Remove amount of money."
	input BarterBegin(void) : "Begin barter process..."
	input BarterEnd(void) : "End barter process..."
	input BloodHeal(void) : "Player will be healing by blood."
	input FrenzyCheck(void) : "[VTMB: untested connection]"
	input FrenzyTrigger(void) : "[VTMB: untested connection]"
	input HungerCheck(void) : "[VTMB: untested connection]"
	input FrenzyUpdate(void) : "[VTMB: untested connection]"
	input PlayFloat(void) : "[VTMB: untested connection]"
	input WillTalk(integer) : "Make NPC talk (0 - disables, 1 - enables)"
	input ChangeMasqueradeLevel(void) : "Change player's Masquerade level. Positive number is a violation, and negative number is redemption."
	input FadeHeadAsCameraTarget(string) : "[VTMB: untested connection]"
	input FadeBodyAsCameraTarget(string) : "[VTMB: untested connection]"
	input SetHeadAsCameraTarget(void) : "[VTMB: untested connection]"
	input SetBodyAsCameraTarget(void) : "[VTMB: untested connection]"
	input LookAtEntityEye(string) : "[VTMB: untested connection]"
	input LookAtEntityCenter(string) : "[VTMB: untested connection]"
	input LookAtEntityOrigin(string) : "[VTMB: untested connection]"
	input LookAtEntityDefault(string) : "[VTMB: untested connection]"
	input SetSoundOverrideEnt(string) : "Works for the radio, the newscaster, and any other npc dialog. \n[Not sure about ambient_generic..]"
	input SetFakeSilence(integer) : "Shuts off the newscaster? \n[I don't know if it has an effect on other sound entities. Seems it have no effect on prop_radio or ambient_generic.]"

	// Outputs
	output OnDamaged(void) : "Fired when this NPC takes damage."
	output OnDeath(void) : "Fired when this NPC is killed." 
	output OnHalfHealth(void) : "Fired when this NPC reaches half of its maximum health."
	output OnHearWorld(void) : "Fired when this NPC hears a sound (other than combat or the player)."
	output OnHearPlayer(void) : "Fired when this NPC hears the player."
	output OnHearCombat(void) : "Fired when this NPC hears combat sounds."
	output OnFoundEnemy(string) : "Fired when this NPC establishes line of sight to its enemy (outputs entity)."
	output OnLostEnemyLOS(void) : "Fired when this NPC loses line of sight to its enemy."
	output OnLostEnemy(void) : "Fired when this NPC loses its enemy. Usually due to the enemy being killed/removed, or because this NPC has selected a newer, more dangerous enemy."
	output OnFoundPlayer(string) : "Fired when this NPC establishes line of sight to its enemy, and that enemy is a player (outputs player entity)."
	output OnLostPlayerLOS(void) : "Fired when this NPC loses line of sight to its enemy, and that enemy is a player."
	output OnLostPlayer(void) : "Fired when this NPC loses its enemy, and that enemy was a player. Usually due to the enemy being killed/removed, or because this NPC has selected a newer, more dangerous enemy."

	output OnNPCDied(void) : "Fired when this NPC died."
	output OnLastNPCDied(void) : "Fired when the last of this NPC died [-?]."
	output OnDialogBegin(void) : "Fired when dialog with NPC begin."
	output OnDialogEnd(void) : "Fired when dialog with NPC end."
	output OnInterestingPlaceArrived(void) : "Fired when interesting place arrived."
	output OnInterestingPlaceLeft(void) : "Fired when interesting place left."
	output OnUnknownVisionPlayer(void) : "[VTMB: untested connection]"
	output OnStateFleeing(void) : "[VTMB: untested connection]"
	output OnIncapacitatedStart(void) : "[VTMB: untested connection]"
	output OnIncapacitatedEnd(void) : "[VTMB: untested connection]"
	output OnGrappleBegin(void) : "Fired when grapple begins [-?]."
	output OnGrappleEnd(void) : "Fired when grapple ends [-?]."
	output OnFedUponBegin(void) : "[VTMB: untested connection]"
	output OnFedUponEnd(void) : "[VTMB: untested connection]"
	output OnSellWeapon(void) : "Fired when weapon sold."
	output OnBarterClose(void) : "Fired when barter process end."
]






//===================================================================================================================
// CLASS: VAddNPCFeats [VTMB-specific]
//===================================================================================================================

@BaseClass = VAddNPCFeats
[
	sep_npcaddf1(string) readonly: "------------------------------------"
	
	full_investigate(choices) : "Full Investigate [-?]" : 0 : "[VTMB] Unknown yet..." =
	[
		0 : "No"
		1 : "Yes"
	]
	use_interesting(choices) : "Use Interesting Places" : 0 : "Make NPC to use Interesting Places' features. \nThis and the interesting groups work fine if there are info_nodes in the area of the interesting places." =
	[
		0 : "No"
		1 : "Yes"
	]
	interesting_place_groups(choices) : "Interesting Place Groups" : "0" : "[VTMB] Unknown yet. Type numbers of groups dividing with spaces." =
	[
		"0" : "None (0)"
		"1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32" : "All (1-32)"
	]
	soundgroup(choices) : "Sound Group" : : "NPC Sound group. \n\nThe group of sounds relative to 'sound/character/*' that specifies base NPC action sounds. See 'vdata/system/sndscheme_char.txt' for more details." = 
	[
		"-" : "- Both -"
		"" : "Default"
		"Asian" : "Asian"
		"Blue_Blood" : "Blue_Blood"
		"Bum" : "Bum"
		"Bum/Sick_Bum" : "Bum/Sick_Bum"
		"Citizen" : "Citizen"
		"Patron_Club" : "Patron_Club"
		"Unique" : "Unique"
		"-" : ""
		"-" : "- Male -"
		"Al" : "Al"
		"Bum/Old_Bum_Overpass" : "Bum/Old_Bum_Overpass"
		"Citizen/Office Person 2" : "Citizen/Office Person 2"
		"Citizen_2" : "Citizen_2"
		"Citizen_Chinatown" : "Citizen_Chinatown"
		"Citizen_Goth" : "Citizen_Goth"
		"Giovanni_Guest_2" : "Giovanni_Guest_2"
		"Guard" : "Guard"
		"Italian_Accent" : "Italian_Accent"
		"Museum_Guard" : "Museum_Guard"
		"Officer" : "Officer"
		"Officer/Dane_officer" : "Officer/Dane_officer"
		"Officer/Officer_2" : "Officer/Officer_2"
		"Officer/Pier_Cop" : "Officer/Pier_Cop"
		"Patron_Club/Male_Dancer_1" : "Patron_Club/Male_Dancer_1"
		"Patron_Club/Male_Dancer_2" : "Patron_Club/Male_Dancer_2"
		"Sabbat_Thug" : "Sabbat_Thug"
		"Sheriff_Manbat" : "Sheriff_Manbat"
		"Stalker" : "Stalker"
		"Young_Thug" : "Young_Thug"
		"Unique/Ash_Lookalike" : "Unique/Ash_Lookalike"
		"Unique/Brian" : "Unique/Brian"
		"Unique/Bum" : "Unique/Bum"
		"Unique/Bum_Disease_female" : "Unique/Bum_Disease_female"
		"Unique/Bum_Disease_male" : "Unique/Bum_Disease_male"
		"Unique/Cal" : "Unique/Cal"
		"Unique/CDC floats" : "Unique/CDC floats"
		"Unique/Chunk" : "Unique/Chunk"
		"Unique/Chunk2" : "Unique/Chunk2"
		"Unique/Clinic_Guard" : "Unique/Clinic_Guard"
		"Unique/Copper" : "Unique/Copper"
		"Unique/Dennis" : "Unique/Dennis"
		"Unique/E" : "Unique/E"
		"Unique/Gary" : "Unique/Gary"
		"Unique/Gimble" : "Unique/Gimble"
		"Unique/Ji" : "Unique/Ji"
		"Unique/Johansen" : "Unique/Johansen"
		"Unique/Johnny" : "Unique/Johnny"
		"Unique/Julius" : "Unique/Julius"
		"Unique/Larry" : "Unique/Larry"
		"Unique/LuFang" : "Unique/LuFang"
		"Unique/Malcolm" : "Unique/Malcolm"
		"Unique/McFly" : "Unique/McFly"
		"Unique/Mercurio" : "Unique/Mercurio"
		"Unique/Milligan" : "Unique/Milligan"
		"Unique/Phil" : "Unique/Phil"
		"Unique/Ricky" : "Unique/Ricky"
		"Unique/Slater" : "Unique/Slater"
		"Unique/SmBlueBlood" : "Unique/SmBlueBlood"
		"Unique/Tin_Can_Bill" : "Unique/Tin_Can_Bill"
		"Unique/Tommy" : "Unique/Tommy"
		"Unique/Tongie" : "Unique/Tongie"
		"Unique/Trip" : "Unique/Trip"
		"Unique/Tseng" : "Unique/Tseng"
		"Unique/Vandal" : "Unique/Vandal"
		"Unique/Victor" : "Unique/Victor"
		"-" : ""
		"-" : "- Female -"
		"Blue_Blood/Giovanni Guest" : "Blue_Blood/Giovanni Guest"
		"Blue_Blood/Giovanni Guest 2" : "Blue_Blood/Giovanni Guest 2"
		"Citizen/Citizen_Hollywood" : "Citizen/Citizen_Hollywood"
		"Croucher" : "Croucher"
		"Hooker1" : "Hooker1"
		"Hooker2" : "Hooker2"
		"Hooker3" : "Hooker3"
		"Patron_Bar" : "Patron_Bar"
		"Patron_Bar/Vesuvius" : "Patron_Bar/Vesuvius"
		"Patron_Club/Confession" : "Patron_Club/Confession"
		"Patron_Club/Glaze" : "Patron_Club/Glaze"
		"Patron_Club/Female_Dancer_1" : "Patron_Club/Female_Dancer_1"
		"Patron_Club/Female_Dancer_2" : "Patron_Club/Female_Dancer_2"
		"Patron_Club/Female_Dancer_3" : "Patron_Club/Female_Dancer_3"
		"Patron_Diner" : "Patron_Diner"
		"Unique/Damsel" : "Unique/Damsel"
		"Unique/Danielle" : "Unique/Danielle"
		"Unique/Doris" : "Unique/Doris"
		"Unique/Hannah" : "Unique/Hannah"
		"Unique/Hostess" : "Unique/Hostess"
		"Unique/Hostess2" : "Unique/Hostess2"
		"Unique/Jeanette" : "Unique/Jeanette"
		"Unique/Jezebel" : "Unique/Jezebel"
		"Unique/Kiki" : "Unique/Kiki"
		"Unique/Lily" : "Unique/Lily"
		"Unique/Maria" : "Unique/Maria"
		"Unique/Misti" : "Unique/Misti"
		"Unique/Nurse" : "Unique/Nurse"
		"Unique/Therese" : "Unique/Therese"
		"Unique/Venus" : "Unique/Venus"
		"Unique/Yukie" : "Unique/Yukie"
	]
	team_name(string) : "Team Name" : : "[VTMB] Unknown yet..."
	ignore_detected_attack(choices) : "Ignore Detected Attack" : 0 : "Ignores when detects attack from other side." =
	[
		0 : "No"
		1 : "Yes"
	]

	sep_npcaddf2(string) readonly: "------------------------------------"

	no_alert_state(choices) : "No-Alert State" : 0 : "States of NPC when no alert goings on." =
	[
		0 : "State 0 (unknown yet)"
		1 : "State 1 (unknown yet)"
	]
	bright_route_penalty(integer) : "Bright Route Penalty [-?]" : 0 : "[VTMB] Unknown yet..."
	stay_entrenched(choices) : "Stay Entrenched [-?]" : 0 : "[VTMB] Unknown yet..." =
	[
		0 : "No"
		1 : "Yes"
	]
	teleport_move_timer(integer) : "Teleport Move Timer [-?]" : 0 : "[VTMB] Unknown yet..."
	floatfreq(integer) : "Floats Frequency" : 2 : "[VTMB] Determines how often this NPC will play float sound lines when player's near him. Higher values will make floats play more often, '0' disables them fully."
]






//===================================================================================================================
// CLASS: BaseNPCMaker [common]
//===================================================================================================================
// VTMB-adaptation:
//  removed: EnableDisable (analog)
//  removed: some children-io's (new)
//  added: MinPCDistance
//  added: Vtmb-Flags

@BaseClass base(TargetnameRot) iconsprite("editor/npc_maker.vmt") color(0 0 255) = BaseNPCMaker
[
	spawnflags(Flags) = 
	[
		// Only in npc_maker
		16 : "Fade Corpse" : 0
		32 : "Infinite Children" : 0
		64 : "Do Not Drop" : 0
		128 : "Don't Spawn While Visible" : 0
	]

	MaxNPCCount(integer) : "Num. of NPCs" : 4 : "Number of NPCs that will spawn before this spawner is exhausted."
	SpawnFrequency(string) : "Frequency" : "5" : "How often (in seconds) a new NPC will be spawned. If set to -1, a new NPC will be made when the last NPC dies."
	MaxLiveChildren(integer) : "Max Live NPCs" : 5 : "Maximum number of live children allowed at any one time (new ones will not be made until one dies). If set to -1, no limit is applied."
	
	// Outputs
	output OnSpawnNPC(string) : "Fired when an NPC is spawned. The activator is the NPC, and the string is the name of the NPC." 
	output OnAllSpawned(void) : "Fired when the spawned is exhausted (all children have been spawned)."
	output OnAllSpawnedDead(void) : "Fired when the spawner is exhausted (all children have been spawned) and all spawned children have died."

	// Inputs
	input Spawn(void) : "Spawns an NPC."
	input Toggle(void) : "Toggles the spawner enabled/disabled state."
	input Enable(void) : "Enables the spawner."
	input Disable(void) : "Disables the spawner."
	input SetMaxChildren(integer) : "Sets the maximum number of children for this spawner."

// vtmb ----
	MinPCDistance(integer) : "Minimum Player Distance [-?]" : 0 : "[VTMB] Unknown yet..."

	sep_bnpcmk1(string) readonly: "------------------------------------"

	Flag_Fade(choices) : "Flag: Fade" : 0 : "Applies the selected property." = [ 0 : "False" 1 : "True" ]
	Flag_InfChild(choices) : "Flag: Infinity Child" : 0 : "Applies the selected property." = [ 0 : "False" 1 : "True" ]
	Flag_IsGlobalSpawner(choices) : "Flag: Is Global Spawner" : 0 : "Applies the selected property." = [ 0 : "False" 1 : "True" ]
	Flag_NoDrop(choices) : "Flag: No Drop" : 0 : "Applies the selected property." = [ 0 : "False" 1 : "True" ]
	Flag_NPCClip(choices) : "Flag: NPC-Clip" : 0 : "Applies the selected property." = [ 0 : "False" 1 : "True" ]
	Flag_StartDisabled(choices) : "Flag: Start Disabled" : 0 : "Applies the selected property." = [ 0 : "False" 1 : "True" ]
	Flag_UseGlobalSpawnerSettings(choices) : "Flag: Use Global Spawner Settings" : 0 : "Applies the selected property." = [ 0 : "False" 1 : "True" ]
	Flag_ViewCone(choices) : "Flag: View Cone" : 0 : "Applies the selected property." = [ 0 : "False" 1 : "True" ]
	Flag_ZombieAIType(choices) : "Flag: Zombie AI Type" : 0 : "Applies the selected property." = 
	[ 
		0 : "Do not use" 
		1 : "Type 1 (unknown yet)" 
		2 : "Type 2 (unknown yet)" 
		3 : "Type 3 (unknown yet)" 
		4 : "Type 4 (unknown yet)" 
		5 : "Type 5 (unknown yet)" 
		6 : "Type 6 (unknown yet)" 
		7 : "Type 7 (unknown yet)" 
		8 : "Type 8 (unknown yet)" 
	]

	sep_bnpcmk2(string) readonly: "------------------------------------"
]







//===================================================================================================================
// npc_maker [common]
//===================================================================================================================
// VTMB-adaptation:
//  added: vtmb-notes
//  removed: Angles (included)
//  added: base(VBaseNPC,VAddNPCFeats)
//  removed: NPCHintGroup (analog)
//  removed: additionalequipment (included)
//  removed: spawnflags (included)

@PointClass base(BaseNPCMaker,VBaseNPC,VAddNPCFeats) iconsprite("editor/npc_maker.vmt") = npc_maker : 
	"NPC Maker.\n\n"+
	
	"[VTMB] NOTES: Many of the games entities are created dynamically. Most encounters involving combat, the enemies are spawned on the fly based on a template. The pedetrians walking around in the city and the cops... all spawned on the fly.\n\n"+

    "Dynamically spawned NPCs are created by npc_maker. Each maker is associated with an NPC template. Template definitions can be found under the vdata/system directory. You can also type 'vclans' in the console for a list of all templates. Note that most are named 'None'.\n\n"+

    "Templates have a templatename and then a normal name. templatename is required and must be unique, but not a normalname.. vclans only displays normal names.\n"+
	"As you might have guessed from the console command, Template and clan are pretty much the same thing. To tell the npc_maker object what kind of NPC template you want it to make, you set its stattemplate property.\n"+
	"You can override stattemplate values within the local embedded declaration. For example, you would likely set the model and starting equipment locally."
[
	sep_npcmk1(string) readonly: "------------------------------------"

	NPCType(npcclass) : "NPC Type" : "npc_VPedestrian" : "Class name of spawned NPC"
	NPCTargetname(string) : "Children's Name" :  : "Childrens' NPC Name"
	NPCSquadname(string) : "Squad Name" :  : "Childrens' Squad Name"
]




















//*******************************************************************************************************************
//*******************************************************************************************************************
// 
// End of FGD
// 
//*******************************************************************************************************************
//*******************************************************************************************************************

vampire-broken.fgd

//====== Copyright © 2003-2017, Troika Games, Inc. All rights reserved. =======
//
// Purpose: Vampire Bloodlines game definition file (.fgd) 
// Version: 1.2 beta
// Edition: Original VtMB [Broken/NotWorking Entities]
// Written: Psycho-A
//
//=============================================================================


//-------------------------------------------------------------------------------------------------------------------
// NOTE: These are entities found in game code but have broken functionality or disabled.
//-------------------------------------------------------------------------------------------------------------------


//*******************************************************************************************************************
//*******************************************************************************************************************
//
// Environmental Effects
//
//*******************************************************************************************************************
//*******************************************************************************************************************


//====================================================================================================================
// env_dustpuff [common]
//====================================================================================================================

@PointClass base(TargetnameRot,Parentname)
line (
	255 255 255,
	targetname,
	parentname
)
size( -8 -8 -8, 8 8 8 ) = env_dustpuff : 
	"An entity that can emit dust puffs. \nDoesn't work in VtMB."
[
	scale(float) : "Scale" : 8 : "Size of the dust puff."
	speed(float) : "Speed" : 16 : "Speed at which the dust particles should move."

	color(color255) : "Dust color" : "128 128 128"

	// Inputs
	input SpawnDust(void) : "Spawn a dust puff."
]


//====================================================================================================================
// env_fire [common]
//====================================================================================================================

@PointClass base(Targetname,Parentname,EnableDisable)
line (
	255 255 255,
	targetname,
	parentname
)
iconsprite("editor/env_fire") color(0 180 0) = env_fire : 
	"An entity that handles a single flame at its origin. "+
	"The flame causes heat 'damage' to other env_fire entities around it, and will eventually ignite non-flaming env_fire entities nearby, causing the fire to spread. "+
	"\nThis entity have been removed from VtMB. Use env_particle instead."
[
	health(integer) : "Duration" : 30 : "Amount of time the fire will burn."
	firesize(integer) : "Size" : 64 : "Height (in world units) of the flame."
	fireattack(integer) : "Attack" : 4 : "Amount of time the fire takes to grow to full strength."
	firetype(choices) : "Type" : 0 =
	[
		0 : "Natural"
		1 : "Plasma"
	]
	spawnflags(flags) =
	[
		1:	"Infinite Duration" : 0
		2:	"Smokeless" : 0
		4:	"Start On" : 0
		8:	"Start Full" : 0
		16:	"Don't drop" : 0
		32: "No glow" : 0
		128: "Delete when out" : 0
		256: "Start disabled" : 0
	]

	ignitionpoint(float) : "Ignition Point" : 32
	damagescale(float) : "Damage Scale" : "1.0"

	// Inputs
	input Enable(void)				: "Enables input and ignition"
	input Disable(void)				: "Disables input and ignition"
	input StartFire(void)			: "Start the fire"
	input Extinguish(float)			: "Puts out the fire premanently in the number of seconds specified"
	input ExtinguishTemporary(float): "Puts out the fire temporarily in the number of seconds specified"

	// Outputs
	output OnIgnited(void)			: "Fires when the fire is first ignited"
	output OnExtinguished(void)		: "Fires when the fire is fully extinguished"
]


//====================================================================================================================
// env_firesource [common]
//====================================================================================================================

@PointClass base(Targetname,Parentname)
line (
	255 255 255,
	targetname,
	parentname
)
iconsprite("editor/env_firesource") color(255 255 0) sphere(fireradius) = env_firesource : 
	"An entity that provides heat to all nearby env_fire entities. Cannot be extinguished. \nDoesn't work in VtMB."
[
	spawnflags(flags) =
	[
		1:	"Start On" : 0
	]

	fireradius(float) : "Radius" : 128 : "The radius around this entity in which to provide heat."
	firedamage(float) : "Intensity / Damage" : 10 : "Amount of heat 'damage' to apply to env_fire entities within the radius."

	// Inputs
	input Enable(void) : "Enable fire source."
	input Disable(void) : "Disable fire source."
]



//====================================================================================================================
// env_global [common]
//====================================================================================================================

@PointClass base(Targetname) size(-8 -8 -8, 8 8 8) = env_global :
	"An entity to control a game-specific global states. \nDoesn't seems to be working in VtMB."
[
	globalstate(choices) : "Global State to Set" =
	[
		"gordon_precriminal" : "Gordon pre-criminal" 
		"antlion_allied" : "Antlions are player allies" 
		"player_stealth" : "Player in APC is disguised as combine" 
	]

	initialstate(choices) : "Initial State" : 0 =
	[
		0 : "Off"
		1 : "On"
		2 : "Dead"
	]
	spawnflags(flags) =
	[
		1 : "Set Initial State" : 0
	]

	// Inputs
	input TurnOn(void) : "Set state of global to ON"
	input TurnOff(void) : "Set state of global to OFF"
	input Toggle(void) : "Toggles state of global between ON and OFF"
	input Remove(void) : "Set state of global to DEAD"
]



//====================================================================================================================
// env_message [common]
//====================================================================================================================

@PointClass base(Targetname) size(-8 -8 -8, 8 8 8) = env_message : 
	"An entity that draws a text message on player's HUDs. \nDoesn't seems to be working in VtMB."
[
	message(string) : "Message Text"
	spawnflags(flags) =
	[
		1: "Play Once" : 0
		2: "All Clients" : 0
	]
	messagesound(sound) : "Sound Effect" : "" : "When the message is shown, this sound effect will be played, originating from this entity."
	messagevolume(string) : "Volume 0-10" : "10" : "Volume of the sound effect."
	messageattenuation(Choices) : "Sound Radius" : 0 =
	[
		0 : "Small Radius"
		1 : "Medium Radius"
		2 : "Large Radius"
		3 : "Play Everywhere"
	]
	
	// Inputs
	input ShowMessage(void) : "Shows the message and plays the sound."
	
	// Outputs
	output OnShowMessage(void) : "Fired when the message is activated."
]



//====================================================================================================================
// env_sun [common]
//====================================================================================================================
// not changed.

@PointClass base(TargetnameRot) color(255 0 0) = env_sun : 
	"An entity to control & draw a sun effect in the sky. \nDoesn't seems to be working in VtMB."
[
	target(target_destination)	: "Viewer entity" : : "Name of an entity used to determine where the sun is in the skybox. The sun should be lined up on a line from this entity to the env_sun entity."
	rendercolor(color255)		: "Sun Color (R G B)" : "100 80 80"
	NumLayers(integer)			: "Number of layers" : 3
	HorzSize(integer)			: "Horizontal size of sun"	: 120
	VertSize(integer)			: "Vertical size of sun"	: 100

	input TurnOn(void)			: "Enable sun rendering"
	input TurnOff(void)			: "Disable sun rendering"
	input SetColor(color255)	: "Change the sun's color"
]



//====================================================================================================================
// env_wind [common]
//====================================================================================================================

@PointClass base(TargetnameRot) iconsprite("editor/env_wind.vmt") = env_wind : 
	"An entity to control wind in the map. \nDoesn't seems to be working in VtMB."
[
	gustsound(sound) : "Gust Sound Filename" : "" : "Sound to be played to simulate the gusting wind."
	minwind(integer) : "Min normal speed" : 20 : "Minimum speed of the wind while idling."
	maxwind(integer) : "Max normal speed" : 50 : "Maximum speed of the wind while idling."

	mingust(integer) : "Min gust speed" : 100 : "Minimum speed of wind gusts."
	maxgust(integer) : "Max gust speed" : 250 : "Maximum speed of wind gusts."

	mingustdelay(integer) : "Min gust delay" : 10 : "Minimum time delay between random gusts."
	maxgustdelay(integer) : "Max gust delay" : 20 : "Maximum time delay between random gusts."

	gustdirchange(integer) : "Max gust dir change (degrees)" : 20 : "Maximum amount that the wind's direction changes due to a gust."
]



//====================================================================================================================
// gibshooter [common]
//====================================================================================================================

@PointClass base(GibShooterBase) iconsprite("editor/gibshooter.vmt") = gibshooter : 
	"An entity that shoots out gibs. Style of body part depends on language type. \nDoesn't seems to be working in VtMB."
[
]
	


	
	
	
	








//*******************************************************************************************************************
//*******************************************************************************************************************
//
// Function Brushes
//
//*******************************************************************************************************************
//*******************************************************************************************************************


//====================================================================================================================
// func_dustcloud [common]
//====================================================================================================================

@SolidClass base(BModelParticleSpawner) = func_dustcloud : 
	"A brush entity that spawns a translucent dust cloud within its volume. \nDoesn't work in VtMB. Use func_particle instead."
[
	Alpha(integer) : "Alpha" : 30

	SizeMin(string) : "Minimum Particle Size" : 100
	SizeMax(string) : "Maximum Particle Size" : 200
]
	


	
	
	
	








//*******************************************************************************************************************
//*******************************************************************************************************************
//
// Triggers
//
//*******************************************************************************************************************
//*******************************************************************************************************************


//===================================================================================================================
// trigger_wind [common]
//===================================================================================================================

@SolidClass base(ExtTrigger) = trigger_wind : 
	"A trigger volume that pushes physics objects that touch it."
[
	Speed(integer) : "Speed" : 200   : "The baseline for how hard the wind blows."
	SpeedNoise(integer) : "Speed Noise" : 0 : "Noise added to wind speed +/-"
	DirectionNoise(integer) : "Direction Noise" : 10 : "Noise added to wind direction."
	HoldTime(integer) : "Hold Time" : 0 : "Baseline for how long to wait before changing wind."
	HoldNoise(integer) : "Hold Noise" : 0 : "Noise added to how long to wait before changing wind."

	// Inputs
	input SetSpeed(integer) : "Set the baseline for how hard the wind blows."
]











//*******************************************************************************************************************
//*******************************************************************************************************************
//
// Misc Point Entities
//
//*******************************************************************************************************************
//*******************************************************************************************************************


//====================================================================================================================
// info_null [common]
//====================================================================================================================

@PointClass base(Targetname) size(-8 -8 -8, 8 8 8) = info_null : 
	"An entity that's immediately removed on spawning. \nDoesn't any affect in VtMB."
[
]


//===================================================================================================================
// vgui_screen [common]
//===================================================================================================================
// VTMB-adaptation:
//  removed: Angles (included)

@BaseClass base(TargetnameRot,Parentname) = vgui_screen_base
[
	panelname(string) : "Panel Name"
	overlaymaterial(material) : "Overlay Material" : "" : "Name of a material to overlay over the top of the VGUI screen. NOTE: This material must write Z for the VGUI screen to work."
	width(integer) : "Panel Width in World" : 32 : "Width of the panel in units."
	height(integer) : "Panel Height in World" : 32 : "Height of the panel in units."

	// Inputs
	input SetActive(void) : "Make the vgui screen visible."
	input SetInactive(void) : "Make the vgui screen invisible."
]

@PointClass base(vgui_screen_base)
line (
	255 255 255,
	targetname,
	parentname
)
size(-4 -4 -4, 4 4 4) = vgui_screen : 
	"A VGUI screen. Useful for in-world monitors. \nEntity is broken in VtMB game."
[
]












//*******************************************************************************************************************
//*******************************************************************************************************************
// 
// End of FGD
// 
//*******************************************************************************************************************
//*******************************************************************************************************************