Sie sind auf Seite 1von 440

_________________________________________

Vampire the Masquerade Bloodlines(PC)

Mod Development Guide

_________________________________________

December 26, 2008


Version 1.15

Written by: Dheu


Email: Dheuster@gmail.com
Use subject: BloodlinesDevGuide 1.15

Living Document: (read before emailing anyone)

This is a living document.

http://docs.google.com/Doc?id=dhgs89mq_12hbmgkpd9 <Doc?
id=dhgs89mq_12hbmgkpd9>

If you see any mistakes, or have anything that you want to


add, email
me and I will add you to the update list. (You will need a
google
account)

If you make additions/corrections, be certain to give yourself


credit in the Contributing Authors section at the end of the
guide.

______________________________________Notes_____________________________
_______

This Tutorial\FAQ was also published at:

http://www.gamefaqs.com/
http://www.gamewinners.com/
http://www.cheatcc.com/

Official 1.2 Patch : vtmb_1_2.exe 15.2 MB (15,973,576 bytes)

http://www.vampirebloodlines.com/patch/

This Document looks best in a fixed-width font, such as Courier New.

Vampire The Masquerade Bloodlines is Copyright © 2004 by Activision

I am not affiliated with Activision or anyone who had anything to do


with the
creation of this game. This Document may be posted on any site. You may
not
charge for, or in any way profit from this Document.

------------------------------------------------------------------------
-------
Table of Contents:
------------------------------------------------------------------------
-------

I. Basics
I.1 Game Architecture
I.2 Enabling the Game Console
I.3 Standard Tools
I.4 VPK Files
II. Getting Started
II.1 Creating a baseline
II.2 Unofficial Patches
II.3 Uncompressing Game Files\Change Management
III. Introduction to Python
III.1 The __main__ Object
III.2 Executing Python commands from Console.
III.3 Executing Console commands from Python
III.4 Entities
III.5 Creating Entities with Python
III.6 Events
III.7 Input\Output
III.8 Bringing it all Together
III.9 Known Bugs
IV. Dialogs
IV.1 Dialog Basics
IV.2 DLG File Format
IV.3 Special Conditions and Colored Responses
IV.4 Dialog Engine Commands and Flow Control
IV.5 Considerations and Scripting
IV.6 Dialog Engine Bugs
V. Dialog Audio Synchronization
V.1 DLG, VCD and LIP Files
V.2 VCD Internals
V.3 LIP Internals
V.4 Creating Custom Audio
VI. Animating NPCs with Python
VI.1 Skeletal Animations
VI.2 Facial Expressions
VI.3 Dispositions
VI.4 Schedules and ScriptedDisciplines
VI.5 Gestures and interesting_place
VI.6 scripted_sequence and logic_choreographed_scene
VI.7 Creating new Animations
VII. Editing Models/Skins
VII.1 Basics
VII.2 MDL File Details
VII.3 Changing the Default Player Models
VII.4 Working with downloaded Skins
VII.5 Editing Skins yourself
VII.6 Deforming Models yourself
VIII. Cameras and Cut scenes
IX. Custom Items
IX.1 Item Slots
IX.2 Item File Details
IX.3 Item Naming and Categories
IX.4 Discovering unused Item Slots
IX.5 Freeing up Item Slots
IX.6 Capturing Weapon usage Events
X. Miscellaneous
XI. Legalities
XII. Common Scenarios
XIII. Example Scripts

Frequently Asked Questions

VTMB Links

Appendices

A. Entity Classes
B. Map Names
C. Item Name Summary
D. Game States

External

E. Common Models : http://docs.google.com/Doc?


id=dhgs89mq_3gtwn2chb <Doc?id=dhgs89mq_3gtwn2chb>
F. VCLAN Values : http://docs.google.com/Doc?
id=dhgs89mq_4fgq4nrfg <Doc?id=dhgs89mq_4fgq4nrfg>
G Entity Details : http://docs.google.com/Doc?
id=dhgs89mq_6fmx3cxgt <Doc?id=dhgs89mq_6fmx3cxgt>
H Animations : http://docs.google.com/Doc?
id=dhgs89mq_7dbfdbwdh <Doc?id=dhgs89mq_7dbfdbwdh>
I Gestures : http://docs.google.com/Doc?
id=dhgs89mq_8fpssv86r <Doc?id=dhgs89mq_8fpssv86r>
J Console Vars : http://docs.google.com/Doc?
id=dhgs89mq_10cfs83dqp <Doc?id=dhgs89mq_10cfs83dqp>

Contributing Authors

Final Words....

========================================================================
=======
I. > > > > Basics
========================================================================
=======

These notes make certain assumptions about the person reading them. In
short,
I assume the reader is a programmer of some ilk, who either has python
experience or has enough general programming experience that you can
pick up
Python from a good tutorial in about 30 min.

There are many different aspects to modding a game. A mod may


introduce a new
capability, new dialog, new quests. For some, modding is about
creating and
incorporating new models and special effects.

Unfortunately, there are not currently any programs or utilities that


allow
one to import new models into VTMB. The mod community has only been
able to
re-skin and deform existing models. This limitation is frustrating at
best.

This tutorial focuses on modding VTMB programatically. Advanced


Deforming
and Re-skinning of models is outside the scope of this document. I
will only
touch on the basics and give you enough to get your started.

------------------------------------------------------------------------
-------
I.1 > > > > Game Architecture
------------------------------------------------------------------------
-------

The game is composed of 5 Major parts:

1) The game engine:

You generally don't touch this part. It handles rendering


the 3D environment, managing input, output and events. VTMB
uses an early prototype version of the Valve Source Engine for
rendering and event management. (Basically fully functional
except Enemy AI).

2) Map files:

Map files (.bsp) serve 2 purposes. They define the visual


environment
and also provide an initial set of objects within those
environments.
Embedded objects include characters, trigger zones, sound
emitters,
invisible cameras and patrol path nodes. (If you have experience
with
Never Winter Nights editing, some of this may sound familiar.)

For those that are new to this, I will simply say that there is a
lot
of invisible objects hidden on maps that you can't see that help
make things easier for the game engine.

3) Models:

Model files (.mdl) provide the look and feel of objects when
rendered
within the Map. These are read in at run time and injected into
the map.
(maps contain "pointers" to these models, but not the model data
itself.)

MDL files contain vertices, a skeleton, animation data and a link


to
the texture files to place on the model. Some MDL files contain
only
skeletal animation data. This is discussed more below.

4) Sounds:

Ever watch a movie with the sound turned off? Gets real boring
real
fast. On the other hand, you can take a crappy looking 16 color
sprite
and give it a human voice and it adds a whole new dimension of
interaction. VTMB uses wav files for background music and
ambient
sounds. It uses mp3s for dialogs.

5) Scripts

A good scripting language is what separates RPGs from Action


games.
Scripts allow developers to compose cut scenes, conversations,
remember
choices and edit the environment based on user actions. The
scripting
language for bloodlines is python, and it is the glue that holds
the
game together.

------------------------------------------------------------------------
-------
I.2 > > > > Enabling the Game Console
------------------------------------------------------------------------
-------

Since VTMB doesn't come with a slick Map Editor like Neverwinter
Nights,
modding the game will involve a lot of work within the game itself.
For
example, you may need to scout out locations, characters and animation
sequences for re-use. To this end, you will need the console.

To Enable the console, Right click the icon you use to start the game.
Go to
"Properties" and add -console to the target. The new launch target
should
look something like:

"C:\Program Files\Activision\Vampire - Bloodlines\vampire.exe"


-console

STEAM USERS : Right Click VTMB link in Steam, select Properties and
the Set launch options. Add "-console" (without quotes)
to the input box. You may have problems if running
VISTA.

Now when you start the game, the console will appear. Hit the tilde
(~) to
Hide/unhide the console.
The console comes with hundreds of commands to help developers and
players
alike. Simply hit a letter to see all commands that start with that
letter.
Type "HELP <COMMAND>" to see more info on a specific command. A full
listing of commands and variables is included in attached Appendix J.

I found the following commands invaluable during the development of my


MOD.

notarget [0/1]

Enemies do not see you (invisibility)

draw_hud 0:

Removes the hud.

noclip [0/1]

Walk through walls. More importantly, disables the activation


of
triggers.

cl_showfps 1:

Shows your frame rate (important when testing models)

cl_showpos 1:

Shows your position and map name.

picker:

Quite possibly the most useful console command the game has to
offer.
Displays a bounding box around any entities you approach which
show
additional entity information such as its base class and
instance
name.

maps

Shows list of game maps

map <map name> (no bsp)

Teleport to a map. Be warned that scripts often assume a


certain game
state, so if you teleport somewhere before you would normally
have
access to it, things may break. Even starting a conversation
may
cause the game to crash.

report_enties:
logs a list of all entity classes currently in memory to the
console.
Unfortunately, it doesn't tell you the instance name. ( you
will need
to use some python for that)

ent_info:

give the name of an entity class (typically found using the


previous
command), this function will list the entities "inputs" and
"outputs". The inputs translate to functions that you can call
on
the entity. Some entities inherit functions from their
parents. In
these situations, not all functions are seen. But it's a good
starting point.

The outputs translate to events that the entity can detect (and
then re-throw). You can only detect events with embedded
entities.

See Appendix G for a full listing of entity functions and


events

ent_dump <instance_name>:

Given the name of an entity, prints all properties and


attributes
associated with it to console. Sometimes you have to name the
instance first.

> FindPlayer().SetName("pc")
> ent_dump pc

createplayer :

Even though you may think you are starting the game over, you
are in
fact only rebuilding your own character. Once creation process
is
over, the game resumes in your last location. You will lose
all
attributes an XP.

vstat get "attribute" value

console method of increasing stats. Negative values are


ignored.

Less useful, but still interesting:

ai_show_interesting

Displays "interesting places" as phone-booth sized cubes


scattered
about the map. These are like magnets and pull NPCs toward
them. When
the NPC enters, they perform an action associated with the
booth. The
booths have info overlaid; typically the default action that
an NPC
will perform when they enter the "booth".

cl_entityreport 1

Displays a list of all entity instances. Unfortunately, most


of the
info is C++ related: C classes and vector data that we can't
touch
from python.

cl_pdump #

Display additional entity info on screen. Pass in the entity


number
retrieved using either picker or cl_entityreport. set to -1 to
deactivate.

For a full list of commands use : cmdlist


For a list of both variables and commands use : cvarlist

The console is connected directly to the game engine. If a command is


entered
that the engine does not recognize, it relays the command to the
python
shell. This means you can access python objects and methods from
console. As
you learn more about python, you will be able to do even more from the
console. However trying to call python functions immediately from
autoexec.cfg or user.cfg wont work as the shell isn't initialized when
those
modules load. You can however define aliases and bind keys that
will execute python functions at a later time.

FREEZE/LOCKING ISSUES:

Using the console outside of the game menus can make the game
unstable.
Specifically, displaying the console and then closing by clicking
on the
[X] in the top right corner of the console may leave the mouse
pointer
disconnected from the target hair. Re-Eable/Hide console using the
tilda
key to fix.

If you begin to type a command without finishing and then close


console,
it may freeze. Freezing/Locking is mostly unpredictable.

If this happens to you; open the console. Hit enter a few times
and then
hide. if the game is still frozen, hit ESC to go to the load/save
menu. Returning to the game from the load\save menu always
unfreezes the
game. I have also been told that entering "chareditor" into the
console
window will un-pause/unlock the game. (Especially usefull for non-
English
keyboards).

If you wish to avoid the possibility of Locking/Freezing, simply


make a
habit of going to the game menu before activating console. If you
dont
like this, you can also mitigate the chance by always hitting
enter a
few times before closing the console. If you have an English
keyboard,
the best practice is to always open/close the console window using
the
tilda (character = "~") key instead of the [X].

------------------------------------------------------------------------
-------
I.3 > > > > Standard Tools
------------------------------------------------------------------------
-------

VPKTool :

=== THE === modding tool for VTMB. The most recent release is
version
3.9a and you can access it here:

www.strategyinformer.com/pc/vampirethemasqueradebloodlines/tool/7142.htm
l

or from Turfster's website:

http://turfster.cjb.net/

** It is also included with all of WESP's patches

VPKTool is really all you need for basic modding. However there
are other
tools that help with specific aspects.

Python 2.1.2

The scripting language that the original game used. You can
download the
original shell here. It may also have been distributed with this
Dev
Guide.

http://www.python.org/ftp/python/2.1.2/
The main thing here is the IDLE editor, which provides indention
and
Color coding support.

DialogEditor

DialogEditor is handy for visualizing character dialogs.


Unfortunately
it doesn't allow you to edit conditions or actions, making it
almost
useless for creating dialogs. But if your goal is to update
existing
lines, Or review spelling in new text that you did by hand, then
it is a
godsend.

Bear in mind when NPCs talk, they are playing pre-recorded audio.
So
While you can change player responses, you can't change what the
NPCs
say. There is room for limited ADDITIONS and new material).

ZVTool

A set of Python scripts by ZylonBane that allow you to grab


objects and
move them around within a map. More importantly, it has the
ability to
save off all the map data. Basically the scripts allow runtime
editing of
the maps. Very cool if your mod will involve editing the maps.

ZVTool is included with Wesp's Unofficial Patches.

lipedit.py

http://docs.google.com/View?docID=dhgs89mq_16f265qwfk

A python script that you can install and compile that aids in
creating
lip animations for voice acting if you choose to create new spoken
audio
for your mod. See "V.3 LIP Internals" below for more detail and a
usage
example.

Other

If you want to actually deform VTMB models or edit Skins, you will
need
additional software. Gimp is the best free image editing program
that
I know of for updating textures. As for model deformation,
Blender3D is
really your only choice as it is the only program that exists with
a
VTMB mdl import plugin. (It is convenient that it is free).
GIMP:

http://www.gimp.org/

Blender:

http://www.blender.org/

BlenderImportExport VTMB MDL plugin (version 2.42):

http://paine.planetvampire.gamespy.com/?
action=files&op=cat&id=15

PackfileExplorer 3.9 - Needed to support BlenderImportExport


plugin.

http://paine.planetvampire.gamespy.com/?
action=files&op=cat&id=22

------------------------------------------------------------------------
-------
I.4 > > > > VPK Files
------------------------------------------------------------------------
-------

If you look inside the Bloodlines installation directory, you will


notice
some large files with the extension .vpk. All the resources for the
game are
compressed within these files. This serves 3 purposes:

1) Faster Loading:

Easier to ask the OS to retrieve 1 big file than 300 small files.

2) Smaller Footprint:

Hey, who wants the game to take up another 5 gigs?

3) User Overrides:

When a user extracts a resource from the .vpk file and places it
within
the Vampires installation directory, (directory structure intact),
the
game engine will load the users uncompress version on startup
instead of
the one in the VPK file. While this design allows user mods, the
downside
is that it only allows 1 User Mod to be installed at a time.

========================================================================
=======
II > > > > Getting Started
========================================================================
=======

There are some pre-emptive steps that need to be taken care of before
you can
really begin modding. At a bare minimum, you must uncompress the files
into a
state in which you can make changes to them. This may be all you need
if you
are just playing around and feeling out what you can do. However, if
you wish
to share your mod with other people, you will eventually need to keep
track
of your changes, build a zip file for distribution and provide
instructions
for installing it.

If you are a forward thinker, you can take some steps now to make the
distribution and installation instructions easier to create and
manage.

------------------------------------------------------------------------
-------
II.1 > > > > Creating a baseline
------------------------------------------------------------------------
-------

A baseline is a snapshot of all the files in your game folder BEFORE


you
start editing them. If a user has a different version of the game than
the
one you build your mod upon, they may break their game if they install
your
mod. For this reason, Most mod developers will provide very specific
instructions for installing their mod. These instructions generally go
something like:

1) Install a fresh copy of VTMB (you MUST uninstall if it exists)


2) Install the Official 1.2 patch from <website> (Steam Users
Ignore)
3) Extract zip file to <installation dir>/Vampire

The official 1.2 patch is supported by the Distributor, so despite


being
an external dependency (not included in your mod distribution), it is
relatively safe to assume it will be around for many years.

Unfortunately, Troika went out of business shortly after releasing


VTMB so
there is no expectation that new official patches will be release.
Luckily,
the Official 1.2 patch is still very much playable. A few misspelled
words, a
few side quests that may not open up if you don't do things in the
right
order. However, the main quest is solid.

That said, if you search around the Internet you will likely see Fan
supported "Unofficial Patches". Read below for more info:

------------------------------------------------------------------------
-------
II.2 > > > > Unofficial Patches
------------------------------------------------------------------------
-------

Unofficial patches are user built mods (much like what you may be
endeavoring
to create). Some simply fix scripting and timing issues with the
original
game. Some re-introduce content that wasn't linked into the original
game.
Some of the more advanced patches actually update the game engine
and/or add
support for higher resolutions and textures.

Problems with Unofficial Patches:

- Unofficial patches are NOT supported by a distributor. They are


supported
by an every day guy like yourself. Unlike companies, human beings
are
fickle. Relying on someone else's work creates a high-risk external
dependency. Will the patch still be around when you are done? You
must
think forward. Not just weeks and months, but years into the future.

- There is more than 1 mod out there with the term "Patch" in it. If
you tell
someone to download an unofficial "patch", you must also be certain
to
specify the AUTHOR and hope users get the right one. The safest bet
is to
use an actual url and hope the site is still up in 12 months.

- Some Unofficial Patches come in the form of an installable


executable. It
is dangerous to ask users to install an executable, period. Taking
the
risk yourself is one thing, asking someone else to do the same is
another.

- The more installation requirements you place on users, the less


likely
someone is to take the time out to install your mod.

Most of the issues above can be solved through MOD EXTENSION:

Basically, you use the 1.2 patch as your baseline, but then install
an
unofficial patch/mod on top of your baseline, keeping track of all
the
files it installs/touches. When you package up your mod, you include
the
patch files as part of your distribution. By distributing the patch
with
your mod, you remove the risk of your baseline disappearing and
decrease
the work required by the user.

If you DISTRIBUTE someone else's work with yours, you should ask for
permission. Furthermore, you should make it clear when you ask for
permission that your mod will likely introduce modifications to
their
patch.

My recommendation:

I advise checking out some of the Unofficial patches. You want to


avoid
requiring users to install ANYTHING other than the official patches
and
your mod. As such, you are looking for permission to include the
desired
patch in your mod's distribution. If you can't find an author
willing to
grant permission. Then use the Official 1.2 patch.

Before I get swamped with emails, I personally used Wesp's 5.6


"Basic"
patch as Wesp kindly granted permission to distribute the patch
contents
with my mod.

http://www.patches-scrolls.de/vampire_bloodlines.php

Note that his permission was not granted for you and your mod. If
you wish
to use an unofficial patch, you must contact the author.

NOTES:

You CAN and SHOULD install this game twice on the same computer. To
do so,
simply install the game (and any patches), rename the directory and
then
use the games uninstaller. Now install again. You will be able to
run
both copies independently. (If you are a steam user, you may need to
make
a dos based batch script to rename the base directory so that the
version
you wish to run gets executed.)

------------------------------------------------------------------------
-------
II.3 > > > > Uncompressing Game Files\Change Management
------------------------------------------------------------------------
-------

In the introduction to this section, we discussed the concept of


change
management: keeping track of what you change now so that you can
create a
distribution later.

You can approach change management in one of two ways

- Install the game and manually keep track of the files that you edit

Typical strategy for single man teams making "small" mods that
don't
touch many files. Unfortunately, most people don't know how many
files
they will be touching when they begin development.

- Set up software to track the changes for you.

With 76,000 support files, this is recommended for anyone planning


on
making SUBSTANTIAL changes to the game. It is also a must if you
plan
on sharing development tasks with other people.

Unfortunately, setting up software change management can take up


to 3
hours even with my step by step instructions. If you are unsure,
I recommend installing 2 copies of the game and START by using
manual change management.

A) Manual change management

1) Install a FRESH COPY of VTMB


- Yes, you should uninstall first if it is already installed.
- DO NOT run the game after install

2) Install the Official 1.2 Patch


- Go to http://www.vampirebloodlines.com/patch/
- Download latest Patch (1.2)
- Install, use defaults
- DO NOT run the game after install

You don't need to keep track of changes made by the 1.2 patch,
but just for your general information and amusement, the 1.2
patch updates the following files:

/bin/engine.dll
/Vampire/python/vamputil.py
/Vampire/python/warrens/warrens.py
/Vampire/dlls/vampire.dll
/Vampire/cl_dlls/client.dll

It also adds the following vpk files:

/Vampire/pack102.vpk
- Empty

/Vampire/pack103.vpk
- dlg\Hollywood\isaac.dlg
- dlg\main characters\regent.dlg
- dlg\santa monica\e.dlg
- vdata\hackerterminals\haven_pc.txt
- vdata\hackerterminals\shrekhub2_terminal.txt
- vdata\system\infobartypes.txt
- vdata\system\strings.txt

3) Uncompress VPK files


- Run VPKTool
- Goto VPK Extractor Tab
- Check "0 length wav fix", open
"<install_dir>\Vampire\pack000.vpk"
- Right Click -> Select All
- Right Click -> Extract
- Repeat extraction for all VPK files IN ORDER from smallest to
largest.
ORDER IS IMPORTANT! Some files will report errors, don't worry.

4) Remove Compiled Python files (.pyc)

Python source code is stored in ".pk" files. When a pk file is


loaded by
the game engine, it automatically compiles it into a .pyc file.
The game
engine knows to do this based on the time stamp of the files. If
the PK
file is newer than the PYC file, then the PYC is out of date and
needs
to be recompiled.

The original VPK files don't contain any .py scripts, but they DO
contain .pyc files. The 1.2 Patch installs .pk files, but not
pyc. As a result, you have a mix match: 1.2 pk files and 1.0
pyc files. The issue is that the pyc files are 1.0, but have a
newer timestamp, therefore the game engine will not compile the
fixes.

If I have lost you, don't worry about it. To resolve this mix up,
we
simply delete all .pyc files under the Vampire/python
subdirectory

5) [optional] Install Unofficial Patch (that you have permission to


use)

- Note, whether it came as a zip or an exe, keep a copy of the


original
patch around for later reference.

6) [optional] Extract Metadata From Map(bsp) : 3-4 hours


To add entities and other items to maps, you will need to edit
the map
data. This is done by opening a map using VPK Tool, extracting
its data (in text form), changing it and then writing it back.

If you extract the text data from all the maps into text
versions of
the maps upfront, you can search the data for examples of how
to set
up entities/ camera shots, event handlers etc...

There are a lot of maps and it takes VPKTool a while to extract


the
data. So even streamlined, this can take 3 to 4 hours.

To streamline the process, I have included a directory called


meta
with this guide that contains all the map names with the
extension
.txt. Copy the meta directory to your Vampire/maps directory.

Whether you use my included files or make them yourself, once


you
have a directory of mirrored empty text files, use VPK Tool to
open up the binary versions (in the parent directory) one at a
time,
copying the contents to the text version under meta.

If you don't have the patience, you don't have to do this step
right
now. You can extract/save off to the meta directory AS NEEDED.

B) Setting up Software Change Management

1) Install tortoiseSVN
- Go to http://tortoisesvn.tigris.org/
- Download correct version
- Install, use defaults
- Restart Computer

2) Create Repository
- Open Windows Explorer
- Create a new folder and name it. For example: C:\svnrepo (Drive
should
have at least 10 Gigs of free space)
- Right-click on the newly created folder and select:
TortoiseSVN -> Create repository here...
- Choose a repo type. I used native. Berkeley wont work over a
Network
drive if you plan on splitting up development tasks with other
team
members later.

A repository is then created inside the new folder. DO NOT EDIT


THOSE
FILES YOUSELF!

3) Install a FRESH COPY of VTMB


- Yes, you should uninstall first if it is already installed.
- DO NOT run the game after install

4) Install 1.2 Official Patch


- Go to http://www.vampirebloodlines.com/patch/
- Download latest Patch (1.2)
- Install, use defaults
- DO NOT run the game after install

5) Uncompress VPK files


- Run VPKTool
- Goto VPK Extractor Tab
- Check "0 length wav fix", open
"<install_dir>\Vampire\pack000.vpk"
- Right Click -> Select All
- Right Click -> Extract
- Repeat extraction for all VPK files IN ORDER from smallest to
largest.
ORDER IS IMPORTANT! Some files will report errors, don't worry.

6) Remove Compiled Python scripts


- Traverse <install_dir>/Vampire/python directories and DELETE
any .pyc
files. (pyc = compiled python files) See Manual Version Control
step 4
above if you would like to see explanation

7) Import the VTMB directory into the Repository:


- Using Explorer, browser to C:\Program Files\Activision (or
equivalent)
- Right Click "Vampire – Bloodlines" and select: TortoiseSVN ->
Import
- Use the browse button [...] to select the REPO :
(file:///C:/svnrepo)
- Take a nap or something. Import takes about 1.5 hours.

8) Check Out the Code Base:


- Right Click "Vampire – Bloodlines" and DELETE it.
- Right Click the C:\Program Files\Activision
- Select "SVN checkout..."
- Update Checkout Directory :
C:\Program Files\Activision\Vampire - Bloodlines
- It will begin the checkout process. Find something else to do
for 1.5
hours.

9) [optional] Install Unofficial Patch (that you have permission to


use)

- Note, whether it came as a zip or an exe, keep a copy of the


original
patch around for later reference.
- If you install an unofficial patch, you need to commit the
changes
after it is installed. Commit is like telling the computer to
take a
"snapshot" of the directory. You can restore to any snapshot at
a
later time (or compare what has changed)
- Revisit the installation directory (C:\Program
Files\Activision)
- You should see an explanation point icon over "Vampire -
Bloodlines"
(This means changes have been detected).
- Right Click "Vampire – Bloodlines", Select:
Tortoise SVN -> Check For Modifications. (Depending on the
patch it
may take while.)
- Click on the "Text Status" Table Header to re-order by that.
- Anything marked "non-versioned" is new and has been ADDED by
the
patch.
- Use SHIFT_CLICK to highlight all non-versioned items. Right
click your
hi-lighted list and select "Add" (Then close dialog with [OK]
- Right Click "Vampire - Bloodlines" and select "SVN Commit..."
- As message, put name or version of unofficial patch. Hit [OK]

10) [optional] Extract Metadata From Map Files : 3-4 hours

To add entities and other items to maps, you will need to edit
the map
data. This is done by opening a map using VPK Tool, extracting
its data (in text form), changing it and then writing it back.

If you extract the text data from all the maps into text
versions of
the maps upfront, you can baseline your map data and use "Diff"
functionality to compare changes made to maps. Furthermore, you
can
search the text based data for examples of how to set up
entities/
camera shots, event handlers etc...

There are a lot of maps and it takes VPKTool a while to extract


the
data. Even streamlined, this can take 3 to 4 hours.

To streamline the process, I have included a directory called


meta
with this guide that contains all the map names with the
extension
.txt. Copy the meta directory to your Vampire/maps directory.

Whether you use my included files or make them yourself, once


you
have a directory of mirrored empty text files, use VPK Tool to
open up the binary versions (in the parent directory) one at a
time,
copying the contents to the text version under meta.

If you don't have the patience, you don't have to do this step
right
now. You can extract/save off to the meta directory AS NEEDED.

C) Developer Notes : How did I create the meta directory:

I installed cygwin and then:


$ cd "/cygdrive/c/Program Files/[...]/Vampire/maps/meta"
$ touch `ls .. –l | awk '{print $9}'`
$ for f in *.bsp ; do mv $f `echo $f | sed 's/\(.*\.\)bsp/\1txt/'` ;
done

========================================================================
=======
III > > > > Introduction to Python
========================================================================
=======

VTMB uses a stripped down version of Python 2.1.2. Like JavaScript,


Python
is a high level programming language that is relatively easy to pick
up.
Python is used to "glue" the game together. Its role is similar to
that of
an orchestra conductor. That is, it mostly conducts already existing
objects into doing things at the right time. For example,
orchestrating a
cut scene.

I recommend downloading python 2.1.2 if you will be editing the


scripts in
this game. The Python distribution will install IDLE, a nice Python
editor
and will also include documentation for that version of the language
so
that you know what other commands are available to you.

However, you do not HAVE to download python. The game comes with a
minimal
python shell built in. From the console, you can type "import
<filename>.py"
and the game will automatically compile any non-compiled python
scripts.
If there are any errors, it displays the errors to the console. If you
edited one of the python scripts that came with the game (and errors
were
detected), the game reverts to the original script distributed in
the .vpk
file.

Basic python functionality is included, but advanced python modules


such as
threading and OS are not. You must be careful not to use the more
advanced
Python modules from your game scrtips (such as "re") or the game will
crash.

NOTES:

- Python has a special object called None which represents, you


guessed
it: NOTHING. If used within a conditional, None acts the same way
as a
Boolean value of false.
- Python only receives input from the C++ engine. You cannot capture
input
directly from the user (without hacky workarounds).

- Console commands go strait to the C++ Engine. Only unrecognized


commands
get sent along to the Python Shell. Be careful when defining
console
aliases.

e.g.:

]a=2 <- python assignment to new variable a


]alias a "echo Hello" <- console alias a executes "echo Hello"
]a=3 <- intercepted by console, results in
error.

For a quick tutorial on Python (lists, maps, tuples, for loops,


method definitions, etc...) I recommend:

http://www.diveintopython.org/toc/index.html

------------------------------------------------------------------------
-------
III.1 > > > > The __main__ Object
------------------------------------------------------------------------
-------

The VTMB python shell is loaded when you start VTMB. At start up,
the
system initializes a standard python root level object called
"__main__"

Here is a list of the VTMB methods made available via the __main__
object.

Entity __main__.FindEntityByName(str name)

Searches for a single entity on the map with the name specified.
If
a single entity is found, returns the Entity. If more than one
Entity
by the same name is found, throws an exception. If no entity is
found
by that name, returns None.

Entity[] __main__.FindEntitiesByName(str name)

Searches for any entity by the name specified on the current


map. If
found, returns an array of Entities. If none are found, returns
None.

Note : The string may contain the wild card "*":

Example: FindEntitiesByName("cop_*")
Entity[] __main__.FindEntitiesByClass(str class)

Searches for any entity belonging to the CLASS specified on the


current
map. If found, returns an array of Entities. If none are found,
returns
None.

Character __main__.FindPlayer()

Returns an object handle to the Player. If the player does not


exist
(because a game has not been loaded), returns None.

void __main__.ChangeMap(float delay,


string
trigger_changelevel_targetname,
string trigger_changelevel_landmark)

The parameters to this function refer to a locally embedded


changelevel trigger. Normally this method is used by dialog
to activate a nearby teleport trigger. Embedded triggers are one
of the few ways to change maps without losing game state or
gear.

Entity __main__.CreateEntityNoSpawn(str class,tpl loc,tpl


facing )

First step of creating a new Entity Using Python. This allows


you
to set the entity up (model, name, location, etc) before
actually
spawning it with the CallEntitySpawn() method.

void __main__.CallEntitySpawn(Entity ptr)

Spawns an unspawned entity defined with CreateEntityNoSpawn.

void __main__.ScheduleTask(float delay, String Command)

Threading support. Executes command in parallel to current


thread. You
can use a delay of 0.0 if you simply want to fork, or you can
use
another delay if you want to give the engine time to do
something.

void __main__.SquadSeesPlayer

The idea is that you enter an area with hostiles who don't
attack
(because they cant see you). In practice, enemies normally
don't go
hostile till a conversation ends or you enter a trigger area.
This
command is relatively unused.
bool __main__.OneOfSet

This command is used by dialogs to randomly choose 1 of several


choices. For examples of use see Vampire/dlg/generic/doll1.dlg
It takes 2 integer parameters. The first parameter is the
current
choice. The second parameter is the maximum number of choices.
Under the hood, it randomly generates a number between 1 and the
value of the second parameter. When you call it and the first
parameter matches the random number, it returns true.

Here is a list of the variables\properties made available via the


__main__ object:

__main__.ccmd <- Access to console commands


__main__.cvar <- Access to console variables
__main__.G <- Global storage (Remembered by Save game).

NOTE : __main__.G does not exist until the user starts a new
game or loads a save game.

------------------------------------------------------------------------
-------
III.2 > > > > Executing Python commands from Console.
------------------------------------------------------------------------
-------

So how do we access this "__main__" object? As mentioned in section


I.2,
the console is connected directly to the game engine. However, if a
command
is entered that the engine does not recognize, it is passed along to
the
python shell.

This means you can access python objects and methods from console:

]pc=__main__.FindPlayer()
]pc.GetCenter()

Furthermore, if the method is a child of __main__, you do not have


to
explicitly specify __main__. Though it is a good habit to get into
and
helps to ensure you don't conflict with console objects.

]pc=FindPlayer()
]pc.GetCenter()

You can also define simple 1 line python methods.

]def hello(s): print "Hello [%s]" % (s)

Then you can run your function:

]hello("World")
Hello [World]
If you use the Python introspection command "dir" to examine
__main__'s
methods:

]dir(__main__)

You will now see hello() as one of __main__'s methods. You will also
likely
notice a lot more methods than the small list in III.1. This is
because
most maps in VTMB load a city specific python script with helper
functions.

Python uses the line return to separate commands and indentation to


indicate function blocks (scope). In other words, to create anything
beyond
a simple 1 line method, you must define your function in an external
file
and import it.

|--------------------------------------------------------------------|
|Ex: Filename = [<install root>\Vampire\python\custom.py]
|

|--------------------------------------------------------------------|
|import __main__
|
|
|
|def showInstances(prefix="npc_V"):
|
| entities = __main__.FindEntitiesByClass(prefix+"*")
|
| print "Class Name"
|
| print
"--------------------------------------------------------"|
| for ent in entities:
|
| name=""
|
| try: name=ent.GetName()
|
| except: pass
|
| if name != "":
|
| print "%s %s" %
(ent.classname.ljust(35),ent.GetName()) |

|--------------------------------------------------------------------|

Once created, you can import the file using the import command:

]import custom
]custom.showInstances()
Class Name"
---------------------------------------------------------"
...
...

------------------------------------------------------------------------
-------
III.3 > > > > Executing Console commands from Python
------------------------------------------------------------------------
-------

So now that you know how to use console to execute Python, how do
you
execute one of those handy console commands from python?

Console commands are accessed through the ccmd variable:

__main__.ccmd.<command_name>()

Console variables are accessed through the cvar variable:

__main__.cvar.<variable_name>=value

e.g. :

|--------------------------------------------------------------------|
|Ex: Filename = [<install root>\Vampire\python\custom.py]
|

|--------------------------------------------------------------------|
|import __main__
|
|
|
|def debugMode():
|
| __main__.cvar.draw_hud=0
|
| __main__.cvar.cl_showfps=1
|
| __main__.cvar.cl_showpos=1
|
| try: __main__.ccmd.notarget()
|
| except: pass
|
| try: __main__.ccmd.noclip()
|
| except: pass
|
| try: __main__.ccmd.picker()
|
| except: pass
|
|--------------------------------------------------------------------|

Bugs and Limitations:

The cvar pointer is very useful, however the ccmd pointer is less
useful. I have played around with the command and it does not
appear as though the C++ handler recognizes parameters.
Furthermore,
while you can call methods that do not take parameters, any method
called always throws an unspecified exception (however, it still
works). Therefore you must either place the call within a try
catch as I did above, or you can avoid the error message by
assigning
the function name to a string. This also results in the function
being
called but avoids sending the error message to console.

__main__.ccmd.picker=""

Hack/Work Around:

Luckily, the ccmd command can be used to invoke custom aliases. If


you
define a custom alias within Vampire/cfg/autoexec.cfg that
executes the
contents of a .cfg file:

alias execonsole "exec console.cfg"

You can use python file io to write commands to the console.cfg


file and
then execute them using your alias.

|--------------------------------------------------------------------|
|Ex: Filename = [<install root>\Vampire\python\custom.py]
|

|--------------------------------------------------------------------|
|import __main__
|
|
|
| def console(data=""):
|
| if data=="": return
|
| cfg=open('Vampire/cfg/console.cfg', 'w')
|
| try: cfg.write(data)
|
| finally: cfg.close()
|
| __main__.ccmd.execonsole=""
|
|--------------------------------------------------------------------|

] oldname=__main__.cvar.name
] __main__.cvar.name="Yukie"
] import custom
] custom.console("vclan 124")

NOTES: vclan can crash the game if the appropriate model is not
In precache. Use with caution.

------------------------------------------------------------------------
-------
III.4 > > > > Entities
------------------------------------------------------------------------
-------

From Python's perspective, all game objects are Entities: characters,


triggers, cameras, even some script sequences are grouped together as
entities. They come in 2 flavors: Embedded and Dynamic. Python can be
used to
manipulate either.

A) Embedded Entities

As the name implies, Embedded entities are embedded into the map
data.
These entities must exist before the game is started. You can
remove, add
or edit embedded entities using the map editing tools provided by
VPKTool.

After uncompressing VPK files, you will find the Map data under
the
directory:

Vampire/maps.

The Maps themselves are also compressed as .bsp files. Using


VPKTool,
we can futher uncompress the map data into META Data.

NOTES: Generally speaking, I will open the map in question,


highlight
all the metadata and paste it into notepad. As mentioned in
the
Getting Started chapter, I recommend saving a new file,
named
after the map (but with .txt extension), possibly within
the sub
directly "/Vampire/maps/meta".

The metadata is basically a laundry list of object declarations.


It
is pretty easy to read, but it is MASSIVE and can be overwhelming
at
first.
What is so special about Embedded Entities? Embedded entities
provide
FULL ACCESS to all the properties and events that an entity
supports.

The game engine does some things when a map loads that can only be
done at that time. For example, hooking up events. For this
reason,
you MUST USE embedded entities if you need to receive events or
set some
non-accessible properties/attributes. If you need user Interaction
(Dialog), you MUST use Embedded Entities.

B) Dynamic Entities

Dynamic entities are not known to the engine when the map loads.
Since some things can only be done when the map loads (setting up
events), there are limitations on what can be done with dynamic
entities.

When you create a dynamic entity, it will receive default values


for all
of its' properties. Some of these can be changed. For example, you
can
change the model of a dynamically created NPC because there is a
method
called "SetModel" which provides access to that
property/attribute.

However, you can NOT change the dialog that an NPC speaks because
there
is no method for changing an NPC's associated dialog file.

For those properties that can not be changed, you are stuck with
the
default values. The inability to change/set all properties is
irritating
and in some cases make things impossible.

For example, since you can't set the dialog of a dynamic NPC, you
can't
dynamically create NPC's that the PC can talk to. If you want
dialog
interaction, you have to use embedded entities.

Other notable limitations/irritations:

- Dynamically spawned npc_V* classes have no clipping area (you


walk
through them like ghosts). I believe this is because the
default
"solid" property is 0 or SOLID_NONE. Luckily other entity
types such
as props ARE solid by default.

- You can't define event handlers for Dynamic entities such as


"OnDeath"

- Some entities have properties that must have valid values in


order to
successfully spawn. If the default value is invalid and you
can't
set it, then you effectively can't create that entity
dynamically.

Example : npc_maker

C) Entity Scope

Embedded or Dynamic, entities are inherently local to the map they


are
defined/created on. The GetName\SetName method mentioned in III.4
implies
all Entities have a name. All entities CAN have a name, but they
do not
necessarily have a name, nor are their names necessarily unique.

A game/map designer can guarantee that within a particular map, a


specific entity name exists and is unique, but that is about it.
Luckily,
that is generally all you need to ensure your camera sequences and
cut
scenes work correctly.

That said, if you are modding the game, you must be careful not to
create
a new Entity with the same name as an existing entity within the
map,
else you may cause Unexpected behavior.

------------------------------------------------------------------------
-------
III.5 > > > > Creating Entities with Python
------------------------------------------------------------------------
-------

Spawning items from Python is a 3 step process: Create, Set


Properties, Spawn

A) Create :

The "Creation" step is done with the method:

__main__.CreateEntityNoSpawn(String classname, Location, Facing)

The function takes 3 parameters:

classname : This is the main parameter. It is a string value


which
determines what additional attributes, properties
and
methods the entity INSTANCE will have. See Appendix
A
for a list of known classname Strings. For this
example,
we will use npc_VVampire.

Location : A 3 float tuple. representing x,y and z coordinates.


Most
People use the Player's current location for the
value.

ex: myloc = (1.0,2.0,3.0)

or

myloc = __main__.FindPlayer().GetOrigin()

Facing : Yet another 3 float tuple. The first float Represents


angle,
up or down, that the character is looking. (are you
looking up
at the ceiling or down at the floor). The second is what
direction they are facing right to left. The 3rd is
the angle they are leaning left/right.

ex : myFacing = (0.0, 180.00, 0.00)

or

myFacing = __main__.FindPlayer().GetAngles()

Code Example:

pc = __main__.FindPlayer()
loc = pc.GetOrigin()
ent = __main__.CreateEntityNoSpawn("npc_VVampire", loc, (0,0,0) )

B) Set Properties

Some Entities have REQUIRED properties or the call to spawn will


fail.
NPCs require that you set a model value for example.

ent.SetModel("models/character/npc/unique/downtown/vv/vv.mdl")
ent.SetName("myEnt")

In making this, I didn't have the time to go through and test each
entity type for required parameters, so you will just have to
figure
it out as you go. When you try to spawn an entity, you will receive
errors messages telling you what must be set to proceed.

In attached Appendix G, I provide a list of properties and methods


for
each specific classname. However, those methods do not include
methods
inherited from parents. For example, npc_VVampire extends a C++
base Class (referred to as the Proxy Class) which extends the
Python Character class which extends the Entity Class: Each of
these "layers" adds more methods to the final instance.

Methods provided by the npc_VVampire classname:

AllowAlertLookaround AllowKickHintUse BarterBegin


ChangeMasqueradeLevel AllowOpenDoors BarterEnd
ClearActiveDisciplines ChangeSchedule Bloodgain
FadeHeadAsCameraTarget ClearPatrolPath BloodHeal
FadeBodyAsCameraTarget FollowPatrolPath Bloodloss
LookAtEntityCenter FrenzyTrigger DisableThink
LookAtEntityDefault FrenzyUpdate Faint
LookAtEntityOrigin Inventory_Remove FadeToSkin
pl_criminal_attack LookAtEntityEye FleeAndDie
pl_supernatural_attack MakeInvincible FrenzyCheck
pl_supernatural_flee pl_criminal_flee HumanityAdd
SetBloodShieldDiscipline pl_investigate HungerCheck
SetBodyAsCameraTarget physdamagescale MoneyAdd
SetDefaultDialogCamera PlayDialogFile MoneyRemove
SetDontFacePlayerInDialog SetBodygroup MoveToDest
SetHeadAsCameraTarget SetBossMonster MoveToHome
SetInvestigateMode SetFallToGround PlayFloat
SetInvestigateModeCombat SetFollowerBoss RotateToDest
SetMovementMultiplier SetFollowerType RotateToHome
SetScriptedDiscipline SetRelationship skin
SpawnTempParticle SetSkinFadeTime TakeDamage
StartPlayerDialog SetSpeechVolume TweakParam
StartPlayerDialogRemote SetupPatrolType WalkToNode
StartPlayerDialogUnforced StayEntrenched WillTalk
TeleportToEntity UseInteresting

Methods provided b the Proxy base class:

Alpha ClearParent
Kill Color
ScriptHide SetFakeSilence
SetParent ScriptUnhide
SetSoundOverrideEnt Use

Methods provided by the Character base class: NOTE: From this point
down, ALL npcs have these methods:

GiveAmmo AmmoCount
GiveItem BumpStat
HasItem DialogDiscipline
IsFollowerOf GetQuestState
RemoveItem HasWeaponEquipped
SeductiveFeed IsMale
SetCamera React
SetDisposition SetQuest
SetExpression StartBarter
SetGesture WorldMap

Methods Provided by the Entity base class: NOTE: From this point
down, ALL entities have these methods:

GetAngles GetCenter
GetAngleVectors GetModelName
GetName GetOrigin
IsAlive SetModel
SetAngles SetOrigin
SetName

Methods Provided by the Python PyObject base object (part of the


language spec). NOTE: All python objects support these methods:

__init__()
__getattr__() __setattr__()
__dict__() __doc__()

Attributes:

All entity INSTANCES have attributes, however attributes are


read-
only. If you spawn an entity and set its name. e.g. :

ent.SetName("test"),

You can use the console to see its attributes :

ent_dump "test"

This will dump all attributes to the console. You can then read
the attributes using dot notation.

]ent.classname
'npc_VVampire'

Some entities have a method called TweakParam() which will


allow you
to edit select attributes. If you scan the source code, you
will see
it only used to change vision, hearing and squad.

C) Spawn:

Once all desired/required properties are set, we spawn the object


with
the command:

__main__.CallEntitySpawn(ent)

It is important to note that despite all the methods above, not


all
npc_VVampire class attributes are being exposed. For example,
there is a
"dialogname" attribute which allows dialogs, but no method for
setting it
from python. Therefore, we can not dynamically create an NPC that
can
have a dialog with the PC using the standard dialog engine.

In the case of npc_maker, the class requires you to set an NPCType


attribute to spawn, however there is no setter from python.
Therefore the
entity can't be created dynamically at all.

See Section XII : Common Scenarios, for a more robust spawn


example
function.

------------------------------------------------------------------------
-------
III.6 > > > > Events
------------------------------------------------------------------------
-------

The game engine supports hundreds of events. However, only embedded


entities
receive events. I will tell you upfront that there is no way to
receive or
handle game events from python ALONE. If you wish to receive/handle
events
you will HAVE to work with events already established or embed new
entities
into the maps.

A) ENTITIES:

The vast majority of entities only handle events meant for the
entity
itself. For example, if you embed an npc_Vhuman (see Attached
Appendix
G), you can set it up so that it receives an OnDialogBegin event
and
calls a python method:

{
"classname" "npc_VHuman"
"targetname" "customNPC"
...
"OnDialogBegin" ",,,0,-1,OnBeginDialog('customNPC'),"
}

That is rather strait forward, but what about the awkward string
with
commas? Here is a break down of the event protocol;

"<entity name>,<method>,<param>,<delay>,<max fires>,<python


script>,"

<entity name> : Can be any named entity within the same map. The
name
should NOT be in quotes.
<method> : Name of a valid method on the target entity to
fire. Each
entity supports different methods. See attached
Appendix
G for a full listing.
<param> : Optional parameter to pass into the method. If the
method
requires more than 1 parameter, you have to use
the
<python script> option.
<delay> : Delay in seconds before calling the method. Can be
floating point value.
<max fires> : As the name implies, maximum number of times the
event
will fire. A value of –1 means there is no
maximum and
it will always fire.
<python script> Call a global or module specific python method.

Example: To create an opponent that begins a conversation with you


when
They Lose half of their health the first time, but not a
second
time:
{
"classname" "npc_VVampire"
"targetname" "customNPC"
...
"OnHalfHealth" " customNPC, StartPlayerDialogRemote,,0,1,,"
}

To activate multiple methods, you simply embed the event handler


multiple
Times. Here we disable any vampire disciplines when we start the
convo.

{
"classname" "npc_VVampire"
"targetname" "customNPC"
...
"OnHalfHealth" " customNPC, StartPlayerDialogRemote,,0,1,,"
"OnHalfHealth" " customNPC, ClearActiveDisciplines,,0,-1,,"
}

B) Player Events:

It is cool that you can receive events about entities you create,
but
what about the player? You don't exactly create the player? There
is a
special entity called events_player that you can plug into a map
to
receive player events. (From Appendix G):

events_player

EVENTS:

output: OnFrenzyBegin
output: OnFrenzyEnd
output: OnWolfMorphBegin (Animalism War Form)
output: OnWolfMorphEnd (Animalism War Form)
output: OnPlayerTookDamage
output: OnPlayerKilled
output: OnPlayerSoundLoud
output: OnActivateAuspex
output: OnActivateCelerity
output: OnActivateCorpusVampirus (Blood Buff)
output: OnActivateFortitude
output: OnActivateObfuscate
output: OnActivatePotence
output: OnActivatePresense
output: OnActivateProtean
output: OnActivateAnimalismLvl1
output: OnActivateAnimalismLvl2
output: OnActivateDementationLvl1
output: OnActivateDementationLvl2
output: OnActivateDominateLvl1
output: OnActivateDominateLvl2
output: OnActivateThaumaturgyLvl1
output: OnActivateThaumaturgyLvl2

METHODS:

input: EnableOutputs
input: DisableOutputs
input: CreateControllerNPC
input: RemoveControllerNPC
input: AwardExp
input: ClearDialogCombatTimers
input: ImmobilizePlayer
input: MobilizePlayer
input: RemoveDisciplines
input: RemoveDisciplinesNow
input: MakePlayerUnkillable
input: MakePlayerKillable

Special Note:

Not all maps have an embedded events_player object. And those


that
do often use different names. Finally, there can be more than
1
events player per map (and they can potentially have the same
name)

So dont write scripts that DEPEND on an events_player already


existing on the map. And if you must search for one, use the
code:

pevents = __main__.FindEntitiesByClass("events_player")
if len(pevents) != 0:
pevent = pevents[0]

** Companion Mod has a events_player objects already embedded


on
every map. The code above will always find an events_player
within that mod.

C) World Events

Like events_player, the events_world object lets you key into


certain
global events: (From Appendix G):

events_world

EVENTS:

output: OnCopsOutside
output: OnCopsComing
output: OnStartCopPursuitMode
output: OnEndCopPursuitMode
output: OnStartCopAlertMode
output: OnEndCopAlertMode
output: OnStartHunterPursuitMode
output: OnEndHunterPursuitMode
output: OnMasqueradeLevel1
output: OnMasqueradeLevel2
output: OnMasqueradeLevel3
output: OnMasqueradeLevel4
output: OnMasqueradeLevel5
output: OnMasqueradeLevelChanged
output: OnPlayerHasNoBlood
output: OnCombatMusicStart
output: OnCombatMusicEnd
output: OnAlertMusicStart
output: OnAlertMusicEnd
output: OnNormalMusicStart
output: OnNormalMusicEnd
output: OnUseBegin
output: OnUseEnd

input: SetSafeArea
input: SetCopWaitArea
input: SetCopGrace
input: SetNosferatuTolerant
input: SetNoFrenzyArea
input: AIEnable
input: FadeGlobalWetness
input: HideCutsceneInterferingEntities
input: UnhideCutsceneInterferingEntities
input: PlayEndCredits
input: ClearDialogCombatTimers

Of all the events, the two I personally found the most useful were
OnCombatMusicStart and OnNormalMusicStart. These (not so well
named
events) basically signify the start and end of combat. If you
maintain
an "InCombat" flag, you can also use OnBeginNormalMusic to
indicate
when a map has been loaded from a save game.

Special Note:

Not all maps have an embedded events_world object. And those


that
do can use different names. However, there can only be 1
events_world per map (if more than 1 is embedded, the game
will
crash).

So dont write scripts that DEPEND on an events_world already


existing on the map. And if you must search for one, use the
code:

wevents = __main__.FindEntitiesByClass("events_world")
if len(wevents) != 0:
wevent = wevents[0]

** Companion Mod has a events_world object already embedded on


every map with OnBeginNormal music and OnBeginCombat music
already linked to a global function in vamputil.py. The code
above will always find an events_world object within that
mod.

D) Other/Misc Events

You may have noticed there are a few events missing, like entering
a
map, the player going stealth or the player picking up an item. I
wont
pretend to possess a comprehensive knowledge of all events, but I
can
tell you about what I have discovered and some workarounds I have
created.

For entering maps, you can embed a logic_auto entity:

{
"classname" "logic_auto"
" spawnflags" "0"
"OnMapLoad" ",,,0,-1,OnEnterMap('sm_hub_1'),"
"origin" "-2420.54 -2558.76 -111.97"
}

** ALL Maps (.bsp) already have a logic_auto entity embedded into


them
which loads a python script associated with the city that the
map is
located in. Hence the subdirectories under Vampire/Python.

Note that OnEnterMap will only fire when actually traversing into
a map
from another map. Loading a save game will not cause the event to
fire.
However, when you load a save game, OnBeginNormalMusic will still
fire.

For detecting item pickup, you can use a trigger_inventory_check:


{
"classname" "trigger_inventory_check"
"targetname" "inventory_check"
"StartDisabled" "0"
"spawnflags" "1"
"itemname" "item_w_tire_iron"
"OnPlayerHasItem" "inventory_check,Disable,,0,-1,,"
"OnPlayerHasItem" " popup_35,OpenWindow,,0.5,-1, ,"
}

Some events are not supported. For example, detecting that the
player
has gone stealth (crouches). You can design workarounds for some.
For
stealth, you can poll certain states using a logic_timer entity:

{
"classname" "logic_timer"
"StartDisabled" "0"
"UseRandomTime" "0"
"RefireTime" "15.0"
"OnTimer" ",,,0,-1,OnPollEvent(),"
"origin" "-2420.54 -2558.76 -111.97"
}

(In vamputil.py)
stealth=0
def OnPollEvent():
global stealth
pc = __main__.FindPlayer()
crouched = ((pc.GetCenter()[2] - pc.GetOrigin()[2]) == 18)
if not stealth:
if (pc.active_obfuscate or crouched):
stealth=1
OnStealthBegin()
else:
if (not pc.active_obfuscate and not crouched):
stealth=0
OnStealthEnd()

E) Events to Avoid:

There isn't an easy to detect leaving a map as most maps have


multiple
exit points. The PC may be teleported away to a different map by a
door,
an area trigger, a conversation. There about half a dozen ways to
exit an
area and you would have to search and update every entity on the
map and
every dialog associated with every entity on the map. Even then
you may
miss something embedded in a python event script. In general, I
would
avoid designing a mod that relies on the ability to detect when
the
player leaves an area.

Globally detecting events that are normally defined on a per-


entity basis
is generally a no no. For example, detecting when things die.
That would
involve lots of map edits. The more stuff you edit, the greater
the
chance for bugs.

D) Companion Mod

I don't mean to plug my mod, but as I built my companion mod it


occurred to me that others may want to make mods as well (hence
this
guide). I added the events described above to pretty much every
map.
But instead of having them call my specific functions, I had them
call global methods that I defined in vamputil.py. That way other
mod developers could hook into those events easily.

If you are doing something small that only impacts 1 map, you will
probably want to keep your mod small and only make the edits to
that map
But if your goals are larger and you need events like I describe
above
throughout the entire game, you may consider downloading my mod
and starting from there as a lot of the groundwork has already
been
done.

------------------------------------------------------------------------
-------
III.7 > > > > Input\Output
------------------------------------------------------------------------
-------

A) INPUT:

Within VTMB, the official way to recieve input is via dialogs and
computer terminals. You enter a conversation with someone (or
something),
make some choices and the dialog system fires some of your python
methods as a result. (See "IV. Dialogs" below). Alternatively, you
can
use computer terminals to activate python functions.

See Vampire/vdata/hackterminals/carson.txt for an example.

Officially, VTMB does not support receiving user input DIRECTLY


into
python.

THERE IS NO SPOON:

The original game included an entity called "game_ui" with


events
such as PressedAttack, PressedAttack2, PressedMoveLeft,
PressedMoveRight, PressedForward, PressedBack, PressedFeed,
PressedAny, etc.. In theory you could have embedded one of
these
onto a map to recieve a copy of the events. Used in conjuction
with
game_sign's, you could have created custom interactive gui
components
including your own game menus, maps and even dialog
interaction.

Unfortunately, the game_ui entity does not work (or has been
disabled). There is a hacky work around, but it is intrusive
and
will definitely cause issues if you attempt to merge your mod
with
another mod that also uses the hack. Basically, I don't
recommend it,
but I will describe it below for completeness:

Building upon the console hack I described in section III.3,


you
can save off the users current configuration, rebind keys to
python
methods to pass key press events into python

data ="host_writeconfig backup.cfg\n"


data+="unbindall\n"
data+='bind "1" "OnInput(\'1\')"\n'
data+='bind "2" "OnInput(\'2\')"\n'
data+='bind "3" "OnInput(\'3\')"\n'
data+='bind "4" "OnInput(\'4\')"\n'
data+='bind "ENTER" "OnInputFinish()"\n'
data+='bind "ESC" "OnInputCancel()"\n'
console(data)

And then later, when you are done, restore the keyboard
config:

data="exec backup.cfg"
console(data)

The primary danger with this is if the user exits the game or
loads a save game before finishing your home-made user input
prompt,
they may lose their configuration. There are ways to mitigate
the
danger (look for backup.cfg within vamputils and
restore/delete if
found).

Even with a mitigation strategy, ultimately this is a kludge.


Hopefully you can design your mod so that you do not need user
input beyond what can be gained using a normal dialog file.

Alternatively, you could use an approach such as the one


described
below in IX.6.C to specifically create hooks for the events
that
game_ui normally (would have) captured.

** CompMod includes code to enable a hooking strategy, however


it
is disabled by default. To enable, you must update the mods
config: mods.cfg -> mod_enable_event_hooks=1

B) OUTPUT:

I am aware of 4 ways of getting data to the user.

1) hud_timer objects can be used to show time or any number to the


user that can fit within a clock like sequence (00:00:00). For
example, I used this in my companion mod to show hits remaining
when you possess a traveling companion or how much time is
left before you can re-feed. FYI : There is a HUD Counter, but
I could never get it to work.

2) game_sign objects rely on files which describe a background


and text. Typically, the files are pre-fabricated within your
vdata directory and game_sign entities that reference the files
are
embedded into maps. You call the OpenWindow() method on them to
make
them appear.

One downside of a game sign is that the game pauses while the
sign is
up. If you embed the gamesign, you can set the pause property to
0,
however while the game will not pause, you still can't move the
PC
while the sign is up.

3) If you look up the game_sign entity in Appendix G, you will


notice that
it has a ChangeFile() method on it. Using Python file io, you
can
dynamically construct a sign file, save it off, create a
game_sign
entity on the fly (doesn't have to be embedded), Change the file
to the
temp file you created and then call open window. This elaborate
work
around would allow you to open professional looking text
presentation
windows to the user from python without edits to the map files.
Combined with the (mitigated) input hack above, you could
simulate a
decent looking user prompt.

Bear in mind that game signs pause the game by default. So If


you were
to use this hack to create your own dialog system, you wouldn't
be
able to animate NPCs for emotion, nor would their mouths move if
you
told them to speak a dialog line. There may be other uses for
the
hack, such as a custom map.
4) For simple feedback, you can use the console hack in conjunction
with
the "say" command to have text print to the upper left corner of
the
hud. The text will appear to have been said by the current value
of
__main__.cvar.name. you can change the time it remains on
screen
by setting __main__.cvar.hud_saytext_time

5) The console command "infobar_message <#>" will activate a


configured
infobar_message. Unfortunately you can not create a new
infobar_message,
only pop up existing messages (or change the text of an existing
message).

Some are obscure and probably safe for use like "tying to attack
while
on a ladder". This approach is generally not recommended, but is
included
for completeness.

See Vampire/vdata/system/strings.txt : infobar_strings

------------------------------------------------------------------------
-------
III.8 > > > > Bringing it all together
------------------------------------------------------------------------
-------

So we can call both python AND console commands. We can access both
python
and console variables. This means you can tackle most tasks using one
approach or the other. If you get stuck or run into a bug, you have a
backup plan.

For example, take the vclan console command. If you issue that command
and
the clan tries to load a model that isn't currently in memory, you get
a pre-cache error and the game crashes. This holds true for other
commands
like npc_create and the console version of SetModel. However, if you
change
the pc model using Python, the model is loaded into memory and the
crash does
not occur.

In the case of creating new objects, you can use python to be more
precise
about What you want. You can assign a name, location, facing, initial
model,
hearing, vision, squad and health. (health is done by changing the
cvar
sk_basenpctroika_health variable before and after spawn)

A) Useful Console Commands (to call from python)


autosave

self explanatory

shake

brief earthquake (think explosion)

player_immobilize/player_mobilize

self explanatory

fadein/fadeout

self explanatory

vclan <clan number> :

change clan of protagonist. Also resets stats to 1/0

npc_freeze :

"Freezes" npc under crosshair. You can then search all


npcs
(examine npc.playbackrate) to discover which one the PC is
looking
at Nice work around for "grappling" NPCs from python.

teleport_player "entity_name"

Needed when you wish to teleport the PC somewhere and set


their
facing. Bear in mind that pc.SetOrigin() also works for
teleportation within a map, but pc.SetAngles() does not.
(all the
time) This console command correctly changes the facing.

B) Useful Player Objects and Commands

]pc=__main__.FindPlayer()

Enables the following commands:

]pc.WorldMap(__main__.G.WorldMap_State)

Opens up the world map city chooser for teleporting to


various
cities. This command only works from main hubs. (areas
where you
can normally talk to a taxi driver or activate a sewer
map).
When you activate the WorldMap, the locations that show up
are
based on hard coded boolean game state flags:

G.Downtown_Open = 1
G.Mansion_Open = 1
G.Museum_Open = 1
G.Hollywood_Open = 1
G.Kingsway_Open = 1
G.Chinatown_Open = 1
G.Giovanni_Open = 1
G.Society_Open = 1
G.Griffith_Open = 1

If you set all of them to true, you can go anywhere in the


game.
Note that Nines_Intro uses:

G.Ninesintro_Open = 1

And introduces a fake downtown link that actually takes


you to
sp_ninesintro. (May want to leave that one false)

As for the G.WorldMap_State parameter, I tried overriding


it with
various values and it doesn't appear to have any impact on
the
game. However, for some reason the function requires that
you
pass an int into the parameter. I recommend using the
engine
provided G.WorldMap_State to be safe.

]pc.SewerMap(__main__.G.WorldMap_State)

see pc.WorldMap() above. You will appear in the sewers


instead
of next to a cab

]pc.SetModel(string "model_path")

Unlike the console version, this one wont crash the game
if the
model is not already in memory.

]pc.BumpStat(string "attribute_name" , int value)

Can be used to RAISE pc stats. Negative values are


ignored.

NOTE: In order to lower a stat, you must "reset" the


player
using the console command vclan and then restore
stats.
You can get the players current clan number using
"pc.clan"

]pc.GiveItem(string "item_name")

Give yourself an item, provided you have the patients to


look up
its item code. The console version "give" is actually
nicer as it
auto-lists all the built in item codes.

Examples:

item_w_deserteagle
item_w_flamethrower
item_w_rocketlauncher
item_w_fireaxe
item_p_occult_dexterity

]pc.giveAmmo(string "item_w_...",int amount)

Name pretty much says it all. It should be noted that


giveAmmo
works on stackable items such as bloodpacks.

]pc.HumanityAdd(#)

Works for both positive and negative numbers.

]pc.Bloodgain(#)

Gives PC blood. When the game starts, the PC has a maximum


blood
pool of 15

]pc.Bloodloss(#)

Take blood away from PC.

]pc.MoneyAdd(#)

Gives PC money

]pc.BloodHeal

Activates the bloodheal discipline even if you don't have


it.
Heals a small amount of health for some of your blood pool
points.

]pc.ChangeMasqueradeLevel(#)

Accepts both positive and negative values. Negative is


good.
Positive is bad.

]pc.CalcFeat(string type)

Feat values are the result of skills, attributes and


items. This
function does the calculation for you.

Example:
if pc.CalcFeat("haggle") == 3
NOTES:

Additional pc controls can be installed on a per map basis by


injecting
an events_player object into a map (if one is not found). See
III.5.B
above.

If you name the PC:

]__main__.FindPlayer().SetName("pc")

you can retrieve a list of PC attributes using the ent_dump command:

]ent_dump "pc"

------------------------------------------------------------------------
-------
III.9 > > > > Known Bugs
------------------------------------------------------------------------
-------

Make no mistake, VTMB is a C++ based game. The engine is not written
in
Python and the objects exposed to python are merely proxies to the
actual
objects in C++. Your control over the objects is limited to what the
game
engine exposes to you (via the input methods). This confused me at
first as I
thought I could set/change every attribute I saw using the ent_dump
command
from Python. This simply isn't true. (Though you can use vstats to
change
many of the player attributes).

Bugs

So I built a mod and then during testing, the game kept crashing
when
the player would change maps. 2 days later, I traced the bug down.
Here
was the problem:

__main__.G.somestring=FindPlayer().GetName() <-- OK
__main__.G.someint=FindPlayer().clan <-- OK
__main__.G.somefloat=FindPlayer().GetOrigin()[2] <-- OK
__main__.G.someinstance=FindPlayer() <-- NOT OK

The issue here is that FindPlayer() returns a runtime instance. The


same
can be said for FindEntityByName, FindEntitiesByName and
FindEntitiesByClass.

__main__.G gets saved with your save game. While you can store
properties of
entities as part of a save game, you can not save off any instance
pointers
or you will crash the game.

This rule holds true for G and sub attributes of a G (hash maps,
lists, etc)
or Entities attributes as they are saved off as part of the save
game.

Module scope global variables and local scope variables are NOT
saved as part of the save Game and are therefore safe: You
temporarily
store instances references.

The "G" Delimma:

Vamputil.py gets loaded with the game and its methods are available
from
every map, so it makes sense to add your module imports there.
However,
there is a snag. Vamputil gets imported by the game before the game
has set
up the persistent "G" variable.

This causes 2 issues.

ISSUE 1:

Take this scenario:

VAMPUTIL.PY:

import foo

FOO.PY:
from __main__ import *

def somefunction():
G.persist = "1"

The issue is that when the game imported foo, G didn't exist. So when
foo
imported * from __main__, it didn't get G. when the function gets
called,
an exception will be thrown. Two possible workarounds. One is to
import G
locally from methods that access it.

def somefunction():
from __main__ import G
G.persist = "1"

The other work around is to ONLY import __main__ and not import
anything from
It. Reference elements of __main__ explicitly from the code. This
causes a
runtime lookup and avoids the exception.
FOO.PY:
import __main__

def somefunction():
__main__.G.persist = "1"

ISSUE 2:

If a variable does not exist on G, that is fine. You can test for the
variables using a simple if statement:

If not __main__.G.somevariable:
__main__.G.somevariable=somethingelse

However, complex data structures will throw exceptions. For example

If not __main__.G.somehasmap["valiue"]: exception thrown

Many times a module needs to initialize and setup lists and


hashmaps managed by the module when the player first starts the
game. Of course we have the issue above: G doesn't exist when
vamputils loads. So initialization needs to happen from a secondary
method that happens after vamputils loads.

There are 2 solutions.

First solution is to embed a logic_auto entity in one of the early


maps
(sm_pawnshop_1.bsp -> Your apartment at the beginning of the game)
and have it call your initialization method there.

{
"classname" "logic_auto"
"spawnflags" "0"
"OnMapLoad" ",,,0,1,yourmodule.initialize(),"
"origin" "-2420.54 -2558.76 -111.97"
}

The second solution is similar to the first. But instead of installing


your
own logic_auto entity, you simply add your code to
python/santimonica/santimonica.py which basically gets loaded by a
logic_auto
entity that is already installed in the map.

Minor Invincibility bugs:

There are 4 ways of making the pc invincible. You can use the console
command
"buddha". This allows the PC to get down to 1 hit point, but not
actually
die. There is an events_player method "MakePlayerUnkillable()". This
allows
The PC to get down to 1/4 their total hit points, but they will not go
lower.
There is the console command "god" which prevents the player from
taking any
damage period. And then there is the console variable debug_no_damage,
which
when set to true prevents anyone from taking damage (even enemies).

Of these four methods, the first two only work if the PC's clan is
defined
in clandoc000.txt. If you use vclan to change to a clan not defined by
clandoc000.txt, then buddha and MakePlayerUnkillable will not stop the
PC from dying. See Appendix F for more detail.

========================================================================
=======
IV > > > > Dialogs
========================================================================
=======

Dialogs are an important part of Role Playing Games. Many mod ideas
will
involve creating new Dialogs to support conversations with people,
objects
or access new functionality

It should be noted that for an NPC's lips to move during dialog, the
model
must support facial expression and lip animation nodes. Not all models
support these nodes.

The general rule of thumb: If a character has a dialog file under


Vampire/dlg, then it supports (mouth moving) dialog. This game has
over
250 models, only 122 of those models have dialog files under
Vampire/dlg

Not one of the 56 player models supports lip animations or


expressions.

This mostly impacts developers designing mods that involve new quests
and
conversations. Lack of lip animation or facial expression support will
limit your options for conversation worthy main characters and
companions.

------------------------------------------------------------------------
-------
IV.1 Dialog Basics
------------------------------------------------------------------------
-------

So we have talked about Python and writing scripts, but how do we


activate
those scripts? The most common way within this game is a dialog.

A) Where are they?

Dialog files end with the extension ".dlg". Once you unpack the
VPK
files, you will find the Dialog files for the various game
characters
located under Vampire/dlg/...

B) How are dialogs made accessible in game?

Dialogs must be connected to an embedded game entity. The only way


to
add a new dialog to the game is to embed a new entity that links
to your
new dialog.

Alternatively, you can edit an existing dialog that is already


connected
to an existing game entity. If you are new to this and you aren't
comfortable messing with map files just yet, the second approach
is a
good way to get started.

C) Can I change dialogs while the game is running?

YES! You can!. While python scripts are compiled once per game
(and then
cached), dialogs are loaded into a special dialog engine each time
you
start a dialog. So if you make edits to a dialog, the next time
you start
the dialog, the edits will immediately be seen.

------------------------------------------------------------------------
-------
IV.2 DLG File Format
------------------------------------------------------------------------
-------

If you open up a dialog file, you will see a 13 column table defined
with
"{" and "}":

{ }{ }{ }{ }{ }{ }{ }{ }{ }{ }{ }{ }{ }

The FIRST column is the row index. The first row should always
have an index value of 1:

{1}{ }{ }{ }{ }{ }{ }{ }{ }{ }{ }{ }{ }
{2}{ }{ }{ }{ }{ }{ }{ }{ }{ }{ }{ }{ }
{11}{ }{ }{ }{ }{ }{ }{ }{ }{ }{ }{ }{ }

Not all row numbers have to be accounted for (There can be skips
to allow people to add responses), however, all rows should appear
in
descending order.

The SECOND column is what the NPC/PC says if the Protagonist is Male

{1}{ Male : NPC Statement}{ }{ }{ }{ }{ }{ }{ }{ }{ }{ }{ }


{2}{ Male : PC Response 1}{ }{ }{ }{ }{ }{ }{ }{ }{ }{ }{ }
{3}{ Male : PC Response 2}{ }{ }{ }{ }{ }{ }{ }{ }{ }{ }{ }

The THIRD column is what the NPC/PC says if the Protagonist is Female
# MALE FEMALE
{1}{Male}{ Female : NPC Statement}{ }{ }{ }{ }{ }{ }{ }{ }{ }{ }
{2}{Male}{ Female : PC Response 1}{ }{ }{ }{ }{ }{ }{ }{ }{ }{ }
{3}{Male}{ Female : PC Response 2}{ }{ }{ }{ }{ }{ }{ }{ }{ }{ }

The FOURTH column contains an integer value which redirects to another


row within the dialog file if the PC chooses that response. The
special
character # means it is an NPC statement

# MALE FEMALE NEXT


{1}{NPC Male}{NPC Female}{ # }{ }{ }{ }{ }{ }{ }{ }{ }{ }
{2}{PC Male }{PC Female }{ 5 }{ }{ }{ }{ }{ }{ }{ }{ }{ }
{3}{PC Male }{PC Female }{ 7 }{ }{ }{ }{ }{ }{ }{ }{ }{ }
{4}{ }{ }{ }{ }{ }{ }{ }{ }{ }{ }{ }{ }
{5}{NPC Male}{NPC Female}{ # }{ }{ }{ }{ }{ }{ }{ }{ }{ }
{6}{ }{ }{ }{ }{ }{ }{ }{ }{ }{ }{ }{ }
{7}{NPC Male}{NPC Female}{ # }{ }{ }{ }{ }{ }{ }{ }{ }{ }

When scanning for responses, the engine stops when it hits a row
with a
"#". The blank row is not necessary, but has been added to improve
readability.

The FIFTH column is used for conditions. You can use python or one of
the
built in special conditions (See IV.2 below for Special Conditionals)

The engine supports "and" logic operations using "and"

{1}{M}{F}{5}{pc.armor==3 and npc.classname=="npc_VVampire"}

The dialog engine supports "or" logic operations using "or", but
the
entire condition must be contained in parenthesis:

{1}{M}{F}{5}{(pc.armor==3 or npc.classname=="npc_VVampire")}

You wont see many "or" statements throughout the dialogs because
you can
achieve the same effect by using 2 lines.

{1}{M}{F}{5}{(pc.armor==3}
{2}{M}{F}{5}{(npc.classname=="npc_VVampire"}

But what if both conditions are true? You don't want the same
dialog line
appearing twice. To solve this issue, you may need to add
additional logic.
Also see the common examples below for the function LimitSet().
LimitSet()
is a custom function that only returns true once for a given set.
{1}{M}{F}{5}{(pc.armor==3 and LimitSet(1,2)}
{2}{M}{F}{5}{(npc.classname=="npc_VVampire" and LimitSet(2,2)}

The SIXTH column allows you to execute 1 line of python script. If it


is an
NPC statement, the script will execute when the NPC says the
statement. If it
is within a choice, the script will only execute if the player chooses
the
choice.

Example Script: (In vamputils.py)

def pcFollow(npc):
npc.SetFollowerBoss("!player")

def pcNFollow(npc):
npc.SetFollowerBoss("")

Example Dialog:

{1}{NPC}{NPC}{#}{ }{ }{}{}{}
{}{}{}{}
{2}{sit}{sit}{1}{npc.IsFollowerOf(pc) }{pcNFollow(npc)}{}{}{}
{}{}{}{}
{3}{go }{go }{1}{!npc.IsFollowerOf(pc)}{pcFollow(npc) }{}{}{}
{}{}{}{}
{4}{end}{end}{}{ }{ }{}{}{}
{}{}{}{}
{5}{ }{ }{ }{ }{ }{}{}{}
{}{}{}{}

The REMAINING COLUMNS (7-13) provide specific responses based on the


PC's
class.

Column 7 = Brujah
Column 8 = Gangrel
Column 9 = Nosferatu
Column 10 = Toreador
Column 11 = Tremere
Column 12 = Ventrue
Column 13 = Malkavian

Note that using these columns does not allow gender specific
responses
Which is one of the reasons they are not utilized more throughout
the
game. (If you want to use these, you can still SIMULATE gender
specific
responses by using starting conditionals. See IV.4).

------------------------------------------------------------------------
-------
IV.3 Special Conditions and Colored Responses
------------------------------------------------------------------------
-------

The special conditionals include:

F_Seduction #
M_Seduction #
Seduction #
Intimidate #
Dominate #
Persuasion #
Dementation #
Thaumaturgy #
Humanity #

Special conditions mean that the ability is equal to or greater than


the number. Most result in responses with special colors/fonts. If
the number is negative, then it means less than (the positive value
of) the number and the font/color is not applied.

You can perform "and" Boolean logic with the special conditionals,
but you must use the special "&" operator:

{1}{M}{F}{5}{Seduction 3 & pc.armor==3 and


npc.class=="npc_VVampire"}

You can NOT use "or" logic conditionals with the special conditions,
however you can use separate lines (typically enforced by additional
logic)

{1}{M}{F}{5}{(Seduction 5 & LimitSet(1,2)}


{2}{M}{F}{5}{(Persuation 5 & LimitSet(2,2)}

NOTES :

The Dominate condition normally only appears if the player is


Ventrue
(vclan 8). If you wish to have dominate options appear for other
classes
such as Tremere or Possessed Ventrue (not vclan 8), there are two
approaches:

1) The best approach is to simply include a Thaumaturgy based


response that also depends on a minimum dominate ability. You
wont
hear the domination sound and the blood points wont be
subtracted,
but the response will still be red.

--------------------------------------------------------------------
{5}{M}{F}{9}{ Dominate 4 }
{...
{6}{M}{F}{9}{ Thaumaturgy 1 & getattr(pc,"base_dominate")>3 }
{...
2) An alternate approach uses a dialog engine bug you can
exploit:

--------------------------------------------------------------------
{5}{M}{F}{9}{ Dominate 4
{5}{M}{F}{9}{ getattr(pc,"base_dominate")>3 and
IsClan(pc,"Tremere"}

The main 2 things to note here is that BOTH LINES HAVE THE
SAME LINE
NUMBER BUT ONLY 1 LINE EVALUATES TO TRUE. When the game engine
parses the file, it scans the conditions and the text Content
in two
separate scans. When 2 lines have the same number it confuses
the
engine and treats both lines the same.

From my experience, it seems the number of lines from the top


of the
file (not the line number or which condition is actually true)
dictate which line controls how the text displays for both
responses.
Sometimes it is the top and sometimes it is the bottom. You
have to
test and possibly swap to get this trick to work.

Unlike the previous approach, not only will the response be


red, it
will execute the dominate animation and produce the dominate
sound
when selected. It will even subtract the correct number of
blood
points. The really interesting thing about this bug is that it
doesn't matter if the PC even has the dominate ability. All
that
matters is that only 1 condition evaluates to true and both
lines
have the same number (this can be used with any of the special
abilities to color lines).

I hesitated to even mention this exploit because the problem


with it
is that overuse quickly makes a mod un-maintainable. Dialogs
containing this exploit are super-sensitive to editing. If
someone
adds new lines above your condition, the engine may suddenly
begin
using the wrong line to display. Having to re-test ALL the
conditions
every time the dialog is edited is cumbersome to say the
least. So I
recommend the first method, unless you are squeezed for space
and
only have room for 1 additional line number.

------------------------------------------------------------------------
-------
IV.4 Dialog Engine Commands and Flow Control
------------------------------------------------------------------------
-------

A) AUTO-END

The auto-end command will automatically end the dialog if the


command
is reached. It is embedded in the response section surrounded by
brackets.

Below, there nothing but a single AUTO-END in the "Everyone"


column,
so the dialog will always end after the NPC's statement.

{201}{(STATEMENT MALE)}{STATEMENT FEMALE }{#}{ }{}{}{}{}{}


{}{}{}
{202}{(AUTO-END)}{}{0}{}{}{}{}{}{}{}{}{}

In the second example below, the conversation will end unless


the PC
is a female.

{201}{(STATEMENT MALE)}{STATEMENT FEMALE }{#}{ }{}{}{}{}{}


{}{}{}
{202}{(AUTO-END)}{I Don't Know}{0}{}{}{}{}{}{}{}{}{}

B) AUTO-LINK

The auto-link command will automatically link to a new line in the


dialog
when it is reached.

Below, there nothing but a single AUTO-LINK in the "Everyone"


column,
so the dialog will link to the next NPC statement.

{201}{(STATEMENT MALE)}{STATEMENT FEMALE }{#}{ }{}{}{}{}{}


{}{}{}
{202}{(AUTO-LINK)}{}{211}{}{}{}{}{}{}{}{}{}

Here is an advanced example. If the npc is following the pc and


female, you will see a "no" response. If the npc is following
the pc
and male, the dialog forwards to 211. If the npc is NOT
following
the pc and the pc is male, you autolink to 221, otherwise you
end.

{201}{(STATEMENT MALE)}{STATEMENT FEMALE }{#}{ }{}{}{}{}{}


{}{}{}
{202}{(AUTO-LINK)}{No}{211}{pc.IsFollower()}{}{}{}{}{}{}{}
{}
{202}{(AUTO-LINK)}{}{221}{pc.IsMale()}{}{}{}{}{}{}{}{}
{202}{(AUTO-END)}{}{0}{ }{}{}{}{}{}{}{}{}

C) "..."

"..." is a reserved NPC statement that basically represents no


response.
It mostly comes into play when an NPC statement does not have an
associated audio file (discussed later).

Normally when an NPC statement does not have an associated audio


file,
the text displays on the screen. Essentially the engine turns on
sub-titles for the remainder of the dialog. To be certain that the
player had a chance to read the text, the engine will prompt the
user even if the dialog would normally end.

For example, the following would show the NPC saying ".." and
prompt
the user to hit 1) to continue (if line 201 did not have any
associated
audio):

{201}{.. }{.. }{#}{ }{}{}{}{}{}{}{}{}


{202}{(AUTO-END)}{}{0}{ }{}{}{}{}{}{}{}{}

However, 3 periods and the dialog would end without prompting the
user,
even if there was no audio.

{201}{... }{... }{#}{ }{}{}{}{}{}{}{}{}


{202}{(AUTO-END)}{}{0}{ }{}{}{}{}{}{}{}{}

D) STARTING CONDITION

At the bottom of most dialog files, you will find many lines
marked as
(STARTING CONDITION). When a dialog is loaded, the dialog engine
searches
for a block of STARTING CONDITIONALS at the end of the dialog.
They are
evaluated from top to bottom. As soon as the first condition
evaluates to
true, the engine is redirected to the NPCs first line. Note that
you can
not chain STARTING CONDITIONS (they can not redirect to another
starting
condition block.

Example:

...
{2000}{(STARTING CONDITION)}{}{10}{ not pc.IsMale()}{}{}{}{}{}
{}{}{}
{2001}{(STARTING CONDITION)}{}{20}{ pc.Charisma>2()}{}{}{}{}{}
{}{}{}

Above, if the pc is female, you go to dialog at 10. If the PC is


male and
has decent charisma, you go to dialog at 20. If none of the
starting
conditions is true, the dialog attempts to start at the beginning
of the
file (line 1). Using a system like this, you could design clan
specific
responses for both genders.

Code placed in the 6th column does NOT get executed with starting
conditionals. HOWEVER, the conditional supports python and there
is
nothing to stop you from executing code in the conditional block

This is mostly useful for fixing npcs before dialogs start:

{200}{(STARTING CONDITION)}{}{0 }{ mySetup(npc) }{}{}{}{}{}{}


{}{}
{201}{(STARTING CONDITION)}{}{10}{ not pc.IsMale()}{}{}{}{}{}{}
{}{}
{202}{(STARTING CONDITION)}{}{20}{ pc.Charisma>2()}{}{}{}{}{}{}
{}{}

(In Vamputils.py)
def mySetup(npc):
# do whatever
return 0

Notice that the line number of the first STARTING CONDITION is 0.


When
this is the case, the Starting Condition is evaluated but its
result is
ignored and it moves on. In other words, it doesn't matter if
mySetup(npc) returns 0 or 1, however we return 0 to be on the safe
side.

E) NOTES

You can simulate secondary starting conditional blocks by creating


a
silent audio response (The line MUST have an associated sound file
that plays nothing) followed by a group of (Auto-Link) lines with
conditionals.

{10}{[silence] ...}{[silence] ... }{#}{}{}{}{}{}{}{}{}{}


{11}{(Auto-Link)}{(Auto-Link)}{20}{pc.Charisma==1}{}{}{}{}{}{}
{}{}
{12}{(Auto-Link)}{(Auto-Link)}{30}{pc.Charisma==2}{}{}{}{}{}{}
{}{}
{13}{(Auto-Link)}{(Auto-Link)}{40}{pc.Charisma==3}{}{}{}{}{}{}
{}{}
...

{2000}{(STARTING CONDITION)}{}{10}{ not pc.IsMale()}{}{}{}{}{}


{}{}{}
{2001}{(STARTING CONDITION)}{}{50}{ pc.IsMale()()}{}{}{}{}{}{}
{}{}

You can force what amounts to closed captioning for a specific


dialog by first redirecting to a line with no associated audio
file.
When a line has no audio, close captioning is automatically turned
on.
It remains on until the dialog is over, even if the next response
has
audio.

{10}{... }{... }{#}{}{}{}{}{}{}{}{}{}


{11}{(Auto-Link)}{(Auto-Link)}{20}{pc.Charisma==1}{}{}{}{}{}{}
{}{}
{12}{(Auto-Link)}{(Auto-Link)}{30}{pc.Charisma==2}{}{}{}{}{}{}
{}{}
{13}{(Auto-Link)}{(Auto-Link)}{40}{pc.Charisma==3}{}{}{}{}{}{}
{}{}
...

{2000}{(STARTING CONDITION)}{}{10}{ not pc.IsMale()}{}{}{}{}{}{}


{}{}
{2001}{(STARTING CONDITION)}{}{50}{ pc.IsMale()()}{}{}{}{}{}{}{}
{}

------------------------------------------------------------------------
-------
IV.5 Considerations and Scripting
------------------------------------------------------------------------
-------

A) Four choices per NPC Statement

The dialog engine will display at most 4 responses. So you must be


careful with conditionals to make sure you don't introduce a bug.
For
example, a high level character could meet your Intimidation,
Persuasion,
Seduction and Domination criteria, making other responses
unavailable.
People also cheat. Don't assume just because it is the first
conversation of the game that they will have "at most" some
specific
value.

General rule of thumb : When possible, try to handle both branches


of a
conditional response (see below) so that you can accurately
control/predict the number of responses and link to "<More...>" as
a 4th response if more than 4 options may be possible.

{1}{NPC Male}{NPC Female}{# }{ }{}{}{}{}{}{}{}


{}
{2}{PC Male }{PC Female }{5 }{ Persuasion 4 }{}{}{}{}{}{}{}
{}
{3}{PC Male }{PC Female }{5 }{ Persuasion -4 }{}{}{}{}{}{}{}
{}
{4}{ }{ }{ }{ }{}{}{}{}{}{}{}
{}
{5}{NPC Male}{NPC Female}{# }{ }{}{}{}{}{}{}{}
{}

You can also control the number of responses using the OneOfSet()
command discussed earlier. It may be random, but it guarantees
only
1 response. You can also use the custom method LimitSet() (See
Common Examples Below)

The common scenario : You have a default way of getting through a


dialog, but you want to offer a shortcut or special reward to
someone
who has invested into a character with Dialog Skills.

You could display and handle lines for all possibilities (like
above),
or you could allow the user to take advantage of their most
powerful
dialog skill and not bother displaying the other options.

{1}{Male }{Female}{#}{ }{}{}{}{}{}


{}{}{}
{2}{max1 }{max 1}{10}{ }{}{}{}{}{}
{}{}{}
{3}{max 2}{max 2}{20}{Dominate 3 & LimitSet(1,4)}{}{}{}{}{}
{}{}{}
{4}{max 2}{max 2}{30}{Persuasion 5 & LimitSet(2,4)}{}{}{}{}{}
{}{}{}
{5}{max 2}{max 2}{40}{Seduction 4 & LimitSet(3,4)}{}{}{}{}{}
{}{}{}
{6}{max 2}{max 2}{50}{Intimidate 3 & LimitSet(4,4)}{}{}{}{}{}
{}{}{}
{7}{max 3}{max 3}{60}{ }{}{}{}{}{}{}{}{}

This allows you to keep track of when you might need to use a
"<More>".
Again, these are just ideas of how to help manage potential dialog
bugs. In practice, you will normally end up using some combination
of the examples above.

B) Scripts and Fail fast execution

When the conditional contains an AND, it uses FAILFAST execution.


This
means if the first condition fails, the second condition is not
even
executed. This is important if your function also performs
additional
hidden tasks. We will talk more about this later.

When dealing with lots of conditionals it is also good practice to


make
the first response a de facto non-conditional response that
ensures the
game can continue.

C) Advanced tricks

1) Fake Dominate Example:

Using LimitSet, we allow anyone with Dominate to see the


dominate
options.

Example Script:

|-------------------------------------------------------------------|
|Filename = [<vampire root>/python/vamputil.py]
|

|-------------------------------------------------------------------|
| ...
|
| def fakeDom(npc,level):
|
| snd="disciplines/dominate/dominate_mesmerize.wav"
|
| npc.PlayDialogFile(snd)
|
| __main__.FindPlayer().Bloodloss(level)
|
| __main__.ScheduleTask(0.3,"startDom('%s')" %
npc.GetName()) |
| __main__.ScheduleTask(1.3,"endDom('%s')" %
npc.GetName()) |
| def startDom(npcName):
|
| npc = __main__.FindEntityByName(npcName)
|
| if npc:
|
| npc.SetScriptedDiscipline('auspex 1')
|
| def endDom(npcName):
|
| npc = __main__.FindEntityByName(npcName)
|
| if npc:
|
| npc.SetScriptedDiscipline('auspex 0')
|

|-------------------------------------------------------------------|

Example Dialog:

{1}{NPC}{NPC}{#}{}{}{}{}{}{}{}{}{}
{2}{PC}{}{5}{Dominate 1 & LimitSet(1,2) }
{ }...
{3}{PC}{}{5}{pc.base_dominate>0 and LimitSet(2,2)}
{fakeDom(npc,1)}...

Note that the text of the second response will not be red
unless you
add another special condition:

{Thaumaturgy 1 & pc.base_dominate>0 and LimitSet(2,2)}

1) Auto resizing response Example:

For profession grade responses, you can build python functions


to
help guarantee all responses are seen. Basically you make some
methods that execute with every displayed line to keep track
of how
many lines have displayed. Then, at the right moment, display
more
and link to the remaining choices.

Example Script:

|-------------------------------------------------------------------|
|Filename = [<vampire root>/python/vamputil.py]
|

|-------------------------------------------------------------------|
|import dialogutil
|

|-------------------------------------------------------------------|

|-------------------------------------------------------------------|
|Filename = [<vampire root>/python/dialogutil.py]
|

|-------------------------------------------------------------------|
| from __main__ import Character
|
| def _Reset(self):
|
| self.dialogcounter=0
|
| def _Count(self):
|
| if self.dialogcounter == 3: return 1
|
| self.dialogcounter += 1
|
| return 1
|
| def _IsMax(self):
|
| if self.dialogcounter==3:
|
| self.Reset()
|
| return 1
|
| return 0
|
| Character.Reset = _Reset
|
| Character.Count = _Count
|
| Character.IsMax = _IsMax
|

|-------------------------------------------------------------------|

Example Dialog:

{1}{Opening Line}{Opening Line}{ # }{npc.Reset()}{}...


{2}{Response1 }{Response1 }{ }{npc.Count()}{}...
{3}{<More...> }{<More...> }{ 3 }{npc.IsMax()}{}...
{4}{Response2 }{Response2 }{ }{npc.Count()}{}...
{5}{<More...> }{<More...> }{ 5 }{npc.IsMax()}{}...
{6}{Response3 }{Response3 }{ }{npc.Count()}{}...
{7}{<More...> }{<More...> }{ 7 }{npc.IsMax()}{}...
{8}{Response4 }{Response4 }{ }{npc.Count()}{}...
{9}{<More...> }{<More...> }{ 9 }{npc.IsMax()}{}...
{10}{Response5 }{Response5 }{ }{npc.Count()}{}...
{11}{<More...> }{<More...> }{ 11 }{npc.IsMax()}{}...
{12}Nevermind }{Nevermind }{ }{ }{}...

Thanks to fail fast, as long as you put the npc.Count() method


last
within the conditional (5th) column, it will ensure the line isn't
counted if an earlier condition fails. IE:

{#}{Response }{Response }{ }{npc.IsMale() and npc.Count()}


{}...

If the line doesn't display because the npc is female, then it


isn't
counted.

Also notice that there is a <More...> every other line that


redirects to
itself. And a Reset at the beginning.

This allows you to build large, dynamic and complex dialogs


without
even having to think about wether a dialog option will appear or
not.

------------------------------------------------------------------------
-------
IV.6 Dialog Engine Bugs
------------------------------------------------------------------------
-------

1) Do not assign to 2 dimensional arrays or 2 dimensional hash maps


from
dialog Files. Bug in the dialog engine seems to reset the array to
null.

IE:

module.My2DArray[1][2]="3" <- will cause engine to set variable


My2DArray to null.

Wrap alterations to complex data structures with python methods.


(This
is a better practice anyway)

module.MyArraySetter(1,2,"3")

2) Calling an npc_maker's Spawn method will not work while the PC is


in a
dialog. There is no error, it simply will not spawn anything.

Workarounds:
- Use ScheduleTask() to delay spawn()
- Call spawn from NPCs OnDialogEnd Event (If it is an NPC that you
embed/create).

3) Single letter responses are ignored by the dialog engine.

Example: None of these lines will display nor will any of their
conditions even execute for evaluation.

{1}{Some Question}{Some Question}{#}{}{}{}{}{}{}{}{}{}


{2}{A }{1 }{10}{IsFollower("E") }{}{}{}{}{}{}{}{}
{3}{B }{2 }{20}{IsFollower("Lily") }{}{}{}{}{}{}{}{}
{4}{C }{3 }{30}{IsFollower("VV") }{}{}{}{}{}{}{}{}
{5}{D }{4 }{40}{IsFollower("Knox") }{}{}{}{}{}{}{}{}

You need at least 2 non-space, non-tab letters for the


engine
to recognize the line. For example, placing a period at
the
end of response can fix the bug.

{1}{Some Question}{Some Question}{#}{}{}{}{}{}{}{}{}{}


{2}{A. }{1. }{10}{IsFollower("E") }{}{}{}{}{}{}{}{}
{3}{B. }{2. }{20}{IsFollower("Lily") }{}{}{}{}{}{}{}{}
{4}{C. }{3. }{30}{IsFollower("VV") }{}{}{}{}{}{}{}{}
{5}{D. }{4. }{40}{IsFollower("Knox") }{}{}{}{}{}{}{}{}

========================================================================
=======
V > > > > Dialog Audio Synchronization
========================================================================
=======
------------------------------------------------------------------------
-------
V.1 DLG, VCD and LIP Files
------------------------------------------------------------------------
-------

So you make your dialog file and text appears on the screen when you
begin a
conversation with your game entity (be it a person or a telephone).
But how
do you make it actually speak?

In reality, the dialog engine involves 3 files:

DLG : DLG files are discussed in the previous section. They link
to
embedded entities and thus invoke the dialog engine. They
coordinate what NPC say and provide the text for the PC
response choices. When subtitles are turned on, normally
the text appearing in the DLG file appears for the NPCs as
well.

VCD : VCD files are general purpose sequence and synchronization


files.
They are used by several VTMB game components including cut
scenes,
animations and dialogs. They can do almost anything, but in
regards to dialogs, they are mostly used to specify what
audio file
plays when an NPC makes a statement.

LIP : Lip files break out how to move the mouth as the associated
mp3 is
playing audio. They also provides subtitles when the player
is not
interacting with the dialog engine. (This is most common
during
cut scenes that involve spoken audio. The introduction is a
good
example).

DLG files implicitly look for VCD files based on their file path.

Suppose the dialog file is located at:

<VTMB DIR>/Vampire/dlg/goo/foo.dlg

The dialog engine will look for VCD files under the directory:

<VTMB DIR>/Vampire/sound/character/dlg/goo/foo/

Furthermore, if the dialog engine is displaying an NPC statement at


line
10 of foo.dlg, it will specifically look for the file :

<VTMB DIR>/Vampire/sound/character/dlg/goo/foo/line10_col_e.vcd
Hopefully the file paths are obvious, but just in case I will break it
down.

An Embedded entity links to the file "dlg/goo/foo.dlg".


The game engine will never look for files outside the
Vampire directory. For this reason, "Vampire/" is considered
the BASE DIRECTORY for dialog files and is not included in
the derived search path.

After the embedded entity invokes the game engine, the game engine
searches for a VCD file under "/Vampire/sound/character/". So in
this case, "/Vampire/sound/character/" is considered the BASE
DIRECTORY for the dialog engine.

The VCD file name will follow the pattern:

line<index>_col_<speaker>.vcd

<index> : Line number that the NPC response appears on in the


corresponding .dlg file. By line number I mean the
number
that appears in the first column of the line, NOT the
physical distance from the top of the file.

<speaker> : Has several possible values:

e : everyone/default
f : female (if PC is female)
n : nosferatu (if PC is nosferatu)
m : ventrue

In practice, only the 4 above are ever used (though


the engine may support more)

The dialog engine will not actually look for a LIP file directly.
If a VCD file is found, it looks for a LIP file only if the
VCD has a speak event, and then the name of the lip file is based
on the name of the audio file and not on the name of the dialog
file.

What this means is, you can add new spoken NPC statements to the
game by
simply making a new line number in the DLG fle and creating a
corresponding
VCD file. If the VCD file points to existing NPC audio, you wont
have to
include the audio (mp3) or the lip file with your mod. This is handy
to
know as it can help to keep your mod size down.

------------------------------------------------------------------------
-------
V.2 VCD Internals
------------------------------------------------------------------------
-------
As mentioned earlier, VCD files provide general sequence and
synchronization
capabilities. There is A LOT that could be said about these files.
However,
all we care about right now is how they help us with dialogs. What is
the
minimum that you have to do to get audio to play?

The first line of a VCD file identifies an actor block.

actor "Vandal"
{
}

The actor is the NAME of the in game entity that the VCD data will be
applied
to. This is important. The audio that we set up will play at the
location of
the entity named "Vandal". However, if the entities name that you are
talking to is not Vandal, no audio will play. Another problem that can
happen
is if there is more than 1 entity on the map with the same name. The
engine
will play the audio at the first entity it comes across, which may or
may not
be the one standing in front of you.

The VCD files target actor is hard coded into the VCD file and can not
be
changed at runtime. Luckily, you CAN rename entities at runtime using
the
SetName() command.

Within the actor block are many different channels. Channels are
groups of
events that all start at the same time and execute simultaneously. VCD
files
support numerous channels, but the main one we are concerned with here
is
creating a channel with a speak event. The syntax looks like so:

actor "Vandal"
{
channel "My unique channel name"
{
event speak "My unique event name"
{
time 0.000000 14.461179
param "character/dlg/santa monica/vandal/line551_col_e.wav"
param2 "70dB"
fixedlength
}
}
}

The text after channel and event speak is arbitrary. It is whatever


you want
to call the channel. If you wish to stick with game conventions, any
channel
with a speak event is called "Speech" and NPC speak events are called:
"NPC
Line".

time : When to start and stop within the associated sound file.
If you
want to use a small inner sound sample from another
existing
sentence, you can specify the start/stop range here
without
having to bloat your mod with a new mp3 file.

You can also use the time range to shave time off a
slightly
unsynchronized audio file without bloating the upload
with large
audio files.

param : In the case of Speech, the event parameter is the name of


a wav
file. YOU ALWAYS SPECIFY A FILE WITH A .WAV EXTENSION. If
an mp3
file is detected in the target directory, it will be used
in the
wav files place, but if you specify mp3, it will not
work.

param2 : The volume level of the sound as it plays.

fixedlength : I have no idea what this is or why it is there (how


could
audio not be fixed length?). Still. it is there in
almost
all the VCD files, so we go with the flow.

You can also set up additional channels for executing gestures or


facial
animations on the entity while the audio is playing.

channel "Gestures"
{
event gesture "A little something extra"
{
time 0.000000 14.666667
param "ACT_CONVERSE_NORMAL_TALK"
}
}

channel "Expressions"
{
event expression "A smiling finish"
{
time 12.000000 14.666667
param "vandal"
param2 "Joy"
event_ramp
{
1.0000 0.0000
}
}
}

Note that expressions and Gestures stop when the VCD is finished
"playing". If you want an expression/gesture to "stick" (angry
woman with
arms crossed for example), you will want to add SetDisposition to
the 6th
column of the DLG line. See the sections below for more
information on
gestures, expressions and dispositions.

You can also use channels for altering the volume of the audio to
create
inflection or correct audio issues without having to redistribute the
audio
files. (Of course if you are distributing the audio for the first
time, you
should try to get it right so that alterations are not needed).

channel "Speech Triggers"


{
event loud "Get louder here"
{
time 10.110000 10.240000
param "0.130"
}
event loud " Get louder here as well"
{
time 10.320000 10.429999
param "0.110"
}
}

You will occasionally see a bonerename parameter at the end of the


actor
block. I'm not certain why this is, but I suspect that some sequences
or
animations may rename bones for their animation and the bonerename is
added
to vcd files to be certain that the bones are called what the
animation
expects them to be. If you see bonerename in one of the characters
existing
vcd files, I recommend doing it as well in your vcd file. And if you
don't
see it in the characters existing vcd files, you probably don't need
to do it
in your files either.

actor "Vandal"
{
...
bonerename "Bip01" "Bip01"
}

------------------------------------------------------------------------
-------
V.3 LIP Internals
------------------------------------------------------------------------
-------

As mentioned in part A above, the LIP file that gets loaded is based
on the
name of the wav file that the speak event is associated with. To keep
life
simple we always place the VCD, LIP and MP3 files into the same
directory
together. (and name them with the same convention). This convention is
used
by the main quest and thus is probably a good idea if you want to keep
your
mod code maintainable.

Here is a small example lip file: I have spaced things for easy
reading, but
in reality you SHOULD NOT add scope spacing.

------------------------------------------------------
|VERSION 1.2 |
|PLAINTEXT |
|{ |
| "Whoa" |
|} |
|WORDS |
|{ |
| WORD Whoa 0.000 1.000 |
| { |
| 119 w 0.000 0.250 1.000 0 |
| 652 ah 0.250 0.750 1.000 0 |
| 596 ao 0.750 1.000 1.000 0 |
| } |
|} |
|EMPHASIS |
|{ |
|} |
|CLOSECAPTION |
|{ |
| english |
| { |
| PHRASE unicode 12 " W h o a " 0.000 1.000 |
| } |
|} |
|OPTIONS |
|{ |
| voice_duck 1 |
| speaker_name Neo |
|} |
------------------------------------------------------
PLAINTTEXT :

A summary of the sentence, likely copied from the dialog file. The
reality is that the contents of PLAINTEXT are completely arbitrary
and
have no impact on the game at all. The Plaintext block doesn't get
used
by anything nor does it need to match the WORDS block or the
CLOSECAPTION block. (Though it is convenient when it does).

WORDS :

A breakdown of how the mouth moves with the scene. The text that
follows
the WORD definition doesn't have to match anything (PLAINTEXT OR
CLOSECAPTIONING), however it normally does in practice to help
keep the
file maintainable.

Each word is described using one of several dozen mouth pose


aliases with
timing info.

119 w 0.000 0.250 1.000 0

The first 2 elements describe the mouth pose. At the time of this
writing
I do not have a comprehensive list of mouth poses. However, they
appear
to be global and you can use words\mouth poses said by any model
on any
other **model. (See notes below for exceptions)

The third and fourth element are your start and stop time.

I'm not certain what the last 2 numbers are, but some dialogs have
a zero
at the end and some dialogs do not. I find that the presence of
the zero
tends to affect the articulation emphasis of the models mouth. I
have
also found when copying and pasting words from various dialog
files that
mixing and matching lines that end with 0 and lines that don't end
with
zero will normally crash the game at runtime. You can remedy this
by
making them all the same.

Finally, if a dialog is crashing, I found that often times


removing or
adding the zero to the end of the line will stop the crash. (if it
had a
0, remove or if it didn't have a zero, add).

My best guess is that the last 2 numbers are an event_ramp. IE:


how
fast/slow the mouth slides into and out of the pose. When the 0
isn't
there, it likely takes on a default value.

CLOSECAPTION :

The closecaption block actually does get used. However, it is ONLY


used
when the audio is part of a cut scene. If the lip/audio is being
executed
as a result of an NPC dialog, the NPC Statement within the DLG
file takes
priority over the closecaption block.

As you can see, the CLOSECAPTION block contains a Unicode phrase


including string length and time signatures for when it should
appear.

The most important thing to mention here is the Unicode string


itself. It
may appear that the Unicode is simply a normal string with spaces
between
the characters. But in reality, the spaces are null characters.

When python prints a string, it shows non-printables using their


escaped ASCII values. So from python the command:

>>> str('"Whoa"').encode("utf-16")[2:]

yields:

"\x00W\x00h\x00o\x00a\x00"\x00

** NOTICE that the double quotes are also Unicode **

however, in Word or notepad, the string appears as:

" W h o a "

To make matters worse, even once you understand what is really


there, most
text editors wont let you insert a null character into your text.

The good news is that you don't NEED close captioning for 95% of
the game
text. If you know for certain that your audio is intended to
support a DLG
conversation, then I recommend that you leave the area blank:

CLOSECAPTION
{
}

If you ARE creating audio for a cut scene (or you are obsessive),
you have
two options. You can use a Hex Editor, which will allow you to see
and
insert the null characters, or you can use my lipedit utility.

If you downloaded the zip version of this guide, a file called


"lipedit.py" should be under the tools directory. If not, the
source
code for lipedit can be downloaded from:

http://docs.google.com/View?docID=dhgs89mq_16f265qwfk

Before running the script, prepare the lip file with a non-Unicode
sentence:

CLOSECAPTION
{
english
{
PHRASE unicode "Whoa" 0.000 1.000
}
}

NOTE : No indentation and no phrase length. However, the timing


info
is present.

Once the lip file is prepped, use Explorer to find the lipedit.py
script,
right click it and Select "Edit with IDLE"

** If you do not see "Edit with IDLE", then you need to install
python 2.1.2. (See I.3 - Standard Tools)

Two windows will pop up. CLOSE the one that contains the source
code.

Now within the empty python window type:


>>> import lipedit.py
>>> lipedit.fix('C:\Path\input.lip','C:\Path\output.lip')

Obviously you should replace the path info with the full absolute
path of
your input and output lip files.

This will read in, parse and update the unfinished Unicode block,
including updating the character count.

OPTIONS :

speaker_name : The name that the subtitle system will place next
to
spoken text during a cut scene if subtitles are
turned
on. It does NOT have to actually match the name of
the
entity. (hence why it is "optional")

voice_duck : ??? - No idea, but it is present in all the lip


files,
so I include it.

Notes :

As mentioned in the Dialog section introduction, Lip animations


require
special nodes embedded into the facial features of the target
model. The
56 playable PC models do not have these facial nodes as the main
PC never talks in the game. Nor do they have nodes to support
emotion.

In general, if a character does not have an entry under


Vampire/dlg, the
character their model does not support lip animations or emotional
expressions.

This will obvisouly have an impact on mods that plan on supporting


lip based audio and conversations. The lack of facial nodes will
limit your options for main characters and companions.

------------------------------------------------------------------------
-------
V.4 Creating Custom Audio
------------------------------------------------------------------------
-------

This is a little outside the scope of this tutorial, but why not.

A) Tools I used:

- Python 2.1.2 : (if you haven't already installed it)

- WinAmp : (Don't use media player. It locks the files)

- CoolEdit 96 : There are a plethora of other sound editing tools.


This
just happens to be my favorite. Simple to use and
gets the
job done without too many extras.

- DbPowerAmp : Mp3 to wave/wave to mp3 conversion (I use release 10)

NOTE : VTMB mp3 audio is 44100Hz Mono at 64Kbps, constant


bitrate.

B) Full Audio or Partial Audio?

Having no audio at all is better than having bad audio. Even if


the
script is good, bad audio will detract from the players ability to
use
their imagination. If the player is speaking to a sexy model but
it
sounds like a dude speaking in his falsetto, I don't care what the
girl
is saying, the person playing the game wont be able to get into
it.

A nice middle of the road strategy that I have seen: Have the
first few
words spoken by the character, but not the whole sentence. Most
people
have enough imagination to carry out the rest of the sentence with
the
established voice.

IE: "Yes? How may I help you?"

With just the word "Yes" being spoken at the beginning.

This strategy will save you hours, days, if not weeks and months of
dialog
development time. It will also give you more freedom in designing
your
dialogs. Only the opening line even needs audio. Secondary lines
dont need
anything.

*** And if you use VCD files to point to segments of existing


audio, you
will decrease the size of your mod as you wont be including
full
audio.

There is a catch. If a line has audio, it normally doesn't display.


So to
get your hybrid lines to display you need to activate subtitles.

I find the best way to do this is to direct the dialog engine to an


intermediate line with "..." (that has no associated audio). This
will
activate the subtitles. Once subtitles are activated within a
dialog, they
stay on till the end of the dialog. You can then redirect to the
real line
with your segmented audio.

e.g.

{10}{...}{...}{#}{}{}{}{}{}{}{}{}{}
{11}{(AUTO-LINK)}{}{12}{}{}{}{}{}{}{}{}{}
{12}{Yes, what... }{Yes, what... }{#}{}{}{}{}{}{}{}{}{}
{13}{Response 1 }{Response 1}{}{}{}{}{}{}{}{}{}{}
{14}{Response 2 }{Response 1 }{#}{}{}{}{}{}{}{}{}{}
...
{25}{(STARTING CONDITION)}{ }{10}{1 }{}{}{}{}{}{}{}{}

B) Conversation Design

Normally when designing dialog for a game or mod, you would lock
yourself
in a room with a whiteboard or at least a lot of paper and
brainstorm on
what should be said by who and when... And in time you develop
your
scripts. Then you would send your scripts off to a recording
studio to be
spoken, and recorded by professional actors.

However, most mod developers don't have the luxury of some things
like
funding. Thus, many people will be looking to make use of
existing audio
and animation data.

The MAIN difference is how you go about designing your dialogs.


Instead
of designing a dialog and then having it recorded, you listen to
existing
audio with a particular conversation or even just a moment in
mind. You
let the existing material guide you. This holds true whether you
use a
hybrid or a full audio approach. The material will provide the
brainstorming. In fact you may not even know how you are going to
get
from point A to point B, but after hearing a few usable sound
bytes, the
ideas start to form.

It is frustrating for people used to being in full control of


their
conversations, but quality wise, building on top of what is there
and
within its context is generally best.

C) Breaking out Sound Bytes

Start by finding the target characters sound files. After you


extract the
.vpk files. Normally they are found somewhere under :

<VTMB INSTALLATION>/Vampire/sound/character/

Copy all associated files (mp3, lip and vcd) to a working directory.
Then
uncompress all the mp3 audio as wav files and delete the mp3 files.

If you wish, you can create a single text file with all the spoken
text.
The lip files contain the sentences. You can do this the hard way
(by
hand) or if you have installed cygwin, you can do it the easy way:

- Start cygwin,
- Use "cd" to change directory to the working directory
( /cygdrive/c/... )
- from the working directory type:

$ for f in *.lip ; do echo $f; sed –n 4p $f; done >


compiled.txt

compiled.txt will be created with all the spoken text.

(Be certain to open compiled.txt with WordPad the first time you
open it)

By my 3rd conversation, I stopped bothering with the text files


because I
came to realize that word searches rarely helped me as they didn't
tell me
anything about the tonality, the speed, the emotion. What was more
effective was opening each wav file up and trimming out re-usable,
stand
alone words and phrases. I used the file name to help describe what
the
audio was. I would also label the line number and the trim mark in
the
file name:

help_141_0.932.wav
me_311_5.876.wav
gasp_did_you_hear_that_521_7.234.wav

This will normally take an entire evening.

Now from a single directory, you could double click on files and see
if the
tonality is correct for certain combinations of words. This will
allow you
to form new sentences more effectively. Winamp allows you to queue
things
up easily by CTRL + Clicking wav files.So you can experiment and see
how
the end product might sound before you spend time appending
everything
together with CoolEdit.

If you need a specific word that doesn't exist, you can often piece
it
together by using 2 different words with similar syllables.

Example : subterfuge + admit = submit

But occasionally, you just have to admit defeat and try to think of
a
different word.

D) Re-Composition

This is the hard part. As I mentioned before, when I trimmed the


files, I
kept track of the trim marks. CoolEdit does a good job of showing
you the
selected area in the bottom right corner of the app:

[ -_--_--################-___-_- ]
^ ^
| |
2.345 6.789

Each wav file has a lip file with data in it that tells the engine
how to
move the mouth with the words. Problem is, the time signatures in
the lip
files will not match up with the timing of your new sentence. If I
trimmed
the example above and I wanted to START a sentence with the word
that used
to reside at 2.345, I would need to subtract 2.345 from all the time
signatures within the lip file.

And, I actually did that for my first conversation. Took 3 days to


make 3
lines.

So, I decided to make a python script to do it for me. It is named


lipedit.py (You may recognize this name if you have already read the
dialog section). The script comes with the zip version of this Guide
and
should be located in the tools/ directory.

To use it, you will have to have installed python (See standard
Tools in
Section I). Right Clip lipedit.py, chose "Edit with idle". Two
Python
windows will pop up. Close the one with the source code in it. In
the
(mostly emtpy) window type:

>>> import lipedit


>>> lipedit.fix("C:\\input\\file.lip","C:\\output\\file.lip",-2.345)

lipedit uses regular expressions to scan and fix the values.

Use Case Scenario:

Typically, I would use CoolEdit to see at what time the word


should be
spoken. Lets say the word "Help" starts at the 5.0 time signature
in
my wav file.

Next I look at the filename that help came from:

help_141_0.932.wav

Then I would open up line141_col_e.lip and search for the instance


of
the Word "help" around the 0.932.
WORD help .928 1.115
{
113 h .915 1.010 1.000 0
213 e 1.010 1.050 1.000 0
413 l 1.050 1.100 1.000 0
513 p 1.100 1.115 1.000 0
}

I would note that the first ACTUAL SYLLABLE of help begins at .915

So to make "help" appear at 5.0, I need to add 4.085: (yes, you


will
still need a calculator).

>>>
lipedit.fix('C:\in\line141_col_e.lip','C:\output\help.lip',4.085)

Now I open up help.lip and past the correct time signature for
help
into a new lip file that I am creating for the sentence.

Note that the python script ONLY FIXES the time signatures. You
still have
to go in, copy out the words (with the corrected time signatures)
into a
new lip file and update the lip file with the text that should
appear to
the user in the subtitles.

If this all sounds crazy, then go look at a lip file and then come
back
here and you will know what I mean.

The last step is the vcd file. The easiest thing to do is simply
correct
the file name/path, the audio length and then remove expressions,
etc from
the rest of the file. Of course, you are also free to throw stuff
in. Just
remember that any existing material was thrown off by the trim. And
I
didn't make a py script to autofix vcd files.

It is a tedious process. Even with the help of the lip timing


script, once
you get into the flow, you only average about 1 lip file every 45
minutes, and that is after you have pieced the wav files together
(which
may take you days).

Alternatively, if you have the means to record your own audio, you
can use
that. However, your biggest hurdle will be making realistic LIP
files. If
you DO decide to be brave and record your own audio, you may want to
generate text files of all the conversations. Then you can search
for a
word that you say and use the script to correct the timing (maybe).
Or you
could fudge it by hand. If I was piecing a line together word by
word from
scratch, I probably wouldn't bother with the python script.

Even if you cant find an exact word, something like it will normally
do.
For example, when muted, you probably cant tell if a models lips are
saying
devious or delicious.

========================================================================
=======
VI > > > > Animating NPCs with Python
========================================================================
=======

The animation is divided up into two categories: skeletal animations


and
facial expressions.

Once you understand what animations and expressions are available to


you,
there are several ways of incorporating them into the game:

Dynamic:
1) Direct (SetAnimation)
2) Dispositions
3) Gestures (Interesting Places)
4) Schedules

Embedded
1) Scripted Sequences
2) Choreographed scenes

------------------------------------------------------------------------
-------
VI.1 > > > > Skeletal Animations
------------------------------------------------------------------------
-------

Models have a skeleton and a hull. The skeletons attach to the hull
and
control movement of the hull. (The hull is normally painted with a
skin).

Being that models are so different, it should not be a surprise that


skeletal animations are NOT globally standardized. For example, how
could
stubs the zombie with no arms and no legs execute a "standard"
animation that
involves jumping into the air.

The good news is that most HUMAN LIKE NPCS (2 arms, 2 legs and a
head)share a
common skeleton. Thus, there is a set of "standard" animations. This
is made
possible because the MDL format allows models that share the same base
skeleton to also share animations by linking to an external MDL file
were
common animations are defined.

The vast majority of Human-Like NPCS link to "npc_allsequences.mdl".


This
is defined twice, once for male models and once for female models.

models/character/shared/female/npc_allsequences.mdl

or

models/character/shared/male/npc_allsequences.mdl

in both circumstance however, the master animation file further breaks


out
the common animations into separate animation files:

npc_allsequences.mdl :
- linkto -> shared/.../animal_feed.mdl
- linkto -> shared/.../baseball.mdl
- linkto -> shared/.../bushhook.mdl
- linkto -> shared/.../claws.mdl
- linkto -> shared/.../finished_moves.mdl
- linkto -> shared/.../fists.mdl
- linkto -> shared/.../forced_feed.mdl
- linkto -> shared/.../katana.mdl
- linkto -> shared/.../knife.mdl
- linkto -> shared/.../meleeshared_onehand.mdl
- linkto -> shared/.../meleeshared_twohand.mdl
- linkto -> shared/.../misc.mdl
- linkto -> shared/.../move_and_ranged.mdl
- linkto -> shared/.../seductive_feed.mdl
- linkto -> shared/.../sherifsword.mdl
- linkto -> shared/.../sledgehammer.mdl
- linkto -> shared/.../stake.mld
- linkto -> shared/.../tireiron.mdl
- linkto -> shared/.../zombie_feed.mdl

If you take the time to open up each of these files with VPKTool Model
Tool
tab, you can see all the animation names listed in the info window at
the
bottom of the tool. I have taken the liberty of documenting these in
Appendix
H.

Examples:

dance01
dance02
dance03
cower_idle
cower2_idle
cower3_idle
Raw animations are generally not applied DIRECTLY within the game.
They
are used by internal mechanisms such as the combat system, gestures,
and schedules and by embedded elements such as scripted_sequence.

The only time they are used directly within the game is when you have
a
"prop_dynamic" object. For example, in the strip club, there
are dancers up on stage that you can't approach. They are in fact not
npcs but "prop_dynamic" objects with an animation set.

You can create the illusion of applying an animation to an npc by


Hiding the npc (set the model to models/null.mdl), dynamically
Create a prop_dynamic where they are standing, and then set the
Model/Animation. The downside of applying animations in this
manner is that you have no control over the model's facial
expressions. This may or may not be a big deal for you.

Example:

_EntCreate = __main__.CreateEntityNoSpawn
_EntSpawn = __main__.CallEntitySpawn
npc = __main__.FindEntityByName("targetNPCName")
e=_EntCreate ("prop_dynamic", npc.GetOrigin(),npc.GetAngles())
e.SetName("prop_" + npc.GetName)
e.SetModel(npc.GetModelName())
e.SetParent(npc)
npc.SetModel("models/null.mdl")
_EntSpawn(e)
e.SetAnimation("dance03")

Some models contain additional internal animations that are specific


to that
model. For example, models/character/npc/common/stripper/Stripper3.mdl
contains several animations that only that specific model will
perform.

Other models link to additional external MDL files for animations. For
example,
models/character/npc/common/lotusblossom_girl/lotusblossom_girl.mdl
links to character/shared/female/stripper.mdl in addition to the
common
animations.

NOTE:

Non-Standard models such as Bosses require special animations for


basic movement and attack. If you spawn these creatures and tell
them to follow you, there is a good chance they will not because
their models are not capable of executing the engines standard
movement animations. The notes in this section do not apply to
non-standard boss models.

------------------------------------------------------------------------
-------
VI.2 > > > > Facial Expressions
------------------------------------------------------------------------
-------

Facial Expressions are basically animations meant specifically for an


NPCs
face. Because faces are more unique than the body, they get special
attention.

Not every model supports expressions, however if the model talks, then
generally it supports facial expressions. Each model that supports
expressions can define their own set of expressions. You can browse
the expressions for a given model\character under the
"Vampire\expressions" directory.

95% of the models just implement the standard set of expressions


(located
in Vampire\expressions\expressions.txt). The "common" expressions are
as follows:

"Neutral" "Nearly Crying" "Nearly Crying_No


Deform"
"Joy" "Melancholy Smile"
"Meloncholy_NoDeform"
"Fear" "Confused" "Disgust_NoDeform"
"Very Frightened" "Disgust" "Sad_NoDeform"
"Sly Smile" "Apathy" "Fear_NoDeform"
"Flirtatious" "Lowered Both" "Sly Smile_NoDeform"
"Anger" "Raised Both" "Confused_NoDeform"
"Mad" "Raised Right"
"Flirtatious_NoDeform"
"Enraged" "Raised Left" "Knockback"
"Sad" "Lowered Right" "Anger_No Deform "
"Miserable" "Lowered Left"

Example:

vv=mySpawnNPC("")
vv.SetExpression("Flirtatious")

In the case of VV, her model supports additional expressions.

NOTES:

- I found when executing the SetExpression() method, the next if


statement
(wherever it executed from) would throw an exception saying function
expects 7 parameters. You can avoid breaking later code by
preemptively calling if from within a try-catch block after using
the SetExpression method.

i.e.:

def SetExpression(npc, expression):


try: npc.SetExpression(expression)
except: npc.SetExpression(expression)
data="dummy"
try: if data=="": return
except: pass
return

- Model specific animations will only work on the original model. If


the
model is a clone of the original (ie: someone copied vv.mdl to
vv2.mdl so
that they could link to a different outfit), the vv specific
expressions
will not work on the clone. The expressions will only work on the
original
vv.mdl.

------------------------------------------------------------------------
-------
VI.3 > > > > Dispositions
------------------------------------------------------------------------
-------

A disposition is a combination of Body animation and Facial


Expression.
However, dispositions can not include just any Animation. They are
limited
to the STANCE animations defined in stances.mdl.

Dispositions are mostly used to emphasis the facial expression with


additional body language. For example, if someone is mad at you, they
might
place a hand on the hip or cross their arms. If they are trying to
seduce you
they may lay down on a bed in addition to the sexy smirk they throw at
you.

Like expressions, MOST dispositions are common. However, there are a


few
Dispositions that are meant for specific characters.

Common Dispositions:
--------------------
When setting a disposition, you specify a name and level. The name
corresponds to the body animation and the level corresponds to the
facial
mood.

Disposition Levels
---------------------------
Neutral [1]
Anger [1,2,3]
Joy [1,2,3]
Sad [1,2,3]
Fear [1,2]
Disgust [1]
Apathy [1]
Flirtatious [1]
Confused [1]
Lay [1,2,3,4]
Damaged [1]
Dead [1]
Sitting [1]
Bartender [1,2]
BehindBack [1]

Unique Dispositions:
--------------------

Disposition Levels
---------------------------
Therese [1,2,3] -> Therese Only
Lily [1,2] -> Lily Only
ChairDamaged [1,2] -> Lily Only
PrinceSitting [1] -> Chunk and Lacroix Only

Fortunately, all NPCs have a method on them called SetDisposition


which makes
Using dispositions much easier than animations.

vv=mySpawnNPC()
vv.SetDisposition("Apathy",1)

------------------------------------------------------------------------
-------
VI.4 > > > > Schedules and ScriptedDisciplines
------------------------------------------------------------------------
-------

A schedule is a tiny program that executes on an NPC. Every NPC has a


Schedule assigned to it. When you cast a spell in the game, under the
hood,
the game assigns your target a schedule that results in the spells
execution.
However schedules are not just used for spells. When you tell an NPC
to
follow you, they execute a special schedule that causes them to follow
you
around the map.

Most NPCs execute the common schedule SCHED_TROIKA_IDLE. This schedule


includes a laundry list of tasks such as scanning for enemies, the pc,
looking at the player if they are near, presenting a dialog icon if
the pc gets close enough, etc.

As you can imagine, changing an NPC's schedule can cause an animation


to
happen. However, it should be noted that schedules are not JUST
animations.
For example, setting an NPC's schedule to
SCHED_TROIKA_D_BLOODBOIL_EXPLODE
will show the very cool blood boil explosion animation. It will also
kill
the npc in the process.

FROM : vdata/system/disciplinetgt_xxx
SCHED_TROIKA_D_RAVENS
SCHED_TROIKA_D_TRANCE
SCHED_TROIKA_DISORIENTED
SCHED_TROIKA_D_BURROWING_BEETLE
SCHED_TROIKA_D_SPECTRAL_WOLVES
SCHED_TROIKA_D_SPECTRAL_WOLVES_ESCAPE
SCHED_TROIKA_D_BLOODSUCKERS_COMMUNION
SCHED_TROIKA_D_PESTILENCE" // Note: Dies at the end! (Dmg_Health
100%)
SCHED_TROIKA_SWAT_INSECTS
SCHED_TROIKA_D_HYSTERIA
SCHED_TROIKA_D_HALLUCINATION
SCHED_TROIKA_D_MASS_HALLUCINATION
SCHED_TROIKA_D_VISION_OF_DEATH
SCHED_TROIKA_D_BERSERK
SCHED_TROIKA_D_SUICIDE
SCHED_TROIKA_D_VISION_OF_DEATH
SCHED_TROIKA_D_BRAINWIPE
SCHED_TROIKA_D_BRAINWIPE_END
SCHED_TROIKA_D_POSSESSION
SCHED_TROIKA_D_DAZE
SCHED_TROIKA_D_BLOODSHOT_KNOCKBACK
SCHED_TROIKA_D_BLOODBOIL_EXPLODE
SCHED_TROIKA_D_BLOODBOIL_BOSS

* You can find other schedules by using the "picker" console command
from in
game.

Example:

vv=mySpawnNPC()
vv.ChangeSchedule("SCHED_TROIKA_D_TRANCE")

You can accomplish the same thing by using SetScriptedDiscipline()

vv=mySpawnNPC()
vv.SetScriptedDiscipline("dominate 1")

------------------------------------------------------------------------
-------
VI.5 > > > > Gestures and intersting_place
------------------------------------------------------------------------
-------

Interesting places are objects. You can think of them as phone-booth


sized
invisible boxes on a map that draw nearby NPCs to them like a magnet.
When
the NPC enters the box, they perform whatever action the box is
configured
for.

Interesting places generally use gestures to define/refine the


activities
that may occur when a user enters the box. Gestures map to animations,
however while it is safe to say that every Gesture has a corresponding
animation, it is not safe to say that every animation has a
corresponding
gesture.

(SAMPLE) FROM : Vampire/vdata/system/interestingplacetypelist.txt

ACT_CONVERSE_NORMAL_TALK
ACT_CONVERSE_NORMAL_LISTEN
ACT_COUCH_SIT_INTO
ACT_COUCH_SIT_IDLE
ACT_COUCH_SIT_OUTOF
ACT_COWER_INTO
ACT_COWER
ACT_COWER_OUTOF
ACT_COWER2_INTO
ACT_COWER2
ACT_COWER2_OUTOF
ACT_COWER3_INTO
ACT_COWER3
ACT_COWER3_OUTOF
ACT_DIE
ACT_DISORIENTED
ACT_DISPOSITION
ACT_DISPOSITION_MESMERIZED
ACT_DOORKNOCK
,,,
(See Appendix I for more)

All NPC's have a SetGesture() method on them. You can pass in one of
the
ACT_<gesture> strings, or you can pass in an animation name.

vv=mySpawnNPC()
vv.SetGesture ("ACT_COUCH_SIT_INTO")
vv.SetGesture ("ACT_COUCH_SIT_OUTOF")

OR

vv=mySpawnNPC()
vv.SetGesture ("CouchTV_Into")
vv.SetGesture ("CouchTV_outof")

Single shot animations and gestures will execute only once and then
stop.
However looping animations and gestures will continue to execute over
and
over again as part of the npc's schedule. Furthermore, the looping
IDLE_DISPOSITION gesture is hard coded into all the SCHED_TROIKA_IDLE
schedule so that an npc will always alternate between the idle action
and the
looping gesture you assign them.

This is very annoying and as a result, I recommend avoiding any


looping
gestures or animations with SetGesture.
------------------------------------------------------------------------
-------
VI.6 > > > > scripted_sequence and logic_choreographed_scene
------------------------------------------------------------------------
-------

Both of these entities allow you to apply an animation to an entity on


the map. Unlike the limited pure python solutions discussed above,
these
entities must be embedded into the map you wish to execute the
animation on
and hooked up to the entity by name.

A) scripted_sequence

Scripted Sequences are used to execute animations and movements on


map
characeters. By default, they execute once and then self-delete.
You
can override this behavior by setting some of the spawn flags:

bit value Meaning


1 1
2 2
3 4 Persistent
4 8
5 16 Start Enabled
6 32
7 64
8 128
9 256 Enable looping Post Idle Animation
10 512
11 1024
12 2048
13 4096
14 8192
15 16384
16 32768

Using bits : So a spawn flag has 16 options : 0000000000000000


They are either true or false. To enable an option, you set the
bit
to 1. When you are finished, you convert the binary value to
decimal.
The right most value of the binary number corresponds to bit 1.

To enable bit 3,5 and 9 = 100010100

Calculator -> View -> Scientific, check "[*] Bin".


Enter the number above and then hit "[*] Dec"
Value = 276.

Alternatively, you can add the values up from the value colum
of those
bits you wish to enable.
Persistent + Post Idle Animation Enabled = 4 + 256 = 260

Example: Have VV execute a standard animation in your apartment.


The
following entity must be embedded into the apartment:

We use spawn flag 260 so that the animation will loop.


{
"classname" "scripted_sequence"
"targetname" "vv_mesmerized"
"spawnflags" "260"
"m_flRadius" "5"
"m_flRepeat" "0"
"m_fMoveTo" "0"
"m_iszEntity" "vv"
"m_iszPlay" "dance01"
"m_iszPostIdle" "dance01"
"origin" "-1768.03 -2646.97 144.03"
"angles" "0 165 0"
}

] import custom
] vv=custom.mySpawnNPC("vv")
] seq=FindEntityByName("vv_mesmerized")
] seq.SetOrigin(vv.GetOrigin())
] seq.BeginSequence()

Option Details:

"m_flRadius"- Search radius for entities. Depending on the


spawn
flag, it may or may not care if the Entity
matches the
name of the m_iszEntity property.

"m_iszIdle" - If set, this is the animation that plays PRIOR


to
calling BeginSequence. Only has affect if
StartEnabled
is true.

"m_iszPlay" - When you call BeginSequence, this is the


animation that
plays

"m_iszPostIdle" - Animaiton that plays after m_iszPlay.

"m_fMoveTo" - 0 : entity plays animations where it is.


1 : entity walks to scripted_sequence, then
starts
2 : entity runs to scripted_sequence, then
starts
3 : Walk to scripted_sequence, Walk back when
finished
4 : Walk to scripted_sequence, Teleport back on
finish

B) logic_choreographed_scene

Some MDL files contain skeletal animations meant for as many as 4


NPC
models. To use these animations, typically the game uses the
logic_choreographed_scene entity to identify the animation and the
models
to execute the animations on.

For example, the opening scene of the game uses a scene with 4
npcs to
have your PC and their sire kneel in front of the theater.

logic_choreographed_scene is not limited to multi-actor


animations. You
can in fact use them to apply any animation from any mdl to any
other
entity model.

Example: Have VV execute the stripper lap dance in your apartment,


even
though it is not one of the standard animations:

{
"classname" "logic_choreographed_scene"
"targetname" "mylapdance"
"origin" "-1768.03 -2602.09 144.03"
"angles" "0 300 0"
"position_start" "1"
"position_end" "3"
"hide_ents" "0"
"force_lod" "0"
"target1" "noone"
"target2" "vv"
"BaseAnim"
"models/cinematic/Hollywood/Vesuvius/Lap_danceGroup_4.mdl"
"SceneFile" "sound/cinematic/Hollywood/Vesuvius/custom.vcd"
"OnCompletion" " mylapdance,Start,,0,-1,,"
}

** The actual targets of the animation are controlled by the


SceneFile. The internal target[x] attributes are ignored
and used
mostly as a local place holder so you don't have to go open
the
scene file to figure out what to name your targets.

The Corresponding .vcd file would be updated as follows:

|--------------------------------------------------------------------|
|Filename = [<vampire root>/sound/cinematic/.../custom.vcd]
|
|--------------------------------------------------------------------|
|actor "noone"
|
|{
|
| channel "Anim"
|
| {
|
| event sequence "Lap_dance"
|
| {
|
| time 0.000000 3600
|
| param "entire_scene"
|
| }
|
| }
|
| bonerename "Bip02" "Bip01"
|
|}
|
|actor "vv"
|
|{
|
| channel "Anim"
|
| {
|
| event sequence "Lap_dance"
|
| {
|
| time 0.000000 3600
|
| param "entire_scene"
|
| }
|
| }
|
| bonerename "Bip01" "Bip01"
|
|}
|
|fps 60
|
|snap off
|

|--------------------------------------------------------------------|

To run the animation, you would create a vv model named "vv", a null
model
named "noone" and then call the Start() method on the embedded entity.

] import custom
] vv=custom.mySpawnNPC("vv")
] noone=custom.mySpawnNPC("noone","models/null.mdl")
] scene=FindEntityByName("mylapdance")
] scene.Start()

Since the vv model is a real NPC (and not a prop_dynamic), you can set
her expression:

] custom.SetExpression(vv,"Sly Smile")

------------------------------------------------------------------------
-------
VI.7 Creating new Animations
------------------------------------------------------------------------
-------

1) The Reality

No one has been able to add NEW SKELETAL ANIMATIONS to the game
(aside
from facial lip animations). Luckily the game comes with hundreds
if not
thousands of existing animations that can be applied to any NPC
with a
human like skelton.

2) There is no spoon...

If a particular animation is necessary for a mod, there is a time


consuming workaround: Basically, you can deform a model in a
series of
steps. (Think about someone melting for example). With each step,
you save
off a seperate mdl file. You can then use a sequence of
ScheduleTask()
commands to execute SetModel() on the target npc in a timed
sequence to
immitate an animation.

Unfortunately, the animation would involve many mdl files and thus
be
huge. It would also only be applicable to a single model. You
would
likely only use this hack for a final boss fight or possibly a foe
that
is extremely common (sabbat?).

========================================================================
=======
VII. > > > > Editing Models/Skins
========================================================================
=======
This section covers a broad range of topics. Before I begin, let me
re-iterate what was said in the very first section of this tutorial:

YOU CAN:

- Edit textures (referred to as re-skinning)


- Deform existing models (deform means you can move existing
vertices
around: Make the nose longer, face thinner/fatter, etc... )

YOU CAN NOT:

- Create or Import models that were not based off of an original


VTMB model. (ie : you can not import a model you downloaded
from
turbosquid)
- Add/Delete vertices from existing VTMB models.

------------------------------------------------------------------------
-------
VII.1 Basics
------------------------------------------------------------------------
-------

Models are composed of several files:

<modelname>.mdl : Defines the structure of the model along with


animation,
bounding box, hit box, material, mesh and LOD
info.

<modelname>.vtx : vtx files store hardware optimized material,


skinning and
triangle strip/fan information for each Level Of
Detail
(LOD) of each mesh in the MDL. They come in
several names
for backwards compatibility with older hardware.
(DirectX
7)
<modelname.phy> : [optional] contains jointed ragdoll collision
model.

<skinname>.vmt : meta data file that "redirects" to actual texture.

<skinname>.ttz : ttz and tth work together to define the models


<skinname>.tth texture. When working with skins, you must
maintain both.

Additionally, MDL files may link to other MDL files internally for
shared animations.

------------------------------------------------------------------------
-------
VII.2 MDL File Details
------------------------------------------------------------------------
-------

MDL Files contain a lot of information. You can view more of this
information
using VPKTool. Use the Model Tools tab to select a .mdl file and open
it.

1) Texture Search Paths : Where to search for the VMT files.

2) Texture Names : The name of the VMT files. It is important to note


that
MDL files do not link directly to textures. They link to VMT files.
VMT
files are text based property files that point to the actual
textures:

##############################
#######################
--> # search/path/TEXTURE1(.vmt) # --> #
/full/path/TEXTURE1 #
#########/ ##############################
#######################
# MDL #
#########\ ##############################
#######################
--> # search/path/TEXTURE2(.vmt) # --> #
/full/path/TEXTURE2 #
##############################
#######################

3) VPKTool has is a window at the bottom that often times goes


unnoticed,
however contains some very cool info if you scroll up.

Aside from the texture info, it lists the models animations. Most
Animations come from a shared animations mdl file. Normally:

/models/character/shared/[male\female]/npc_allsequences.mdl

However, in addition to this "external" link, the models specific


animations are also listed. Typically these exist for cut-scenes
or complex dialogs where the general purpose expression engine
wasn't
good enough.

------------------------------------------------------------------------
-------
VII.3 Changing the Default Player Models
------------------------------------------------------------------------
-------

The instructions below assume you have extracted the contents of all
the
.vpk files somewhere accessible.

This is hands down the most common scenario and the most commonly
asked
question on the forums.

Player models are "special" because you can wear 4 different sets of
armor throughout the game. So, to support 1 clan/gender requires 4
different model files. For example, the male Brujah uses the models:

models\character\pc\male\brujah\armor0\brujah_male_armor_0.mdl
models\character\pc\male\brujah\armor1\brujah_male_armor_1.mdl
models\character\pc\male\brujah\armor2\brujah_male_armor_2.mdl
models\character\pc\male\brujah\armor3\brujah_male_armor_3.mdl

** Armor/Model pairs are setup in Vampire/vdata/system/clandoc000.txt

Without changing clandoc000.txt (do that at your own risk), the game
engine will look for these 4 files when dealing with male Brujahs. So,
in
order to replace the Brujah with a different model, you must clobber
not
one, but all four of these model files (and their support files).

So for example, lets say I want to replace Female Malkavian with


Jeanette's Model:

1) I go to Jeanettes directory:

models\character\npc\unique\santa_monica\jeanette\

and grab all the model files: (copy)

jeanette.dx7_2bone.vtx
jeanette.dx80.vtx
jeanette.mdl
jeanette.phy

2) I go to the PC female malkavian directory:

models\character\pc\female\malkavian\

And under each armor sub-directory, I paste jeanettes files.


Finally,
I rename Jeanettes files so that they match the file names of
the
original models/support files.

armor0\jeanette.phy ->
armor0\malkavian_female_armor_0.phy
armor0\jeanette.mdl ->
armor0\malkavian_female_armor_0.mdl
...
armor1\jeanette.phy -> armor1\malk_girl_armor_1.phy
armor1\jeanette.mdl -> armor1\malk_girl_armor_1.mdl
...
armor2\jeanette.phy -> armor2\malk_girl_armor_2.phy
armor2\jeanette.mdl -> armor2\malk_girl_armor_2.mdl
...
armor3\jeanette.phy -> armor3\malk_girl_armor_3.phy
armor3\jeanette.mdl -> armor3\malk_girl_armor_3.mdl

NOTES:

You can only play the game with HUMAN LIKE characters (2 hands, 2
legs,
torsoe and a head). Other models may look cool, but they can't
execute
the skelton animations thus preventing you from attacking,
jumping,
running, etc...

If you want to reskin a swapped play model, you would target the
skins associdated with the original model. In this case,
Jeannette.
The mdl files above were renamed, but internally they still point
to
Jeanettes textures and resources.

------------------------------------------------------------------------
-------
VII.4 Working with downloaded Skins
------------------------------------------------------------------------
-------

The instructions below assume you have extracted the contents of all
the
.vpk files somewhere accessible.

A) Replacing the Original Skin

To keep things simple, we will start with the typical scenario: you
Download someone else's skin from the internet and want to install
it
into the game. For this example, we will use Dark VV:

http://vh.noirscape.org/files.php?action=showfile&file=174

Most 3rd party skins REPLACE the existing Skin. This is done by
Clobbering the original skins vmt, ttz and tth files.

Following the chart above, the MDL will find the new VMT files (by
the
same name) which point to the new Texture files (by the same name).

The key here is that the mdl file is unchanged. Thus, when you play
the
game, the new skin will be visible on the original character.

B) Adding new clothing options to existing NPCs

Why replace VV's skin, when you can install an additional outfit?
The main
reason is because normal people wouldn't know how to use/access the
skin.
However, As a script savy modder armed with this guide, this
shouldn't
phase you.

1) Creating the new "outfit" model.

We start by duplicating the original model. You can do this the


hard
way by renaming each file, or you can do this the easy way by
simply
copying the whole directory to a new directory name. Lets go
easy!

THE MODEL:
----------
Copy the Original MODEL files (mdl, vtx, phy, etc...):

FROM: \Vampire\models\character\npc\unique\downtown\vv\*
TO : \Vampire\models\character\npc\unique\downtown\vv2\*

Update the Original Model

OPEN: \Vampire\models\character\npc\unique\downtown\vv2\vv.mdl
UPDATE: "Texture Search Path", change directory to vv2
COMMIT ALL CHANGES: When you hit this button, it will prompt
you for a
place to save. Save as a new name:

\Vampire\models\character\npc\unique\downtown\vv2\vv2.mdl

NOTE: Internally, the MDL file saves its own name. So it is


important
not to rename the file (using explorer) or even move it
to a
different directory after you save. If you decide to
rename the
file, re-open and save again using VPKTool.

Clean up : Delete Original MDL:

FROM:
\Vampire\models\character\npc\unique\downtown\vv2\vv.mdl

THE SKIN:
---------

Copy MATERIALS:

FROM:
\Vampire\materials\models\character\npc\unique\downtown\vv
TO :
\Vampire\materials\models\character\npc\unique\downtown\vv2

Zip files downloaded off the internet normally don't contain


all
required skins. For example, it may update the clothes, but
not the
teeth or hair. Most zip files assume that the original
directories
materials are still present. So we must copy everything over.

UNZIP SKIN:

TO :
\Vampire\materials\models\character\npc\unique\downtown\vv2

Note that the zip file may contain the full directory path. Be
Certain to unzip the files directly to the taget directory
(vv2 in
this case). You should be prompted about overwriting existing
files.
Say yes.

UPDATE VMT(s)

INSIDE:
\Vampire\materials\models\character\npc\unique\downtown\vv2

The original author likely expected their textures to be in a


different directory. So you must open the .vmt files (use
notepad)
and update the paths. In this case, to "vv2".

2) [Optional] Optimizatized method (uses less disk space)

The method above is the easy way. The downside is that a lot of
textures may unnecessarily be duplicated.

A more efficient method is to extract the downloaded skin to its


own
empty directory. Take note of the textures it updates. Rename
them
(say with a 2 somewhere in the name). Copy the renamed texture
files
to the original materials directory (VV) and update the
corresponding
(and renamed) vmt files to point to the new textures. Now
duplicate the
VV model (and associated vtx files) and rename them, but place
within
the original models directly. Finally, edit the newly named mdl
file,
and only update those textures that came with your download
(which you
should have renamed). This allows you to re-use the unchanged
textures
(like teeth).

3) Changing Clothes with a Script (from console)

You can change an NPCs model relatively easily using the


SetModel()
command:

pc=__main__.FindPlayer()

pc.SetModel("models/character/npc/unique/downtown/vv2/vv2.mdl")

Above, I use the PC as an example, but it works on NPCs as well.


Use
the "picker" console command to get an NPCs instance name, then:

npc=__main__.FindEntityByName("<npc_instance_name>")

npc.SetModel("models/character/npc/unique/downtown/vv2/vv2.mdl")

NOTES ON MULTIPLE SKINS:

MDL files DO support multiple skins. An example is:

Vampire\models\scenery\physics\cube\cube.mdl

If you create this entity and assign it to the variable "cube" you
can
change its skin using the command:

cube.FadeToSkin(1)

Cube only requires 1 texture, but the MDL file has 4 textures.
When an
mdl file has more textures than a model needs, FadeToSkin(#)
attempts
to reload the skin starting with an offset that corresponds to #.

If a model requires 5 textures to map to all of its parts, then


all it
need do to define an additional skin is define 10 internal texture
links. The function npc.FadeToSkin(1) would offset the starting
texture
accordingly. If there were 15 textures defined, FadeToSkin(2)
would
apply the last 5, etc...

However, VPKTool does not allow you to ADD textures to the MDL
file, so
there is no way to take advantage of the engines multiple skin
support
using VPKTool alone. There may be a way using more advanced
external
tools, but that is outside the scope of this tutorial.

------------------------------------------------------------------------
-------
VII.5 Editing Skins yourself
------------------------------------------------------------------------
-------

The instructions below assume you have extracted the contents of all
the
.vpk files somewhere accessible. For this example, we will create a
WHITE
business suit for Therese.

The instructions also assume the installation of the latest Gimp:

http://gimp-win.sourceforge.net/stable.html

GIMP comes with a DDS plugin already installed that allows you to SAVE
as
DDS. If you use another image editing program, you will need to find a
DDS plugin or a TGA to DDS stand alone conversion utility from the
internet.

A) Locate the original NPC's outfit:

Normally the outfit skins are located under :

<VTMB install dir>\Vampire\materials\models\character\npc

Example :

...\Vampire\materials\models\character\npc\unique\santa_monica\therese

B) Copy all outfit files to a working directory.

I personally prefer a Desktop accessible directory such as:

<Desktop>\work

C) Use VPKTool to convert the TTZ files to TGA:

- Run VPKTool
- Click on the "Texture Tools" Tab
- Browse to your working directory
- Select a TTZ file.
- Click on the "Convert TTZ to TGA" button.
- Repeat C steps above for each TTZ file.

E) Open the File up in Gimp (Or you image editing program of choice)

In this specific example, we want to edit the files :

businesssuit_body.tga
businesssuit_skirt.tga

For this example, we will do a simple color inversion. Find the


"Free Select Tool" on the tool menu and outline the 3
items in the image that are obviously fabric. If you mess up,
dont worry. You can "ADD" to the selection by holding down
shift. Or you can "REMOVE" from the selection by holding down
CTRL.

Once the 3 fabric areas are selected, from the Menu, select :
Colors -> Invert
When you save, specifiy "DDS" as the file format you wish to save
in.

COMPRESSION : DXT5
[X] Generate mipmaps

If this is not available (because your not using GIMP) You can save
as
TGA, but you will need to find a TGA to DDS conversion program from
the
internet.

Open up the Skirt file and invert the entire image then save in the
same
fashion.

E) Convert the DDS back into TTZ:

- Run VPKTool
- Click on the "Texture Tools" Tab
- Browse to your working directory for your DDS files.
- Check the Header Information:

[X] Hint DXT5

- Click the "convert DDS to TTZ" button.

This will create a new TTZ file AND update the local TTH file. You
must maintain both.

F) Backup and Copy

Backup the original files that you edited. (Typically simply


rename)
and then paste the new TTZ /TTH files into the materials directory.

Now when you see Therese, she will have a WHITE suit on instead of
a dark brown suit.

G) Transparency Notes

If you add transparency to the image, you may have to update the
texture's
associated VMT file to inform the game engine that the texture now
has
transparent regions. Otherwise, the transparency information may be
ignored by the engine. The most important thing to take from the
example below is the "$translucent" attribute. If you are not using
Gimp to save your DDS file, you should be certain to specify DXT5
using
whatever DDS conversion program you are using.

VertexLitGeneric
{
"$translucent" 1
"$basetexture"
"path\to\your\in\game\texture\without\a\file\extension"
"$nocull" "1"
}

------------------------------------------------------------------------
-------
VII.6 Deforming Models yourself
------------------------------------------------------------------------
-------

Before we begin, I will say upfront that this is not a Blender


tutorial.
Editing models is complicated business. And since you are not allowed
to
introduce new vertices, it is even more complicated with VTMB models.

So Why cant you add/delete vertices? The verticies are connected to


the
animation system and Blender doesn't have a clue how VTMB's animations
work. As a result, you can't add or delete verticies.

Also, in the case of characters (who have a default animation),


certain
pivots/verticies are connected to the animation system, so they will
follow
certain lines and paths around the character, regardless of what you
do with
the model. The end result : It is easier to edit items than
characters.
And when editing characters, you can't edit them significantly.
(Unless
you are going for that mutilated monster effect).

How it works:

PackfileExplorer is a stand alone program that can build a proxy


object
that mirrors a VTMB model.

Full_Vamped_import.py is a Blender Python script that can convert


PackfileExplorer's proxy object into blender compatible verticies

VampEd_mdl.py is actually 2 scripts merged into 1. It exports


back to the proxy object format and then merges the x,y,z changes
of the vertices back into the mdl file. If things dont match up,
it fails.

The instructions below assume you have extracted the contents of all
the
.vpk files somewhere accessible. Here I will take you through the
motions of exporting a model, making an easy change and importing it
back into the game. The final product will also demonstrate to you why
you can't make significant changes (especially to arms and legs).

For this example, we will shrink Heather.


A) Install Programs

NOTE : Installing programs may require you to be logged in as an


Administrator

1) Preliminary:

Blender 2.48 requires Python 2.52 if you wish to include


scipted
plugin support (which we do). It is in your best interest to
install
Python 2.52 BEFORE you install Blendor. It will make things go
a
lot easier.

- Goto http://www.python.org
- Find Python 2.52 (Feb 2008 release). Download and install.

2) Download Blender 2.48

** You can use a newer version, but it may require a different


version
of python.

- Goto http://www.blender.org/ and download the 2.48 version.

3) Install Blender 2.48

- I use MOSTLY defaults for installation:

- After it asked me for the installation diretcory, I was


presented
with a screen with 3 radio boxes asking me where to store
user
data files.

I did NOT go with the default for user data. Instead I


chose
"Use the installation directory". If you use the first
option,
then the scripts directory will be placed under :

C:\Users\[YOU]\AppData\Roaming\Blender Foundation\...

Which I dont care for.

- I was prompted to install the MS Windows C++ 2008


redistributable.
Blender opened the web site for me and I had to press
Download/Install (You may not get this prompt)

- Once I was done, I returned to blender and pressed OK.


- It checked for required DLLs (and since I had already
installed
python, all was well).

4) Install BlenderImportExport242.zip
http://paine.planetvampire.gamespy.com/?
action=files&op=cat&id=15

- Unzip the file to a working location (C:\temp?)


- copy the two .py files to the scripts directory of blender:

Full_Vamped_import.py
VampEd_mdl.py

|
|
V

C:\Program Files\Blender
Foundation\Blender\.blender\scripts

5) Activate the script: (Test it out)

Start Blender (if it is not already running)

Within Blender: From top to bottom, you will see a menu bar,
then
a pane with a wireframe dialgram, 2 more menu bars and then
a bottom pane with full boxes.

The top menu bar will have an "i" icon at the far left.
The middle menu bar will have a "#" icon at the far left.

The third Menu Bar will have an icon resembling 2 rectagular


boxes
at the far left.

You want to click on the third menu bars 2 rectangualr boxes.


A
Window Type drop-down List will appear. Select "Scripts
Window"

The word "Scripts" will appear in the 3rd menu bar. Click on
"Scripts" and Select "Update Menus"

Now Click on Scripts a second time and go to the "Import"


submenu.
Select the script: "VampEd_242(.x)"

The bottom pane should become a file browser. If all has gone
well,
you are ready to move on to the next step.

6) Install PackfileExplorer 3.9

It is important that you get the October 2008 release of


PackfileExplorer (Version 3.9). Previous versions (between 1.2
and 3.8) had a bug where the exported proxy objects where not
compatible with the import/export plugin.

** Some older versions of VampEd come with a .ms import plugin


for
3DS Max 7 if you happen to own that program (and that
version).
Otherwise, you will want to stick with PackfileExplorer 3.9

B) Extract the proxy D3d.x object.

1) Run PackfileExplorer 3.9

PackfileExplorer has 3 panes. A directory explorer pane. A


directory
listing pane and a data pane. The data pane has 2 tabs and is
initially
set to info: "NO WARRANTY..."

Change the data tab to "view"

2) Using PackfileExplorer's directory browser, browse to the


directory
that contains the model you wish to edit.

(VTMB)/Vampire/models/character/npc/unique/santa_monica/heather/

While PackfileExplorer lets you drill into .vpk files, dont.


Instead,
browse the extracted vpk directories (that you should have
created
earlier).

3) Click on the a model's .mdl file in the directory listing pane.


You should see the model appear in the view window.

** You can right click the model to see its' animations.


This is
more convenient than VPKTool for looking at animations,
but
doesn't allow you to update textures.

** Hold down ALT, CTRL or SHIFT while moving the mouse to


zoom in/out and change the angle.

4) Extract the D3d.x object.

Once you have verified that it is the correct model, right


click
the .mdl file in the directory listing pane and select "Copy"

Now, right click the directory that the .mdl file resides in
within
the Directory Explorer and select "Paste as D3D.x".

When all is said and done, you should have a .x and a .mdl file
that
both reside in the same directory.

5) Close the program


C) Importing the model

1) Start Blender if you have not already done so.

2) File -> New -> "Erase All"

3) The Scene contains 3 items. A light source, a cube and a


camera. Right click each of the 3 items and hit the "Delete"
key.
Confirm you want to delete.

** There can not be any extra or new verticies or the


export will fail.

4) File -> Import -> Vamp_Ed242(.x)

Browse to :

(VTMB)\Vampire\models\character\npc\unique\santa_monica\heather

select "heather.x" and hit the import button.

After import, I recommend clicking on "Object Mode" in the 2nd


Menu Bar and change it to "Texture Paint"

D) Manuvering:

ALT + MOUSE1 = ROTATE CAMERA (z axis)

SHIFT + ALT + MOUSE1 = MOVE CAMERA (x,y)

MOUSE WHEEL UP/DOWN = ZOOM IN OUT

Remember: You can not do anything that would add or delete


a vertice. If you do something unexpected, I would recommend
backtracking to "D)" above and re-performing the previous
steps.

E) Scaling :

In the 2nd Menu Bar, click on "Texture Paint"


Change to "Edit Mode"
In the same menu bar, click on the new "Select"
Choose "Select/Deselect All"
In the same menu bar, click:
"Mesh" -> "Transform" -> "Scale"
Move the mouse to make the model smaller. Click MOUSE1 when you
are finished.

NOTE : The model has the exact same number of vertices/pivots.


We have just shifted the position around.

F) Exporting:

File -> Export -> "Bloodlines_mod (.mdlx)"


Browse to the original Models directory and select

models\character\npc\unique\santa_monica\heather\heather.mdl

If all went well, it will say "Export Successfull".

What just happened? :

The changes where merged into the .mdl file and saved
as heather.mdlx. To use the new model, simply remove
the "x" from the end of the new model and paste it
back into VTMB. (generally backup the original .mdl
first).

G) Testing

1) Use PackfileExplorer:

If you rename the .mdlx file to .mdl, you can once again
view it using pcakfileExplorer and it will show you how
it will look in game. It is important to activate the
animations.

2) Use VTMB

Nothing beats looking at the model in game for proof.

Start up VTMB
Load a game
From console :

] pc = FindPlayer()
]
m="models/character/npc/unique/santa_monica/heather/heather.mdl"
] pc.SetModel(m)

In both cases above, since we shrunk heather, she will look like a
mutant because the fingers, elbows, knees, feet, etc... are still
pulled to their normal locations for the models animation.

If you were trying to update a character for a new outfit and want
to eliminate some of the clothing edges from the model... that
would probably work fine. But major edits cause the mutant effect
you are likely seeing.

H) A note about .bsp levels

VTMB uses version 17 of the Source Engine's BSP format.


Unfortunately,
there weren't any compilers released to the public that can
compile to that format. PackfileExplorer can export levels and comes
with a scene plugin so that levels export with the scenary in tact.
However, unlike item and character models, there is no plugin for
bringing the exported levels back into the VTMB game as of this
writing.

========================================================================
=======
VIII. > > > > Cameras and Cut scenes
========================================================================
=======

A basic how to is embedded in the code. After you extract all the
vpk files, see:

(VTMB Install)/Vampire/vdata/camerashots/camera shots how-to.txt

TODO! (Suppliment with an example)

========================================================================
=======
IX. > > > > Custom Items
========================================================================
=======

------------------------------------------------------------------------
-------
IX.1 Item Slots
------------------------------------------------------------------------
-------

If you extract all of the vpk files and look in the directory:

/Vampire/vdata/items

You will see configuration files for all the game items.

You can edit these files and update the weapons, however you can not
add
new files or make an item do something it wasn't meant to do.

In this regard, you can think of VTMB as having a large (but limited)
number
of item slots that can be used/updated. Some of them were not even
used with
the original release of the game.

As for item and weapon models; like character models, you can not
import new
models. All you can do is deform existing models. This has been
discussed
in other sections and holds true for item/weapon models as well.

------------------------------------------------------------------------
-------
IX.2 Item File Details
------------------------------------------------------------------------
-------

Lets take a look at a stripped down item. The colt anaconda...

WeaponData
{
"printname" "Item Name"
"description" "Item Description"

"viewmodel"
"models/weapons/anaconda/view/v_anaconda.mdl"
"playermodel"
"models/weapons/anaconda/ground/g_anaconda.mdl"
"wieldmodel_f"
"models/weapons/anaconda/wield/w_f_anaconda.mdl"
"wieldmodel_m"
"models/weapons/anaconda/wield/w_m_anaconda.mdl"
"infomodel"
"models/weapons/anaconda/info/i_anaconda.mdl"

"origin_x" "6"
"origin_y" "4"
"origin_z" "69"

"anim_prefix" "anaconda"
"activation0" "Single"
"activation1" "Fan"
"jammed0" "Jammed"
"jammed1" "Jammed"
"bucket" "1"
"bucket_position" "1"
"camera_class" "ranged"
"weight" "3"
"item_flags" "0"
"item_type" "weapon_firearm"
"sound_group" "Anaconda"
"equip_mask" "Normal"
"uses_accuracycursors" "1"
"impact_snd_group" "bullet"

"muzzleflash_particle" "W_ThirtyEight_Emitter"
"muzzlesmoke_particle" "W_ThirtyEight_Emitter-Smoke"
"viewmuzzleflash_particle" "W_ThirtyEight_Emitter"
"viewmuzzlesmoke_particle" "W_ThirtyEight_Emitter-Smoke"

"item_worth" "250"

SoundData { . . . }
Magazine { . . . }
Activation { . . . }
SpriteData { . . . }
}

Most of the fields are self explanatory. Those that are not... well I
would
be lying if I told you what I knew what they all meant. Hopefully
others
will inform me later and I can update this guide.

What I CAN do it tell you some of the values that are currently used
by
the game:

anim_prefix :
"none" "deserteagle"
"fist" "m37"
"loclpick" "sledgehammer"
"baseballbat" "mac10"
"katana" "knife"
"baton" "rem700"
"bushhook" "crossbow"
"claw" "sheriff_sword"
"grenade" "steyr"
"anaconda" "uzi"
"glock" "tireiron"
"revolver" "thirtyeight"
"supershotgun"

NOTE: If you look at Appendix H, you will notice that most of


these
prefix values correspond groups of animations. There are some
animation groups that are not used by the game (like "smith")

activation[01] :

"Attack"
"Throw"
"Single"
"Single Pump"
"Full Auto"
"Roll"
"Fan"
"Error"

jammed[01]

"Jammed"

camera_class

"ranged"
"noswitch"

item_type: (found in game)

"armor"
"weapon_thrown"
"weapon_firearm"
"weapon_melee"
"weapon_firearm hidden"
"weapon_melee hidden"
"hidden hidden"
"hidden"
"generic"
"powerup"
"bloodpack"

NOTE : vdata\system\items.txt defines a section called item types


that
also includes:
Ammo
Money
Jewelry

equip_mask:

"Normal"
"Normal No_Npc"
"Never"
"ClawedForm"
"WolfForm"

NOTE : It would appear as though this value means when the item
should
become visible/Usable. IE: Some items are ClawedForm,
which
means you would not be able to use them as the PC (without
editing
the item file).

------------------------------------------------------------------------
-------
IX.3 Item Naming and Categories
------------------------------------------------------------------------
-------

If you were to take the contents of item_w_colt_anaconda and paste


them
into item_k_lilly_key you would find that when you gave yourself the
key,
it would still be hidden (would not show up in inventory).

If you pasted item_w_colt_anaconda into item_g_locket, you would see


the
weapon appear in your inventory, it would even be in the correct
section.
However, when you tried to "use" it, the player would not equip it as
a
weapon.

The game engine enforces certain restrictions on items based on their


name.
For this reason, you can't just use any item in the game to make a
weapon.
You must use an item that starts with "item_w_". Nor can you link an
embedded door to just any item as the key. The item must start with
"item_k_"

And so we have the notion of item categories.

1) Armor : "item_a_" : 5 slots

There are very few armor items available in the game. When you use
armor,
it (normally) increases your armor rating. Some general purpose
items
can also provide protections. However, what makes armor special is
that
it is the only item that will cause the PC to change their model
when
the item is equiped. (If the players current vclan links to a
class that
has multiple models for the armor classes set up. See Appendix F
for
more info on vclans).

Ultimately, the players "model" attribute changes. Even if the new


mdl file looks exectly the same, so long as it has a different
name, it
is an event that can be detected with python.

2) KEYS : item_k_ : 40 slots

Keys and money are very similar. When you pick up a key, it
immediatly
becomes managed by (consumed by) the keychain. The key has no
inventory
sprite. Money clips are the same way. When you pick them up, they
are
immediatly managed by (consumed by) your wallet.

3) MONEY : item_m_ : 2 slots

The money objects are not actually money. They are simply
containers for
money. When the objects are embedded in the maps, they are told
how
much money they contain.

{
"classname" "item_m_money_clip"
"targetname" "cash"
"starting_money "200"
...
}

4) WEAPONS : item_w_ : 53 slots

What makes a weapon special is that it is the only item that will
relink the PC's skeleton to new animations for attack/look around/
etc. It is also the only item that will change the players
weapon model when used. Finally, like armor we can detect what
weapon is being used through the HasWeaponEquipped() method from
python. From a scripting perspective, this has important
implications as discussed below.

While there are 53 slots, not all are usable. In some cases,
weapons
are specifically designed for a particular creature/monster. In
essence,
the developers used the item to link the (unusual) creature's
model/skeleton to its attack animation. You can equip these
weapons, but
their animations may not work on a human skeletons.

Luckily, all items (except maybe money) take up a slot in the


player
inventory, even if they do not show up. Since you can use
HasItem()
on the PC to test their inventory, almost any item from any
catrgoey
can be used from dialogs if you simply need an item with presence
to
support your mod.

5) DISCIPLINES : item_d_ : 5 slots

One thing is for certain, at some point the developers entertained


implementing ranged disciplines (ie, you target another NPC from
a distance) as hidden weapons. Wether these items are actually
used
by the game or not has not been tested.

I dont generally recommend editing these, but if you are trying to


build a mod that introduces a new ranged disciplines, Editing
item_d_holy_light may be a good starting point.

6) GENERIC : item_g_ : 78 slots

Generic items are ... well.. generic. Mostly quest items (test for
presence in inventory) and bloodpacks. Bloodpacks are interesting
because they are one of the few items you can actually use
directly
from inventory. While they edit your health, unforunately, so
can a lot of other things... so there is no reliable way of
detecting usage of bloodpack marked items.

7) POWERUPS : item_p_ : 27 slots

Powerups generally improve your stats. They generally come in


2 forms: good luck charms and books.

Charms are items that grant protection or some other stat


increase so long as they are in your inventory. Books
are more permanent. You activate and then gain a
permanent stat increase as a result of the activation.

The books alteration can be detected from python, but like


bloodpacks, there is no reliable way of knowing for certain it was
the books activation.

------------------------------------------------------------------------
-------
IX.4 Discovering unused Item Slots
------------------------------------------------------------------------
-------

A lot of items were embedded into the game that are not used. How do
you
know what is used and what isn't? Not an easy question.
A) Grep

Personally, I install cygwin. Then cd to


cygdrive/c/Program.../Vampire
and then type:

grep -Hir <item_name> .

It takes about 3 min to run and when it is finished it tells me if


the
item is used by the game and where. (It is important that you have
installed whatever patches you plan on building upon and extracted
all
the meta data out of the map .bsp files before you run the grep).

Don't pay attention to hits on the .vpk files. What you care about
is if
it is in the metadata of a BSP map file, a python script (.py) or
dialog
file (.dlg).

C) A few examples:

These items are unused by the original game:

item_p_occult_lockpicking
item_g_ring_serial_killer_1

You can edit these items, there description, what (existing) model
they
use to display etc... However, when embedding them within a map or
accessing them from your scripting code, you will still have to
refer
to them by their original name.

------------------------------------------------------------------------
-------
IX.5 Freeing up Item Slots
------------------------------------------------------------------------
-------

There are a finite number of item slots. Sometimes, adding a new item
to the
game means getting rid of something else. If you are building your mod
on
top of someone else's mod and you wish to add a special item, you must
be
certain that you do not use an item that one of your support mods
depends
on.

Note the word "depend". If it is not necessary for the mods function,
then
you can remove the item from the mod so that you can use it.

For example, I used the 2 items above for my companion mod.


However,
one of the items is nothing more than a diary to help explain what
the first item is. You could remove the non-essential book.

Wesp also freed up item_g_wireless_camera_2, item_g_wireless_camera_3


and
item_g_wireless_camera_4 by changing the associated quest to only
require
1 stackable camera.

Last but not least, you can update the game to free up items. For
example,
many items exist just in case you kill someone. Mercurio, the cook
and Doris at the diner. You can simply make these people invincible
and
walla... no more need for backup items. The need for many of the keys
can
be eliminated by using python scripts to automatically open doors as
well.

------------------------------------------------------------------------
-------
IX.6 Capturing Weapon usage Events
------------------------------------------------------------------------
-------

The VTMB engine does not provide a nice way to capture events. I will
discuss 2 approaches here which are work arounds. Ultimately, these
methods require an item that you can detect usage using python.

IE : You know what armor the pc is using. You also know what weapon
they have equipped. With some fancy state flags you could maybe detect
when stats/health have increased as a result of an item being used.

A) Basics : Defining Aliases and Binds

Throughout this guide I have focused on Python. I have mentioned


console
commands, but generally only when they are needed to accomplish
something
that can't be done from python. Well this is one of those
situations.

The console supports the concept of aliases. An alias is like a


tiny, one
line program. It can execute console commands or python commands.

] alias foo "print 'This is a python command'"


] foo
This is a python command

The console also supports the concept of key bindings. A key can
be bound
to execute a string, or execute an alias:

] bind t " print 'You PRESSED T!'"


] bind f "foo"
If you hide the console, then press t or f and then unhide the
console,
you will see messages printed.

Finally, python supports the concept of KEYDOWN and KEYUP events


through
the use of "+" or "-" infront of an alias definition.

] alias +foo "print 'KEY DOWN!'"


] alias -foo "print 'KEY UP!'"
] bind f "+foo"

+foo will execute when the f key goes down and -foo will execute
when the
f key comes up, even though you only bind f to +foo.

B) Requiring users to setup special cfg values:

So, one approach to capturing item usage events is to capture the


attack event and then execute some code to see if you should do
something special based on the weapon equipped.

|--------------------------------------------------------------------|
|Filename = [<vampire root>/Vampire/cfg/autoexec.cfg]
|

|--------------------------------------------------------------------|
| // Required by Mod
|
| alias u_i_1
"__main__.ScheduleTask(0.0,'OnPlayerAttackStart()')" |
| alias u_i_2 "__main__.ScheduleTask(0.0,'OnPlayerAttackEnd()')"
|
| alias +m_attack "u_i_1;+attack"
|
| alias -m_attack "u_i_2;-attack"
|

|--------------------------------------------------------------------|

Notice the code above uses ScheduleTask. This forks the event off
so
that it returns quickly and prevents any python errors/exceptions
from
breaking the users ability to attack.

|--------------------------------------------------------------------|
|Filename = [<vampire root>/Vampire/python/vamputils.py]
|

|--------------------------------------------------------------------|
| ...
|
| def OnPlayerAttackStart():
|
| if
__main__.FindPlayer().HasWeaponEquipped("item_my_weapon") |
| print "THEY ARE USING MY EDITED WEAPON!\n"
|
| # MAKE PC UNSEEN but unable to move (example)
|
| __main__.ccmd.notarget=""
|
| __main__.ccmd.player_immobilize=""
|
|
|
|
|
| def OnPlayerAttackEnd():
|
| if
__main__.FindPlayer().HasWeaponEquipped("item_my_weapon") |
| print "THEY STOPPED USING MY ITEM/WEAPON!\n"
|
| __main__.ccmd.notarget=""
|
| __main__.ccmd.player_mobilize=""
|
|
|

|--------------------------------------------------------------------|

The last part is the tricky part. For all of this to work, the
USER
must manually hook up the +m_attack you defined within their
config.cfg
so that your script receives the OnPlayerAttackStart and
OnPlayerAttackEnd notifications.

|--------------------------------------------------------------------|
|Filename = [<vampire root>/Vampire/cfg/config.cfg]
|

|--------------------------------------------------------------------|
| ...
|
| bind "MWHEELUP" "invprev"
|
| bind "MOUSE1" "+m_attack" // changed from bind "MOUSE1"
"+attack" |
| bind "MOUSE2" "vdiscipline_last"
|
| ...

|--------------------------------------------------------------------|

And this is the dilemma with this solution. It requires a user who
is not
afraid to get their hands dirty with a config.cfg file. Still it
works
and in some ways it is less intrusive since the user KNOWS what
you are
doing.

C) AUTO Setup config values:

Here, we use the same approach as B., however we do a little extra


leg work so that the user doesn't have to do anything at all. For
starters, we add a new line to your autoexec.cfg:

|--------------------------------------------------------------------|
|Filename = [<vampire root>/Vampire/cfg/autoexec.cfg]
|

|--------------------------------------------------------------------|
| // Required by Mod
|
| alias execonsole "exec console.cfg"
|
| alias u_i_1 "__main__.ScheduleTask(0.0,'
OnPlayerAttackStart()')" |
| alias u_i_2 "__main__.ScheduleTask(0.0,'
OnPlayerAttackEnd()')" |
| alias +m_attack "u_i_1;+attack"
|
| alias -m_attack "u_i_2;-attack"
|

|--------------------------------------------------------------------|

The new execonsole alias allows us to write console commands to


a file
and execute them from python.

The idea is, when the game loads, we fix the attack binding to
point
to our custom binding. Easier said than done. For one thing,
this
involves reading in the config.cfg file, parsing it for
"+attack"
and then sending a command to the game to rebind the associated
key with "+m_attack". And we must not forget that the player can
bind multiple keys to +attack (MOUSE1 and the letter "q" for
example)

|--------------------------------------------------------------------|
|Filename = [<vampire root>/Vampire/python/vamputils.py]
|

|--------------------------------------------------------------------|
| ...
|
| def OnPlayerAttackStart():
|
| ...
|
|
|
| def OnPlayerAttackEnd():
|
| ...
|
|
|
| def FixAttackBinding():
|
| data = ''
|
| fin = None
|
| try:
|
| fin = open('Vampire/cfg/config.cfg',"r")
|
| line = fin.readline()
|
| while line:
|
| s = line.rfind('"+attack"')
|
| if -1 != s:
|
| r = s
|
| s = line.find(' ')
|
| data='%sbind %s "+m_attack"\n' %
(data,line[s:r].strip()) |
| line=fin.readline()
|
| finally:
|
| if fin: fin.close()
|
|
|
| if 0 != len(data):
|
| cfg=open('Vampire/cfg/console.cfg', 'w')
|
| try: cfg.write(data)
|
| finally: cfg.close()
|
| __main__.ccmd.execonsole=""
|
|
|
| FixAttackBinding()
|
|--------------------------------------------------------------------|

In this scenario, the binding is fixed when the game is started.


If the
user changes their config within the game, they would break the
item
until they restarted the game. However, telling a user they have
to
restart their game if they change the config isn't as
complicated as
walking them through editing their config.cfg file.

D) Discovering what NPC is under the target hair:

The game doesn't really support this, but here I talk about
workarounds.

There are two workarounds. The easy and the hard work around. The
hard
work around involves computing a range of values that represents a
cone
in the direction that the PC is facing and then grabbing the
coordinates
of all the NPCs on the map and seeing who is in that cone and who
is
closest. This actually isn't that hard if you treat the map as a
2D map,
however when you bring the z axis into the equations (maybe pc is
looking
up at a balcony), the computations get more difficult. Other than
the
mathematical complexity, the other issue with this approach is
that
python is slow compared to C++.

A much easier method is using a console command to change


something about
the npc under the crosshair and then examine all NPCs for the
change.
Once found, change the "something" back.

The two console methods I was able to use with this method:

npc_freeze
npc_hearing_sensitivity #.#

I mention 2, because if you are trying to make a freeze gun, you


don't
want to depend on NPCs who are frozen to identify who is under the
target
hair. On the other hand, freeze doesn't take parameters, so it is
ideal
as you can accomplish the grapple without having to write to the
console.cfg file. Here is an example:
|--------------------------------------------------------------------|
|Filename = [<vampire root>/Vampire/python/vamputils.py]
|

|--------------------------------------------------------------------|
| ...
|
| # STUN GUN...
|
| def OnUsedMyWeapon(targetNPC):
|
| print "TARGET [%s] " % targetNPC.GetName()
|
| targetNPC.Faint()
|
|
|
| def OnPlayerAttackStart():
|
| if __main__.FindPlayer().HasWeaponEquipped("item_my_item")
|
| __main__.grapple=None
|
| __main__.ccmd.npc_freeze=""
|
| __main__.ScheduleTask(0.1,'OnGrappleNPC()')
|
|
|
| def OnPlayerAttackEnd():
|
| pass
|
|
|
| def OnGrappleNPC(found=0):
|
| if found:
|
| OnUsedMyWeapon(__main__.grapple)
|
| else:
|
| npcs = __main__.FindEntitiesByClass("npc_V*")
|
| for npc in npcs:
|
| try:
|
| if (npc.playbackrate==0.00):
|
| __main__.grapple=npc
|
| __main__.ccmd.npc_freeze=""
|
|
__main__.ScheduleTask(0.1,'OnGrappleNPC(1)') |
| break;
|
| except:
|
| pass
|
|
|
| def FixAttackBinding():
|
| ...
|

|--------------------------------------------------------------------|

Using npc_hearing_sensitivity is basically the same, however you


have to
use the console function (See III.3) to send the initial command.

npc_hearing_sensitivity 1.2

If an npc is found, you can use npc.TweakParam("HEARING 1") to


fix without having to issue another console command.

========================================================================
=======
X. > > > > Miscellaneous
========================================================================
=======

A) Death

When an NPC is killed, a copy of their instance name is placed in


a
global array called __main__.G.morgue[]. The IsDead() function
ultimately
looks up the name in the array to decide if someone is dead.

B) Reserved Entity Names

"!player" <- refers to the (potentially unnamed) player.

"!playerController" <- refers to the (potentially unnamed) player


controller if one exists. (There are used
by cut
scenes)

"!dialogpartner" <- When you begin a conversation with someone,


this
refers to the person you are talking to. It
only
remains valid while the conversation is
active.

C) Special Embedded Entity Targets

Some embedded entities have a model reference instead of a


targetname.
Model reference takes the form : *<number> ex: "*8".
This represents the 8th instance of the class type at runtime. So
if you
ran FindEntitiesByClass() on the class of the embedded entity, *8
would
correspond to the array[8] instance returned by the function.

This means when you embed new data into map files, you should
always
append changes to the bottom so that you don't risk messing up
other
index references.

========================================================================
=======
XI. > > > > Legalities
========================================================================
=======

VTMB offers no provisional rights to mod developers. This has


different
implications in different regions, however the bottom line is this:

YOU CAN'T MAKE ANY MONEY FROM YOUR MOD (ie : you can't sell it)

This should not come as a surprise since free work is generally


convention
within the modding communities.

Also, DO NOT distribute vampire.exe with your mod. Doing so is


blatantly
illegal and would be construed as distributing a pirated or "cracked"
version
of the game.

========================================================================
=======
XII. > > > > Common Scenarios
========================================================================
=======

A) Discovering a location on the map directly in front of or behind you:


------------------------------------------------------------------------
# USAGE : pc = FindPlayer()
# loc = TraceLine(pc.GetOrigin(),pc.GetAngles()[1],50)

def TraceLine(pos, angle, dist):


from math import pi as _pi
from math import cos as _cos, sin as _sin

# degToRad : r = d/(360/2pi)
xoffset = dist * _cos((angle/(360/(2*_pi))))
yoffset = dist * _sin((angle/(360/(2*_pi))))

return (pos[0]+xoffset, pos[1]+yoffset, pos[2])


B) Turn someone or something around 180 degrees. Calculates Facing.
------------------------------------------------------------------------
## Usage : angle = pc.GetAngles()[1]
## facing=(0,RevAngle(angle),0)
##
## Param 1 = angle degrees as a decimal between 180 and -180

def RevAngle(angle):
return (abs(((angle+180)/360)-0.5)*360)-180

C) Figure out if 2 objects are within a certain distance of each other


in 3D.
------------------------------------------------------------------------
-----
## USAGE : npc = FindEntityByname("VV")
## near = npc.Near(FindPlayer().GetOrigin())
##
## Param 1 = location (x,y,z)
## Param 2 = radius [default 200]

from __main__ import Character

def _Near(self,loc,r=200):

# Avoid square root function. very inefficient


# if (Distance)^2 > (x2-x1)^2 + (y2-y1)^2 + (z2-z1)^2

loc2=self.GetOrigin()
xd=loc2[0]-loc[0]
yd=loc2[1]-loc[1]
zd=loc2[2]-loc[2]
return (r*r) > (xd*xd) + (yd*yd) + (zd*zd)

Character.Near=_Near

D) Like Traceline, but you can offset the point by an angle. IE: 90
would be
the point directly to your right. angle 0 would be the same as
TraceLine().
------------------------------------------------------------------------
----
## USAGE : loc = FindPlayer().TraceCircle(50,90)
##
## Param 1 = distance from entity
## Param 2 = angle from entities current facing

from __main__ import Character

def _TraceCircle(self, radius=50, angleOffset=0):


from math import pi as _pi
from math import cos as _cos, sin as _sin

pos = self.GetOrigin()
angle = self.GetAngles()[1] + angleOffset

# degToRad : r = d/(360/2pi)
xoffset = radius * _cos((angle/(360/(2*_pi))))
yoffset = radius * _sin((angle/(360/(2*_pi))))

return (pos[0]+xoffset, pos[1]+yoffset, pos[2])

Character.TraceCircle=_TraceCircle

E) Test if the PC is in stealth or not:


---------------------------------------
## USAGE : inStealth = FindPlayer().IsStealth()

from __main__ import Character

def _IsStealth(self):
squating = ((self.GetCenter()[2] - self.GetOrigin()[2]) == 18)
return (self.active_obfuscate or squating)

Character.IsStealth=_IsStealth

F) Dynamically spawn an entity


---------------------------------------
## USAGE : vv = SpawnEntity("MyVV")
##
## All but the first param is optional
##
## param 1 : entityName (string name of entity that you make it up)
## param 2 : entityType. VTMB internal classname. (def "npc_VVampire")
## param 3 : model. String specifying full internal model path.
## param 4 : distance in front of PC to create entity (def is 50)

def SpawnEntity(entityName="", \
entityType="npc_VVampire", \

model="models/character/npc/unique/downtown/vv/vv.mdl", \
distance=50):

pc = __main__.FindPlayer()
position = pc.GetOrigin()
angle = pc.GetAngles()[1]

# calculate point in front of PC


point = TraceLine(position,angle,distance)

# reverse angle so npc is facing pc


facing=(0,RevAngle(angle),0)

ent = __main__.CreateEntityNoSpawn(entityType, point, facing )


try: ent.SetRelationship("player D_NU 0")
except: pass
try: ent.SetModel(model)
except: pass
try: ent.SetName(entityName)
except: pass
__main__.CallEntitySpawn(ent)
return ent
G) Dynamically spawn an NPC
----------------------------
## USAGE : vv = SpawnNPC("MyVV")
##
## All but the first param is optional
##
## param 1 : npcName (string name of NPC that you make it up)
## param 3 : model. String specifying full internal model path.
## param 4 : distance in front of PC to create entity (def is 50)

def SpawnNPC(npcName="", \
model="models/character/npc/unique/downtown/vv/vv.mdl", \
distance=50):

ent = SpawnEntity(npcName,"npc_VVampire", model, distance)


ent.LookAtEntityEye("!player")
return ent

H) Dynamically spawn an Object


-------------------------------------
## USAGE : stool = SpawnPhysics ("MyStool")
##
## All but the first param is optional
##
## param 1 : objectName (string name of object that you make it up)
## param 3 : model. String specifying full internal model path.
## param 4 : distance in front of PC to create entity (def is 50)

def SpawnThing():

pc = __main__.FindPlayer()
position = pc.GetOrigin()
angle = pc.GetAngles()[1]

point = TraceLine(position,angle,50)
thing = __main__.CreateEntityNoSpawn("prop_physics", point,
(0,0,0) )
thing.SetModel("models/scenery/structural/society/stool.mdl")
thing.SetName("myThing")
__main__.CallEntitySpawn(thing)

# Add sparkles...
look = __main__.CreateEntityNoSpawn("inspection_node", point, (0, 0,
0))

# SetParent locks the relative origins of 2 objects. If 1 moves,


# so does the other.

look.SetParent("myThing")
__main__.CallEntitySpawn(look)

I) LimitSet for Dialogs


-------------------------------------
# LimitSet is a convenience function for dialogs to help limit the
# number of responses when more than 1 is possible. Unlike OneOfSet,
# LimitSet will always display the first condition to evaluate to
# true. To guarantee expected behavior, use increasing iterators and
# a different set ID for consecutive sets. Set IDs and iterators should
# be positive integers greater than 0
#
# Example:
#
# {... and LimitSet(1,3)} \
# {... and LimitSet(2,3)} > Only 1 response will display
# {... and LimitSet(3,3)} /
# {... and LimitSet(1,2)} \
# {... and LimitSet(2,2)} / Only 1 response will display
# {... and LimitSet(1,1)} \
# {... and LimitSet(2,1)} / Only 1 response will display

def LimitSet(iteration,setid):
npc = None
modelindex = -1
timestalked = -1
oldTT = -1
oldMI = -1
oldID = -1
oldIter = 512
try:
npc = __main__.npc
modelindex = npc.modelindex
timestalked = npc.times_talked
except:
npc = __main__.FindPlayer()
try:
oldTT = npc.limitset_timestalked
oldMI = npc.limitset_modelindex
oldID = npc.limitset_id
oldIter = npc.limitset_iteration
except:
pass
if (timestalked != oldTT) or (modelindex != oldMI) or (setid !=
oldID) or not (iteration > oldIter):
npc.limitset_timestalked=timestalked
npc.limitset_modelindex=modelindex
npc.limitset_iteration=iteration
npc.limitset_id=setid
return 1
return 0

J) Teleporting and Moving NPCs


-------------------------------------

1) Removing/Hiding

All entities support the Kill() function, which removes the entity
from
the game world completely.

ent.Kill()

Alternatively, you can set an Entity to hidden:


ent.ScriptHide()

And then Unhide it when you want to:

ent.ScriptUnhide().

Hide/Unhide result in physical entities completely disappearing.

Other methods include setting the model to NULL

ent.SetModel("models/null.mdl")

Changing a model to null allows an entity to continue to fire


events
Without being seen.

2) Moving and Teleporting Entities

If you want your entity to WALK somewhere, most entites have a


WalkToNode() method. The easiest way to move an entity is to use
the
SetOrigin() method

npc = FindEntityByName("Ugly Dude")


npc.SetOrigin(FindPlayer().GetOrigin())

========================================================================
=======
XIII. > > > > Example Scripts
========================================================================
=======

A) newpower.py :

URL : http://docs.google.com/View?docID=dhgs89mq_14gvrq9xc6
<View?docID=dhgs89mq_14gvrq9xc6>

summary : A tremere spell that spawns temporary blood allies


around the
vampire who will protect the vampire until they are
killed or
the spell wears off. Number of allies = number of blood
points
you are willing to spend.

ex usage : Save to <VTMB INSTALL>/Vampire/python/newpower.py


Console ] import newpower.py
] newpower.ActivateSummon(3)

========================================================================
=======
< < < < < FREQUENTLY ASKED QUESTIONS > > > > >
========================================================================
=======

Q: How can I change :


The clan names
The clan attributes
The clan disciplines

A: Vampire/vdata/system/clandoc000.txt controls the clan information


in the game. If it has to do with a clan and it can be changed,
then
it is specified in that file. If it is not specified, it can't be
changed.

Q: How can I change:


The rate of healing
The speed that I gain health/blood while feeding
The amount of damage the PC can do in melee
How high I can jump

A: Vampire/vdata/system/rules.txt controls general game rules like


how much stronger a point of strength really makes you.

Q: I try to feed and the game crashes:


A: This is an ATI graphics card bug. Append "-dxlevel 70" to the
shortcut that starts the game.

========================================================================
=======
< < < < < VTMB LINKS > > > > >
========================================================================
=======

1) http://www.vampirebloodlines.com/

The official site of VTMB.

2) http://www.planetvampire.com

If you want to talk about the game, the forums here can't be beat.

3) http://www.patches-scrolls.de/vampire_bloodlines.php

Wesp's Unofficial Patch Website:

4) http://www.strategyinformer.com/pc/mods/..."
<http://www.strategyinformer.com/pc/mods/vampirethemasqueradebloodlines/
mod.html>

Strategy Informers VTMB Page.

5) http://www.fileplanet.com/94454/0/section/Vampire:...
<http://www.fileplanet.com/94454/0/section/Vampire:-The-Masquerade---
Bloodlines>

FilePlanet's VTMB Page

6) http://browse.files.filefront.com/Vampire...
<http://browse.files.filefront.com/Vampire+the+Masquerade+Bloodlines+Mod
ifications/;1324034;/browsefiles.html>

FileFront's VTMB Page


7) http://www.gamebanshee.com/vampirebloodlines/

Game Banshee's VTMB Page

8) http://www.tessmage.com/

Tess specializes in Skin's and even supports his own Unofficial Patch.

9) http://vh.noirscape.org/files.php?cat=2

Vampire Heaven (Dedicated to Vampires). Includes some VTMB stuff:

10) http://paine.planetvampire.gamespy.com/?action=files

What can I say? It is Pain's website dediicated to VTMB. Doesn't look


like
it has been updated for almost 3 years, but it has a few unique
downloads.

11) http://vampirebloodlines.ru/combat/files/

A russian fan site. You can translate it using google's translation


service.
here <http://translate.google.com/translate?
hl=en&sl=ru&u=http://vampirebloodlines.ru/combat/files/&sa=X&oi=translat
e&resnum=1&ct=result&prev=/search%3Fq
%3Dhttp://vampirebloodlines.ru/combat/files/%26hl%3Den>

12) http://corellon.clandlan.net/index.php?page=corellon/vtmb/index

A spanish fan site. You can translate it using google's translation


service.
here <http://translate.google.com/translate?
hl=en&sl=es&u=http://corellon.clandlan.net/index.php%3Fpage
%3Dcorellon/vtmb/index&sa=X&oi=translate&resnum=1&ct=result&prev=/search
%3Fq%3Dhttp://corellon.clandlan.net/index.php%253Fpage
%253Dcorellon/vtmb/index%26hl%3Den>

13) http://www.vampire-network.net/

A french fan site. You can translate it using google's translation


service.
here <http://translate.google.com/translate?
hl=en&sl=fr&u=http://www.vampire-
network.net/&sa=X&oi=translate&resnum=1&ct=result&prev=/search%3Fq
%3Dhttp://www.vampire-network.net/%26hl%3Den>

14) http://bloodbound.freeforums.org/index.php

Alternative location for game discussion.

========================================================================
=======
< < < < < APPENDICES > > > > >
========================================================================
=======
------------------------------------------------------------------------
-------
A. > > > > Entity Classes
------------------------------------------------------------------------
-------

ai_script_conditions logic_choreographed_scene
aiscripted_schedule logic_npc_condition
aiscripted_sequence logic_pythoncheck
ambient_generic logic_relay
ambient_location logic_squad_condition
ambient_soundscheme logic_timer
camera_cinematic logic_visibility_test
camera_keyframe math_counter
camera_track move_rope
env_beam mover_keyframe

env_fade npc_VAndreiBlood
env_floating_camera npc_VAsianVampire
env_particle npc_VBach
env_particle_hud npc_VBrujah
env_physexplosion npc_VCamera
env_physimpact npc_VCameraSecurity
env_shake npc_VChangBrosBlade
env_shooter npc_VChangBrosClaw
env_spark npc_VCop
env_sprite npc_VDialogPedestrian

env_steam npc_VGargoyle
events_player npc_VGhoulCroucher
events_world npc_VHengeyokai
filter_activator_class npc_VHuman
filter_activator_feat npc_VHumanCombatPatrol
filter_activator_inventory npc_VHumanCombatant
filter_activator_mass npc_VLasombra
filter_activator_name npc_VManBat
filter_multi npc_VMingXiao
func_areaportal npc_VNewscaster

func_areaportalwindow npc_VPedestrian
func_breakable npc_VProneDialog
func_breakable_surf npc_VRat
func_brush npc_VSabbatGunman
func_button npc_VSabbatLeader
func_door npc_VScurrying
func_door_rotating npc_VSheriffMan
func_dustmotes npc_VTaxiDriver
func_elevator npc_VTzimisce
func_illusionary npc_VTzimisceHeadClaw

func_keyframed_mover npc_VTzimisceRunner
func_lod npc_VVampire
func_monitor npc_VVampireBoss
func_movelinear npc_VWerewolf
func_particle npc_VYukie
func_physbox npc_VZombie
func_pushable npc_maker
func_rotating npc_maker_fleshpile
game_sign npc_maker_zombie
game_text npc_payphone

game_ui params_explosion
hud_timer params_particle
info_hint phys_animlink
info_landmark phys_ballsocket
info_node phys_constraint
info_node_bach_run_1 phys_convert
info_node_bach_run_2 phys_hinge
info_node_bach_teleport_1 phys_thruster
info_node_bach_teleport_2 point_camera
info_node_bach_teleport_3 point_explosion

info_node_bach_teleport_4 point_target
info_node_chang_column point_teleport
info_node_chang_jumpbase prop_button
info_node_chang_ledge prop_clockhand
info_node_chang_teleport prop_destructable
info_node_climb prop_doorknob
info_node_cover_corner prop_doorknob_electronic
info_node_cover_low prop_dynamic
info_node_cover_med prop_dynamic_ornament
info_node_crosswalk prop_hacking

info_node_hint prop_haunted
info_node_kick_over prop_keypad
info_node_link prop_largehull_ignore
info_node_manbat_fly_to_point prop_mover
info_node_patrol_point prop_padlock
info_node_sabbat_arch prop_physics
info_node_sabbat_bottom prop_physics_contested
info_node_sabbat_dive prop_radio
info_node_sabbat_hide prop_ragdoll
info_node_sabbat_nojump prop_sign

info_node_sabbat_top prop_slashable
info_node_shoot_at prop_switch
info_node_tzimisce scripted_sequence
info_node_werewolf security_camera
info_node_werewolf_hint sky_camera
info_player_start trigger_autosave
info_target trigger_bomb_site
info_teleport_destination trigger_changelevel
infodecal trigger_checkvolume
inspection_brush trigger_discipline_context

inspection_node trigger_electric_bugaloo
intersting_place trigger_environmental_audio
intersting_place_conversation trigger_hurt
item_container trigger_impact
item_container_animated trigger_inventory_check
item_container_lock trigger_look
keyframe_rope trigger_multiple
light trigger_once
light_dynamic trigger_player_activity_level
light_environment trigger_push

light_spot trigger_small_hull
logic_auto trigger_stealth_mod
logic_case trigger_teleport
logic_case_toggle trigger_werewolf_zone

Developer Notes: How did I come up with this list?


1) Used VPKTool to extract all maps (BSD) to txt files under meta
directory.
2) Installed CYGWin
3) cd cygdrive/c/Program Files.../Vampire/maps/meta/
4) cat `ls` | grep "classname" | sort | uniq > all.txt

------------------------------------------------------------------------
-------
B. > > > > Map Names
------------------------------------------------------------------------
-------

1) Santa Monica 4) Hollywood


sm_pawnshop_1 hw_609_1
sm_apartment_1 hw_ash_sewer_1
sm_asylum_1 hw_asphole_1
sm_bailbonds_1 hw_cemetery_1
sm_basement_1 hw_chinese_1
sm_beachhouse_1 hw_hub_1
sm_diner_1 hw_jewelry_1
sm_embrace_1 hw_luckystar_1
sm_gallery_1 hw_metalhead_1
sm_gallery_1_particle_test hw_netcafe_1
sm_hub_1 hw_redspot_1
sm_hub_2 hw_sewer_1
sm_junkyard_1 hw_sinbin_1
sm_medical_1 hw_tawni_1
sm_oceanhouse_1 hw_vesuvius_1
sm_oceanhouse_2 hw_warrens_1
sm_pier_1 hw_warrens_2
hw_warrens_3
sm_shreknet_1 hw_warrens_4
sm_tattoo hw_warrens_5
sm_vamparena
sm_warehouse_1 5) Chinatown
ch_hub_1
2) Los Angeles ch_cloud_1
la_abandoned_building_1 ch_dragon_1
la_bradbury_2 ch_fulab_1
la_bradbury_3 ch_glaze_1
la_chantry_1 ch_lotus_1
la_confession_1 ch_ramen_1
la_crackhouse_1 ch_sewer_1
la_dane_1 ch_shrekhub
la_empire_1 ch_temple_1
la_empire_2 ch_temple_2
la_empire_3 ch_temple_3
la_expipe_1 ch_temple_4
la_hospital_1 ch_tsengs_1
la_hub_1 ch_zhaos_1
la_malkavian_1
la_malkavian_2 6) Special
la_malkavian_3 sp_boat
la_malkavian_4 sp_camwarehouse
la_malkavian_5 sp_epilogue
la_museum_1 sp_genesisdevice_1
la_parkinggarage_1 sp_giovanni_1
la_PlagueBearer_Sewer_1 sp_giovanni_2a
la_sewer_1 sp_giovanni_2b
la_skyline_1 sp_giovanni_3
la_ventruetower_1 sp_giovanni_4
la_ventrueTower_1b sp_giovanni_5
la_ventruetower_2 sp_lonewolf_1
la_ventruetower_3 sp_masquerade_1
sp_ninesintro
3) E3 sp_observatory_1
e3_chinese_1 sp_observatory_2
E3_Combat sp_smut
E3_confession_1 sp_soc_1
E3_hub_1 sp_soc_2
sp_soc_3
sp_soc_4
sp_taxiride
sp_theatre
sp_tutorial_1

Developer Notes: How did I come up with this list?


Answer) Vampire/vdata/system/mapnames_normalized.txt
You can also see a list of most maps from console by
Typing "maps". Not all of these maps are recognized
(ie : nothing with sewer, smut, boat).

------------------------------------------------------------------------
-------
C. > > > > Item Name Summary
------------------------------------------------------------------------
-------

item_a_body_armor item_k_hitman_ji_key
item_a_hvy_cloth item_k_hitman_lu_key
item_a_hvy_leather item_k_kiki_key
item_a_lt_cloth item_k_leopold_int_key
item_a_lt_leather item_k_lilly_key
item_d_animalism item_k_lucky_star_murder_key
item_d_dementation item_k_malcolm_office_key
item_d_dominate item_k_malkavian_refrigerator_key
item_d_holy_light item_k_murietta_key
item_d_thaumaturgy item_k_museum_basement_key
item_g_animaltrainingbook item_k_museum_office_key
item_g_astrolite item_k_museum_storage_key
item_g_bach_journal item_k_museum_storeroom_key
item_g_badlucktalisman item_k_netcafe_office_key
item_g_bailbond_receipt item_k_oceanhouse_basement_key
item_g_bertrams_cd item_k_oceanhouse_sewer_key
item_g_bloodpack item_k_oceanhouse_upstairs_key
item_g_bluebloodpack item_k_oh_front_key
item_g_brotherhood_flyer item_k_sarcophagus_key
item_g_car_stereo item_k_shrekhub_four_key
item_g_cash_box item_k_shrekhub_one_key
item_g_chewinggum item_k_shrekhub_three_key
item_g_computerbookhighgrade item_k_skyline_haven_key
item_g_computerbooklowgrade item_k_tatoo_parlor_key
item_g_driver_license_gamble item_k_tawni_apartment_key
item_g_drugs_drug_box item_k_tutorial_chopshop_stairs_key
item_g_drugs_morphine_bottle item_m_money_clip
item_g_drugs_perscription_bottle item_m_money_envelope
item_g_drugs_pill_bottle item_m_wallet
item_g_edane_print_report item_p_gargoyle_talisman
item_g_edane_report item_p_occult_blood_buff
item_g_eldervitaepack item_p_occult_dexterity
item_g_eyes item_p_occult_dodge
item_g_gargoyle_book item_p_occult_experience
item_g_garys_cd item_p_occult_frenzy
item_g_garys_film item_p_occult_hacking
item_g_garys_photo item_p_occult_heal_rate
item_g_garys_tape item_p_occult_lockpicking
item_g_ghost_pendant item_p_occult_obfuscate
item_g_giovanni_invitation_maria item_p_occult_passive_durations
item_g_giovanni_invitation_victor item_p_occult_presence
item_g_guy_magazine item_p_occult_regen
item_g_hannahs_appt_book item_p_occult_strength
item_g_hatters_screenplay item_p_occult_thaum_damage
item_g_horrortape_1 item_p_research_hg_computers
item_g_horrortape_2 item_p_research_hg_dodge
item_g_idol_cat item_p_research_hg_firearms
item_g_idol_crane item_p_research_hg_melee
item_g_idol_dragon item_p_research_lg_computers
item_g_idol_elephant item_p_research_lg_dodge
item_g_jumbles_flyer item_p_research_lg_firearms
item_g_junkyard_businesscard item_p_research_lg_stealth
item_g_keyring item_p_research_mg_brawl
item_g_larry_briefcase item_p_research_mg_finance
item_g_lilly_diary item_p_research_mg_melee
item_g_lilly_photo item_p_research_mg_security
item_g_lilly_purse item_s_physicshand
item_g_lillyonbeachphoto item_w_avamp_blade
item_g_linedpaper item_w_baseball_bat
item_g_locket item_w_baton
item_g_lockpick item_w_bush_hook
item_g_mercurio_journal item_w_chang_blade
item_g_milligans_businesscard item_w_chang_claw
item_g_oh_diary item_w_chang_energy_ball
item_g_pisha_book item_w_chang_ghost
item_g_pisha_fetish item_w_claws
item_g_pulltoy item_w_claws_ghoul
item_g_ring03 item_w_claws_protean4
item_g_ring_gold item_w_claws_protean5
item_g_ring_serial_killer_1 item_w_colt_anaconda
item_g_ring_serial_killer_2 item_w_crossbow
item_g_ring_silver item_w_crossbow_flaming
item_g_sewerbook_1 item_w_deserteagle
item_g_stake item_w_fireaxe
item_g_vampyr_apocrypha item_w_fists
item_g_vv_photo item_w_flamethrower
item_g_wallet item_w_gargoyle_fist
item_g_warr_clipboard item_w_glock_17c
item_g_warr_ledger_1 item_w_grenade_frag
item_g_warr_ledger_2 item_w_hengeyokai_fist
item_g_warrens4_passkey item_w_ithaca_m_37
item_g_watch_fancy item_w_katana
item_g_watch_normal item_w_knife
item_g_werewolf_bloodpack item_w_mac_10
item_g_wireless_camera_1 item_w_manbat_claw
item_g_wireless_camera_2 item_w_mingxiao_melee
item_g_wireless_camera_3 item_w_mingxiao_spit
item_g_wireless_camera_4 item_w_mingxiao_tentacle
item_i_written item_w_occultblade
item_k_ash_cell_key item_w_rem_m_700_bach
item_k_carson_apartment_key item_w_remington_m_700
item_k_chinese_theatre_key item_w_sabbatleader_attack
item_k_clinic_cs_key item_w_severed_arm
item_k_clinic_maintenance_key item_w_sheriff_sword
item_k_clinic_stairs_key item_w_sledgehammer
item_k_edane_key item_w_steyr_aug
item_k_empire_jezebel_key item_w_supershotgun
item_k_empire_mafia_key item_w_thirtyeight
item_k_fu_cell_key item_w_throwing_star
item_k_fu_office_key item_w_tire_iron
item_k_gallery_noir_key item_w_torch
item_k_gimble_key item_w_tzimisce2_claw
item_k_hannahs_safe_key item_w_tzimisce2_head
item_w_tzimisce3_claw
item_w_tzimisce_melee
item_w_unarmed
item_w_uzi
item_w_werewolf_attacks
item_w_wolf_head
item_w_zombie_fists
weapon_physcannon
weapon_physgun
weapon_pistol

Developer Notes: How did I come up with this list?


Answer) Vampire/vdata/system/items/

------------------------------------------------------------------------
-------
D. > > > > Game States (Thanks to wesp for this list)
------------------------------------------------------------------------
-------
The game maintains the variable G.Story_State as the game progresses. It
is used by dialogs to determine what lines you see:

-3 Tutorial.
-2 Tutorial done, transition to haven.
-1 Entered haven.
0 Entered Santa Monica.
1 Convinced Trip to sell you guns.
2 Showing Elysium tip for the first time (temporary).
3 Showing combat tip for the first time (temporary).
5 Spoke with Beckett at warehouse.
10 Entered downtown.
15 Elizabeth Dane completed.
20 Met Bach at Grout's mansion.
25 Returned from Grout's mansion.
30 Spoke with Beckett at Museum.
35 Returned to prince from Museum.
40 Spoke with Andrei (added by wesp).
45 Spoke with Gary.
50 Mandarin started experiments.
55 Rescued Barabus.
60 Spoke with Chang brothers (added by wesp).
65 Returned to prince from Giovanni mansion.
70 Spoke with Johansen.
75 Returned to prince from Leopold Society.
80 Spoke with Ming-Xiao after Hallowbrook.
85 Spoke with Prince about Ming-Xiao.
90 Spoke with Jack after Griffith park.
95 Spoke with end-game cabbie.
100 Cabbie takes you to Chinatown (Kuei-Jin ending).
105 Not used.
110 Cabbie takes you to Prince (Prince ending).
115 Cabbie takes you to Anarchs (Anarch ending).
120 Cabbie takes you to Chantry (Camarilla ending).
125 Cabbie takes you to Chinatown (Solo ending).

------------------------------------------------------------------------
-------
E. > > > > Common Models
------------------------------------------------------------------------
-------

A. NPCs

1) Pedestrians

models/character/npc/common/citizen/male/male_citizen_1
models/character/npc/common/citizen/male2/male_citizen_2
models/character/npc/common/citizen/chinatown/male1/chinatown_male
models/character/npc/common/goth_kids/male/goth_male
models/character/npc/common/patron/male/male_patron_1
models/character/npc/common/patron/male/male_patron_2
models/character/npc/common/raver/males/male_raver_3/male_raver_3

models/character/npc/common/citizen/female/female_citizen
models/character/npc/common/citizen/female2/female_citizen_2
models/character/npc/common/citizen/chinatown/female1/chinese_girl
models/character/npc/common/lotusblossom_girl/lotusblossom_girl
models/character/npc/common/goth_kids/female/goth_female
models/character/npc/common/prostitute/prostitute_1/prostitute_1
models/character/npc/common/prostitute/prostitute_2/prostitute_2_ref

models/character/npc/common/raver/females/female_raver_1/female_raver_1
models/character/npc/common/raver/females/female_raver_2/female_raver_2

2) Dancers

models/character/npc/common/dancer/female_1/female_dancer_1
models/character/npc/common/dancer/female_2/female_dancer_2
models/character/npc/common/dancer/female_3/female_dancer_3
models/character/npc/common/dancer/female_4/female_dancer_4

models/character/npc/common/dancer/male_1/male_dancer_1
models/character/npc/common/dancer/male_2/male_dancer_2
models/character/npc/common/dancer/male_3/male_dancer_3
models/character/npc/common/dancer/male_4/male_dancer_4

models/character/npc/common/stripper/stripper
models/character/npc/common/stripper/stripper3
models/character/npc/common/stripper/stripper_reduced_01

3) Bums

models/character/npc/common/bum/female/bum_female
models/character/npc/common/bum/male/bum_male
models/character/npc/common/ebola_victim/female/ebola_victim_female
models/character/npc/common/ebola_victim/male/ebola_victim_male

4) Cops

models/character/npc/common/cop/cop
models/character/npc/common/cop_variant/crooked_cop/crooked_cop
models/character/npc/common/cop_variant/regular_cop/regular_cop
models/character/npc/common/cop_variant/rookie_cop/rookie_cop

models/character/npc/common/security_guard/security_guard_skinny/securit
y_guard_skinny
models/character/npc/common/swat/swat
models/character/npc/common/super_swat/super_swat

5) Doopleganagers

models/character/npc/common/doppleganger/doppleganger_male
models/character/npc/common/doppleganger/doppleganger_female
models/character/npc/common/security_guard/security_guard

6) Misc

models/character/npc/common/gangmember_male_1/sabbat_gangmember_1_ref
models/character/npc/common/gangmember_male_2/gangmember_male_2
models/character/npc/common/ghoul/ventrue/ventrue_ghoul_male
models/character/npc/common/hustler/hustler_1_ref
models/character/npc/common/hustler/hustler_2_ref
models/character/npc/common/sabbat_henchman/sabbat_henchman
models/character/npc/common/scrubs/male/malescrubs_asian
models/character/npc/common/scrubs/female/scrubs_female

models/character/npc/common/shopkeeper/shopkeeper_santa_monica_a/shopkee
per_santa_monica_a

models/character/npc/common/shopkeeper/shopkeeper_china_town_male/china_
town_male

models/character/npc/common/shopkeeper/shopkeeper_china_town_female/chin
a_town_female02
models/character/npc/common/shovelhead/shovelhead
models/character/npc/common/shovelhead/shovelhead_short
models/character/npc/common/skeleton/skeleton_male
models/character/npc/common/skeleton/skeleton_female
models/character/npc/common/stumpy/stumpy
models/character/npc/common/blueblood/female/blueblood_female
models/character/npc/common/blueblood/male/blueblood_male
models/character/npc/common/blueblood/male/newscaster_male

B. Monsters

models/character/monster/andrei/andrei
models/character/monster/animalism_beastform/animalism_beastform
models/character/monster/gargoyle/gargoyle
models/character/monster/hengeyokai/hengeyokai
models/character/monster/mingxiao/mingxiao
models/character/monster/tzimisce/creation1/creation1_full
models/character/monster/tzimisce/creation1/creation1_unused
models/character/monster/tzimisce/creation2/creation2_full
models/character/monster/tzimisce/creation3/tzim3
models/character/monster/werewolf/werewolf
models/character/monster/wolf_form/wolf_form
models/character/monster/wolf_form_2/wolf_form_2
models/character/monster/undead/female/undead_female
models/character/monster/undead/female2/undead_female2
models/character/monster/undead/male/undead_male
models/character/monster/undead/male2/undead_male_2

C. Main (Unique) models/characters

models/character/npc/unique/santa_monica/beckett/beckett
models/character/npc/unique/downtown/bishop_vick/bishop_vick
models/character/npc/unique/downtown/chunk_3/chunk_3
models/character/npc/unique/downtown/damsel/damsel
models/character/npc/unique/hollywood/gary/nosferatu_gary
models/character/npc/unique/santa_monica/heather/heather
models/character/npc/unique/santa_monica/heather/heather_goth
models/character/npc/unique/santa_monica/heather/heather_3
models/character/npc/unique/santa_monica/jeanette/jeanette
models/character/npc/unique/downtown/lacroix/lacroix
models/character/npc/unique/santa_monica/mercurio/mecurio
models/character/npc/unique/downtown/nines/nines
models/character/npc/unique/downtown/regent/regent
models/character/npc/unique/downtown/skelter/skelter
models/character/npc/unique/downtown/smiling_jack/smiling_jack
models/character/npc/unique/santa_monica/therese/therese
models/character/npc/unique/santa_monica/tourette/tourette
models/character/npc/unique/downtown/venus/venus
models/character/npc/unique/downtown/vv/vv

D. Supporting Actors

1) Santa Monica

models/character/npc/unique/santa_monica/asianvampire/asianvampire
models/character/npc/unique/santa_monica/bertram/bertram
models/character/npc/unique/santa_monica/brian/brian
models/character/npc/unique/santa_monica/caine/caine
models/character/npc/unique/santa_monica/cal/cal
models/character/npc/unique/santa_monica/carson/carson
models/character/npc/unique/santa_monica/copper/copper
models/character/npc/unique/santa_monica/danielle/danielle
models/character/npc/unique/santa_monica/dennis/dennis
models/character/npc/unique/santa_monica/doris/doris
models/character/npc/unique/santa_monica/e/e
models/character/npc/unique/santa_monica/eugene/eugene
models/character/npc/unique/santa_monica/ghost/ghost
models/character/npc/unique/santa_monica/julius/julius
models/character/npc/unique/santa_monica/kilpatrick/kilpatrick
models/character/npc/unique/santa_monica/knox/knox
models/character/npc/unique/santa_monica/lily/lily
models/character/npc/unique/santa_monica/malcolm/malcolm
models/character/npc/unique/santa_monica/phil/phil
models/character/npc/unique/santa_monica/prophet/prophet
models/character/npc/unique/santa_monica/rosa/rosa
models/character/npc/unique/santa_monica/serial_killer/serial_killer
models/character/npc/unique/santa_monica/sm_blueblood/sm_blueblood
models/character/npc/unique/santa_monica/stan_gimble/stan_gimble

models/character/npc/unique/santa_monica/tremere_guardian/tremere_guardi
an
models/character/npc/unique/santa_monica/trip/trip
models/character/npc/unique/santa_monica/vandal/vandal

2) Downtown

models/character/npc/unique/downtown/bomb_guy/bomb_guy
models/character/npc/unique/downtown/boris/boris
models/character/npc/unique/downtown/brother_kanker/brother_kanker
models/character/npc/unique/downtown/cdcguy/cdcguy
models/character/npc/unique/downtown/crackhead/crackhead
models/character/npc/unique/downtown/dema/dema
models/character/npc/unique/downtown/feedbag/feedbag
models/character/npc/unique/downtown/hannah/hannah
models/character/npc/unique/downtown/igor/igor
models/character/npc/unique/downtown/jezebel_locke/jezebel_locke
models/character/npc/unique/downtown/jumbles/jumbles
models/character/npc/unique/downtown/junky_girl/junky_girl
models/character/npc/unique/downtown/larry/larry
models/character/npc/unique/downtown/milligan/milligan
models/character/npc/unique/downtown/patty/patty
models/character/npc/unique/downtown/pisha/pisha
models/character/npc/unique/downtown/russian_thug/russian_thug
models/character/npc/unique/downtown/sheriff/sheriff
models/character/npc/unique/downtown/tin_can_bill/tin_can_bill

3) Malky Mansion

models/character/npc/unique/malkavian_mansion/stalker/stalker

models/character/npc/unique/malkavian_mansion/stalker_female/stalker_fem
ale

4) HollyWood

models/character/npc/unique/hollywood/andrei/andrei
models/character/npc/unique/hollywood/ash/ash
models/character/npc/unique/hollywood/ash_lookalike/ash_lookalike
models/character/npc/unique/hollywood/chastity/chastity
models/character/npc/unique/hollywood/courier/courier
models/character/npc/unique/hollywood/david/david
models/character/npc/unique/hollywood/flynn/flynn_ref
models/character/npc/unique/hollywood/imalia/imalia
models/character/npc/unique/hollywood/isaac/isaac
models/character/npc/unique/hollywood/johansen/johansen
models/character/npc/unique/hollywood/kerri/kerri
models/character/npc/unique/hollywood/misti/misti
models/character/npc/unique/hollywood/mitnick/mitnick
models/character/npc/unique/hollywood/razor/razor
models/character/npc/unique/hollywood/romero/romero
models/character/npc/unique/hollywood/samantha/samantha
models/character/npc/unique/hollywood/sewer_worker/sewer_worker
models/character/npc/unique/hollywood/slater/slater
models/character/npc/unique/hollywood/spicoli/spicoli
models/character/npc/unique/hollywood/sweeper/sweeper
models/character/npc/unique/hollywood/tawni/tawni
models/character/npc/unique/hollywood/tommy/tommy

5) Giovanni

models/character/npc/unique/giovanni_mansion/adam/adam
models/character/npc/unique/giovanni_mansion/bodyguard/bodyguard
models/character/npc/unique/giovanni_mansion/bruno/bruno
models/character/npc/unique/giovanni_mansion/chang_brothers/chang1
models/character/npc/unique/giovanni_mansion/chang_brothers/chang2
models/character/npc/unique/giovanni_mansion/christopher/christopher
models/character/npc/unique/giovanni_mansion/luca/luca
models/character/npc/unique/giovanni_mansion/maria/maria
models/character/npc/unique/giovanni_mansion/mira/mira
models/character/npc/unique/giovanni_mansion/nadia/nadia
models/character/npc/unique/giovanni_mansion/victor/victor
6) China Town

models/character/npc/unique/chinatown/barabus/barabus
models/character/npc/unique/chinatown/hostess/hostess
models/character/npc/unique/chinatown/hot_tub_guy/hot_tub_guy
models/character/npc/unique/chinatown/ji_wen_ja/ji_wen_ja
models/character/npc/unique/chinatown/johnny/johnny
models/character/npc/unique/chinatown/kiki/kiki
models/character/npc/unique/chinatown/lu_fang/lu_fang
models/character/npc/unique/chinatown/mandarin/mandarin
models/character/npc/unique/chinatown/ming_xiao/mingxiao
models/character/npc/unique/chinatown/mr_ox/mr_ox
models/character/npc/unique/chinatown/ricky/ricky
models/character/npc/unique/chinatown/shu/shu
models/character/npc/unique/chinatown/temple_guard/temple_guard
models/character/npc/unique/chinatown/tong/tong
models/character/npc/unique/chinatown/tong_leader/tong_leader
models/character/npc/unique/chinatown/tseng/tseng
models/character/npc/unique/chinatown/wong_ho/wong_ho
models/character/npc/unique/chinatown/yukie/yukie
models/character/npc/unique/chinatown/zhao/zhao
models/character/npc/unique/chinatown/zygaena/zygaena

7) Leopold

models/character/npc/unique/society_of_leopold/average_vampire_hunter/av
erage_vampire_hunter

models/character/npc/unique/society_of_leopold/elite_hunter/elite_hunter

models/character/npc/unique/society_of_leopold/female_hunter/vampire_hun
ter_chick

Developer Notes: How did I get this list?

All models are contained within the vpk files. Used VPTool.exe to
extract
the vpk files and browse their contents.

------------------------------------------------------------------------
-------
F. > > > > VCLAN Values
------------------------------------------------------------------------
-------

1) What Are VCLAN Values?

Within the VTMB console, you can type the command "vclans" and it
will
list a lot of "clans". You can then type "vclan #" where # is the
number
of a clan and the player will change to that clan.
2) What is a clan?

From the engines perspective, a clan is nothing more than a set of


properties for a character in the game. Wether the character is
the main
player or a support Non-Player Character. Clans are basically
character
templates.

Most people are familiar with the concept of templates. Word


processors
support resume templates. A template provides a default layout and
sometimes even default values. You load a template and then expand
upon
it by adding to or changing the default values.

VTMB uses templates to describe the various properties of the


characters
you meet within the game. These are located in the
Vampire/system/vdata
directory:

Vampire/system/vdata/clandoc000.txt
Vampire/system/vdata/npctemplate001.txt
Vampire/system/vdata/npctemplate002.txt
Vampire/system/vdata/npctemplate...
Vampire/system/vdata/npctemplate025.txt
Vampire/system/vdata/npctemplate_crackhouse.txt
Vampire/system/vdata/npctemplate_malkmansion.txt
Vampire/system/vdata/npctemplate_...

The templates are loaded starting with clandoc000, then the


various
npctemplate* files in alphabetic order. Within these files,
"ClanData"
objects are declared. Each clandata object can stand by itself or
can
specify a different clandata object as its parent. If a parent is
declared, the clandata objects inherits all of the parents data
values.

These ClanData objects have a templateName property which can be


used
by embedded objects to quickly flag an embedded character with all
the
attributes listed in the template.

3) What can be controlled in these templates?

Things like powers, resistances, the death animation (do gibs fly
everywhere?). Can the character be fed upon, how strong/healthy
the
character is... etc...

** When a parent is identified, it must already have been loaded.


IE:
it must appear higher in the file than the child, or it must
have
been declared by a file that was previously loaded

4) Overriding the character templates: Do's and Don'ts.

---=== DO NOT ===---

Remove any existing clandata objects

As mentioned above, embedded entities reference the template


names.
if you remove template names, you will likely break the game
when
the embedded object that uses the template name attempts to
load.

Create a clandata object with the same name of an existing template

This creates confusion in the engine. Best case is that an


embedded
enytity may use the wrong attributes and worst case is that the
game will crash or become umplayable when the PC reaches said
embedded character.

---=== Use Caution ===---

When editing clandoc000.txt.

The first 9 clandata objects (slots 0-8 )provide the strandard


clans for the game (Malkavian, Brujah, etc...). While you can
change
attributes of these clans, if you insert a new clanData object
anywhere within those first 9 slots, you will mess the game up.

See 5 below for more notes on editing clandoc

When renaming existing template names

templates names are referenced by embedded objects. If you


change
their name, be prepared to update all the embedded objects that
reference them as well.

---=== Tis OK too... ===---

Add new clans to bottom of any of the existing files (so long as
the
template name does not conflict with an existing template name)

5) VCLAN number system and loading bugs

You can override the clans just like anything else. By extracting
and
overriding a template file, however... there is a loading bug

For some odd reason, when a template file is extracted (an


uncompressed
version is present in the system/vdata directory), the game engine
loads the template file multiple times. So, if you update
clandoc000.txt
and it has 4 clans, when you run "vclans" you wwould see the
clandoc000.txt files appear twice with different numbers:

0: vclandoc clandata templatename1


1: vclandoc clandata templatename2
2: vclandoc clandata templatename3
3: vclandoc clandata templatename4

4: vclandoc clandata templatename1


5: vclandoc clandata templatename2
6: vclandoc clandata templatename3
7: vclandoc clandata templatename4

uncompressed npctemplate* follow a similar pattern, however all


the
uncompressed files will load at once and then individually load a
second time when their compressed vpk counterpart would have
loaded
with the other compressed vpk files.

Normally this doesn't matter because the clandata templates are


referenced
by embedded objects that use the templateName attribute anyway.
However,
if you build a mod that depends on the numeric value because you
send a
vclan data command to the console (Such as the Companion Mod),
edits to
the clans will undoubtedly break your mod.

To complicate things further. the Steam version of the game loads


things
differently than the retail version of the game.

Therefore, the only numerical vclan values you can DEPEND ON, are
the ones
derived from clandoc000.txt, the first file to get loaded. They
will be
consitent no matter which version of VTMB the user is playing.

For this reason, clandoc000.txt is often a contention point for


modders
who wish to merge the capabilities of several mods.

6) Character Descriptions:

VTMB only supports 16 unique character descriptions. (vclan value


0 - 15)
If your clandata object is declared after the first 16 clans
(typically
defined in clandoc000.txt), the text description and name will be
ignored.
Once the first 15 clans are defined, the text descriptions rotate.

vclan 16 will have the same name/text as vclan 0


vclan 17 will have the same name/text as vclan 1
vclan 18 will have the same name/text as vclan 2
vclan 19 will have the same name/text as vclan 3

And so forth.

** Character description is what you see if you go to the


character
info screen

This is actually fine for many situations. For example, the


Companion mod
needed copies of all of the player classes that wouldn't change
models
when using armor and didn't have any pre-defined disciplines or
stats.

Multi-Player support also needed copies of all the player classes


with
starting equipment and experience provided.

If your mod needs to add new clan descriptions, you should place
the
templates in slots 9 - 15. (Do not touch slots 0-8)

7) Standard VCLAN Values (1.2 Patch)

Below is a listing of the VCLAN values of a fresh install of VTMB


with
nothing but the official 1.2 patch installed. I note which files
the
values are derived from:

Vampire\vdata\system\clandoc000.txt

0 - Clear
1 - Human
2 - Player_Brujah (Brujah)
3 - Player_Gangrel (Gangrel)
4 - Player_Malkavian (Malkavian)
5 - Player_Nosferatu (Nosferatu)
6 - Player_Toreador (Toreador)
7 - Player_Tremere (Tremere)
8 - Player_Ventrue (Ventrue)
9 - Leopold1 (Condotierre)
10 - Leopold2 (Inquisitor)
11 - Leopold3 (Society of Leopold #3)

Vampire\vdata\system\npctemplate000.txt

12 - NPCGeneric

Vampire\vdata\system\npctemplate001.txt
13 - VampireGeneric
14 - VampireBrujah (Brujah)
15 - VampireBrujahThug (Brujah)
16 - VampireBrujahElite (Brujah)
17 - VampireGangrel (Gangrel)
18 - VampireCritical
19 - Bach (Grunfeld Bach)
20 - SheriffMan (The Sheriff)
21 - VampireSabbatLeader (Warform Tzimisce)
22 - AndreiBlood (The Tzimisce)
23 - VampireToreador
24 - Jezebel (Jezebel Locke)
25 - VampireNosferatu
26 - BrotherKanker (Brother Kanker)
27 - Nagaraja (Pisha the Nagaraja)
28 - VampireLasombra
29 - SabbatAuspexShottie
30 - SabbatAuspexSteyr
31 - SabbatAuspexMac10
32 - SabbatCelerityMac10
33 - SabbatCelerityShottie
34 - SabbatCelerityGlock
35 - SabbatFortitudeShottie
36 - SabbatWithPotence
37 - SabbatPresenceShottie
38 - SabbatWithProtean
39 - SabbatFireMage
40 - ShovelHead
41 - Werewolf (Werewolf)
42 - Killer (Killer)
43 - BloodHuntAuspex
44 - BloodHuntCelerity
45 - BloodHuntFortitude
46 - BloodHuntPotence
47 - BloodHuntPresence
48 - BloodHuntProtean

Vampire\vdata\system\npctemplate002.txt

49 - Officer Generic
50 - HunterSafeArea
51 - HunterSafeArea2
52 - HunterSafeArea3
53 - ChunkGuard
54 - ClinicGuard
55 - MuseumGuard

Vampire\vdata\system\npctemplate003.txt

56 - CivilianGeneric
57 - CivilianTest1
58 - CivilianTest2

Vampire\vdata\system\npctemplate004.txt

59 - TzimisceCreation1
60 - TzimisceCreation2
61 - TzimisceCreation3
62 - Nos_Attacked

Vampire\vdata\system\npctemplate005.txt

63 - Scurrying
64 - Rat
65 - DoggieTemp
66 - Doggie

Vampire\vdata\system\npctemplate006.txt

67 - Test_Mle1_Def1_Sok1
68 - Test_Mle2_Def2_Sok2
69 - Test_Mle5_Def1_Sok1
70 - Test_Mle1_Def5_Sok1
71 - Test_Mle1_Def1_Sok5
72 - Test_Mle5_Def1_Sok5
73 - Test_Mle5_Def5_Sok1
74 - Test_Mle5_Def1_Sok5
75 - Test_Mle5_Def5_Sok5
76 - Test_Mle1_Def10_Sok1
77 - Test_Mle1_Def10_Sok10
78 - Test_Mle1_Def1_Sok10
79 - Test_Mle10_Def10_Sok10

Vampire\vdata\system\npctemplate007.txt

80 - Mercurio (Mercurio)
81 - Gimble (Gimble)
82 - WarehouseThug
83 - WarehouseThugLesser
84 - WarehouseSabbatClaws
85 - WarehouseThugFastFood
86 - BeachhouseThug
87 - BeachhouseDennis
88 - DowntownThug
89 - DowntownTong
90 - DowntownThugFastFood
91 - RussianMafia
92 - RussianMafiaElite
93 - SabbatGhoulMelee
94 - SabbatGhoulShottie
95 - SabbatGhoulGlock
96 - SabbatGhoulMac10

Vampire\vdata\system\npctemplate008.txt

97 - Bum
98 - BumFastFood
99 - Hooker
100 - Blueblood
101 - BluebloodFastfood
102 - Plague-Bum

Vampire\vdata\system\npctemplate009.txt
103 - Zombie

Vampire\vdata\system\npctemplate010.txt

104 - Zhao

Vampire\vdata\system\npctemplate011.txt

105 - TongThug

Vampire\vdata\system\npctemplate012.txt

106 - ChangBros (Blade Brother)


107 - ChangBrosClaw (Claw Brother)
108 - AsianVampire (Cathayan)
109 - BloodGuardian (Blood Guardian)
110 - Gargoyle (The Gargoyle)
111 - Hengeyokai (Hengeyokai)
112 - Yukie (Yukie)
113 - ManBat (Chiropteran Behemoth)
114 - ManBatMinion (ManBatMinion)
115 - ManBatOfficer

Vampire\vdata\system\npctemplate013.txt

116 - SOC_average
117 - SOC_elite

Vampire\vdata\system\npctemplate014.txt

118 - MingXiao (Ming Xiao)


119 - MingXiaoProxy
120 - MingXiaoTentacle

Vampire\vdata\system\npctemplate015.txt

121 - Tpl_standard
122 - Tpl_star
123 - Tpl_sword
124 - Tpl_firebolt

Vampire\vdata\system\npctemplate016.txt

125 - sp_gio_weak
126 - sp_gio_average
127 - sp_gio_strong
128 - Bruno (Bruno)

Vampire\vdata\system\npctemplate017.txt

129 - DaneGenCop (Police Officer)


130 - DaneLessCop (Dirty Cop)

Vampire\vdata\system\npctemplate018.txt

131 - Barabus
Vampire\vdata\system\npctemplate020.txt

132 - Ash (Ash)

Vampire\vdata\system\npctemplate022.txt

133 - Mandarin (Mandarin)


134 - FuSecurity (Fu Security)

Vampire\vdata\system\npctemplate023.txt

135 - Johnny (Johnny)

Vampire\vdata\system\npctemplate024.txt

136 - SWAT
137 - SuperSWAT
138 - VentrueGhouls

Vampire\vdata\system\npctemplate025.txt

139 - Chastity (Chastity)


140 - Julius

Vampire\vdata\system\npctemplate_ashsewers.txt

141 - HunterHuntingAshCrossbows
142 - HunterHuntingAsh38
143 - HunterHuntingAshElite

Vampire\vdata\system\npctemplate_bomberman.txt

144 - Bomberman

Vampire\vdata\system\npctemplate_cabbie.txt

145 - Cabbie

Vampire\vdata\system\npctemplate_cdc.txt

146 - CDC

Vampire\vdata\system\npctemplate_crackhouse.txt

147 - BishopVick (Bishop Vick)


148 - CrackhousePlagueVictim

Vampire\vdata\system\npctemplate_igor.txt

149 - RussianMafia_IgorCronies
150 - RussianMafia_Igor

Vampire\vdata\system\npctemplate_lufang.txt

151 - LuFang
Vampire\vdata\system\npctemplate_malkmansion.txt

152 - MalkMansionStalker (Malkavian Mansion Stalker)


153 - MalkMansionCroucher (Malk Mansion Croucher)
154 - MalkMansionStalkerBurning (Malkavian Mansion Stalker)

Vampire\vdata\system\npctemplate_tutorial.txt

155 - TutorialThug
156 - TutorialShovelhead
157 - Tutorial_Jack

Vampire\vdata\system\npctemplate_ventruesecurity.txt

158 - VentrueSecurity
159 - VentrueSecurityFastFood

NOTES:
- SuperSWAT defines Male and Female models as part of the
stattemplate
- template names reference items.txt for staring item\weapon
data.

8) Standard Inheritance Hiearchy (1.2 Patch)

As mentioned, when a template defines a parent, it inherits the


parents
attributes. Below is a break down of parent child relationships
for
the standard 1.2 patched game:

Barabus
Chastity (Chastity)
Clear
FuSecurity (Fu Security)
Human
Johnny (Johnny)
Julius (Julius)
Leopold1 (Condotierre)
Leopold2 (Inquisitor)
Leopold3 (Society of Leopold #3)
Mandarin (Mandarin)
NPCGeneric
- AndreiBlood (The Tzimisce)
- Bach (Grunfeld Bach)
- BeachhouseThug
- BeachhouseDennis
- Blueblood
- BluebloodFastfood
- Bomberman
- Bum
- BumFastFood
- ChunkGuard
- CivilianGeneric
- CivilianTest1
- CivilianTest2
- Cabbie
- CDC
- ClinicGuard
- CrackhousePlagueVictim
- DaneGenCop (Police Officer)
- DaneLessCop (Dirty Cop)
- DowntownThug
- DowntownTong
- DowntownThugFastFood
- Gargoyle (The Gargoyle)
- Gimble (Gimble)
- Hengeyokai (Hengeyokai)
- Hooker
- HunterSafeArea
- HunterSafeArea2
- HunterSafeArea3
- HunterHuntingAshCrossbows
- HunterHuntingAsh38
- HunterHuntingAshElite
- LuFang
- MalkMansionStalker (Malkavian Mansion Stalker)
- MalkMansionCroucher (Malkavian Mansion Croucher)
- MalkMansionStalkerBurning (Malkavian Mansion Stalker)
- ManBat (Chiropteran Behemoth)
- ManBatMinion (ManBatMinion)
- ManBatOfficer
- Mercurio (Mercurio)
- MingXiao (Ming Xiao)
- MingXiaoProxy
- MingXiaoTentacle (Ming Xiao Tentacle)
- MuseumGuard
- Nos_Attacked
- OfficerGeneric
- SabbatFireMage
- Scurrying
- Rat
- DoggieTemp
- Doggie
- ShovelHead
- sp_gio_weak
- sp_gio_average
- sp_gio_strong

- TongThug
- Tpl_standard
- Tpl_star
- Tpl_sword
- Tpl_firebolt
- TzimisceCreation1
- TzimisceCreation2
- TzimisceCreation3
- Werewolf (Werewolf)
- RussianMafia
- RussianMafia_IgorCronies
- RussianMafiaElite
- RussianMafia_Igor
- SabbatGhoulMelee
- SabbatGhoulShottie
- SabbatGhoulGlock
- SabbatGhoulMac10
- SheriffMan (The Sheriff)
- SOC_average
- SOC_elite
- Test_Mle1_Def1_Sok1
- Test_Mle2_Def2_Sok2
- Test_Mle5_Def1_Sok1
- Test_Mle1_Def5_Sok1
- Test_Mle1_Def1_Sok5
- Test_Mle5_Def1_Sok5
- Test_Mle5_Def5_Sok1
- Test_Mle5_Def1_Sok5
- Test_Mle5_Def5_Sok5
- Test_Mle1_Def10_Sok1
- Test_Mle1_Def10_Sok10
- Test_Mle1_Def1_Sok10
- Test_Mle10_Def10_Sok10
- TutorialThug
- VampireCritical
- VentrueGhouls
- VentrueSecurity
- VentrueSecurityFastFood
- VampireGeneric
- VampireBrujah (Brujah)
- VampireBrujahThug (Brujah)
- VampireBrujahElite (Brujah)
- VampireSabbatLeader (Warform Tzimisce)
- Tutorial_Jack
- VampireGangrel (Gangrel)
- Killer (Killer)
- VampireToreador
- Jezebel (Jezebel Locke)
- Ash (Ash)
- VampireNosferatu
- BrotherKanker (Brother Kanker)
- Nagaraja (Pisha the Nagaraja)
- VampireLasombra
- SabbatAuspexShottie
- SabbatAuspexSteyr
- SabbatAuspexMac10
- SabbatCelerityMac10
- SabbatCelerityShottie
- SabbatCelerityGlock
- SabbatFortitudeShottie
- SabbatWithPotence
- SabbatPresenceShottie
- SabbatWithProtean
- BloodHuntAuspex
- BloodHuntCelerity
- BloodHuntFortitude
- BloodHuntPotence
- BloodHuntPresence
- BloodHuntProtean
- WarehouseSabbatClaws
- ChangBros (Blade Brother)
- ChangBrosClaw (Claw Brother)
- AsianVampire (Cathayan)
- BloodGuardian (Blood Guardian)
- Bruno (Bruno)
- BishopVick (Bishop Vick)
- TutorialShovelhead
- WarehouseThug
- WarehouseThugLesser
- WarehouseThugFastFood
- Yukie (Yukie)
- Zombie
- Zhao
Player_Brujah (Brujah)
Player_Gangrel (Gangrel)
Player_Malkavian (Malkavian)
Player_Nosferatu (Nosferatu)
Player_Toreador (Toreador)
Player_Tremere (Tremere)
Player_Ventrue (Ventrue)
SWAT
- SuperSWAT

9) CompMod VCLAN Values : Retail (includes merged 5.6 Patch changes)

Vampire\vdata\system\clandoc000.txt
0 - Clear
1 - Human
2 - Player_Brujah (Brujah)
3 - Player_Gangrel (Gangrel)
4 - Player_Malkavian (Malkavian)
5 - Player_Nosferatu (Nosferatu)
6 - Player_Toreador (Toreador)
7 - Player_Tremere (Tremere)
8 - Player_Ventrue (Ventrue)
9 - Leopold1 (Condotierre)
10 - Leopold2 (Inquisitor)
11 - Leopold3 (Mercenary)
12 - Leopold1_F (Condotierre)
13 - Leopold2_F (Inquisitor)
14 - Leopold3_M (Mercenary)
15 - CompThinBlood (ThinBlood)
16 - PlaceHolder1 (None) -> TEXT : Clear
17 - CompHuman (Human)
18 - CompBrujah (Brujah)
19 - CompGangrel (Gangrel)
20 - CompMalkavian (Malkavian)
21 - CompNosferatu (Nosferatu)
22 - CompToreador (Toreador)
23 - CompTremere (Tremere)
24 - CompVentrue (Ventrue)
25 - mp-condotierre-male (Condotierre_Male)
26 - mp-inquisitor-male (Inquisitor_Male)
27 - mp-mercenary-female (Mercenary_Female)
28 - mp-condotierre-female (Condotierre_Female)
29 - mp-inquisitor-female (Inquisitor_Female)
30 - mp-mercenary-male (Mercenary_Male)
31 - PlaceHolder2 (None) -> TEXT : ThinBlood
32 - PlaceHolder3 (None) -> TEXT : Clear
33 - PlaceHolder4 (None -> TEXT : Human
34 - mp-brujah (Brujah)
35 - mp-gangrel (Gangrel)
36 - mp-malkavian (Malkavian)
37 - mp-nosferatu (Nosferatu)
38 - mp-toreador (Toreador)
39 - mp-tremere (Tremere)
40 - mp-ventrue (Ventrue)

Vampire\vdata\system\clandoc000.txt (Second Loading)

41 - Clear
42 - Human
43 - Player_Brujah (Brujah)
44 - Player_Gangrel (Gangrel)
45 - Player_Malkavian (Malkavian)
46 - Player_Nosferatu (Nosferatu)
47 - Player_Toreador (Toreador)
48 - Player_Tremere (Tremere)
49 - Player_Ventrue (Ventrue)
50 - Leopold1 (Condotierre)
51 - Leopold2 (Inquisitor)
52 - Leopold3 (Mercenary)
53 - Leopold1_F (Condotierre)
54 - Leopold2_F (Inquisitor)
55 - Leopold3_M (Mercenary)
56 - CompThinBlood (ThinBlood)
57 - PlaceHolder1 (None) -> TEXT : Clear
58 - CompHuman (Human)
59 - CompBrujah (Brujah)
60 - CompGangrel (Gangrel)
61 - CompMalkavian (Malkavian)
62 - CompNosferatu (Nosferatu)
63 - CompToreador (Toreador)
64 - CompTremere (Tremere)
65 - CompVentrue (Ventrue)
66 - mp-condotierre-male (Condotierre_Male)
67 - mp-inquisitor-male (Inquisitor_Male)
68 - mp-mercenary-female (Mercenary_Female)
69 - mp-condotierre-female (Condotierre_Female)
70 - mp-inquisitor-female (Inquisitor_Female)
71 - mp-mercenary-male (Mercenary_Male)
72 - PlaceHolder2 (None) -> TEXT : ThinBlood
73 - PlaceHolder3 (None) -> TEXT : Clear
74 - PlaceHolder4 (None -> TEXT : Human
75 - mp-brujah (Brujah)
76 - mp-gangrel (Gangrel)
77 - mp-malkavian (Malkavian)
78 - mp-nosferatu (Nosferatu)
79 - mp-toreador (Toreador)
80 - mp-tremere (Tremere)
81 - mp-ventrue (Ventrue)

Vampire\vdata\system\npctemplate001.txt
82 - VampireGeneric
83 - VampireBrujah (Brujah)
84 - VampireBrujahThug (Brujah)
85 - VampireBrujahElite (Brujah)
86 - VampireGangrel (Gangrel)
87 - VampireCritical
88 - Bach (Grunfeld Bach)
89 - SheriffMan (The Sheriff)
90 - VampireSabbatLeader (Warform Tzimisce)
91 - AndreiBlood (The Tzimisce)
92 - VampireToreador
93 - Jezebel (Jezebel Locke)
94 - VampireNosferatu
95 - BrotherKanker (Brother Kanker)
96 - Nagaraja (Pisha the Nagaraja)
97 - VampireLasombra
98 - SabbatAuspexShottie
99 - SabbatAuspexSteyr
100 - SabbatAuspexMac10
101 - SabbatCelerityMac10
102 - SabbatCelerityShottie
103 - SabbatCelerityGlock
104 - SabbatFortitudeShottie
105 - SabbatWithPotence
106 - SabbatPresenceShottie
107 - SabbatWithProtean
108 - SabbatFireMage
109 - ShovelHead
110 - Werewolf (Werewolf)
111 - Killer (Serial Killer)
112 - BloodHuntAuspex
113 - BloodHuntCelerity
114 - BloodHuntFortitude
115 - BloodHuntPotence
116 - BloodHuntPresence
117 - BloodHuntProtean

Vampire\vdata\system\npctemplate002.txt

118 - OfficerGeneric
119 - HunterSafeArea
120 - HunterSafeArea2
121 - HunterSafeArea3
122 - ChunkGuard
123 - ClinicGuard
124 - MuseumGuard

Vampire\vdata\system\npctemplate004.txt

125 - TzimisceCreation1 (Tzimisce Creation)


126 - TzimisceCreation2
127 - TzimisceCreation3
128 - Nos_Attacked

Vampire\vdata\system\npctemplate005.txt
129 - Scurrying
130 - Rat
131 - DoggieTemp
132 - Doggie

Vampire\vdata\system\npctemplate007.txt

133 - Mercurio (Mercurio)


134 - Gimble (Gimble)
135 - WarehouseThug
136 - WarehouseThugLesser
137 - WarehouseSabbatClaws
138 - WarehouseThugFastFood
139 - BeachhouseThug
140 - BeachhouseDennis
141 - DowntownThug
142 - DowntownTong
143 - DowntownThugFastFood
144 - RussianMafia
145 - RussianMafiaElite
146 - SabbatGhoulMelee
147 - SabbatGhoulShottie
148 - SabbatGhoulGlock
149 - SabbatGhoulMac10

Vampire\vdata\system\npctemplate011.txt

150 - TongThug

Vampire\vdata\system\npctemplate012.txt

151 - ChangBros (Blade Brother)


152 - ChangBrosClaw (Claw Brother)
153 - AsianVampire (Cathayan)
154 - BloodGuardian (Blood Guardian)
155 - Gargoyle (The Gargoyle)
156 - Hengeyokai (Hengeyokai)
157 - Yukie (Yukie) -> SoundGroup=
unique/yukie
158 - ManBat (Chiropteran Behemoth)
159 - ManBatMinion (ManBatMinion)
160 - ManBatOfficer

Vampire\vdata\system\npctemplate016.txt

161 - sp_gio_weak
162 - sp_gio_average
163 - sp_gio_strong
164 - Bruno (Bruno)

Vampire\vdata\system\npctemplate018.txt

165 - Barabus

Vampire\vdata\system\npctemplate020.txt
166 - Ash (Ash)

Vampire\vdata\system\npctemplate022.txt

167 - Mandarin (Mandarin)


168 - FuSecurity (Fu Security)

Vampire\vdata\system\npctemplate025.txt

169 - Chastity (Chastity)


170 - Julius

Vampire\vdata\system\npctemplate_crackhouse.txt

171 - BishopVick (Bishop Vick)


172 - CrackhousePlagueVictim

Vampire\vdata\system\npctemplate_malkmansion.txt

173 - MalkMansionStalker (Malkavian Mansion Stalker)


174 - MalkMansionCroucher (Malk Mansion Croucher)
175 - MalkMansionStalkerBurning (Malkavian Mansion Stalker)

(vpk) Vampire\vdata\system\npctemplate000.txt

176 - NPCGeneric

Vampire\vdata\system\npctemplate001.txt (Second Loading)

177 - VampireGeneric
178 - VampireBrujah (Brujah)
179 - VampireBrujahThug (Brujah)
180 - VampireBrujahElite (Brujah)
181 - VampireGangrel (Gangrel)
182 - VampireCritical
183 - Bach (Grunfeld Bach)
184 - SheriffMan (The Sheriff)
185 - VampireSabbatLeader (Warform Tzimisce)
186 - AndreiBlood (The Tzimisce)
187 - VampireToreador
188 - Jezebel (Jezebel Locke)
189 - VampireNosferatu
190 - BrotherKanker (Brother Kanker)
191 - Nagaraja (Pisha the Nagaraja)
192 - VampireLasombra
193 - SabbatAuspexShottie
194 - SabbatAuspexSteyr
195 - SabbatAuspexMac10
196 - SabbatCelerityMac10
197 - SabbatCelerityShottie
198 - SabbatCelerityGlock
199 - SabbatFortitudeShottie
200 - SabbatWithPotence
201 - SabbatPresenceShottie
202 - SabbatWithProtean
203 - SabbatFireMage
204 - ShovelHead
205 - Werewolf (Werewolf)
206 - Killer (Serial Killer)
207 - BloodHuntAuspex
208 - BloodHuntCelerity
209 - BloodHuntFortitude
210 - BloodHuntPotence
211 - BloodHuntPresence
212 - BloodHuntProtean

Vampire\vdata\system\npctemplate002.txt (Second Loading)

213 - OfficerGeneric
214 - HunterSafeArea
215 - HunterSafeArea2
216 - HunterSafeArea3
217 - ChunkGuard
218 - ClinicGuard
219 - MuseumGuard

(vpk) Vampire\vdata\system\npctemplate003.txt

220 - CivilianGeneric
221 - CivilianTest1
222 - CivilianTest2

Vampire\vdata\system\npctemplate004.txt (Second Loading)

223 - TzimisceCreation1 (Tzimisce Creation)


224 - TzimisceCreation2
225 - TzimisceCreation3
226 - Nos_Attacked

Vampire\vdata\system\npctemplate005.txt (Second Loading)

227 - Scurrying
228 - Rat
229 - DoggieTemp
230 - Doggie

(vpk) Vampire\vdata\system\npctemplate006.txt
231 - Test_Mle1_Def1_Sok1
232 - Test_Mle2_Def2_Sok2
233 - Test_Mle5_Def1_Sok1
234 - Test_Mle1_Def5_Sok1
235 - Test_Mle1_Def1_Sok5
236 - Test_Mle5_Def1_Sok5
237 - Test_Mle5_Def5_Sok1
238 - Test_Mle5_Def1_Sok5
239 - Test_Mle5_Def5_Sok5
240 - Test_Mle1_Def10_Sok1
241 - Test_Mle1_Def10_Sok10
242 - Test_Mle1_Def1_Sok10
243 - Test_Mle10_Def10_Sok10

Vampire\vdata\system\npctemplate007.txt (Second Loading)

244 - Mercurio (Mercurio)


245 - Gimble (Gimble)
246 - WarehouseThug
247 - WarehouseThugLesser
248 - WarehouseSabbatClaws
249 - WarehouseThugFastFood
250 - BeachhouseThug
251 - BeachhouseDennis
252 - DowntownThug
253 - DowntownTong
254 - DowntownThugFastFood
255 - RussianMafia
256 - RussianMafiaElite
257 - SabbatGhoulMelee
258 - SabbatGhoulShottie
259 - SabbatGhoulGlock
260 - SabbatGhoulMac10

(vpk) Vampire\vdata\system\npctemplate008.txt

261 - Bum
262 - BumFastFood
263 - Hooker
264 - Blueblood
265 - BluebloodFastfood
266 - Plague-Bum

(vpk) Vampire\vdata\system\npctemplate009.txt

267 - Zombie

(vpk) Vampire\vdata\system\npctemplate010.txt

268 - Zhao

Vampire\vdata\system\npctemplate011.txt (Second Loading)

269 - TongThug

Vampire\vdata\system\npctemplate012.txt (Second Loading)

270 - ChangBros (Blade Brother)


271 - ChangBrosClaw (Claw Brother)
272 - AsianVampire (The Cathayan)
273 - BloodGuardian (Blood Guardian)
274 - Gargoyle (The Gargoyle)
275 - Hengeyokai (Zygaena the Hengeyokai)
276 - Yukie (Yukie)
277 - ManBat (Chiropteran Behemoth)
278 - ManBatMinion (ManBatMinion)
279 - ManBatOfficer

(vpk) Vampire\vdata\system\npctemplate013.txt

280 - SOC_average
281 - SOC_elite

(vpk) Vampire\vdata\system\npctemplate014.txt
282 - MingXiao (Ming Xiao)
283 - MingXiaoProxy
284 - MingXiaoTentacle

(vpk) Vampire\vdata\system\npctemplate015.txt

285 - Tpl_standard
286 - Tpl_star
287 - Tpl_sword
288 - Tpl_firebolt

Vampire\vdata\system\npctemplate016.txt (Second Loading)

289 - sp_gio_weak
290 - sp_gio_average
291 - sp_gio_strong
292 - Bruno (Bruno Giovanni)

(vpk) Vampire\vdata\system\npctemplate017.txt

293 - DaneGenCop (Police Officer)


294 - DaneLessCop (Dirty Cop)

Vampire\vdata\system\npctemplate018.txt (Second Loading)

295 - Barabus

Vampire\vdata\system\npctemplate020.txt (Second Loading)

296 - Ash (Ash)

Vampire\vdata\system\npctemplate022.txt (Second Loading)

297 - Mandarin (Mandarin)


298 - FuSecurity (Fu Security)

(vpk) Vampire\vdata\system\npctemplate023.txt

299 - Johnny (Johnny)

(vpk) Vampire\vdata\system\npctemplate024.txt

300 - SWAT
301 - SuperSWAT
302 - VentrueGhouls

Vampire\vdata\system\npctemplate025.txt (Second Loading)

303 - Chastity (Chastity)


304 - Julius

(vpk) Vampire\vdata\system\npctemplate_ashsewers.txt

305 - HunterHuntingAshCrossbows
306 - HunterHuntingAsh38
307 - HunterHuntingAshElite

(vpk) Vampire\vdata\system\npctemplate_bomberman.txt

308 - Bomberman

(vpk) Vampire\vdata\system\npctemplate_cabbie.txt

309 - Cabbie

(vpk) Vampire\vdata\system\npctemplate_cdc.txt

310 - CDC

Vampire\vdata\system\npctemplate_crackhouse.txt (Second Loading)

311 - BishopVick (Bishop Vick)


312 - CrackhousePlagueVictim

(vpk) Vampire\vdata\system\npctemplate_igor.txt

313 - RussianMafia_IgorCronies
314 - RussianMafia_Igor

(vpk) Vampire\vdata\system\npctemplate_lufang.txt

315 - LuFang

Vampire\vdata\system\npctemplate_malkmansion.txt (Second Loading)

316 - MalkMansionStalker (Malkavian Mansion Stalker)


317 - MalkMansionCroucher (Malk Mansion Croucher)
318 - MalkMansionStalkerBurning (Malkavian Mansion Stalker)

(vpk) Vampire\vdata\system\npctemplate_tutorial.txt
319 - TutorialThug
320 - TutorialShovelhead
321 - Tutorial_Jack

(vpk) Vampire\vdata\system\npctemplate_ventruesecurity.txt
322 - VentrueSecurity
323 - VentrueSecurityFastFood

9) CompMod VCLAN Values : Steam (includes merged 5.6 Patch changes)

NOTE : Steam loads the first and the last overridden file 4 times.

(clandoc000.txt = 4 times, npctemplate_malkmansion.txt = 4 times)

Vampire\vdata\system\clandoc000.txt
0 - Clear
1 - Human
2 - Player_Brujah (Brujah)
3 - Player_Gangrel (Gangrel)
4 - Player_Malkavian (Malkavian)
5 - Player_Nosferatu (Nosferatu)
6 - Player_Toreador (Toreador)
7 - Player_Tremere (Tremere)
8 - Player_Ventrue (Ventrue)
9 - Leopold1 (Condotierre)
10 - Leopold2 (Inquisitor)
11 - Leopold3 (Mercenary)
12 - Leopold1_F (Condotierre)
13 - Leopold2_F (Inquisitor)
14 - Leopold3_M (Mercenary)
15 - CompThinBlood (ThinBlood)
16 - PlaceHolder1 (None) -> TEXT : Clear
17 - CompHuman (Human)
18 - CompBrujah (Brujah)
19 - CompGangrel (Gangrel)
20 - CompMalkavian (Malkavian)
21 - CompNosferatu (Nosferatu)
22 - CompToreador (Toreador)
23 - CompTremere (Tremere)
24 - CompVentrue (Ventrue)
25 - mp-condotierre-male (Condotierre_Male)
26 - mp-inquisitor-male (Inquisitor_Male)
27 - mp-mercenary-female (Mercenary_Female)
28 - mp-condotierre-female (Condotierre_Female)
29 - mp-inquisitor-female (Inquisitor_Female)
30 - mp-mercenary-male (Mercenary_Male)
31 - PlaceHolder2 (None) -> TEXT : ThinBlood
32 - PlaceHolder3 (None) -> TEXT : Clear
33 - PlaceHolder4 (None -> TEXT : Human
34 - mp-brujah (Brujah)
35 - mp-gangrel (Gangrel)
36 - mp-malkavian (Malkavian)
37 - mp-nosferatu (Nosferatu)
38 - mp-toreador (Toreador)
39 - mp-tremere (Tremere)
40 - mp-ventrue (Ventrue)

Vampire\vdata\system\clandoc000.txt (Second Loading)

41 - Clear
42 - Human
43 - Player_Brujah (Brujah)
44 - Player_Gangrel (Gangrel)
45 - Player_Malkavian (Malkavian)
46 - Player_Nosferatu (Nosferatu)
47 - Player_Toreador (Toreador)
48 - Player_Tremere (Tremere)
49 - Player_Ventrue (Ventrue)
50 - Leopold1 (Condotierre)
51 - Leopold2 (Inquisitor)
52 - Leopold3 (Mercenary)
53 - Leopold1_F (Condotierre)
54 - Leopold2_F (Inquisitor)
55 - Leopold3_M (Mercenary)
56 - CompThinBlood (ThinBlood)
57 - PlaceHolder1 (None) -> TEXT : Clear
58 - CompHuman (Human)
59 - CompBrujah (Brujah)
60 - CompGangrel (Gangrel)
61 - CompMalkavian (Malkavian)
62 - CompNosferatu (Nosferatu)
63 - CompToreador (Toreador)
64 - CompTremere (Tremere)
65 - CompVentrue (Ventrue)
66 - mp-condotierre-male (Condotierre_Male)
67 - mp-inquisitor-male (Inquisitor_Male)
68 - mp-mercenary-female (Mercenary_Female)
69 - mp-condotierre-female (Condotierre_Female)
70 - mp-inquisitor-female (Inquisitor_Female)
71 - mp-mercenary-male (Mercenary_Male)
72 - PlaceHolder2 (None) -> TEXT : ThinBlood
73 - PlaceHolder3 (None) -> TEXT : Clear
74 - PlaceHolder4 (None -> TEXT : Human
75 - mp-brujah (Brujah)
76 - mp-gangrel (Gangrel)
77 - mp-malkavian (Malkavian)
78 - mp-nosferatu (Nosferatu)
79 - mp-toreador (Toreador)
80 - mp-tremere (Tremere)
81 - mp-ventrue (Ventrue)

Vampire\vdata\system\clandoc000.txt (Third Loading)

82 - Clear
83 - Human
84 - Player_Brujah (Brujah)
85 - Player_Gangrel (Gangrel)
86 - Player_Malkavian (Malkavian)
87 - Player_Nosferatu (Nosferatu)
88 - Player_Toreador (Toreador)
89 - Player_Tremere (Tremere)
90 - Player_Ventrue (Ventrue)
91 - Leopold1 (Condotierre)
92 - Leopold2 (Inquisitor)
93 - Leopold3 (Mercenary)
94 - Leopold1_F (Condotierre)
95 - Leopold2_F (Inquisitor)
96 - Leopold3_M (Mercenary)
97 - CompThinBlood (ThinBlood)
98 - PlaceHolder1 (None) -> TEXT : Clear
99 - CompHuman (Human)
100 - CompBrujah (Brujah)
101 - CompGangrel (Gangrel)
102 - CompMalkavian (Malkavian)
103 - CompNosferatu (Nosferatu)
104 - CompToreador (Toreador)
105 - CompTremere (Tremere)
106 - CompVentrue (Ventrue)
107 - mp-condotierre-male (Condotierre_Male)
108 - mp-inquisitor-male (Inquisitor_Male)
109 - mp-mercenary-female (Mercenary_Female)
110 - mp-condotierre-female (Condotierre_Female)
111 - mp-inquisitor-female (Inquisitor_Female)
112 - mp-mercenary-male (Mercenary_Male)
113 - PlaceHolder2 (None) -> TEXT : ThinBlood
114 - PlaceHolder3 (None) -> TEXT : Clear
115 - PlaceHolder4 (None -> TEXT : Human
116 - mp-brujah (Brujah)
117 - mp-gangrel (Gangrel)
118 - mp-malkavian (Malkavian)
119 - mp-nosferatu (Nosferatu)
120 - mp-toreador (Toreador)
121 - mp-tremere (Tremere)
122 - mp-ventrue (Ventrue)

Vampire\vdata\system\clandoc000.txt (Forth Loading)

123 - Clear
124 - Human
125 - Player_Brujah (Brujah)
126 - Player_Gangrel (Gangrel)
127 - Player_Malkavian (Malkavian)
128 - Player_Nosferatu (Nosferatu)
129 - Player_Toreador (Toreador)
130 - Player_Tremere (Tremere)
131 - Player_Ventrue (Ventrue)
132 - Leopold1 (Condotierre)
133 - Leopold2 (Inquisitor)
134 - Leopold3 (Mercenary)
135 - Leopold1_F (Condotierre)
136 - Leopold2_F (Inquisitor)
137 - Leopold3_M (Mercenary)
138 - CompThinBlood (ThinBlood)
139 - PlaceHolder1 (None) -> TEXT : Clear
140 - CompHuman (Human)
141 - CompBrujah (Brujah)
142 - CompGangrel (Gangrel)
143 - CompMalkavian (Malkavian)
144 - CompNosferatu (Nosferatu)
145 - CompToreador (Toreador)
146 - CompTremere (Tremere)
147 - CompVentrue (Ventrue)
148 - mp-condotierre-male (Condotierre_Male)
149 - mp-inquisitor-male (Inquisitor_Male)
150 - mp-mercenary-female (Mercenary_Female)
151 - mp-condotierre-female (Condotierre_Female)
152 - mp-inquisitor-female (Inquisitor_Female)
153 - mp-mercenary-male (Mercenary_Male)
154 - PlaceHolder2 (None) -> TEXT : ThinBlood
155 - PlaceHolder3 (None) -> TEXT : Clear
156 - PlaceHolder4 (None -> TEXT : Human
157 - mp-brujah (Brujah)
158 - mp-gangrel (Gangrel)
159 - mp-malkavian (Malkavian)
160 - mp-nosferatu (Nosferatu)
161 - mp-toreador (Toreador)
162 - mp-tremere (Tremere)
163 - mp-ventrue (Ventrue)

Vampire\vdata\system\npctemplate001.txt

164 - VampireGeneric
165 - VampireBrujah (Brujah)
166 - VampireBrujahThug (Brujah)
167 - VampireBrujahElite (Brujah)
168 - VampireGangrel (Gangrel)
169 - VampireCritical
170 - Bach (Grunfeld Bach)
171 - SheriffMan (The Sheriff)
172 - VampireSabbatLeader (Warform Tzimisce)
173 - AndreiBlood (The Tzimisce)
174 - VampireToreador
175 - Jezebel (Jezebel Locke)
176 - VampireNosferatu
177 - BrotherKanker (Brother Kanker)
178 - Nagaraja (Pisha the Nagaraja)
179 - VampireLasombra
180 - SabbatAuspexShottie
181 - SabbatAuspexSteyr
182 - SabbatAuspexMac10
183 - SabbatCelerityMac10
184 - SabbatCelerityShottie
185 - SabbatCelerityGlock
186 - SabbatFortitudeShottie
187 - SabbatWithPotence
188 - SabbatPresenceShottie
189 - SabbatWithProtean
190 - SabbatFireMage
191 - ShovelHead
192 - Werewolf (Werewolf)
193 - Killer (Serial Killer)
194 - BloodHuntAuspex
195 - BloodHuntCelerity
196 - BloodHuntFortitude
197 - BloodHuntPotence
198 - BloodHuntPresence
199 - BloodHuntProtean

Vampire\vdata\system\npctemplate002.txt

200 - OfficerGeneric
201 - HunterSafeArea
202 - HunterSafeArea2
203 - HunterSafeArea3
204 - ChunkGuard
205 - ClinicGuard
206 - MuseumGuard

Vampire\vdata\system\npctemplate004.txt

207 - TzimisceCreation1 (Tzimisce Creation)


208 - TzimisceCreation2
209 - TzimisceCreation3
210 - Nos_Attacked

Vampire\vdata\system\npctemplate005.txt

211 - Scurrying
212 - Rat
213 - DoggieTemp
214 - Doggie

Vampire\vdata\system\npctemplate007.txt

215 - Mercurio (Mercurio)


216 - Gimble (Gimble)
217 - WarehouseThug
218 - WarehouseThugLesser
219 - WarehouseSabbatClaws
220 - WarehouseThugFastFood
221 - BeachhouseThug
222 - BeachhouseDennis
223 - DowntownThug
224 - DowntownTong
225 - DowntownThugFastFood
226 - RussianMafia
227 - RussianMafiaElite
228 - SabbatGhoulMelee
229 - SabbatGhoulShottie
230 - SabbatGhoulGlock
231 - SabbatGhoulMac10

Vampire\vdata\system\npctemplate011.txt

232 - TongThug

Vampire\vdata\system\npctemplate012.txt

233 - ChangBros (Blade Brother)


234 - ChangBrosClaw (Claw Brother)
235 - AsianVampire (Cathayan)
236 - BloodGuardian (Blood Guardian)
237 - Gargoyle (The Gargoyle)
238 - Hengeyokai (Hengeyokai)
239 - Yukie (Yukie) -> SoundGroup=
unique/yukie
240 - ManBat (Chiropteran Behemoth)
241 - ManBatMinion (ManBatMinion)
242 - ManBatOfficer

Vampire\vdata\system\npctemplate016.txt

243 - sp_gio_weak
244 - sp_gio_average
245 - sp_gio_strong
246 - Bruno (Bruno)

Vampire\vdata\system\npctemplate018.txt

247 - Barabus

Vampire\vdata\system\npctemplate020.txt

248 - Ash (Ash)


Vampire\vdata\system\npctemplate022.txt

249 - Mandarin (Mandarin)


250 - FuSecurity (Fu Security)

Vampire\vdata\system\npctemplate025.txt

251 - Chastity (Chastity)


252 - Julius

Vampire\vdata\system\npctemplate_crackhouse.txt

253 - BishopVick (Bishop Vick)


254 - CrackhousePlagueVictim

Vampire\vdata\system\npctemplate_malkmansion.txt

255 - MalkMansionStalker (Malkavian Mansion Stalker)


256 - MalkMansionCroucher (Malk Mansion Croucher)
257 - MalkMansionStalkerBurning (Malkavian Mansion Stalker)

(vpk) Vampire\vdata\system\npctemplate000.txt

258 - NPCGeneric

Vampire\vdata\system\npctemplate001.txt (Second Loading)

259 - VampireGeneric
260 - VampireBrujah (Brujah)
261 - VampireBrujahThug (Brujah)
262 - VampireBrujahElite (Brujah)
263 - VampireGangrel (Gangrel)
264 - VampireCritical
265 - Bach (Grunfeld Bach)
266 - SheriffMan (The Sheriff)
267 - VampireSabbatLeader (Warform Tzimisce)
268 - AndreiBlood (The Tzimisce)
269 - VampireToreador
270 - Jezebel (Jezebel Locke)
271 - VampireNosferatu
272 - BrotherKanker (Brother Kanker)
273 - Nagaraja (Pisha the Nagaraja)
274 - VampireLasombra
275 - SabbatAuspexShottie
276 - SabbatAuspexSteyr
277 - SabbatAuspexMac10
278 - SabbatCelerityMac10
279 - SabbatCelerityShottie
280 - SabbatCelerityGlock
281 - SabbatFortitudeShottie
282 - SabbatWithPotence
283 - SabbatPresenceShottie
284 - SabbatWithProtean
285 - SabbatFireMage
286 - ShovelHead
287 - Werewolf (Werewolf)
288 - Killer (Serial Killer)
289 - BloodHuntAuspex
290 - BloodHuntCelerity
291 - BloodHuntFortitude
292 - BloodHuntPotence
293 - BloodHuntPresence
294 - BloodHuntProtean

Vampire\vdata\system\npctemplate002.txt (Second Loading)

295 - OfficerGeneric
296 - HunterSafeArea
297 - HunterSafeArea2
298 - HunterSafeArea3
299 - ChunkGuard
300 - ClinicGuard
301 - MuseumGuard

(vpk) Vampire\vdata\system\npctemplate003.txt

302 - CivilianGeneric
303 - CivilianTest1
304 - CivilianTest2

Vampire\vdata\system\npctemplate004.txt (Second Loading)

305 - TzimisceCreation1 (Tzimisce Creation)


306 - TzimisceCreation2
307 - TzimisceCreation3
308 - Nos_Attacked

Vampire\vdata\system\npctemplate005.txt (Second Loading)

309 - Scurrying
310 - Rat
311 - DoggieTemp
312 - Doggie

(vpk) Vampire\vdata\system\npctemplate006.txt
313 - Test_Mle1_Def1_Sok1
314 - Test_Mle2_Def2_Sok2
315 - Test_Mle5_Def1_Sok1
316 - Test_Mle1_Def5_Sok1
317 - Test_Mle1_Def1_Sok5
318 - Test_Mle5_Def1_Sok5
319 - Test_Mle5_Def5_Sok1
320 - Test_Mle5_Def1_Sok5
321 - Test_Mle5_Def5_Sok5
322 - Test_Mle1_Def10_Sok1
323 - Test_Mle1_Def10_Sok10
324 - Test_Mle1_Def1_Sok10
325 - Test_Mle10_Def10_Sok10

Vampire\vdata\system\npctemplate007.txt (Second Loading)

326 - Mercurio (Mercurio)


327 - Gimble (Gimble)
328 - WarehouseThug
329 - WarehouseThugLesser
330 - WarehouseSabbatClaws
331 - WarehouseThugFastFood
332 - BeachhouseThug
333 - BeachhouseDennis
334 - DowntownThug
335 - DowntownTong
336 - DowntownThugFastFood
337 - RussianMafia
338 - RussianMafiaElite
339 - SabbatGhoulMelee
340 - SabbatGhoulShottie
341 - SabbatGhoulGlock
342 - SabbatGhoulMac10

(vpk) Vampire\vdata\system\npctemplate008.txt

343 - Bum
344 - BumFastFood
345 - Hooker
346 - Blueblood
347 - BluebloodFastfood
348 - Plague-Bum

(vpk) Vampire\vdata\system\npctemplate009.txt

349 - Zombie

(vpk) Vampire\vdata\system\npctemplate010.txt

350 - Zhao

Vampire\vdata\system\npctemplate011.txt (Second Loading)

351 - TongThug

Vampire\vdata\system\npctemplate012.txt (Second Loading)

352 - ChangBros (Blade Brother)


353 - ChangBrosClaw (Claw Brother)
354 - AsianVampire (The Cathayan)
355 - BloodGuardian (Blood Guardian)
356 - Gargoyle (The Gargoyle)
357 - Hengeyokai (Zygaena the Hengeyokai)
358 - Yukie (Yukie)
359 - ManBat (Chiropteran Behemoth)
360 - ManBatMinion (ManBatMinion)
361 - ManBatOfficer

(vpk) Vampire\vdata\system\npctemplate013.txt

362 - SOC_average
363 - SOC_elite

(vpk) Vampire\vdata\system\npctemplate014.txt

364 - MingXiao (Ming Xiao)


365 - MingXiaoProxy
366 - MingXiaoTentacle

(vpk) Vampire\vdata\system\npctemplate015.txt

367 - Tpl_standard
368 - Tpl_star
369 - Tpl_sword
370 - Tpl_firebolt

Vampire\vdata\system\npctemplate016.txt (Second Loading)

371 - sp_gio_weak
372 - sp_gio_average
373 - sp_gio_strong
374 - Bruno (Bruno Giovanni)

(vpk) Vampire\vdata\system\npctemplate017.txt

375 - DaneGenCop (Police Officer)


376 - DaneLessCop (Dirty Cop)

Vampire\vdata\system\npctemplate018.txt (Second Loading)

377 - Barabus

Vampire\vdata\system\npctemplate020.txt (Second Loading)

378 - Ash (Ash)

Vampire\vdata\system\npctemplate022.txt (Second Loading)

379 - Mandarin (Mandarin)


380 - FuSecurity (Fu Security)

(vpk) Vampire\vdata\system\npctemplate023.txt

381 - Johnny (Johnny)

(vpk) Vampire\vdata\system\npctemplate024.txt

382 - SWAT
383 - SuperSWAT
384 - VentrueGhouls

Vampire\vdata\system\npctemplate025.txt (Second Loading)

385 - Chastity (Chastity)


386 - Julius

(vpk) Vampire\vdata\system\npctemplate_ashsewers.txt

387 - HunterHuntingAshCrossbows
388 - HunterHuntingAsh38
389 - HunterHuntingAshElite
(vpk) Vampire\vdata\system\npctemplate_bomberman.txt

390 - Bomberman

(vpk) Vampire\vdata\system\npctemplate_cabbie.txt

391 - Cabbie

(vpk) Vampire\vdata\system\npctemplate_cdc.txt

392 - CDC

Vampire\vdata\system\npctemplate_crackhouse.txt (Second Loading)

393 - BishopVick (Bishop Vick)


394 - CrackhousePlagueVictim

(vpk) Vampire\vdata\system\npctemplate_igor.txt

395 - RussianMafia_IgorCronies
396 - RussianMafia_Igor

(vpk) Vampire\vdata\system\npctemplate_lufang.txt

397 - LuFang

Vampire\vdata\system\npctemplate_malkmansion.txt (Second Loading)

398 - MalkMansionStalker (Malkavian Mansion Stalker)


398 - MalkMansionCroucher (Malk Mansion Croucher)
400 - MalkMansionStalkerBurning (Malkavian Mansion Stalker)

(vpk) Vampire\vdata\system\npctemplate_tutorial.txt
401 - TutorialThug
402 - TutorialShovelhead
403 - Tutorial_Jack

(vpk) Vampire\vdata\system\npctemplate_ventruesecurity.txt
404 - VentrueSecurity
405 - VentrueSecurityFastFood

Vampire\vdata\system\npctemplate_malkmansion.txt (Third Loading)

406 - MalkMansionStalker (Malkavian Mansion Stalker)


407 - MalkMansionCroucher (Malk Mansion Croucher)
408 - MalkMansionStalkerBurning (Malkavian Mansion Stalker)

Vampire\vdata\system\npctemplate_malkmansion.txt (Fourth Loading)

409 - MalkMansionStalker (Malkavian Mansion Stalker)


410 - MalkMansionCroucher (Malk Mansion Croucher)
411 - MalkMansionStalkerBurning (Malkavian Mansion Stalker)

------------------------------------------------------------------------
-------
G. > > > > Entity Details
------------------------------------------------------------------------
-------

===================================
Entity Properties
===================================

All Entities share these methods. They will be descibed here once and
ommitted from the rest of the Appendix:

input: Kill
input: Use
input: Alpha
input: Color
input: SetParent
input: ClearParent
input: ScriptHide
input: ScriptUnhide
input: SetSoundOverrideEnt
input: SetFakeSilence

SetParent("")

Specify the NAME of the parent entity. The affect is that the
Child
object (the one calling the function) becomes physically attached
to
the PARENT object. If the parent object moves, so does the child.
If
the Parent object can't move, then the child becomes stuck.

All Entities Share these Events. They will be descibed here once and
ommitted from the rest of the Appendix:

output: OnUseBegin
output: OnUseEnd

AI)

ai_script_conditions ?

aiscripted_schedule

EVENTS

output: OnBeginSequence
output: OnEndSequence
output: OnScriptEvent01
output: OnScriptEvent02
output: OnScriptEvent03
output: OnScriptEvent04
output: OnScriptEvent05
output: OnScriptEvent06
output: OnScriptEvent07
output: OnScriptEvent08
output: OnDamaged
output: OnDeath
output: OnHalfHealth
output: OnFoundEnemy
output: OnLostEnemyLOS
output: OnLostEnemy
output: OnFoundPlayer
output: OnLostPlayerLOS
output: OnLostPlayer
output: OnHearWorld
output: OnHearPlayer
output: OnHearCombat
output: OnGrappleBegin
output: OnGrappleEnd
output: OnFedUponBegin
output: OnFedUponEnd
output: OnSellWeapon
output: OnBarterClose
output: OnLinearMoveDone
output: OnAngularMoveDone

METHODS

input: StartSchedule
input: MoveToPosition
input: BeginSequence
input: CancelSequence
input: SetRelationship
input: HumanityAdd
input: Bloodloss
input: Bloodgain
input: ClearActiveDisciplines
input: physdamagescale
input: Inventory_Remove
input: MoneyAdd
input: MoneyRemove
input: BarterBegin
input: BarterEnd
input: BloodHeal
input: FrenzyCheck
input: FrenzyTrigger
input: HungerCheck
input: FrenzyUpdate
input: PlayFloat
input: WillTalk
input: ChangeMasqueradeLevel
input: FadeHeadAsCameraTarget
input: FadeBodyAsCameraTarget
input: SetHeadAsCameraTarget
input: SetBodyAsCameraTarget
input: LookAtEntityEye
input: LookAtEntityCenter
input: LookAtEntityOrigin
input: LookAtEntityDefault
input: skin
input: SetBodygroup
input: SetSkinFadeTime
input: FadeToSkin
input: SpawnTempParticle
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

PROPERTIES (ex)

"targetname" "hooker_1_to_lucky_star"
"m_iszEntity" "hooker"
"m_flRadius" "32"
"forcestate" "0"
"schedule" "1"
"goalent" "lucky_star_entrance"
"origin" "-839.736 -2018.22 -103"

aiscripted_sequence

EVENTS

output: OnBeginSequence
output: OnEndSequence
output: OnScriptEvent01
output: OnScriptEvent02
output: OnScriptEvent03
output: OnScriptEvent04
output: OnScriptEvent05
output: OnScriptEvent06
output: OnScriptEvent07
output: OnScriptEvent08
output: OnDamaged
output: OnDeath
output: OnHalfHealth
output: OnFoundEnemy
output: OnLostEnemyLOS
output: OnLostEnemy
output: OnFoundPlayer
output: OnLostPlayerLOS
output: OnLostPlayer
output: OnHearWorld
output: OnHearPlayer
output: OnHearCombat
output: OnGrappleBegin
output: OnGrappleEnd
output: OnFedUponBegin
output: OnFedUponEnd
output: OnSellWeapon
output: OnBarterClose
output: OnLinearMoveDone
output: OnAngularMoveDone

METHODS:
input: MoveToPosition
input: BeginSequence
input: CancelSequence
input: SetRelationship
input: HumanityAdd
input: Bloodloss
input: Bloodgain
input: ClearActiveDisciplines
input: physdamagescale
input: Inventory_Remove
input: MoneyAdd
input: MoneyRemove
input: BarterBegin
input: BarterEnd
input: BloodHeal
input: FrenzyCheck
input: FrenzyTrigger
input: HungerCheck
input: FrenzyUpdate
input: PlayFloat
input: WillTalk
input: ChangeMasqueradeLevel
input: FadeHeadAsCameraTarget
input: FadeBodyAsCameraTarget
input: SetHeadAsCameraTarget
input: SetBodyAsCameraTarget
input: LookAtEntityEye
input: LookAtEntityCenter
input: LookAtEntityOrigin
input: LookAtEntityDefault
input: skin
input: SetBodygroup
input: SetSkinFadeTime
input: FadeToSkin
input: SpawnTempParticle
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

PROPERTIES

"targetname" "hooker_2_to_alley"
"m_iszEntity" "hooker"
"m_flRadius" "32"
"m_flRepeat" "0"
"m_fMoveTo" "0"
"m_iszNextScript" "hooker_2_alley_lovin"
"m_iFinishSchedule" "0"
"origin" "2020.57 129.317 -103"

AMBIENT
ambient_generic

EVENTS
output: OnUseBegin
output: OnUseEnd

METHODS

input: PlaySound
input: StopSound
input: ToggleSound
input: Pitch
input: Volume

PROPERTIES

"classname" "ambient_generic"
"health" "5"
"preset" "0"
"volstart" "0"
"fadein" "3"
"fadeout" "3"
"pitch" "100"
"pitchstart" "100"
"spinup" "0"
"spindown" "0"
"lfotype" "0"
"lforate" "0"
"lfomodpitch" "0"
"lfomodvol" "0"
"cspinup" "0"
"radius" "3125"
"sound_event" "0"
"sound_event_level" "2"
"targetname" "tong_callout2"
"message" "Character/Male/unique/Tongie/line41_col_e.mp3"
"SourceEntityName" "front_window"
"spawnflags" "48"
"origin" "-761.405 340.64 9"

ambient_location ?

ambient_soundscheme

EVENTS:

METHODS:

input: FadeIn
input: FadeOut

PROPERTIES (ex)

"scheme_file" "sound/Schemes/temple_3.txt"
"start_enabled" "1"
"spawnflags" "0"
"origin" "23.322 -29.99 74"

CAMERA)
camera_cinematic

EVENTS:

output: OnLinearMoveDone
output: OnAngularMoveDone

METHODS:

input: StartShot
input: EndShot
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

PROPERTIES (ex)

"classname" "camera_cinematic"
"shotname" "vdata/CameraShots/LookAtTarget_Snap.txt"
"point_player" "1"
"startent" "romero_camera"
"endent" "romero_camera"
"target1" "romero_camera_target"
"target2" "romero_camera_target"
"spawnflags" "1"
"targetname" "romero_camera"
"origin" "2270 -2213 -306"

camera_keyframe

EVENTS:

output: OnReachedKeyframe
output: OnLeavingKeyframe

METHODS:

PROPERTIES (ex)

"targetname" "fake_ash_staked_camera_1"
"TimeControl" "1"
"MoveSpeed" "68.468971252441406"
"MoveTime" "1"
"PositionInterpolator" "1"
"Corner" "1"
"Pause" "1.5"
"RateIn" "1"
"RateOut" "1"
"FocalLength" "28.2"
"Roll" "0"
"NextKey" "fake_ash_staked_camera_2"
"OnLeavingKeyframe" "stake,ScriptUnhide,,0,-1,,"
"origin" "-172 668 56"

camera_track

EVENTS:

output: OnAnimationCompleted
output: OnReachedKeyframe
output: OnLeavingKeyframe

METHODS:

input: PlayAsCameraTarget
input: PlayAsCameraPosition
input: RestoreCameraToPlayerControl

PROPERTIES (ex):

"targetname" "fake_ash_staked_camera"
"TimeControl" "1"
"MoveSpeed" "265.45376586914062"
"MoveTime" "0.5"
"PositionInterpolator" "1"
"Corner" "1"
"Pause" "3"
"RateIn" "1"
"RateOut" "1"
"FocalLength" "28.2"
"Roll" "0"
"HoldAtEnd" "1"
"FromPlayerTime" "0"
"ToPlayerTime" "0"
"NextKey" "fake_ash_staked_camera_1"
"OnLeavingKeyframe" "Hunter,SetHeadAsCameraTarget,,0,-1,,"
"origin" "-145 764.916 142.572"

security_camera

output: OnPanToEnd
output: OnPanToStart
output: OnPlayerDiscovered
output: OnBreak
output: OnHealthChanged
output: OnLinearMoveDone
output: OnAngularMoveDone
output: OnUseBegin
output: OnUseEnd
input: Enable
input: Disable
input: Toggle
input: physdamagescale
input: Break
input: SetHealth
input: AddHealth
input: RemoveHealth
input: FadeOutKill
input: SetDebris
input: skin
input: SetBodygroup
input: SetSkinFadeTime
input: FadeToSkin
input: SpawnTempParticle
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

sky_camera

output: OnUseBegin
output: OnUseEnd

"scale" "16"
"fogenable" "0"
"fogblend" "0"
"fogcolor" "2 2 2"
"fogcolor2" "255 255 255"
"fogdir" "1 0 0"
"fogstart" "7800.0"
"fogend" "8000.0"
"origin" "-141 -1055.5 2541.5"

ENVIRONMENT)

NOTES: environment entities are generally used to add extra stuff to a


map. For example, if there is a computer that is supposed to be be
malfunctioning, you might add sparks where the computer terminal is. You
might add steam to an area with pipes, or control it with a switch.

env_beam

EVENTS:

METHODS:

input: TurnOn
input: TurnOff
input: Toggle
input: StrikeOnce
input: Width
input: Noise
input: ScrollSpeed

env_fade

EVENTS:

output: OnBeginFade
output: OnUseBegin
output: OnUseEnd
METHODS:

input: Fade

PROPERTIES (ex):
"targetname" "fade_white"
"renderamt" "255"
"rendercolor" "255 255 255"
"duration" "0.5"
"holdtime" "0"
"spawnflags" "8"
"origin" "-28.6845 420.47 -471"

env_floating_camera

EVENTS:

METHODS:

input: StartWaves
input: StopWaves

env_particle

EVENTS:

METHODS:
input: TurnOn
input: TurnOff
input: SetAttachType
input: SetRateScale
input: SetRampTime

PROPERTIES (ex) :

"angles" "0 0 0"


"active" "1"
"attach_type" "-1"
"particle_definition" "Fire2_emitter"
"bounds" "512"
"ramp_scale" "1"
"origin" "208 208 80"

env_particle_hud

EVENTS:

METHODS:

input: TurnOn
input: TurnOff
input: SetAttachType
input: SetRateScale
input: SetRampTime

PROPERTIES (ex):

env_physexplosion

EVENTS:

METHODS

input: Explode

PROPERTIES (ex):

"targetname" "boom"
"magnitude" "600"
"StartHidden" "0"
"radius" "128"
"origin" "-164 8 427"

env_physimpact -> applies physical impact to target

EVENTS:

METHODS:

input: Impact

PROPERTIES (ex):

"magnitude" "700"
"target_position" "29.05 -2.25 406"
"targetname" "studiodoor2-phys_impact"
"parentname" "room2door"
"directionentityname" "room2door"
"spawnflags" "7"
"origin" "29.0565 -2.2517 406.003"

env_shake

EVENTS:

METHODS:

input: StartShake
input: StopShake
input: Amplitude
input: Frequency
PROPERTIES (ex):

"radius" "512"
"targetname" "snake1"
"amplitude" "4"
"duration" ".1"
"frequency" "2.5"
"spawnflags" "1"
"origin" "477.954 708 -412"

env_shooter

EVENTS:

METHODS:
input: Shoot

PROPERTIES (ex):

"angles" "0 270 0"


"StartHidden" "0"
"m_iGibs" "8"
"delay" ".1"
"m_flVelocity" "250"
"m_flVariance" ".5"
"m_flGibLife" "5"
"renderfx" "0"
"rendermode" "0"
"renderamt" "255"
"rendercolor" "255 255 255"
"disableshadows" "1"
"disablereceiveshadows" "0"
"shootmodel" "models/scenery/structural/subway/gib01.mdl"
"shootsounds" "4"
"simulation" "0"
"skin" "0"
"targetname" "gibs01"
"spawnflags" "0"
"origin" "496 768 -384"

env_spark

EVENTS:

output: OnSpark

METHODS:

input: StartSpark
input: StopSpark
input: ToggleSpark
input: SparkOnce

PROPERTIES(Ex):

env_sprite
EVENTS:

METHODS:

input: SetScale
input: HideSprite
input: ShowSprite
input: ToggleSprite
input: Toggle
input: TurnOn
input: TurnOff

PROPERTIES:

"classname" "env_sprite"
"renderfx" "14"
"renderamt" "30"
"rendercolor" "247 239 210"
"framerate" "0"
"rendermode" "3"
"disableshadows" "0"
"disablereceiveshadows" "0"
"model" "materials/sprites/glowa.vmt"
"scale" ".2"
"spawnflags" "1"
"origin" "139 245 147"

env_steam

EVENTS:

METHODS:

input: JetLength
input: SpreadSpeed
input: Speed
input: Rate
input: TurnOn
input: TurnOff
input: Toggle

PROPERTIES (ex):

"angles" "-90 0 0"


"InitialState" "1"
"type" "0"
"SpreadSpeed" "4"
"Speed" "30"
"StartSize" "10"
"EndSize" "10"
"Rate" "26"
"rendercolor" "232 231 227"
"JetLength" "128"
"renderamt" "20"
"origin" "391 -560 -119"
EVENTS)

events_player

EVENTS:

output: OnFrenzyBegin
output: OnFrenzyEnd
output: OnWolfMorphBegin
output: OnWolfMorphEnd
output: OnPlayerTookDamage
output: OnPlayerKilled
output: OnPlayerSoundLoud
output: OnActivateAuspex
output: OnActivateCelerity
output: OnActivateCorpusVampirus
output: OnActivateFortitude
output: OnActivateObfuscate
output: OnActivatePotence
output: OnActivatePresense
output: OnActivateProtean
output: OnActivateAnimalismLvl1
output: OnActivateAnimalismLvl2
output: OnActivateDementationLvl1
output: OnActivateDementationLvl2
output: OnActivateDominateLvl1
output: OnActivateDominateLvl2
output: OnActivateThaumaturgyLvl1
output: OnActivateThaumaturgyLvl2

METHODS:

input: EnableOutputs
input: DisableOutputs
input: CreateControllerNPC
input: RemoveControllerNPC
input: AwardExp
input: ClearDialogCombatTimers
input: ImmobilizePlayer
input: MobilizePlayer
input: RemoveDisciplines
input: RemoveDisciplinesNow
input: MakePlayerUnkillable
input: MakePlayerKillable

PROPERTIES (ex):

"targetname" "playercontroller"
"enabled" "1"
"origin" "-7.74472 539.688 45"

events_world

EVENTS:
output: OnCopsOutside
output: OnCopsComing
output: OnStartCopPursuitMode
output: OnEndCopPursuitMode
output: OnStartCopAlertMode
output: OnEndCopAlertMode
output: OnStartHunterPursuitMode
output: OnEndHunterPursuitMode
output: OnMasqueradeLevel1
output: OnMasqueradeLevel2
output: OnMasqueradeLevel3
output: OnMasqueradeLevel4
output: OnMasqueradeLevel5
output: OnMasqueradeLevelChanged
output: OnPlayerHasNoBlood
output: OnCombatMusicStart
output: OnCombatMusicEnd
output: OnAlertMusicStart
output: OnAlertMusicEnd
output: OnNormalMusicStart
output: OnNormalMusicEnd
output: OnUseBegin
output: OnUseEnd

input: SetSafeArea
input: SetCopWaitArea
input: SetCopGrace
input: SetNosferatuTolerant
input: SetNoFrenzyArea
input: AIEnable
input: FadeGlobalWetness
input: HideCutsceneInterferingEntities
input: UnhideCutsceneInterferingEntities
input: PlayEndCredits
input: ClearDialogCombatTimers
input: Kill
input: Use
input: Alpha
input: Color
input: SetParent
input: ClearParent
input: ScriptHide
input: ScriptUnhide
input: SetSoundOverrideEnt
input: SetFakeSilence

FILTERS)

filter_activator_class

EVENTS:

output: OnPass
output: OnFail
METHODS:

input: TestActivator

PROPERTIES (ex):

"targetname" "gate_dmg_filter"
"filterclass" "npc_vzombie"
"reverse_outcome" "0"
"origin" "1670.31 -1301.59 -100.827"

filter_activator_feat

EVENTS:

output: OnPass
output: OnFail

METHODS:

input: TestActivator

PROPERTIES (ex)

filter_activator_inventory

EVENTS:

output: OnPass
output: OnFail

METHODS:

input: TestActivator

Properties (ex):

"reverse_outcome" "0"
"item_name" "item_g_idol_crane"
"spawnflags" "0"
"targetname" "filter_crane"
"origin" "210 147 17"

filter_activator_mass

EVENTS:

output: OnPass
output: OnFail

METHODS:

input: TestActivator

Properties (ex):
filter_activator_name

EVENTS:

output: OnPass
output: OnFail

METHODS:

input: TestActivator

Properties (ex):

"targetname" "prostitute_filter"
"reverse_outcome" "0"
"filtername" "prostitute*"
"origin" "-178.244 -1509.86 3.07441"

filter_multi

EVENTS:

output: OnPass
output: OnFail

METHODS:

input: TestActivator

Properties (ex):

"reverse_outcome" "0"
"filtertype" "1"
"targetname" "filter_idol"
"Filter01" "filter_cat"
"Filter02" "filter_crane"
"Filter03" "filter_dragon"
"Filter04" "filter_elephant"
"origin" "231.404 91.1505 17"

FUNCTIONS)

Functions apply themselves to in game objects. Most functions


identify the
object they apply themselves to through an inline model reference.
The
model property might look like “*305â€. The * notation means it
is a
reference to an inline object, already loaded by the map. If you
activate
the picker and look at most entities, you will notice a number
associated
with the entity. Furthermore, most entities have a modelindex
property.
These are set by the engine as they are loaded from the map. For
this
reason, inserting objects into maps can cause havoc on the game.
When
editing map files, you must add all new elements to the END of the
map
file to prevent breaking all the function objects for that map.

A few functions use a “targetâ€ property instead of a model


reference.

func_areaportal

EVENTS:

METHODS:

input: Open
input: Close
input: Toggle
input: TurnOn
input: TurnOff

PROPERTIES (ex):
"portalnumber" "1"
"classname" "func_areaportal"
"StartOpen" "0"
"target" "frontdoora"

func_areaportalwindow

EVENTS:

METHODS:

PROPTERIES (ex):

"portalnumber" "4"
"targetname" "vesuviousfrntdrwndw"
"target" "vesuviousfrntdr"
"FadeStartDist" "128"
"FadeDist" "256"
"TranslucencyLimit" "0"

func_breakable

NOTES: Makes something damageable/breakable that was not previously


breakable.

EVENTS:

output: OnBreak
output: OnHealthChanged

METHODS:

input: Break
input: SetHealth
input: AddHealth
input: RemoveHealth
input: SetDamageable

PROPERTIES (ex):
"model" "*2"
"classname" "func_breakable"
"health" "1"
"material" "0"
"explosion" "0"
"pressuredelay" "0"
"spawnflags" "256"

func_breakable_surf

NOTES: surf = surface.

EVENTS:

output: OnBreak
output: OnHealthChanged

METHODS:

input: Break
input: SetHealth
input: AddHealth
input: RemoveHealth
input: SetDamageable

PROPERTIES (ex):

"model" "*7"
"StartHidden" "0"
"collideable_gibs" "0"
"health" "5"
"material" "0"
"explosion" "0"
"spawnobject" "0"
"explodemagnitude" "0"
"pressuredelay" "0"
"renderfx" "0"
"rendermode" "0"
"renderamt" "255"
"rendercolor" "255 255 255"
"disableshadows" "1"
"disablereceiveshadows" "0"
"fragility" "100"
"surfacetype" "0"
"lowerleft" "-12 870 180"
"upperleft" "-12 870 204"
"lowerright" "12 870 180"
"upperright" "12 870 204"
"error" "0"
"OnBreak" "sound_window,PlaySound,,0,-1,,"
func_brush

NOTES:

Adds additional properties to object that it would not normally


Have. For example, makes something climable, or useable or solid
that is not normaly so. For example, making a a cat statue usable.

EVENTS:

METHODS:

input: Enable
input: Disable
input: Toggle

PROPERTIES (ex):

“model *20â€
"targetname" "cat_brush"
"renderfx" "0"
"rendermode" "0"
"renderamt" "255"
"rendercolor" "255 255 255"
"disableshadows" "1"
"disablereceiveshadows" "0"
"StartHidden" "1"
"InputFilter" "0"
"StartDisabled" "0"
"Solidity" "0"
"climbable" "0"
"OnPressed" "cat_prop,ScriptHide,,0,-1,,"
"OnPressed" ",,,0,-1,RemoveIdol('cat'),"

func_button

EVENTS:

output: OnDamaged
output: OnPressed
output: OnIn
output: OnOut
output: OnLinearMoveDone
output: OnAngularMoveDone

METHODS:

input: Lock
input: Unlock
input: Press
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

PROPERTIES (ex):

"model" "*25"
"renderamt" "255"
"rendercolor" "255 255 255"
"disableshadows" "1"
"angles" "0 0 0"
"speed" "5"
"lip" "0"
"wait" "-1"
"use_icon" "48"
"locked_icon" "12"
"locked_sound" "environmental/electronic/deny_beep.wav"
"unlocked_sound" "environmental/electronic/button_beep.wav"
"spawnflags" "1056"
"origin" "-1182 -1557.81 60"
"targetname" "camera_button_2"
"soundgroup" "small_metal_switch"
"use_filter_name" "filter_inventory"
"OnPressed" "camera_model_2,ScriptUnhide,,0,1,,"
"OnPressed" "camera_button_2,Kill,,0,1,,"
"OnPressed" ",,,0,1,placeCam(),"
"OnIn" "Blade_2_Trigger,ScriptUnhide,,0,-1,,"

func_door

EVENTS:
output: OnBlockedOpening
output: OnBlockedClosing
output: OnUnblockedOpening
output: OnUnblockedClosing
output: OnFullyClosed
output: OnFullyOpen
output: OnClose
output: OnOpen
output: OnLinearMoveDone
output: OnAngularMoveDone

METHODS:
input: Open
input: Close
input: Toggle
input: Lock
input: Unlock
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

PROPERTIES (ex):

"model" "*3"
"StartHidden" "0"
"renderfx" "0"
"rendermode" "0"
"renderamt" "255"
"rendercolor" "255 255 255"
"disableshadows" "1"
"disablereceiveshadows" "0"
"speed" "100"
"wait" "-1"
"lip" "0"
"dmg" "0"
"health" "0"
"soundgroup" "heavy_iron_gate"
"angles" "-90 0 0"
"spawnflags" "0"
"origin" "-847 73 54"
"targetname" "slide_door_1"
"use_icon" "10"
"locked_icon" "3"

func_door_rotating

EVENTS:

output: OnBlockedOpening
output: OnBlockedClosing
output: OnUnblockedOpening
output: OnUnblockedClosing
output: OnFullyClosed
output: OnFullyOpen
output: OnClose
output: OnOpen
output: OnLinearMoveDone
output: OnAngularMoveDone

METHODS:

input: Open
input: Close
input: Toggle
input: Lock
input: Unlock
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

PROPERTIES (ex)

"model" "*23"
"StartHidden" "0"
"renderfx" "0"
"rendermode" "0"
"renderamt" "255"
"rendercolor" "255 255 255"
"disableshadows" "0"
"disablereceiveshadows" "0"
"speed" "100"
"wait" "5"
"lip" "0"
"dmg" "0"
"health" "0"
"soundgroup" "standard_door"
"angles" "0 0 0"
"distance" "90"
"climbable" "0"
"spawnflags" "256"
"origin" "250 739.5 43.5"
"targetname" "door1l"
"linked_door" "door1r"
"use_icon" "10"
"locked_icon" "3"

func_dustmotes

NOTES:

Add dust to atmosphere.

EVENTS:

METHODS

input: TurnOn
input: TurnOff

PROPERTIES (ex):

"model" "*10"
"StartDisabled" "0"
"Color" "255 255 255"
"SpawnRate" "40"
"SpeedMax" "4"
"LifetimeMin" "3"
"LifetimeMax" "5"
"DistMax" "512"
"Frozen" "0"
"Alpha" "150"
"SizeMin" "10"
"SizeMax" "15"
"SpriteName" "particle/sparkles"

func_elevator

EVENTS:

output: OnMoveStart
output: OnReachFloorAny
output: OnPassFloorAny
output: OnReachFloor1
output: OnReachFloor2
output: OnReachFloor3
output: OnReachFloor4
output: OnReachFloor5
output: OnReachFloor6
output: OnReachFloor7
output: OnReachFloor8
output: OnPassFloor2
output: OnPassFloor3
output: OnPassFloor4
output: OnPassFloor5
output: OnPassFloor6
output: OnPassFloor7
output: Position
output: OnStop
output: OnReachStart
output: OnReachEnd
output: OnMoveTowardsStart
output: OnMoveTowardsEnd
output: OnLinearMoveDone
output: OnAngularMoveDone

METHODS:

input: SnapToFloor
input: GotoFloor
input: Lock
input: Unlock
input: CallCurrentFloorOutputs
input: Open
input: Close
input: SetPosition
input: StartMoving
input: StopMoving
input: ToggleMovement
input: SetSpeed
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

PROPERTIES (ex):

func_illusionary

EVENTS:

METHODS:

input: Kill
input: Use
input: Alpha
input: Color
input: SetParent
input: ClearParent
input: ScriptHide
input: ScriptUnhide
input: SetSoundOverrideEnt
input: SetFakeSilence

PROPERTIES (ex):
"model" "*6"
"StartHidden" "0"
"renderfx" "0"
"rendermode" "0"
"renderamt" "255"
"rendercolor" "255 255 255"
"disableshadows" "1"
"disablereceiveshadows" "0"
"origin" "347.5 184 153.5"

func_keyframed_mover

EVENTS:

output: OnReachedKeyframe
output: OnReachedEnd
output: OnReachedBeginning
output: OnLinearMoveDone
output: OnAngularMoveDone

METHODS:

input: MoveForwards
input: MoveBackwards
input: StopMoving
input: SetSpeed
input: SnapToKeyframe
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

PROPERTIES (ex):

"model" "*14"
"targetname" "train"
"StartHidden" "0"
"speed" "0"
"direction" "0"
"origin" "3222 1136 -295.03"
"start_key" "t1"
"spawnflags" "1"

func_lod

NOTES:

LOD = Level of Detail. You can set this globally for the entire game
from the In Game Options
Menu. Or you can increase/decrease for specific objects

EVENTS:

METHODS:
PROPERTIES (ex):

func_monitor

NOTES:

This plugin connects a monitor prop to a camera and enables turning


it
on or off.

EVENTS:

METHODS

input: SetCamera
input: Enable
input: Disable
input: Toggle

PROPERTIES (ex) :
"model" "*14"
"renderamt" "255"
"rendercolor" "255 255 255"
"disableshadows" "1"
"targetname" "monitor"
"target" "point_cam1"
"origin" "625.83 546.78 -31.24"
"InputFilter" "16"
"Solidity" "0"
"spawnflags" "1"

func_movelinear

NOTES:
Functional “pluginâ€ that makes targetname move.

EVENTS:

output: Position
output: OnStop
output: OnReachStart
output: OnReachEnd
output: OnMoveTowardsStart
output: OnMoveTowardsEnd
output: OnLinearMoveDone
output: OnAngularMoveDone

METHODS:

input: Open
input: Close
input: SetPosition
input: StartMoving
input: StopMoving
input: ToggleMovement
input: SetSpeed
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

PROPERTIES:

"model" "*35"
"angles" "-90 0 0"
"startposition" "0"
"speed" "100"
"movedistance" "160"
"blockdamage" "0"
"spawnflags" "0"
"targetname" "temp_elevator"

func_particle

EVENTS:

METHODS:

input: TurnOn
input: TurnOff
input: SetAttachType
input: SetRateScale
input: SetRampTime

PROPERTIES (ex):

"model" "*120"
"angles" "0 0 0"
"origin" "2531 1166 -830.5"
"active" "0"
"particle_definition" "rain_box_emitter"
"ramp_scale" "1.0"

func_physbox

EVENTS:

output: OnDamaged
output: OnAwakened
output: OnPhysGunPickup
output: OnPhysGunDrop

METHODS:

input: physdamagescale
input: Wake

PROPERTIES (ex):

"model" "*56"
"StartHidden" "1"
"renderfx" "0"
"rendermode" "0"
"renderamt" "255"
"rendercolor" "255 255 255"
"disableshadows" "1"
"disablereceiveshadows" "0"
"targetname" "gibdoor"
"physdamagescale" "1"
"override_mass" "-1"
"origin" "-160 -12 436"
"spawnflags" "17"

func_pushable

EVENTS:

output: OnBreak
output: OnHealthChanged

METHODS:

input: Break
input: SetHealth
input: AddHealth
input: RemoveHealth
input: SetDamageable

func_rotating

EVENTS:

METHODS:

input: SetSpeed
input: Start
input: Stop
input: Toggle
input: Reverse
input: StartForward
input: StartBackward

PROPERTIES:

"model" "*1"
"renderfx" "0"
"rendermode" "0"
"renderamt" "255"
"rendercolor" "255 255 255"
"disableshadows" "1"
"disablereceiveshadows" "0"
"speed" "100"
"wait" "4"
"lip" "0"
"dmg" "0"
"health" "0"
"locked_sentence" "0"
"unlocked_sentence" "0"
"angles" "0 0 0"
"distance" "90"
"climbable" "0"
"spawnflags" "256"
"origin" "-344 -881 59.5"
"soundgroup" "heavy_iron_gate"
"targetname" "secretdoor2_locked"
"use_icon" "10"
"locked_icon" "3"

GAME)

game_sign

NOTES: Can create dynamically, but must call ChangeFile before


spawn or OpenWindow.

EVENTS:

METHODS:

input: ChangeFile
input: OpenWindow
input: CloseWindow

PROPERTIES (ex) :

game_text

NOTES: Cant create dynamically. Required text is unsettable.


Does not appear to work.

EVENTS:

METHODS:

input: Display
input: DisplayWindow
input: CloseWindow

PROPERTIES (ex):

"message" "This is test"


"channel" "1"
"x" "-1"
"y" "-1"
"effect" "0"
"fadein" "1.50"
"fadeout" "0.50"
"holdtime" "6"
"fxtime" "0.25"

game_ui

NOTES: Does not appear to work.


EVENTS:

output: PlayerOn
output: PlayerOff
output: PressedAny
output: PressedMoveLeft
output: PressedMoveRight
output: PressedForward
output: PressedBack
output: PressedAttack
output: PressedAttack2
output: PressedFeed
output: XAxis
output: YAxis
output: AttackAxis
output: Attack2Axis

METHODS:

input: Deactivate
input: Activate

PROPERTIES (ex):

"FieldOfView" "-1.0"
"spawnflags" "96"
"targetname" "pc_control"
"PressedAttack" "pc_control,Deactivate,,0.5,-1,,"
"PressedAttack" "popup,CloseWindow,,0,-1,,"
"PlayerOn" "popup,OpenWindow,,0,-1,,"
"origin" "-279 -4716.12 -903.789"
HUD)

hud_counter

NOTES: Show numerical value on screen. Never have gotten


it to work.

EVENTS:

METHODS:

input: setvalue
input: setxpos
input: setypos
input: TurnOn
input: TurnOff
input: TurnOn
input: TurnOff

hud_timer :

NOTES: countdowntimer that shows on hud, executes script when complete

EVENTS:

output: OnTimerComplete
METHODS:

input: count_time
input: RestartTimer
input: ResetTimer
input: StartTimer
input: PauseTimer
input: Show
input: Hide

PROPERTIES (ex):

"classname" "hud_timer"
"count_time" "300"
"count_type" "-1"
"targetname" "timer"
"OnTimerComplete" "Relay_Finished_Level,Trigger,,0,-1,G.Romero_Quest =
3,"
"origin" "2212.47 -2249.13 -357"

AI_HINT)

info_hint

EVENTS:

METHODS:

PROPERTIES (ex):

info_landmark : Named Location for teleporting

EVENTS:

output: OnSpawnNoCopCars
output: OnSpawnOneCopCar
output: OnSpawnTwoCopCars
output: OnDelaySpawnOneCopCar
output: OnDelaySpawnTwoCopCars
output: OnCopsInPursuit
output: OnHeightenedAlert
output: OnEnterMapHere

METHODS:

PROPERTIES (ex):

"targetname" "temple_arena"
"angles" "0 0 0"
"spawnflags" "1"
"origin" "6.36149 6.62193 1"

info_node
NOTES: info_nodes are used by the games ai to help NPCs and monsters
“seeâ€
the map. Some nodes also identify what an npc can do like
climbing a
ladder. Without these, NPCs would appear to be blind and walk
into
buildings, etc...

Most info nodes share the same methods and events (which are
all
useless). The nodes power is in simply existing within a map
and
having a location. The exceptions are noted.

Within the game, you will not see info_nodes listed as they are
Defined in the map meta-data. Instead, report_entities will
Combine all info_nodes into the general category “ai_hintâ€.

EVENTS:

METHODS:

PROPERTIES (ex):

"nodeid" "77"
"origin" "-432 -644 17"

The following nodes help in combat:

There are several specialized nodes for specific NPC encounters:

info_node_bach_run_1
info_node_bach_run_2
info_node_bach_teleport_1
info_node_bach_teleport_2
info_node_bach_teleport_3
info_node_bach_teleport_4
info_node_chang_column
info_node_chang_jumpbase
info_node_chang_ledge
info_node_chang_teleport

info_node_climb

PROPERTIES (ex):

"nodeid" "0"
"angles" "0 0 0"
"hinttype" "10000"
"StartHintDisabled" "0"
"origin" "3669 979 -385"

info_node_cover_corner

PROPERTIES (ex):
"angles" "0 225 0"
"nodeid" "45"
"hinttype" "10200"
"StartHintDisabled" "0"
"target_angle_range" "60"
"target_dist_min" "200"
"target_dist_max" "800"
"hint_rating" "3"
"group_id" "2"
"Group" "5"
"targetname" "IdolRoom_2_Cover2"
"StartHidden" "1"
"origin" "-666 992 12"

info_node_cover_low
"classname" "info_node_cover_low"
"nodeid" "1"
"angles" "0 90 0"
"hinttype" "101"
"StartHintDisabled" "0"
"Group" "1"
"target_angle_range" "60"
"target_dist_min" "256"
"target_dist_max" "32000"
"hint_rating" "5"
"group_id" "1"
"targetname" "low_01"
"StartHidden" "1"
"origin" "-947 216 7"

info_node_cover_med
"angles" "0 180 0"
"nodeid" "23"
"hinttype" "100"
"StartHintDisabled" "0"
"target_angle_range" "60"
"target_dist_min" "200"
"target_dist_max" "2000"
"hint_rating" "3"
"group_id" "4"
"target_name" "guard_dragon"
"Group" "4"
"targetname" "IdolRoom_4_Cover"
"origin" "96 -1055 12"

info_node_crosswalk
"nodeid" "2"
"angles" "0 0 0"
"hinttype" "11000"
"StartHintDisabled" "0"
"targetname" "xwalk_4"
"origin" "-716 -1352 -108.39"

info_node_hint
"targetname" "shoot_at_me"
"StartHidden" "1"
"nodeid" "1"
"angles" "0 0 0"
"hinttype" "10400"
"StartHintDisabled" "0"
"Group" "1"
"origin" "-830 835 286"

info_node_kick_over
info_node_link

NOTES: A specialized info node. One of the few with usefull methods.

METHODS:

input: TurnOn
input: TurnOff

info_node_manbat_fly_to_point

info_node_patrol_point

"angles" "0 0 0"


"nodeid" "0"
"hinttype" "10000"
"StartHintDisabled" "0"
"Group" "n_1"
"ip_percent" "100"
"origin" "448 640 17"

info_node_sabbat_arch
info_node_sabbat_bottom
info_node_sabbat_dive
info_node_sabbat_hide
info_node_sabbat_nojump
info_node_sabbat_top
info_node_shoot_at
info_node_tzimisce
info_node_werewolf
info_node_werewolf_hint

info_player_start

NOTES: This is a special node that the engine looks for. There SHOULD
be
exactly 1 per map and it is where the engine will place the
Player by
default. Since there should only be 1, you generally do not
create it dynamically using script.

PROPERTIES (ex):

"angles" "0 90 0"


"origin" "4 -432 17"

info_target
info_teleport_destination

NOTES: 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.

"targetname" "teleport_moe"
"angles" "0 270 0"
"spawnflags" "0"
"origin" "59 54 331"

INSPECTION)

inspection_brush

EVENTS:

METHODS:

input: TurnOn
input: TurnOff
input: SetAttachType
input: SetRateScale
input: SetRampTime

PROPERTIES (ex):

"model" "*32"
"StartHidden" "0"
"start_enabled" "1"
"inspection" "10"
"origin" "256 700 72"
"targetname" "secretdoor1_inspect"

inspection_node

NOTES: creating 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.

EVENTS:

METHODS:

input: TurnOn
input: TurnOff
input: SetAttachType
input: SetRateScale
input: SetRampTime

PROPERTIES (ex):
"start_enabled" "1"
"inspection" "10"
"parentname" "Blade_3_Button"
"targetname" "Blade_3_Button_Inspect"
"origin" "889.503 -1103.54 17"

INTERESTING_PLACES)

Interesting places can be visualized as phone booth sized boxes that


attract NPCs that meet certain criteria. When an eligible NPC enters
the “phone boothâ€, they will perform whatever actions the
interesting
place has associated with it. Interesting Places, their NPC types and
their actions are defined in:

Vampire/vdata/system/InterestingPlaceTypeList.txt

Interesting_place’s can’t be instantiated dynamically. Ent_info


doesn’t even acknowledge the class exists.

intersting_place

output: OnNPCArrived
output: OnNPCLeft
output: OnAnimEvent1
output: OnAnimEvent2
output: OnAnimEvent3
output: OnAnimEvent4
output: OnAnimEvent5
output: OnAnimEvent6
output: OnAnimEvent7
output: OnAnimEvent8

input: Enable
input: Disable

PROPERTIES (ex):

"angles" "0 42 0"


"group_id" "1"
"targetname" "BackUp_2_IntPlc"
"StartHidden" "0"
"type" "Idle"
"min_bounds" "-16 -16 0"
"max_bounds" "16 16 72"
"min_time" "5.0"
"max_time" "10.0"
"max_npcs" "1"
"match_orientation" "1"
"holster_weapon" "0"
"rating" "3"
"testflags" "4"
"enabled" "1"
"origin" "-752 -752 12"

intersting_place_conversation

NOTES: See Interesting Place. Conversation marks nodes that attract 2


NPCS at
the same time.

CONTAINERS)

item_container

EVENTS:

output: OnItemRemove
output: OnItemInsert
output: OnBreak
output: OnSellWeapon
output: OnBarterClose
output: OnLinearMoveDone
output: OnAngularMoveDone

METHODS:

input: Use
input: AddEntityToContainer
input: SpawnItemInContainer
input: DeleteItems
input: HumanityAdd
input: Bloodloss
input: Bloodgain
input: ClearActiveDisciplines
input: physdamagescale
input: Inventory_Remove
input: MoneyAdd
input: MoneyRemove
input: BarterBegin
input: BarterEnd
input: BloodHeal
input: FrenzyCheck
input: FrenzyTrigger
input: HungerCheck
input: FrenzyUpdate
input: PlayFloat
input: WillTalk
input: ChangeMasqueradeLevel
input: FadeHeadAsCameraTarget
input: FadeBodyAsCameraTarget
input: SetHeadAsCameraTarget
input: SetBodyAsCameraTarget
input: LookAtEntityEye
input: LookAtEntityCenter
input: LookAtEntityOrigin
input: LookAtEntityDefault
input: skin
input: SetBodygroup
input: SetSkinFadeTime
input: FadeToSkin
input: SpawnTempParticle
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

PROPERTIES (ex):

item_container_animated

NOTES: See item_container. Same methods/events

PROPERTIES (ex):

"angles" "0 0 0"


"StartHidden" "0"
"use_icon" "61"
"targetname" "pedestal_cat_final"
"demo_sequence" "None"
"skin" "0"
"crossfade_skin_time" "2.0"
"disableshadows" "1"
"npc_transparent" "1"
"health" "0"
"model" "models/scenery/structural/temple/pedestal4.mdl"
"lootable_type" "3"
"move_dest" "122 -122 7.78"
"soundgroup" "metal_file_cabinet"
"OnItemInsert" ",,,0,-1,InsertIdol('cat'),"
"OnItemRemove" ",,,0,-1,RemoveIdol('cat'),"
"origin" "122 -122 7.7781"

item_container_lock

NOTES: Lockable Item Container.

EVENTS:

output: OnSkillSuccess
output: OnSkillFail
output: OnSkillBotch
output: OnSkillAttemptBegin
output: OnSkillAttemptCycle
output: OnBreak
output: OnHealthChanged
output: OnLinearMoveDone
output: OnAngularMoveDone

METHODS:

input: Lock
input: Unlock
input: Use
input: ResetDifficulty
input: physdamagescale
input: Break
input: SetHealth
input: AddHealth
input: RemoveHealth
input: FadeOutKill
input: SetDebris
input: skin
input: SetBodygroup
input: SetSkinFadeTime
input: FadeToSkin
input: SpawnTempParticle
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

PROPERTIES (ex):

"targetname" "safe_lock"
"angles" "0 0 0"
"use_icon" "53"
"difficulty" "5"
"skilltype" "1"
"locksnd" "environmental/electronic/button_click_1.wav"
"delete_key" "0"
"requires_key" "1"
"locked_icon" "54"
"key_icon" "5"
"model" "models/scenery/misc/padlock1/padlock1.mdl"
"parentname" "safe"
"origin" "123.917 1262 76.0246"

LIGHT)

light

EVENTS:

METHODS:

input: SetPattern
input: FadeToPattern
input: Toggle
input: TurnOn
input: TurnOff

"_light" "241 155 78 100"


"_quadratic_attn" "1"
"_distance" "128"
"style" "6"
"fade_time" "0.05"
"origin" "-208 -208 84.2684"

light_dynamic
input: distance
input: brightness
input: _inner_cone
input: _cone
input: spotlight_radius
input: spotlight_radius
input: style
input: TurnOn
input: TurnOff
input: Toggle

light_environment

input: SetPattern
input: FadeToPattern
input: Toggle
input: TurnOn
input: TurnOff

"classname" "light_environment"
"_light" "103 184 250 0"
"angles" "0 49 0"
"pitch" "0"
"_ambient" "72 141 217 20"
"origin" "2713.56 -2555.85 -359"

light_spot

input: SetPattern
input: FadeToPattern
input: Toggle
input: TurnOn
input: TurnOff

"_light" "241 155 78 15"


"_quadratic_attn" "1"
"_distance" "0"
"angles" "0 0 0"
"_inner_cone" "50"
"_cone" "75"
"pitch" "90"
"_constant_attn" "0"
"_linear_attn" "0"
"_exponent" "1"
"fade_time" "0.05"
"origin" "0 -158 30"

LOGIC)

logic_auto
output: OnMapLoad

"targetname" "malk_nos_check"
"OnMapLoad" ",,,2,-1,G.Kingsway_Open = 0,"
"origin" "-264.814 401.763 52"

logic_case

output: OnCase01
output: OnCase02
output: OnCase03
output: OnCase04
output: OnCase05
output: OnCase06
output: OnCase07
output: OnCase08
output: OnCase09
output: OnCase10
output: OnCase11
output: OnCase12
output: OnCase13
output: OnCase14
output: OnCase15
output: OnCase16
output: OnDefault

input: InValue
input: PickRandom

"targetname" "Creak_Logic_Right"
"OnCase03" "Creak_7,PlaySound,,0,-1,,"
"OnCase02" "Creak_8,PlaySound,,0,-1,,"
"OnCase01" "Creak_9,PlaySound,,0,-1,,"
"origin" "24.5694 90.1531 236.443"

logic_case_toggle

output: OnCase01
output: OnCase02
output: OnCase03
output: OnCase04
output: OnCase05
output: OnCase06
output: OnCase07
output: OnCase08
output: OnCase09
output: OnCase10
output: OnCase11
output: OnCase12
output: OnCase13
output: OnCase14
output: OnCase15
output: OnCase16
output: OnDefault
input: InValue
input: InValueDelta
input: InValue
input: PickRandom

logic_choreographed_scene

NOTES:

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.

The "SceneFile" contains references to named Entities and Duration


information for the animation (is it looping, 1 shot, how long
Should it play, etc...). Note that this does NOT restrict the model.
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.

While the example below has target1/2 values, the scene files values
override.

BaseAnim points to the MDL file containing the multi-skeletal


animation

EVENTS:
output: OnStart
output: OnCompletion
output: OnCanceled
output: OnTrigger1
output: OnTrigger2
output: OnTrigger3
output: OnTrigger4

METHODS:
input: Start
input: Pause
input: Resume
input: Cancel

PROPERTIES (ex):
"targetname" "fake_ash_staked_scene"
"angles" "0 89 0"
"SceneFile" "sound/cinematic/Hollywood/Asphole/fake_ash_staked.vcd"
"target1" "Hunter"
"target2" "Ash_lookalike"
"BaseAnim" "models/cinematic/Hollywood/Asphole/FakeAshStaked.mdl"
"position_start" "1"
"position_end" "3"
"OnTrigger1" "stake,SetAttached,Ash_lookalike,0,-1,,"
"OnCompletion" ",,,0,-1,G.Ashlookalike_Dead = 1,"
"OnCompletion" "stake,Kill,,0,-1,,"
"OnTrigger1" "stake,SetParent,Ash_lookalike,0,-1,,"
"OnCompletion"
"fake_ash_staked_camera,RestoreCameraToPlayerControl,,0,-1,,"
"OnCompletion" "Hunter,Kill,,0.1,-1,,"
"OnCompletion" "Ash_lookalike,Kill,,0,-1,,"
"OnTrigger1" "downstairs_dancer,SetRelationship,Hunter D_FR 5,0,-1,,"
"origin" "-184 556 0"

logic_npc_condition

output: OnTrue
output: OnFalse
input: Test

"condition" "COND_HEAR_PLAYER"
"targetname" "check_condition"
"target_npc" "npc_tawni_boyfriend"
"OnTrue" ",,,0,-1,G.Tawni_Spotted = 1,"
"OnTrue" "npc_tawni_boyfriend,SetRelationship,player D_HT 5,0,-1,,"
"OnTrue" "check_condition,Kill,,0,-1,,"
"OnTrue" "visibility_timer,Kill,,0,-1,,"
"origin" "-1632 -1560 147"

logic_pythoncheck

output: OnTrue
output: OnFalse
input: Test

"targetname" "check_quest"
"python_script" "FindPlayer().GetQuestState(\"Mitnick\") < 9"
"OnTrue" ",,,0,-1,G.Shubs_Botch = 1,"
"OnTrue" ",,,0,-1,failMitnick(),"
"origin" "12.9993 484.568 150.727"

logic_relay

output: OnTrigger

input: Enable
input: EnableRefire
input: Disable
input: Toggle
input: Trigger

"StartDisabled" "0"
"targetname" "Relay_Setup_Paths"
"OnTrigger" "guard_patrol_west,FollowPatrolPath,w_1 w_2,0.1,-1,,"
"OnTrigger" "guard_patrol_west,SetupPatrolType,999 1
FOLLOW_PATROL_PATH_WALK,0,-1,,"
"OnTrigger" "guard_patrol_north,SetupPatrolType,999 1
FOLLOW_PATROL_PATH_WALK,0,-1,,"
"OnTrigger" "guard_patrol_north,FollowPatrolPath,n_1 n_2,0.1,-1,,"
"OnTrigger" "guard_patrol_east,SetupPatrolType,999 1
FOLLOW_PATROL_PATH_WALK,0,-1,,"
"OnTrigger" "guard_patrol_east,FollowPatrolPath,e_1 e_2,0.1,-1,,"
"origin" "-44.3441 -439 80.861"
logic_squad_condition

output: OnTrue
output: OnFalse
input: Test
input: Kill
input: Use
input: Alpha
input: Color
input: SetParent
input: ClearParent
input: ScriptHide
input: ScriptUnhide
input: SetSoundOverrideEnt
input: SetFakeSilence

logic_timer

output: OnTimer
output: OnTimerHigh
output: OnTimerLow

input: RefireTime
input: FireTimer
input: Enable
input: Disable
input: Toggle
input: UseRandomTime
input: LowerRandomBound
input: UpperRandomBound

"StartDisabled" "0"
"UseRandomTime" "0"
"spawnflags" "2"
"RefireTime" "40"
"targetname" "streetlight_timer_2"
"OnTimer" "xwalk_3,DontWalk,,40,-1,,"
"OnTimer" "streetlight_state_green_3,Trigger,,20,-1,,"
"OnTimer" "streetlight_state_yellow_3,Trigger,,35,-1,,"
"OnTimer" "streetlight_state_yellow_4,Trigger,,15,-1,,"
"OnTimer" "streetlight_state_green_4,Trigger,,0,-1,,"
"OnTimer" "streetlight_state_red_4,Trigger,,20,-1,,"
"OnTimer" "xwalk_3,Walk,,20,-1,,"
"OnTimer" "streetlight_state_red_3,Trigger,,40,-1,,"
"OnTimer" "xwalk_4,DontWalk,,20,-1,,"
"OnTimer" "xwalk_4,Walk,,0,-1,,"
"origin" "-582.815 -1431.26 8.25257"

logic_visibility_test

output: OnCanSeeTarget
output: OnNotSeeTarget

input: CheckVisibility

NPC)
TeleportToEntity :

Poorly named because it only works if entity is


info_teleport_destination

SetRelationship(String “D_<str_type> <int_degree>â€)

Where <type> is:


D_LI [0-10] --> Likes Player (Will Defend)
D_NU [0-10] --> Neutral
D_HT [0-10] --> Hates Player (Will Attack)

SetScriptedDiscipline(String “<str_type> <int_level>â€)

Examples
SetScriptedDiscipline(“potence 3â€) <- Permanently activates
Potence on
NPC (doesn’t matter if
they
have it
or not)

SetScriptedDiscipline(“potence 0â€) <- Deactives Potence on NPC

* Typically called from "OnHearCombat" and “OnLostEnemyLOSâ€

SetFollowerBoss :

Generally strait forward. The input string is normally “!playerâ€


or
“â€. Note
That npcs that are members of squads can not be told to follow the PC.
You
can however use TweakParam(“SQUAD “) to disable the npcs squad
assignment
prior to calling.

SetFollowerType:

npc.SetFollowerType("CombatNonCombatant")
npc.SetFollowerType("Default")

Events:
Not all events work all the time. Some events require certain stats.
For
example, OnFound and OnLost events are based on vision. If vision is
too
low, they wont fire. Other events appear to not work such as onGrapple
and
On…Move are only Applicable if the npc if your enemy.

npc_VAndreiBlood
output: OnTransformComplete
output: OnDialogBegin
output: OnDialogEnd
output: OnInterestingPlaceArrived
output: OnInterestingPlaceLeft
output: OnUnknownVisionPlayer
output: OnStateFleeing
output: OnIncapacitatedStart
output: OnIncapacitatedEnd
output: OnDamaged
output: OnDeath
output: OnHalfHealth
output: OnFoundEnemy
output: OnLostEnemyLOS
output: OnLostEnemy
output: OnFoundPlayer
output: OnLostPlayerLOS
output: OnLostPlayer
output: OnHearWorld
output: OnHearPlayer
output: OnHearCombat
output: OnGrappleBegin
output: OnGrappleEnd
output: OnFedUponBegin
output: OnFedUponEnd
output: OnSellWeapon
output: OnBarterClose
output: OnLinearMoveDone
output: OnAngularMoveDone

input: TriggerCombat
input: TransformModel
input: pl_investigate
input: pl_criminal_flee
input: pl_criminal_attack
input: pl_supernatural_flee
input: pl_supernatural_attack
input: WalkToNode
input: TweakParam
input: SetupPatrolType
input: FollowPatrolPath
input: ClearPatrolPath
input: StartPlayerDialog
input: StartPlayerDialogRemote
input: StartPlayerDialogUnforced
input: FleeAndDie
input: Faint
input: DisableThink
input: TeleportToEntity
input: TakeDamage
input: MakeInvincible
input: UseInteresting
input: SetInvestigateMode
input: SetInvestigateModeCombat
input: SetSpeechVolume
input: PlayDialogFile
input: AllowAlertLookaround
input: StayEntrenched
input: AllowKickHintUse
input: SetScriptedDiscipline
input: SetBloodShieldDiscipline
input: SetFollowerBoss
input: SetFollowerType
input: SetFallToGround
input: ChangeSchedule
input: SetDontFacePlayerInDialog
input: SetBossMonster
input: AllowOpenDoors
input: SetMovementMultiplier
input: SetDefaultDialogCamera
input: SetRelationship
input: HumanityAdd
input: Bloodloss
input: Bloodgain
input: ClearActiveDisciplines
input: physdamagescale
input: Inventory_Remove
input: MoneyAdd
input: MoneyRemove
input: BarterBegin
input: BarterEnd
input: BloodHeal
input: FrenzyCheck
input: FrenzyTrigger
input: HungerCheck
input: FrenzyUpdate
input: PlayFloat
input: WillTalk
input: ChangeMasqueradeLevel
input: FadeHeadAsCameraTarget
input: FadeBodyAsCameraTarget
input: SetHeadAsCameraTarget
input: SetBodyAsCameraTarget
input: LookAtEntityEye
input: LookAtEntityCenter
input: LookAtEntityOrigin
input: LookAtEntityDefault
input: skin
input: SetBodygroup
input: SetSkinFadeTime
input: FadeToSkin
input: SpawnTempParticle
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

"classname" "npc_VAndreiBlood"
"angles" "0 90 0"
"renderamt" "255"
"rendercolor" "255 255 255"
"disableshadows" "1"
"spawnflags" "4"
"physdamagescale" "1.0"
"npc_perception" "3"
"vision" "2400"
"hearing" "-1.00"
"default_disposition" "Neutral"
"default_camera" "DialogDefault"
"demo_sequence" "None"
"npc_transparent" "1"
"skincolor" "0 0 0 0"
"haircolor" "0 0 0 0"
"clothescolor1" "0 0 0 0"
"clothescolor2" "0 0 0 0"
"trimcolor" "0 0 0 0"
"stattemplate" "AndreiBlood"
"player_reaction" "D_NU 0"
"hint_groups" "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16â€
"investigate_mode" "4"
"investigate_mode_combat" "4"
"pl_investigate" "1"
"pl_criminal_flee" "6"
"pl_criminal_attack" "1"
"pl_supernatural_flee" "6"
"pl_supernatural_attack" "1"
"percent_occluded_wait" "10"
"percent_occluded_cover" "30"
"percent_occluded_walk" "10"
"percent_occluded_flank" "20"
"percent_occluded_chase" "30"
"allow_alert_lookaround" "1"
"allow_kick_hint_use" "1"
"model" "models/character/npc/unique/Hollywood/Andrei/Andrei.mdl"
"crossfade_skin_time" "2.0"
"combat_start_activity" "-1"
"dialogname" "dlg/Hollywood/Andrei.dlg"
"targetname" "Andrei"
"MaxLiveHeadrunners" "4"
"SummonPercentage" "80"
"TeleportTime" "20"
"SummonTime" "35"
"KillToPause" "6"
"AndreiPauseTime" "85"
"is_bossmonster" "0"
"follower_type" "Default"
"OnDialogEnd" "flame_sounds,PlaySound,,0,-1,,"
"OnDeath" "flame_sounds,Kill,,0,-1,,"
"OnDeath" "flames,TurnOff,,0,-1,,"
"OnDeath" "flames_blockade,ScriptHide,,0,-1,,"
"OnDialogEnd" "flames,TurnOn,,0,-1,,"
"OnDialogEnd" "flames_blockade,ScriptUnhide,,0,-1,,"
"OnDialogEnd" "garagedoor,Lock,,0,-1,,"
"OnDialogEnd" "Andrei,TriggerCombat,0,0.3,-1,,"
"OnDialogEnd" "Andrei,SetRelationship,player D_HT 10,0,-1,,"
"OnDeath" ",,,0,-1,andreiDead(),"
"OnDeath" "andrei_door*,Unlock,,0,-1,,"
"OnDialogEnd" "Andrei,SetBossMonster,1,0,-1,,"
"origin" "-399.152 34.7798 -255"
npc_VAsianVampire

output: OnTransformComplete
output: OnDialogBegin
output: OnDialogEnd
output: OnInterestingPlaceArrived
output: OnInterestingPlaceLeft
output: OnUnknownVisionPlayer
output: OnStateFleeing
output: OnIncapacitatedStart
output: OnIncapacitatedEnd
output: OnDamaged
output: OnDeath
output: OnHalfHealth
output: OnFoundEnemy
output: OnLostEnemyLOS
output: OnLostEnemy
output: OnFoundPlayer
output: OnLostPlayerLOS
output: OnLostPlayer
output: OnHearWorld
output: OnHearPlayer
output: OnHearCombat
output: OnGrappleBegin
output: OnGrappleEnd
output: OnFedUponBegin
output: OnFedUponEnd
output: OnSellWeapon
output: OnBarterClose
output: OnLinearMoveDone
output: OnAngularMoveDone

input: TransformModel
input: pl_investigate
input: pl_criminal_flee
input: pl_criminal_attack
input: pl_supernatural_flee
input: pl_supernatural_attack
input: WalkToNode
input: TweakParam
input: SetupPatrolType
input: FollowPatrolPath
input: ClearPatrolPath
input: StartPlayerDialog
input: StartPlayerDialogRemote
input: StartPlayerDialogUnforced
input: FleeAndDie
input: Faint
input: DisableThink
input: TeleportToEntity
input: TakeDamage
input: MakeInvincible
input: UseInteresting
input: SetInvestigateMode
input: SetInvestigateModeCombat
input: SetSpeechVolume
input: PlayDialogFile
input: AllowAlertLookaround
input: StayEntrenched
input: AllowKickHintUse
input: SetScriptedDiscipline
input: SetBloodShieldDiscipline
input: SetFollowerBoss
input: SetFollowerType
input: SetFallToGround
input: ChangeSchedule
input: SetDontFacePlayerInDialog
input: SetBossMonster
input: AllowOpenDoors
input: SetMovementMultiplier
input: SetDefaultDialogCamera
input: SetRelationship
input: HumanityAdd
input: Bloodloss
input: Bloodgain
input: ClearActiveDisciplines
input: physdamagescale
input: Inventory_Remove
input: MoneyAdd
input: MoneyRemove
input: BarterBegin
input: BarterEnd
input: BloodHeal
input: FrenzyCheck
input: FrenzyTrigger
input: HungerCheck
input: FrenzyUpdate
input: PlayFloat
input: WillTalk
input: ChangeMasqueradeLevel
input: FadeHeadAsCameraTarget
input: FadeBodyAsCameraTarget
input: SetHeadAsCameraTarget
input: SetBodyAsCameraTarget
input: LookAtEntityEye
input: LookAtEntityCenter
input: LookAtEntityOrigin
input: LookAtEntityDefault
input: skin
input: SetBodygroup
input: SetSkinFadeTime
input: FadeToSkin
input: SpawnTempParticle
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

npc_VBach

output: OnDialogBegin
output: OnDialogEnd
output: OnInterestingPlaceArrived
output: OnInterestingPlaceLeft
output: OnUnknownVisionPlayer
output: OnStateFleeing
output: OnIncapacitatedStart
output: OnIncapacitatedEnd
output: OnDamaged
output: OnDeath
output: OnHalfHealth
output: OnFoundEnemy
output: OnLostEnemyLOS
output: OnLostEnemy
output: OnFoundPlayer
output: OnLostPlayerLOS
output: OnLostPlayer
output: OnHearWorld
output: OnHearPlayer
output: OnHearCombat
output: OnGrappleBegin
output: OnGrappleEnd
output: OnFedUponBegin
output: OnFedUponEnd
output: OnSellWeapon
output: OnBarterClose
output: OnLinearMoveDone
output: OnAngularMoveDone

input: GrenadeEnter
input: GrenadeExit
input: SignalVulnerable
input: pl_investigate
input: pl_criminal_flee
input: pl_criminal_attack
input: pl_supernatural_flee
input: pl_supernatural_attack
input: WalkToNode
input: TweakParam
input: SetupPatrolType
input: FollowPatrolPath
input: ClearPatrolPath
input: StartPlayerDialog
input: StartPlayerDialogRemote
input: StartPlayerDialogUnforced
input: FleeAndDie
input: Faint
input: DisableThink
input: TeleportToEntity
input: TakeDamage
input: MakeInvincible
input: UseInteresting
input: SetInvestigateMode
input: SetInvestigateModeCombat
input: SetSpeechVolume
input: PlayDialogFile
input: AllowAlertLookaround
input: StayEntrenched
input: AllowKickHintUse
input: SetScriptedDiscipline
input: SetBloodShieldDiscipline
input: SetFollowerBoss
input: SetFollowerType
input: SetFallToGround
input: ChangeSchedule
input: SetDontFacePlayerInDialog
input: SetBossMonster
input: AllowOpenDoors
input: SetMovementMultiplier
input: SetDefaultDialogCamera
input: SetRelationship
input: HumanityAdd
input: Bloodloss
input: Bloodgain
input: ClearActiveDisciplines
input: physdamagescale
input: Inventory_Remove
input: MoneyAdd
input: MoneyRemove
input: BarterBegin
input: BarterEnd
input: BloodHeal
input: FrenzyCheck
input: FrenzyTrigger
input: HungerCheck
input: FrenzyUpdate
input: PlayFloat
input: WillTalk
input: ChangeMasqueradeLevel
input: FadeHeadAsCameraTarget
input: FadeBodyAsCameraTarget
input: SetHeadAsCameraTarget
input: SetBodyAsCameraTarget
input: LookAtEntityEye
input: LookAtEntityCenter
input: LookAtEntityOrigin
input: LookAtEntityDefault
input: skin
input: SetBodygroup
input: SetSkinFadeTime
input: FadeToSkin
input: SpawnTempParticle
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

npc_VBrujah

output: OnDialogBegin
output: OnDialogEnd
output: OnInterestingPlaceArrived
output: OnInterestingPlaceLeft
output: OnUnknownVisionPlayer
output: OnStateFleeing
output: OnIncapacitatedStart
output: OnIncapacitatedEnd
output: OnDamaged
output: OnDeath
output: OnHalfHealth
output: OnFoundEnemy
output: OnLostEnemyLOS
output: OnLostEnemy
output: OnFoundPlayer
output: OnLostPlayerLOS
output: OnLostPlayer
output: OnHearWorld
output: OnHearPlayer
output: OnHearCombat
output: OnGrappleBegin
output: OnGrappleEnd
output: OnFedUponBegin
output: OnFedUponEnd
output: OnSellWeapon
output: OnBarterClose
output: OnLinearMoveDone
output: OnAngularMoveDone

input: pl_investigate
input: pl_criminal_flee
input: pl_criminal_attack
input: pl_supernatural_flee
input: pl_supernatural_attack
input: WalkToNode
input: TweakParam
input: SetupPatrolType
input: FollowPatrolPath
input: ClearPatrolPath
input: StartPlayerDialog
input: StartPlayerDialogRemote
input: StartPlayerDialogUnforced
input: FleeAndDie
input: Faint
input: DisableThink
input: TeleportToEntity
input: TakeDamage
input: MakeInvincible
input: UseInteresting
input: SetInvestigateMode
input: SetInvestigateModeCombat
input: SetSpeechVolume
input: PlayDialogFile
input: AllowAlertLookaround
input: StayEntrenched
input: AllowKickHintUse
input: SetScriptedDiscipline
input: SetBloodShieldDiscipline
input: SetFollowerBoss
input: SetFollowerType
input: SetFallToGround
input: ChangeSchedule
input: SetDontFacePlayerInDialog
input: SetBossMonster
input: AllowOpenDoors
input: SetMovementMultiplier
input: SetDefaultDialogCamera
input: SetRelationship
input: HumanityAdd
input: Bloodloss
input: Bloodgain
input: ClearActiveDisciplines
input: physdamagescale
input: Inventory_Remove
input: MoneyAdd
input: MoneyRemove
input: BarterBegin
input: BarterEnd
input: BloodHeal
input: FrenzyCheck
input: FrenzyTrigger
input: HungerCheck
input: FrenzyUpdate
input: PlayFloat
input: WillTalk
input: ChangeMasqueradeLevel
input: FadeHeadAsCameraTarget
input: FadeBodyAsCameraTarget
input: SetHeadAsCameraTarget
input: SetBodyAsCameraTarget
input: LookAtEntityEye
input: LookAtEntityCenter
input: LookAtEntityOrigin
input: LookAtEntityDefault
input: skin
input: SetBodygroup
input: SetSkinFadeTime
input: FadeToSkin
input: SpawnTempParticle
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

npc_VCamera

output: OnDialogBegin
output: OnDialogEnd
output: OnInterestingPlaceArrived
output: OnInterestingPlaceLeft
output: OnUnknownVisionPlayer
output: OnStateFleeing
output: OnIncapacitatedStart
output: OnIncapacitatedEnd
output: OnDamaged
output: OnDeath
output: OnHalfHealth
output: OnFoundEnemy
output: OnLostEnemyLOS
output: OnLostEnemy
output: OnFoundPlayer
output: OnLostPlayerLOS
output: OnLostPlayer
output: OnHearWorld
output: OnHearPlayer
output: OnHearCombat
output: OnGrappleBegin
output: OnGrappleEnd
output: OnFedUponBegin
output: OnFedUponEnd
output: OnSellWeapon
output: OnBarterClose
output: OnLinearMoveDone
output: OnAngularMoveDone

input: pl_investigate
input: pl_criminal_flee
input: pl_criminal_attack
input: pl_supernatural_flee
input: pl_supernatural_attack
input: WalkToNode
input: TweakParam
input: SetupPatrolType
input: FollowPatrolPath
input: ClearPatrolPath
input: StartPlayerDialog
input: StartPlayerDialogRemote
input: StartPlayerDialogUnforced
input: FleeAndDie
input: Faint
input: DisableThink
input: TeleportToEntity
input: TakeDamage
input: MakeInvincible
input: UseInteresting
input: SetInvestigateMode
input: SetInvestigateModeCombat
input: SetSpeechVolume
input: PlayDialogFile
input: AllowAlertLookaround
input: StayEntrenched
input: AllowKickHintUse
input: SetScriptedDiscipline
input: SetBloodShieldDiscipline
input: SetFollowerBoss
input: SetFollowerType
input: SetFallToGround
input: ChangeSchedule
input: SetDontFacePlayerInDialog
input: SetBossMonster
input: AllowOpenDoors
input: SetMovementMultiplier
input: SetDefaultDialogCamera
input: SetRelationship
input: HumanityAdd
input: Bloodloss
input: Bloodgain
input: ClearActiveDisciplines
input: physdamagescale
input: Inventory_Remove
input: MoneyAdd
input: MoneyRemove
input: BarterBegin
input: BarterEnd
input: BloodHeal
input: FrenzyCheck
input: FrenzyTrigger
input: HungerCheck
input: FrenzyUpdate
input: PlayFloat
input: WillTalk
input: ChangeMasqueradeLevel
input: FadeHeadAsCameraTarget
input: FadeBodyAsCameraTarget
input: SetHeadAsCameraTarget
input: SetBodyAsCameraTarget
input: LookAtEntityEye
input: LookAtEntityCenter
input: LookAtEntityOrigin
input: LookAtEntityDefault
input: skin
input: SetBodygroup
input: SetSkinFadeTime
input: FadeToSkin
input: SpawnTempParticle
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

"classname" "npc_VCamera"
"angles" "0 270 0"
"renderfx" "0"
"rendermode" "0"
"renderamt" "255"
"rendercolor" "255 255 255"
"disableshadows" "1"
"disablereceiveshadows" "0"
"physdamagescale" "1.0"
"npc_perception" "10"
"vision" "-1"
"hearing" "-1.00"
"default_disposition" "Neutral"
"default_camera" "DialogDefault"
"demo_sequence" "None"
"skin" "0"
"crossfade_skin_time" "2.0"
"npc_transparent" "1"
"skincolor" "0 0 0 0"
"haircolor" "0 0 0 0"
"clothescolor1" "0 0 0 0"
"clothescolor2" "0 0 0 0"
"trimcolor" "0 0 0 0"
"stattemplate" "NPCGeneric"
"player_reaction" "D_HT 5"
"invincible" "0"
"interesting_place_groups" "0"
"use_interesting" "0"
"hint_groups" "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 "
"investigate_mode" "4"
"investigate_mode_combat" "4"
"full_investigate" "0"
"bright_route_penalty" "0"
"pl_investigate" "6"
"pl_criminal_flee" "6"
"pl_criminal_attack" "6"
"pl_supernatural_flee" "6"
"pl_supernatural_attack" "6"
"percent_occluded_wait" "10"
"percent_occluded_cover" "30"
"percent_occluded_walk" "10"
"percent_occluded_flank" "20"
"percent_occluded_chase" "30"
"allow_alert_lookaround" "1"
"stay_entrenched" "0"
"allow_kick_hint_use" "1"
"cantdropweapons" "0"
"floatfreq" "0"
"teleport_move_timer" "0"
"combat_start_activity" "ACT_INVALID"
"is_bossmonster" "0"
"follower_type" "Default"
"ignore_detected_attack" "0"
"no_alert_state" "0"
"spawnflags" "4"
"targetname" "BackUp_1_Cammera"
"squadname" "BackUp_1"
"origin" "647.794 487.182 17"

npc_VCameraSecurity

output: OnDialogBegin
output: OnDialogEnd
output: OnInterestingPlaceArrived
output: OnInterestingPlaceLeft
output: OnUnknownVisionPlayer
output: OnStateFleeing
output: OnIncapacitatedStart
output: OnIncapacitatedEnd
output: OnDamaged
output: OnDeath
output: OnHalfHealth
output: OnFoundEnemy
output: OnLostEnemyLOS
output: OnLostEnemy
output: OnFoundPlayer
output: OnLostPlayerLOS
output: OnLostPlayer
output: OnHearWorld
output: OnHearPlayer
output: OnHearCombat
output: OnGrappleBegin
output: OnGrappleEnd
output: OnFedUponBegin
output: OnFedUponEnd
output: OnSellWeapon
output: OnBarterClose
output: OnLinearMoveDone
output: OnAngularMoveDone

input: pl_investigate
input: pl_criminal_flee
input: pl_criminal_attack
input: pl_supernatural_flee
input: pl_supernatural_attack
input: WalkToNode
input: TweakParam
input: SetupPatrolType
input: FollowPatrolPath
input: ClearPatrolPath
input: StartPlayerDialog
input: StartPlayerDialogRemote
input: StartPlayerDialogUnforced
input: FleeAndDie
input: Faint
input: DisableThink
input: TeleportToEntity
input: TakeDamage
input: MakeInvincible
input: UseInteresting
input: SetInvestigateMode
input: SetInvestigateModeCombat
input: SetSpeechVolume
input: PlayDialogFile
input: AllowAlertLookaround
input: StayEntrenched
input: AllowKickHintUse
input: SetScriptedDiscipline
input: SetBloodShieldDiscipline
input: SetFollowerBoss
input: SetFollowerType
input: SetFallToGround
input: ChangeSchedule
input: SetDontFacePlayerInDialog
input: SetBossMonster
input: AllowOpenDoors
input: SetMovementMultiplier
input: SetDefaultDialogCamera
input: SetRelationship
input: HumanityAdd
input: Bloodloss
input: Bloodgain
input: ClearActiveDisciplines
input: physdamagescale
input: Inventory_Remove
input: MoneyAdd
input: MoneyRemove
input: BarterBegin
input: BarterEnd
input: BloodHeal
input: FrenzyCheck
input: FrenzyTrigger
input: HungerCheck
input: FrenzyUpdate
input: PlayFloat
input: WillTalk
input: ChangeMasqueradeLevel
input: FadeHeadAsCameraTarget
input: FadeBodyAsCameraTarget
input: SetHeadAsCameraTarget
input: SetBodyAsCameraTarget
input: LookAtEntityEye
input: LookAtEntityCenter
input: LookAtEntityOrigin
input: LookAtEntityDefault
input: skin
input: SetBodygroup
input: SetSkinFadeTime
input: FadeToSkin
input: SpawnTempParticle
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

npc_VChangBrosBlade

output: OnTransformComplete
output: OnDialogBegin
output: OnDialogEnd
output: OnInterestingPlaceArrived
output: OnInterestingPlaceLeft
output: OnUnknownVisionPlayer
output: OnStateFleeing
output: OnIncapacitatedStart
output: OnIncapacitatedEnd
output: OnDamaged
output: OnDeath
output: OnHalfHealth
output: OnFoundEnemy
output: OnLostEnemyLOS
output: OnLostEnemy
output: OnFoundPlayer
output: OnLostPlayerLOS
output: OnLostPlayer
output: OnHearWorld
output: OnHearPlayer
output: OnHearCombat
output: OnGrappleBegin
output: OnGrappleEnd
output: OnFedUponBegin
output: OnFedUponEnd
output: OnSellWeapon
output: OnBarterClose
output: OnLinearMoveDone
output: OnAngularMoveDone
input: TransformModel
input: pl_investigate
input: pl_criminal_flee
input: pl_criminal_attack
input: pl_supernatural_flee
input: pl_supernatural_attack
input: WalkToNode
input: TweakParam
input: SetupPatrolType
input: FollowPatrolPath
input: ClearPatrolPath
input: StartPlayerDialog
input: StartPlayerDialogRemote
input: StartPlayerDialogUnforced
input: FleeAndDie
input: Faint
input: DisableThink
input: TeleportToEntity
input: TakeDamage
input: MakeInvincible
input: UseInteresting
input: SetInvestigateMode
input: SetInvestigateModeCombat
input: SetSpeechVolume
input: PlayDialogFile
input: AllowAlertLookaround
input: StayEntrenched
input: AllowKickHintUse
input: SetScriptedDiscipline
input: SetBloodShieldDiscipline
input: SetFollowerBoss
input: SetFollowerType
input: SetFallToGround
input: ChangeSchedule
input: SetDontFacePlayerInDialog
input: SetBossMonster
input: AllowOpenDoors
input: SetMovementMultiplier
input: SetDefaultDialogCamera
input: SetRelationship
input: HumanityAdd
input: Bloodloss
input: Bloodgain
input: ClearActiveDisciplines
input: physdamagescale
input: Inventory_Remove
input: MoneyAdd
input: MoneyRemove
input: BarterBegin
input: BarterEnd
input: BloodHeal
input: FrenzyCheck
input: FrenzyTrigger
input: HungerCheck
input: FrenzyUpdate
input: PlayFloat
input: WillTalk
input: ChangeMasqueradeLevel
input: FadeHeadAsCameraTarget
input: FadeBodyAsCameraTarget
input: SetHeadAsCameraTarget
input: SetBodyAsCameraTarget
input: LookAtEntityEye
input: LookAtEntityCenter
input: LookAtEntityOrigin
input: LookAtEntityDefault
input: skin
input: SetBodygroup
input: SetSkinFadeTime
input: FadeToSkin
input: SpawnTempParticle
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

npc_VChangBrosClaw

output: OnTransformComplete
output: OnDialogBegin
output: OnDialogEnd
output: OnInterestingPlaceArrived
output: OnInterestingPlaceLeft
output: OnUnknownVisionPlayer
output: OnStateFleeing
output: OnIncapacitatedStart
output: OnIncapacitatedEnd
output: OnDamaged
output: OnDeath
output: OnHalfHealth
output: OnFoundEnemy
output: OnLostEnemyLOS
output: OnLostEnemy
output: OnFoundPlayer
output: OnLostPlayerLOS
output: OnLostPlayer
output: OnHearWorld
output: OnHearPlayer
output: OnHearCombat
output: OnGrappleBegin
output: OnGrappleEnd
output: OnFedUponBegin
output: OnFedUponEnd
output: OnSellWeapon
output: OnBarterClose
output: OnLinearMoveDone
output: OnAngularMoveDone

input: TransformModel
input: pl_investigate
input: pl_criminal_flee
input: pl_criminal_attack
input: pl_supernatural_flee
input: pl_supernatural_attack
input: WalkToNode
input: TweakParam
input: SetupPatrolType
input: FollowPatrolPath
input: ClearPatrolPath
input: StartPlayerDialog
input: StartPlayerDialogRemote
input: StartPlayerDialogUnforced
input: FleeAndDie
input: Faint
input: DisableThink
input: TeleportToEntity
input: TakeDamage
input: MakeInvincible
input: UseInteresting
input: SetInvestigateMode
input: SetInvestigateModeCombat
input: SetSpeechVolume
input: PlayDialogFile
input: AllowAlertLookaround
input: StayEntrenched
input: AllowKickHintUse
input: SetScriptedDiscipline
input: SetBloodShieldDiscipline
input: SetFollowerBoss
input: SetFollowerType
input: SetFallToGround
input: ChangeSchedule
input: SetDontFacePlayerInDialog
input: SetBossMonster
input: AllowOpenDoors
input: SetMovementMultiplier
input: SetDefaultDialogCamera
input: SetRelationship
input: HumanityAdd
input: Bloodloss
input: Bloodgain
input: ClearActiveDisciplines
input: physdamagescale
input: Inventory_Remove
input: MoneyAdd
input: MoneyRemove
input: BarterBegin
input: BarterEnd
input: BloodHeal
input: FrenzyCheck
input: FrenzyTrigger
input: HungerCheck
input: FrenzyUpdate
input: PlayFloat
input: WillTalk
input: ChangeMasqueradeLevel
input: FadeHeadAsCameraTarget
input: FadeBodyAsCameraTarget
input: SetHeadAsCameraTarget
input: SetBodyAsCameraTarget
input: LookAtEntityEye
input: LookAtEntityCenter
input: LookAtEntityOrigin
input: LookAtEntityDefault
input: skin
input: SetBodygroup
input: SetSkinFadeTime
input: FadeToSkin
input: SpawnTempParticle
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

npc_VCop

output: OnDialogBegin
output: OnDialogEnd
output: OnInterestingPlaceArrived
output: OnInterestingPlaceLeft
output: OnUnknownVisionPlayer
output: OnStateFleeing
output: OnIncapacitatedStart
output: OnIncapacitatedEnd
output: OnDamaged
output: OnDeath
output: OnHalfHealth
output: OnFoundEnemy
output: OnLostEnemyLOS
output: OnLostEnemy
output: OnFoundPlayer
output: OnLostPlayerLOS
output: OnLostPlayer
output: OnHearWorld
output: OnHearPlayer
output: OnHearCombat
output: OnGrappleBegin
output: OnGrappleEnd
output: OnFedUponBegin
output: OnFedUponEnd
output: OnSellWeapon
output: OnBarterClose
output: OnLinearMoveDone
output: OnAngularMoveDone

input: pl_investigate
input: pl_criminal_flee
input: pl_criminal_attack
input: pl_supernatural_flee
input: pl_supernatural_attack
input: WalkToNode
input: TweakParam
input: SetupPatrolType
input: FollowPatrolPath
input: ClearPatrolPath
input: StartPlayerDialog
input: StartPlayerDialogRemote
input: StartPlayerDialogUnforced
input: FleeAndDie
input: Faint
input: DisableThink
input: TeleportToEntity
input: TakeDamage
input: MakeInvincible
input: UseInteresting
input: SetInvestigateMode
input: SetInvestigateModeCombat
input: SetSpeechVolume
input: PlayDialogFile
input: AllowAlertLookaround
input: StayEntrenched
input: AllowKickHintUse
input: SetScriptedDiscipline
input: SetBloodShieldDiscipline
input: SetFollowerBoss
input: SetFollowerType
input: SetFallToGround
input: ChangeSchedule
input: SetDontFacePlayerInDialog
input: SetBossMonster
input: AllowOpenDoors
input: SetMovementMultiplier
input: SetDefaultDialogCamera
input: SetRelationship
input: HumanityAdd
input: Bloodloss
input: Bloodgain
input: ClearActiveDisciplines
input: physdamagescale
input: Inventory_Remove
input: MoneyAdd
input: MoneyRemove
input: BarterBegin
input: BarterEnd
input: BloodHeal
input: FrenzyCheck
input: FrenzyTrigger
input: HungerCheck
input: FrenzyUpdate
input: PlayFloat
input: WillTalk
input: ChangeMasqueradeLevel
input: FadeHeadAsCameraTarget
input: FadeBodyAsCameraTarget
input: SetHeadAsCameraTarget
input: SetBodyAsCameraTarget
input: LookAtEntityEye
input: LookAtEntityCenter
input: LookAtEntityOrigin
input: LookAtEntityDefault
input: skin
input: SetBodygroup
input: SetSkinFadeTime
input: FadeToSkin
input: SpawnTempParticle
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

"classname" "npc_VCop"
"targetname" "beatcop"
"angles" "0 270 0"
"renderfx" "0"
"rendermode" "0"
"renderamt" "255"
"rendercolor" "255 255 255"
"disableshadows" "1"
"disablereceiveshadows" "0"
"physdamagescale" "1.0"
"npc_perception" "3"
"vision" "-1"
"hearing" "-1.00"
"default_disposition" "Neutral"
"default_camera" "DialogDefault"
"model"
"models/character/npc/common/Cop_Variant/regular_cop/Regular_Cop.mdl"
"demo_sequence" "None"
"skin" "0"
"crossfade_skin_time" "2.0"
"npc_transparent" "1"
"skincolor" "0 0 0 0"
"haircolor" "0 0 0 0"
"clothescolor1" "0 0 0 0"
"clothescolor2" "0 0 0 0"
"trimcolor" "0 0 0 0"
"stattemplate" "OfficerGeneric"
"player_reaction" "D_NU 0"
"invincible" "0"
"interesting_place_groups" "0"
"use_interesting" "0"
"hint_groups" "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16â€
"investigate_mode" "4"
"investigate_mode_combat" "4"
"full_investigate" "0"
"bright_route_penalty" "0"
"pl_investigate" "1"
"pl_criminal_flee" "5"
"pl_criminal_attack" "1"
"pl_supernatural_flee" "5"
"pl_supernatural_attack" "1"
"percent_occluded_wait" "10"
"percent_occluded_cover" "30"
"percent_occluded_walk" "10"
"percent_occluded_flank" "20"
"percent_occluded_chase" "30"
"allow_alert_lookaround" "1"
"stay_entrenched" "0"
"allow_kick_hint_use" "1"
"cantdropweapons" "0"
"floatfreq" "0"
"teleport_move_timer" "0"
"combat_start_activity" "ACT_INVALID"
"is_bossmonster" "0"
"follower_type" "Default"
"ignore_detected_attack" "0"
"no_alert_state" "0"
"spawnflags" "36"
"additionalequipment" "item_w_baton"
"alternateequipment" "item_w_thirtyeight"
"origin" "3202 -206 -119"

npc_VDialogPedestrian

output: OnDialogBegin
output: OnDialogEnd
output: OnInterestingPlaceArrived
output: OnInterestingPlaceLeft
output: OnUnknownVisionPlayer
output: OnStateFleeing
output: OnIncapacitatedStart
output: OnIncapacitatedEnd
output: OnDamaged
output: OnDeath
output: OnHalfHealth
output: OnFoundEnemy
output: OnLostEnemyLOS
output: OnLostEnemy
output: OnFoundPlayer
output: OnLostPlayerLOS
output: OnLostPlayer
output: OnHearWorld
output: OnHearPlayer
output: OnHearCombat
output: OnGrappleBegin
output: OnGrappleEnd
output: OnFedUponBegin
output: OnFedUponEnd
output: OnSellWeapon
output: OnBarterClose
output: OnLinearMoveDone
output: OnAngularMoveDone

input: pl_investigate
input: pl_criminal_flee
input: pl_criminal_attack
input: pl_supernatural_flee
input: pl_supernatural_attack
input: WalkToNode
input: TweakParam
input: SetupPatrolType
input: FollowPatrolPath
input: ClearPatrolPath
input: StartPlayerDialog
input: StartPlayerDialogRemote
input: StartPlayerDialogUnforced
input: FleeAndDie
input: Faint
input: DisableThink
input: TeleportToEntity
input: TakeDamage
input: MakeInvincible
input: UseInteresting
input: SetInvestigateMode
input: SetInvestigateModeCombat
input: SetSpeechVolume
input: PlayDialogFile
input: AllowAlertLookaround
input: StayEntrenched
input: AllowKickHintUse
input: SetScriptedDiscipline
input: SetBloodShieldDiscipline
input: SetFollowerBoss
input: SetFollowerType
input: SetFallToGround
input: ChangeSchedule
input: SetDontFacePlayerInDialog
input: SetBossMonster
input: AllowOpenDoors
input: SetMovementMultiplier
input: SetDefaultDialogCamera
input: SetRelationship
input: HumanityAdd
input: Bloodloss
input: Bloodgain
input: ClearActiveDisciplines
input: physdamagescale
input: Inventory_Remove
input: MoneyAdd
input: MoneyRemove
input: BarterBegin
input: BarterEnd
input: BloodHeal
input: FrenzyCheck
input: FrenzyTrigger
input: HungerCheck
input: FrenzyUpdate
input: PlayFloat
input: WillTalk
input: ChangeMasqueradeLevel
input: FadeHeadAsCameraTarget
input: FadeBodyAsCameraTarget
input: SetHeadAsCameraTarget
input: SetBodyAsCameraTarget
input: LookAtEntityEye
input: LookAtEntityCenter
input: LookAtEntityOrigin
input: LookAtEntityDefault
input: skin
input: SetBodygroup
input: SetSkinFadeTime
input: FadeToSkin
input: SpawnTempParticle
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

"angles" "0 323.5 0"


"renderfx" "0"
"rendermode" "0"
"renderamt" "255"
"rendercolor" "255 255 255"
"disableshadows" "1"
"disablereceiveshadows" "0"
"physdamagescale" "1.0"
"npc_perception" "3"
"vision" "-1"
"hearing" "-1.00"
"default_disposition" "Neutral"
"default_camera" "DialogDefault"
"demo_sequence" "None"
"skin" "0"
"crossfade_skin_time" "2.0"
"npc_transparent" "1"
"skincolor" "0 0 0 0"
"haircolor" "0 0 0 0"
"clothescolor1" "0 0 0 0"
"clothescolor2" "0 0 0 0"
"trimcolor" "0 0 0 0"
"stattemplate" "NPCGeneric"
"player_reaction" "D_NU 0"
"invincible" "0"
"interesting_place_groups" "1"
"use_interesting" "0"
"hint_groups" "1 2 3 4 5 6 7 8 9 10 11 12 13 14â€
"investigate_mode" "4"
"investigate_mode_combat" "4"
"full_investigate" "0"
"bright_route_penalty" "0"
"pl_investigate" "6"
"pl_criminal_flee" "6"
"pl_criminal_attack" "6"
"pl_supernatural_flee" "6"
"pl_supernatural_attack" "6"
"percent_occluded_wait" "10"
"percent_occluded_cover" "30"
"percent_occluded_walk" "10"
"percent_occluded_flank" "20"
"percent_occluded_chase" "30"
"allow_alert_lookaround" "0"
"stay_entrenched" "0"
"allow_kick_hint_use" "1"
"cantdropweapons" "0"
"floatfreq" "0"
"teleport_move_timer" "0"
"combat_start_activity" "ACT_INVALID"
"is_bossmonster" "0"
"ignore_detected_attack" "0"
"spawnflags" "8196"
"model"
"models/character/npc/common/prostitute/prostitute_2/prostitute_2_Ref.md
l"
"dialogname" "dlg/Generic/Prostitute.dlg"
"targetname" "ProstituteCem"
"StartHidden" "1"
"follower_type" "Default"
"OnDeath" ",,,0,-1,resetHos(),"
"origin" "780.392 -1312.36 -107.948"

npc_VGargoyle

output: OnGibDeath
output: OnDialogBegin
output: OnDialogEnd
output: OnInterestingPlaceArrived
output: OnInterestingPlaceLeft
output: OnUnknownVisionPlayer
output: OnStateFleeing
output: OnIncapacitatedStart
output: OnIncapacitatedEnd
output: OnDamaged
output: OnDeath
output: OnHalfHealth
output: OnFoundEnemy
output: OnLostEnemyLOS
output: OnLostEnemy
output: OnFoundPlayer
output: OnLostPlayerLOS
output: OnLostPlayer
output: OnHearWorld
output: OnHearPlayer
output: OnHearCombat
output: OnGrappleBegin
output: OnGrappleEnd
output: OnFedUponBegin
output: OnFedUponEnd
output: OnSellWeapon
output: OnBarterClose
output: OnLinearMoveDone
output: OnAngularMoveDone

input: pl_investigate
input: pl_criminal_flee
input: pl_criminal_attack
input: pl_supernatural_flee
input: pl_supernatural_attack
input: WalkToNode
input: TweakParam
input: SetupPatrolType
input: FollowPatrolPath
input: ClearPatrolPath
input: StartPlayerDialog
input: StartPlayerDialogRemote
input: StartPlayerDialogUnforced
input: FleeAndDie
input: Faint
input: DisableThink
input: TeleportToEntity
input: TakeDamage
input: MakeInvincible
input: UseInteresting
input: SetInvestigateMode
input: SetInvestigateModeCombat
input: SetSpeechVolume
input: PlayDialogFile
input: AllowAlertLookaround
input: StayEntrenched
input: AllowKickHintUse
input: SetScriptedDiscipline
input: SetBloodShieldDiscipline
input: SetFollowerBoss
input: SetFollowerType
input: SetFallToGround
input: ChangeSchedule
input: SetDontFacePlayerInDialog
input: SetBossMonster
input: AllowOpenDoors
input: SetMovementMultiplier
input: SetDefaultDialogCamera
input: SetRelationship
input: HumanityAdd
input: Bloodloss
input: Bloodgain
input: ClearActiveDisciplines
input: physdamagescale
input: Inventory_Remove
input: MoneyAdd
input: MoneyRemove
input: BarterBegin
input: BarterEnd
input: BloodHeal
input: FrenzyCheck
input: FrenzyTrigger
input: HungerCheck
input: FrenzyUpdate
input: PlayFloat
input: WillTalk
input: ChangeMasqueradeLevel
input: FadeHeadAsCameraTarget
input: FadeBodyAsCameraTarget
input: SetHeadAsCameraTarget
input: SetBodyAsCameraTarget
input: LookAtEntityEye
input: LookAtEntityCenter
input: LookAtEntityOrigin
input: LookAtEntityDefault
input: skin
input: SetBodygroup
input: SetSkinFadeTime
input: FadeToSkin
input: SpawnTempParticle
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

"angles" "0 270 0"


"renderamt" "255"
"rendercolor" "255 255 255"
"disableshadows" "1"
"spawnflags" "4"
"physdamagescale" "1.0"
"npc_perception" "3"
"vision" "-1"
"hearing" "-1.00"
"default_disposition" "Neutral"
"default_camera" "vdata/CameraShots/Gargoyle.txt"
"demo_sequence" "None"
"npc_transparent" "1"
"skincolor" "0 0 0 0"
"haircolor" "0 0 0 0"
"clothescolor1" "0 0 0 0"
"clothescolor2" "0 0 0 0"
"trimcolor" "0 0 0 0"
"stattemplate" "Gargoyle"
"player_reaction" "D_NU 0"
"hint_groups" "1 2 3 4 5 6 7 8 9 10 11 12 13 14â€
"investigate_mode" "4"
"investigate_mode_combat" "4"
"pl_investigate" "6"
"pl_criminal_flee" "6"
"pl_criminal_attack" "6"
"pl_supernatural_flee" "6"
"pl_supernatural_attack" "6"
"percent_occluded_wait" "10"
"percent_occluded_cover" "30"
"percent_occluded_walk" "10"
"percent_occluded_flank" "20"
"percent_occluded_chase" "30"
"allow_alert_lookaround" "1"
"allow_kick_hint_use" "1"
"model" "models/character/monster/gargoyle/gargoyle.mdl"
"targetname" "Gargoyle"
"crossfade_skin_time" "2.0"
"combat_start_activity" "ACT_INVALID"
"dialogname" "dlg/Hollywood/Gargoyle.dlg"
"is_bossmonster" "1"
"follower_type" "Default"
"OnDeath" "SoundScheme_COMBAT,FadeOut,,0,-1,,"
"OnDeath" "Scheme_Post,FadeIn,,5,-1,SetGargoyleQuestState(),"
"origin" "-176 96 284"

npc_VGhoulCroucher

output: OnDisturbed
output: OnDisturbedByPlayer
output: OnDialogBegin
output: OnDialogEnd
output: OnInterestingPlaceArrived
output: OnInterestingPlaceLeft
output: OnUnknownVisionPlayer
output: OnStateFleeing
output: OnIncapacitatedStart
output: OnIncapacitatedEnd
output: OnDamaged
output: OnDeath
output: OnHalfHealth
output: OnFoundEnemy
output: OnLostEnemyLOS
output: OnLostEnemy
output: OnFoundPlayer
output: OnLostPlayerLOS
output: OnLostPlayer
output: OnHearWorld
output: OnHearPlayer
output: OnHearCombat
output: OnGrappleBegin
output: OnGrappleEnd
output: OnFedUponBegin
output: OnFedUponEnd
output: OnSellWeapon
output: OnBarterClose
output: OnLinearMoveDone
output: OnAngularMoveDone

input: pl_investigate
input: pl_criminal_flee
input: pl_criminal_attack
input: pl_supernatural_flee
input: pl_supernatural_attack
input: WalkToNode
input: TweakParam
input: SetupPatrolType
input: FollowPatrolPath
input: ClearPatrolPath
input: StartPlayerDialog
input: StartPlayerDialogRemote
input: StartPlayerDialogUnforced
input: FleeAndDie
input: Faint
input: DisableThink
input: TeleportToEntity
input: TakeDamage
input: MakeInvincible
input: UseInteresting
input: SetInvestigateMode
input: SetInvestigateModeCombat
input: SetSpeechVolume
input: PlayDialogFile
input: AllowAlertLookaround
input: StayEntrenched
input: AllowKickHintUse
input: SetScriptedDiscipline
input: SetBloodShieldDiscipline
input: SetFollowerBoss
input: SetFollowerType
input: SetFallToGround
input: ChangeSchedule
input: SetDontFacePlayerInDialog
input: SetBossMonster
input: AllowOpenDoors
input: SetMovementMultiplier
input: SetDefaultDialogCamera
input: SetRelationship
input: HumanityAdd
input: Bloodloss
input: Bloodgain
input: ClearActiveDisciplines
input: physdamagescale
input: Inventory_Remove
input: MoneyAdd
input: MoneyRemove
input: BarterBegin
input: BarterEnd
input: BloodHeal
input: FrenzyCheck
input: FrenzyTrigger
input: HungerCheck
input: FrenzyUpdate
input: PlayFloat
input: WillTalk
input: ChangeMasqueradeLevel
input: FadeHeadAsCameraTarget
input: FadeBodyAsCameraTarget
input: SetHeadAsCameraTarget
input: SetBodyAsCameraTarget
input: LookAtEntityEye
input: LookAtEntityCenter
input: LookAtEntityOrigin
input: LookAtEntityDefault
input: skin
input: SetBodygroup
input: SetSkinFadeTime
input: FadeToSkin
input: SpawnTempParticle
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

npc_VHengeyokai

output: OnDialogBegin
output: OnDialogEnd
output: OnInterestingPlaceArrived
output: OnInterestingPlaceLeft
output: OnUnknownVisionPlayer
output: OnStateFleeing
output: OnIncapacitatedStart
output: OnIncapacitatedEnd
output: OnDamaged
output: OnDeath
output: OnHalfHealth
output: OnFoundEnemy
output: OnLostEnemyLOS
output: OnLostEnemy
output: OnFoundPlayer
output: OnLostPlayerLOS
output: OnLostPlayer
output: OnHearWorld
output: OnHearPlayer
output: OnHearCombat
output: OnGrappleBegin
output: OnGrappleEnd
output: OnFedUponBegin
output: OnFedUponEnd
output: OnSellWeapon
output: OnBarterClose
output: OnLinearMoveDone
output: OnAngularMoveDone

input: StartTransformation
input: pl_investigate
input: pl_criminal_flee
input: pl_criminal_attack
input: pl_supernatural_flee
input: pl_supernatural_attack
input: WalkToNode
input: TweakParam
input: SetupPatrolType
input: FollowPatrolPath
input: ClearPatrolPath
input: StartPlayerDialog
input: StartPlayerDialogRemote
input: StartPlayerDialogUnforced
input: FleeAndDie
input: Faint
input: DisableThink
input: TeleportToEntity
input: TakeDamage
input: MakeInvincible
input: UseInteresting
input: SetInvestigateMode
input: SetInvestigateModeCombat
input: SetSpeechVolume
input: PlayDialogFile
input: AllowAlertLookaround
input: StayEntrenched
input: AllowKickHintUse
input: SetScriptedDiscipline
input: SetBloodShieldDiscipline
input: SetFollowerBoss
input: SetFollowerType
input: SetFallToGround
input: ChangeSchedule
input: SetDontFacePlayerInDialog
input: SetBossMonster
input: AllowOpenDoors
input: SetMovementMultiplier
input: SetDefaultDialogCamera
input: SetRelationship
input: HumanityAdd
input: Bloodloss
input: Bloodgain
input: ClearActiveDisciplines
input: physdamagescale
input: Inventory_Remove
input: MoneyAdd
input: MoneyRemove
input: BarterBegin
input: BarterEnd
input: BloodHeal
input: FrenzyCheck
input: FrenzyTrigger
input: HungerCheck
input: FrenzyUpdate
input: PlayFloat
input: WillTalk
input: ChangeMasqueradeLevel
input: FadeHeadAsCameraTarget
input: FadeBodyAsCameraTarget
input: SetHeadAsCameraTarget
input: SetBodyAsCameraTarget
input: LookAtEntityEye
input: LookAtEntityCenter
input: LookAtEntityOrigin
input: LookAtEntityDefault
input: skin
input: SetBodygroup
input: SetSkinFadeTime
input: FadeToSkin
input: SpawnTempParticle
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

npc_VHuman

output: OnDialogBegin
output: OnDialogEnd
output: OnInterestingPlaceArrived
output: OnInterestingPlaceLeft
output: OnUnknownVisionPlayer
output: OnStateFleeing
output: OnIncapacitatedStart
output: OnIncapacitatedEnd
output: OnDamaged
output: OnDeath
output: OnHalfHealth
output: OnFoundEnemy
output: OnLostEnemyLOS
output: OnLostEnemy
output: OnFoundPlayer
output: OnLostPlayerLOS
output: OnLostPlayer
output: OnHearWorld
output: OnHearPlayer
output: OnHearCombat
output: OnGrappleBegin
output: OnGrappleEnd
output: OnFedUponBegin
output: OnFedUponEnd
output: OnSellWeapon
output: OnBarterClose
output: OnLinearMoveDone
output: OnAngularMoveDone

input: pl_investigate
input: pl_criminal_flee
input: pl_criminal_attack
input: pl_supernatural_flee
input: pl_supernatural_attack
input: WalkToNode
input: TweakParam
input: SetupPatrolType
input: FollowPatrolPath
input: ClearPatrolPath
input: StartPlayerDialog
input: StartPlayerDialogRemote
input: StartPlayerDialogUnforced
input: FleeAndDie
input: Faint
input: DisableThink
input: TeleportToEntity
input: TakeDamage
input: MakeInvincible
input: UseInteresting
input: SetInvestigateMode
input: SetInvestigateModeCombat
input: SetSpeechVolume
input: PlayDialogFile
input: AllowAlertLookaround
input: StayEntrenched
input: AllowKickHintUse
input: SetScriptedDiscipline
input: SetBloodShieldDiscipline
input: SetFollowerBoss
input: SetFollowerType
input: SetFallToGround
input: ChangeSchedule
input: SetDontFacePlayerInDialog
input: SetBossMonster
input: AllowOpenDoors
input: SetMovementMultiplier
input: SetDefaultDialogCamera
input: SetRelationship
input: HumanityAdd
input: Bloodloss
input: Bloodgain
input: ClearActiveDisciplines
input: physdamagescale
input: Inventory_Remove
input: MoneyAdd
input: MoneyRemove
input: BarterBegin
input: BarterEnd
input: BloodHeal
input: FrenzyCheck
input: FrenzyTrigger
input: HungerCheck
input: FrenzyUpdate
input: PlayFloat
input: WillTalk
input: ChangeMasqueradeLevel
input: FadeHeadAsCameraTarget
input: FadeBodyAsCameraTarget
input: SetHeadAsCameraTarget
input: SetBodyAsCameraTarget
input: LookAtEntityEye
input: LookAtEntityCenter
input: LookAtEntityOrigin
input: LookAtEntityDefault
input: skin
input: SetBodygroup
input: SetSkinFadeTime
input: FadeToSkin
input: SpawnTempParticle
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

npc_VHumanCombatPatrol

output: OnDialogBegin
output: OnDialogEnd
output: OnInterestingPlaceArrived
output: OnInterestingPlaceLeft
output: OnUnknownVisionPlayer
output: OnStateFleeing
output: OnIncapacitatedStart
output: OnIncapacitatedEnd
output: OnDamaged
output: OnDeath
output: OnHalfHealth
output: OnFoundEnemy
output: OnLostEnemyLOS
output: OnLostEnemy
output: OnFoundPlayer
output: OnLostPlayerLOS
output: OnLostPlayer
output: OnHearWorld
output: OnHearPlayer
output: OnHearCombat
output: OnGrappleBegin
output: OnGrappleEnd
output: OnFedUponBegin
output: OnFedUponEnd
output: OnSellWeapon
output: OnBarterClose
output: OnLinearMoveDone
output: OnAngularMoveDone

input: pl_investigate
input: pl_criminal_flee
input: pl_criminal_attack
input: pl_supernatural_flee
input: pl_supernatural_attack
input: WalkToNode
input: TweakParam
input: SetupPatrolType
input: FollowPatrolPath
input: ClearPatrolPath
input: StartPlayerDialog
input: StartPlayerDialogRemote
input: StartPlayerDialogUnforced
input: FleeAndDie
input: Faint
input: DisableThink
input: TeleportToEntity
input: TakeDamage
input: MakeInvincible
input: UseInteresting
input: SetInvestigateMode
input: SetInvestigateModeCombat
input: SetSpeechVolume
input: PlayDialogFile
input: AllowAlertLookaround
input: StayEntrenched
input: AllowKickHintUse
input: SetScriptedDiscipline
input: SetBloodShieldDiscipline
input: SetFollowerBoss
input: SetFollowerType
input: SetFallToGround
input: ChangeSchedule
input: SetDontFacePlayerInDialog
input: SetBossMonster
input: AllowOpenDoors
input: SetMovementMultiplier
input: SetDefaultDialogCamera
input: SetRelationship
input: HumanityAdd
input: Bloodloss
input: Bloodgain
input: ClearActiveDisciplines
input: physdamagescale
input: Inventory_Remove
input: MoneyAdd
input: MoneyRemove
input: BarterBegin
input: BarterEnd
input: BloodHeal
input: FrenzyCheck
input: FrenzyTrigger
input: HungerCheck
input: FrenzyUpdate
input: PlayFloat
input: WillTalk
input: ChangeMasqueradeLevel
input: FadeHeadAsCameraTarget
input: FadeBodyAsCameraTarget
input: SetHeadAsCameraTarget
input: SetBodyAsCameraTarget
input: LookAtEntityEye
input: LookAtEntityCenter
input: LookAtEntityOrigin
input: LookAtEntityDefault
input: skin
input: SetBodygroup
input: SetSkinFadeTime
input: FadeToSkin
input: SpawnTempParticle
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

npc_VHumanCombatant

output: OnDialogBegin
output: OnDialogEnd
output: OnInterestingPlaceArrived
output: OnInterestingPlaceLeft
output: OnUnknownVisionPlayer
output: OnStateFleeing
output: OnIncapacitatedStart
output: OnIncapacitatedEnd
output: OnDamaged
output: OnDeath
output: OnHalfHealth
output: OnFoundEnemy
output: OnLostEnemyLOS
output: OnLostEnemy
output: OnFoundPlayer
output: OnLostPlayerLOS
output: OnLostPlayer
output: OnHearWorld
output: OnHearPlayer
output: OnHearCombat
output: OnGrappleBegin
output: OnGrappleEnd
output: OnFedUponBegin
output: OnFedUponEnd
output: OnSellWeapon
output: OnBarterClose
output: OnLinearMoveDone
output: OnAngularMoveDone

input: pl_investigate
input: pl_criminal_flee
input: pl_criminal_attack
input: pl_supernatural_flee
input: pl_supernatural_attack
input: WalkToNode
input: TweakParam
input: SetupPatrolType
input: FollowPatrolPath
input: ClearPatrolPath
input: StartPlayerDialog
input: StartPlayerDialogRemote
input: StartPlayerDialogUnforced
input: FleeAndDie
input: Faint
input: DisableThink
input: TeleportToEntity
input: TakeDamage
input: MakeInvincible
input: UseInteresting
input: SetInvestigateMode
input: SetInvestigateModeCombat
input: SetSpeechVolume
input: PlayDialogFile
input: AllowAlertLookaround
input: StayEntrenched
input: AllowKickHintUse
input: SetScriptedDiscipline
input: SetBloodShieldDiscipline
input: SetFollowerBoss
input: SetFollowerType
input: SetFallToGround
input: ChangeSchedule
input: SetDontFacePlayerInDialog
input: SetBossMonster
input: AllowOpenDoors
input: SetMovementMultiplier
input: SetDefaultDialogCamera
input: SetRelationship
input: HumanityAdd
input: Bloodloss
input: Bloodgain
input: ClearActiveDisciplines
input: physdamagescale
input: Inventory_Remove
input: MoneyAdd
input: MoneyRemove
input: BarterBegin
input: BarterEnd
input: BloodHeal
input: FrenzyCheck
input: FrenzyTrigger
input: HungerCheck
input: FrenzyUpdate
input: PlayFloat
input: WillTalk
input: ChangeMasqueradeLevel
input: FadeHeadAsCameraTarget
input: FadeBodyAsCameraTarget
input: SetHeadAsCameraTarget
input: SetBodyAsCameraTarget
input: LookAtEntityEye
input: LookAtEntityCenter
input: LookAtEntityOrigin
input: LookAtEntityDefault
input: skin
input: SetBodygroup
input: SetSkinFadeTime
input: FadeToSkin
input: SpawnTempParticle
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

"targetname" "guard_patrol_north"
"angles" "0 180 0"
"renderfx" "0"
"rendermode" "0"
"renderamt" "255"
"rendercolor" "255 255 255"
"disableshadows" "1"
"disablereceiveshadows" "0"
"squadname" "squad_patrol"
"physdamagescale" "1.0"
"npc_perception" "8"
"vision" "800"
"hearing" "0.75"
"default_disposition" "Neutral"
"default_camera" "DialogDefault"
"model"
"models/character/npc/unique/Chinatown/Temple_Guard/Temple_Guard.mdl"
"demo_sequence" "None"
"skin" "1"
"crossfade_skin_time" "2.0"
"npc_transparent" "1"
"skincolor" "0 0 0 0"
"haircolor" "0 0 0 0"
"clothescolor1" "0 0 0 0"
"clothescolor2" "0 0 0 0"
"trimcolor" "0 0 0 0"
"stattemplate" "Tpl_sword"
"player_reaction" "D_HT 5"
"invincible" "0"
"interesting_place_groups" "0"
"use_interesting" "0"
"hint_groups" "1 2 3 4 5 6 7 8 9 10 11 12 13"
"investigate_mode" "4"
"investigate_mode_combat" "4"
"full_investigate" "0"
"bright_route_penalty" "0"
"pl_investigate" "-1"
"pl_criminal_flee" "-1"
"pl_criminal_attack" "-1"
"pl_supernatural_flee" "-1"
"pl_supernatural_attack" "-1"
"percent_occluded_wait" "100"
"percent_occluded_cover" "0"
"percent_occluded_walk" "0"
"percent_occluded_flank" "0"
"percent_occluded_chase" "0"
"allow_alert_lookaround" "1"
"stay_entrenched" "0"
"allow_kick_hint_use" "1"
"floatfreq" "0"
"combat_start_activity" "-1"
"spawnflags" "4"
"additionalequipment" "item_w_katana"
"follower_type" "Default"
"OnFoundEnemy" "guard_room_hidden,ScriptUnhide,,0,-1,,"
"OnFoundEnemy" "secretdoor1,ScriptUnhide,,0,-1,G.tpl3_alarm = 1,"
"origin" "384 640 8"

npc_VLasombra

output: OnDialogBegin
output: OnDialogEnd
output: OnInterestingPlaceArrived
output: OnInterestingPlaceLeft
output: OnUnknownVisionPlayer
output: OnStateFleeing
output: OnIncapacitatedStart
output: OnIncapacitatedEnd
output: OnDamaged
output: OnDeath
output: OnHalfHealth
output: OnFoundEnemy
output: OnLostEnemyLOS
output: OnLostEnemy
output: OnFoundPlayer
output: OnLostPlayerLOS
output: OnLostPlayer
output: OnHearWorld
output: OnHearPlayer
output: OnHearCombat
output: OnGrappleBegin
output: OnGrappleEnd
output: OnFedUponBegin
output: OnFedUponEnd
output: OnSellWeapon
output: OnBarterClose
output: OnLinearMoveDone
output: OnAngularMoveDone

input: DisableCover
input: pl_investigate
input: pl_criminal_flee
input: pl_criminal_attack
input: pl_supernatural_flee
input: pl_supernatural_attack
input: WalkToNode
input: TweakParam
input: SetupPatrolType
input: FollowPatrolPath
input: ClearPatrolPath
input: StartPlayerDialog
input: StartPlayerDialogRemote
input: StartPlayerDialogUnforced
input: FleeAndDie
input: Faint
input: DisableThink
input: TeleportToEntity
input: TakeDamage
input: MakeInvincible
input: UseInteresting
input: SetInvestigateMode
input: SetInvestigateModeCombat
input: SetSpeechVolume
input: PlayDialogFile
input: AllowAlertLookaround
input: StayEntrenched
input: AllowKickHintUse
input: SetScriptedDiscipline
input: SetBloodShieldDiscipline
input: SetFollowerBoss
input: SetFollowerType
input: SetFallToGround
input: ChangeSchedule
input: SetDontFacePlayerInDialog
input: SetBossMonster
input: AllowOpenDoors
input: SetMovementMultiplier
input: SetDefaultDialogCamera
input: SetRelationship
input: HumanityAdd
input: Bloodloss
input: Bloodgain
input: ClearActiveDisciplines
input: physdamagescale
input: Inventory_Remove
input: MoneyAdd
input: MoneyRemove
input: BarterBegin
input: BarterEnd
input: BloodHeal
input: FrenzyCheck
input: FrenzyTrigger
input: HungerCheck
input: FrenzyUpdate
input: PlayFloat
input: WillTalk
input: ChangeMasqueradeLevel
input: FadeHeadAsCameraTarget
input: FadeBodyAsCameraTarget
input: SetHeadAsCameraTarget
input: SetBodyAsCameraTarget
input: LookAtEntityEye
input: LookAtEntityCenter
input: LookAtEntityOrigin
input: LookAtEntityDefault
input: skin
input: SetBodygroup
input: SetSkinFadeTime
input: FadeToSkin
input: SpawnTempParticle
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

npc_VManBat

output: OnDialogBegin
output: OnDialogEnd
output: OnInterestingPlaceArrived
output: OnInterestingPlaceLeft
output: OnUnknownVisionPlayer
output: OnStateFleeing
output: OnIncapacitatedStart
output: OnIncapacitatedEnd
output: OnDamaged
output: OnDeath
output: OnHalfHealth
output: OnFoundEnemy
output: OnLostEnemyLOS
output: OnLostEnemy
output: OnFoundPlayer
output: OnLostPlayerLOS
output: OnLostPlayer
output: OnHearWorld
output: OnHearPlayer
output: OnHearCombat
output: OnGrappleBegin
output: OnGrappleEnd
output: OnFedUponBegin
output: OnFedUponEnd
output: OnSellWeapon
output: OnBarterClose
output: OnLinearMoveDone
output: OnAngularMoveDone

input: ManBatStun
input: ManBatFlyBegin
input: pl_investigate
input: pl_criminal_flee
input: pl_criminal_attack
input: pl_supernatural_flee
input: pl_supernatural_attack
input: WalkToNode
input: TweakParam
input: SetupPatrolType
input: FollowPatrolPath
input: ClearPatrolPath
input: StartPlayerDialog
input: StartPlayerDialogRemote
input: StartPlayerDialogUnforced
input: FleeAndDie
input: Faint
input: DisableThink
input: TeleportToEntity
input: TakeDamage
input: MakeInvincible
input: UseInteresting
input: SetInvestigateMode
input: SetInvestigateModeCombat
input: SetSpeechVolume
input: PlayDialogFile
input: AllowAlertLookaround
input: StayEntrenched
input: AllowKickHintUse
input: SetScriptedDiscipline
input: SetBloodShieldDiscipline
input: SetFollowerBoss
input: SetFollowerType
input: SetFallToGround
input: ChangeSchedule
input: SetDontFacePlayerInDialog
input: SetBossMonster
input: AllowOpenDoors
input: SetMovementMultiplier
input: SetDefaultDialogCamera
input: SetRelationship
input: HumanityAdd
input: Bloodloss
input: Bloodgain
input: ClearActiveDisciplines
input: physdamagescale
input: Inventory_Remove
input: MoneyAdd
input: MoneyRemove
input: BarterBegin
input: BarterEnd
input: BloodHeal
input: FrenzyCheck
input: FrenzyTrigger
input: HungerCheck
input: FrenzyUpdate
input: PlayFloat
input: WillTalk
input: ChangeMasqueradeLevel
input: FadeHeadAsCameraTarget
input: FadeBodyAsCameraTarget
input: SetHeadAsCameraTarget
input: SetBodyAsCameraTarget
input: LookAtEntityEye
input: LookAtEntityCenter
input: LookAtEntityOrigin
input: LookAtEntityDefault
input: skin
input: SetBodygroup
input: SetSkinFadeTime
input: FadeToSkin
input: SpawnTempParticle
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

npc_VMingXiao

output: OnDialogBegin
output: OnDialogEnd
output: OnInterestingPlaceArrived
output: OnInterestingPlaceLeft
output: OnUnknownVisionPlayer
output: OnStateFleeing
output: OnIncapacitatedStart
output: OnIncapacitatedEnd
output: OnDamaged
output: OnDeath
output: OnHalfHealth
output: OnFoundEnemy
output: OnLostEnemyLOS
output: OnLostEnemy
output: OnFoundPlayer
output: OnLostPlayerLOS
output: OnLostPlayer
output: OnHearWorld
output: OnHearPlayer
output: OnHearCombat
output: OnGrappleBegin
output: OnGrappleEnd
output: OnFedUponBegin
output: OnFedUponEnd
output: OnSellWeapon
output: OnBarterClose
output: OnLinearMoveDone
output: OnAngularMoveDone

input: StartTransformation
input: pl_investigate
input: pl_criminal_flee
input: pl_criminal_attack
input: pl_supernatural_flee
input: pl_supernatural_attack
input: WalkToNode
input: TweakParam
input: SetupPatrolType
input: FollowPatrolPath
input: ClearPatrolPath
input: StartPlayerDialog
input: StartPlayerDialogRemote
input: StartPlayerDialogUnforced
input: FleeAndDie
input: Faint
input: DisableThink
input: TeleportToEntity
input: TakeDamage
input: MakeInvincible
input: UseInteresting
input: SetInvestigateMode
input: SetInvestigateModeCombat
input: SetSpeechVolume
input: PlayDialogFile
input: AllowAlertLookaround
input: StayEntrenched
input: AllowKickHintUse
input: SetScriptedDiscipline
input: SetBloodShieldDiscipline
input: SetFollowerBoss
input: SetFollowerType
input: SetFallToGround
input: ChangeSchedule
input: SetDontFacePlayerInDialog
input: SetBossMonster
input: AllowOpenDoors
input: SetMovementMultiplier
input: SetDefaultDialogCamera
input: SetRelationship
input: HumanityAdd
input: Bloodloss
input: Bloodgain
input: ClearActiveDisciplines
input: physdamagescale
input: Inventory_Remove
input: MoneyAdd
input: MoneyRemove
input: BarterBegin
input: BarterEnd
input: BloodHeal
input: FrenzyCheck
input: FrenzyTrigger
input: HungerCheck
input: FrenzyUpdate
input: PlayFloat
input: WillTalk
input: ChangeMasqueradeLevel
input: FadeHeadAsCameraTarget
input: FadeBodyAsCameraTarget
input: SetHeadAsCameraTarget
input: SetBodyAsCameraTarget
input: LookAtEntityEye
input: LookAtEntityCenter
input: LookAtEntityOrigin
input: LookAtEntityDefault
input: skin
input: SetBodygroup
input: SetSkinFadeTime
input: FadeToSkin
input: SpawnTempParticle
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

npc_VNewscaster
output: OnDialogBegin
output: OnDialogEnd
output: OnInterestingPlaceArrived
output: OnInterestingPlaceLeft
output: OnUnknownVisionPlayer
output: OnStateFleeing
output: OnIncapacitatedStart
output: OnIncapacitatedEnd
output: OnDamaged
output: OnDeath
output: OnHalfHealth
output: OnFoundEnemy
output: OnLostEnemyLOS
output: OnLostEnemy
output: OnFoundPlayer
output: OnLostPlayerLOS
output: OnLostPlayer
output: OnHearWorld
output: OnHearPlayer
output: OnHearCombat
output: OnGrappleBegin
output: OnGrappleEnd
output: OnFedUponBegin
output: OnFedUponEnd
output: OnSellWeapon
output: OnBarterClose
output: OnLinearMoveDone
output: OnAngularMoveDone

input: pl_investigate
input: pl_criminal_flee
input: pl_criminal_attack
input: pl_supernatural_flee
input: pl_supernatural_attack
input: WalkToNode
input: TweakParam
input: SetupPatrolType
input: FollowPatrolPath
input: ClearPatrolPath
input: StartPlayerDialog
input: StartPlayerDialogRemote
input: StartPlayerDialogUnforced
input: FleeAndDie
input: Faint
input: DisableThink
input: TeleportToEntity
input: TakeDamage
input: MakeInvincible
input: UseInteresting
input: SetInvestigateMode
input: SetInvestigateModeCombat
input: SetSpeechVolume
input: PlayDialogFile
input: AllowAlertLookaround
input: StayEntrenched
input: AllowKickHintUse
input: SetScriptedDiscipline
input: SetBloodShieldDiscipline
input: SetFollowerBoss
input: SetFollowerType
input: SetFallToGround
input: ChangeSchedule
input: SetDontFacePlayerInDialog
input: SetBossMonster
input: AllowOpenDoors
input: SetMovementMultiplier
input: SetDefaultDialogCamera
input: SetRelationship
input: HumanityAdd
input: Bloodloss
input: Bloodgain
input: ClearActiveDisciplines
input: physdamagescale
input: Inventory_Remove
input: MoneyAdd
input: MoneyRemove
input: BarterBegin
input: BarterEnd
input: BloodHeal
input: FrenzyCheck
input: FrenzyTrigger
input: HungerCheck
input: FrenzyUpdate
input: PlayFloat
input: WillTalk
input: ChangeMasqueradeLevel
input: FadeHeadAsCameraTarget
input: FadeBodyAsCameraTarget
input: SetHeadAsCameraTarget
input: SetBodyAsCameraTarget
input: LookAtEntityEye
input: LookAtEntityCenter
input: LookAtEntityOrigin
input: LookAtEntityDefault
input: skin
input: SetBodygroup
input: SetSkinFadeTime
input: FadeToSkin
input: SpawnTempParticle
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

npc_VPedestrian

output: OnDialogBegin
output: OnDialogEnd
output: OnInterestingPlaceArrived
output: OnInterestingPlaceLeft
output: OnUnknownVisionPlayer
output: OnStateFleeing
output: OnIncapacitatedStart
output: OnIncapacitatedEnd
output: OnDamaged
output: OnDeath
output: OnHalfHealth
output: OnFoundEnemy
output: OnLostEnemyLOS
output: OnLostEnemy
output: OnFoundPlayer
output: OnLostPlayerLOS
output: OnLostPlayer
output: OnHearWorld
output: OnHearPlayer
output: OnHearCombat
output: OnGrappleBegin
output: OnGrappleEnd
output: OnFedUponBegin
output: OnFedUponEnd
output: OnSellWeapon
output: OnBarterClose
output: OnLinearMoveDone
output: OnAngularMoveDone

input: pl_investigate
input: pl_criminal_flee
input: pl_criminal_attack
input: pl_supernatural_flee
input: pl_supernatural_attack
input: WalkToNode
input: TweakParam
input: SetupPatrolType
input: FollowPatrolPath
input: ClearPatrolPath
input: StartPlayerDialog
input: StartPlayerDialogRemote
input: StartPlayerDialogUnforced
input: FleeAndDie
input: Faint
input: DisableThink
input: TeleportToEntity
input: TakeDamage
input: MakeInvincible
input: UseInteresting
input: SetInvestigateMode
input: SetInvestigateModeCombat
input: SetSpeechVolume
input: PlayDialogFile
input: AllowAlertLookaround
input: StayEntrenched
input: AllowKickHintUse
input: SetScriptedDiscipline
input: SetBloodShieldDiscipline
input: SetFollowerBoss
input: SetFollowerType
input: SetFallToGround
input: ChangeSchedule
input: SetDontFacePlayerInDialog
input: SetBossMonster
input: AllowOpenDoors
input: SetMovementMultiplier
input: SetDefaultDialogCamera
input: SetRelationship
input: HumanityAdd
input: Bloodloss
input: Bloodgain
input: ClearActiveDisciplines
input: physdamagescale
input: Inventory_Remove
input: MoneyAdd
input: MoneyRemove
input: BarterBegin
input: BarterEnd
input: BloodHeal
input: FrenzyCheck
input: FrenzyTrigger
input: HungerCheck
input: FrenzyUpdate
input: PlayFloat
input: WillTalk
input: ChangeMasqueradeLevel
input: FadeHeadAsCameraTarget
input: FadeBodyAsCameraTarget
input: SetHeadAsCameraTarget
input: SetBodyAsCameraTarget
input: LookAtEntityEye
input: LookAtEntityCenter
input: LookAtEntityOrigin
input: LookAtEntityDefault
input: skin
input: SetBodygroup
input: SetSkinFadeTime
input: FadeToSkin
input: SpawnTempParticle
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

"angles" "0 127 0"


"renderfx" "0"
"rendermode" "0"
"renderamt" "255"
"rendercolor" "255 255 255"
"disableshadows" "1"
"disablereceiveshadows" "0"
"base_gender" "1"
"interesting_place_groups" "11"
"physdamagescale" "1.0"
"npc_perception" "3"
"vision" "-1"
"hearing" "-1.00"
"default_disposition" "Neutral"
"default_camera" "DialogDefault"
"demo_sequence" "None"
"skin" "0"
"skincolor" "0 0 0 0"
"haircolor" "0 0 0 0"
"clothescolor1" "0 0 0 0"
"clothescolor2" "0 0 0 0"
"trimcolor" "0 0 0 0"
"stattemplate" "CivilianGeneric"
"player_reaction" "D_NU 0"
"use_interesting" "1"
"investigate_mode" "4"
"bright_route_penalty" "0"
"pl_investigate" "6"
"pl_criminal_flee" "2"
"pl_criminal_attack" "6"
"pl_supernatural_flee" "1"
"pl_supernatural_attack" "6"
"spawnflags" "8196"
"targetname" "downstairs_dancer"
"npc_transparent" "1"
"hint_groups" "1 2 3 4 5 6 7 8 9 10 11 12 13 14â€
"investigate_mode_combat" "4"
"percent_occluded_wait" "10"
"percent_occluded_cover" "30"
"percent_occluded_walk" "10"
"percent_occluded_flank" "20"
"percent_occluded_chase" "30"
"allow_kick_hint_use" "1"
"crossfade_skin_time" "2.0"
"combat_start_activity" "-1"
"follower_type" "Default"
"model"
"models/character/npc/common/dancer/female_4/female_dancer_4.mdl"
"origin" "168 640 9"

npc_VPlayerController

NOTES : allows you to step outside your body?

output: OnDialogBegin
output: OnDialogEnd
output: OnInterestingPlaceArrived
output: OnInterestingPlaceLeft
output: OnUnknownVisionPlayer
output: OnStateFleeing
output: OnIncapacitatedStart
output: OnIncapacitatedEnd
output: OnDamaged
output: OnDeath
output: OnHalfHealth
output: OnFoundEnemy
output: OnLostEnemyLOS
output: OnLostEnemy
output: OnFoundPlayer
output: OnLostPlayerLOS
output: OnLostPlayer
output: OnHearWorld
output: OnHearPlayer
output: OnHearCombat
output: OnGrappleBegin
output: OnGrappleEnd
output: OnFedUponBegin
output: OnFedUponEnd
output: OnSellWeapon
output: OnBarterClose
output: OnLinearMoveDone
output: OnAngularMoveDone

input: pl_investigate
input: pl_criminal_flee
input: pl_criminal_attack
input: pl_supernatural_flee
input: pl_supernatural_attack
input: WalkToNode
input: TweakParam
input: SetupPatrolType
input: FollowPatrolPath
input: ClearPatrolPath
input: StartPlayerDialog
input: StartPlayerDialogRemote
input: StartPlayerDialogUnforced
input: FleeAndDie
input: Faint
input: DisableThink
input: TeleportToEntity
input: TakeDamage
input: MakeInvincible
input: UseInteresting
input: SetInvestigateMode
input: SetInvestigateModeCombat
input: SetSpeechVolume
input: PlayDialogFile
input: AllowAlertLookaround
input: StayEntrenched
input: AllowKickHintUse
input: SetScriptedDiscipline
input: SetBloodShieldDiscipline
input: SetFollowerBoss
input: SetFollowerType
input: SetFallToGround
input: ChangeSchedule
input: SetDontFacePlayerInDialog
input: SetBossMonster
input: AllowOpenDoors
input: SetMovementMultiplier
input: SetDefaultDialogCamera
input: SetRelationship
input: HumanityAdd
input: Bloodloss
input: Bloodgain
input: ClearActiveDisciplines
input: physdamagescale
input: Inventory_Remove
input: MoneyAdd
input: MoneyRemove
input: BarterBegin
input: BarterEnd
input: BloodHeal
input: FrenzyCheck
input: FrenzyTrigger
input: HungerCheck
input: FrenzyUpdate
input: PlayFloat
input: WillTalk
input: ChangeMasqueradeLevel
input: FadeHeadAsCameraTarget
input: FadeBodyAsCameraTarget
input: SetHeadAsCameraTarget
input: SetBodyAsCameraTarget
input: LookAtEntityEye
input: LookAtEntityCenter
input: LookAtEntityOrigin
input: LookAtEntityDefault
input: skin
input: SetBodygroup
input: SetSkinFadeTime
input: FadeToSkin
input: SpawnTempParticle
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

npc_VProneDialog (Mercurio. Play disposition while talking)

output: OnDialogBegin
output: OnDialogEnd
output: OnInterestingPlaceArrived
output: OnInterestingPlaceLeft
output: OnUnknownVisionPlayer
output: OnStateFleeing
output: OnIncapacitatedStart
output: OnIncapacitatedEnd
output: OnDamaged
output: OnDeath
output: OnHalfHealth
output: OnFoundEnemy
output: OnLostEnemyLOS
output: OnLostEnemy
output: OnFoundPlayer
output: OnLostPlayerLOS
output: OnLostPlayer
output: OnHearWorld
output: OnHearPlayer
output: OnHearCombat
output: OnGrappleBegin
output: OnGrappleEnd
output: OnFedUponBegin
output: OnFedUponEnd
output: OnSellWeapon
output: OnBarterClose
output: OnLinearMoveDone
output: OnAngularMoveDone

input: pl_investigate
input: pl_criminal_flee
input: pl_criminal_attack
input: pl_supernatural_flee
input: pl_supernatural_attack
input: WalkToNode
input: TweakParam
input: SetupPatrolType
input: FollowPatrolPath
input: ClearPatrolPath
input: StartPlayerDialog
input: StartPlayerDialogRemote
input: StartPlayerDialogUnforced
input: FleeAndDie
input: Faint
input: DisableThink
input: TeleportToEntity
input: TakeDamage
input: MakeInvincible
input: UseInteresting
input: SetInvestigateMode
input: SetInvestigateModeCombat
input: SetSpeechVolume
input: PlayDialogFile
input: AllowAlertLookaround
input: StayEntrenched
input: AllowKickHintUse
input: SetScriptedDiscipline
input: SetBloodShieldDiscipline
input: SetFollowerBoss
input: SetFollowerType
input: SetFallToGround
input: ChangeSchedule
input: SetDontFacePlayerInDialog
input: SetBossMonster
input: AllowOpenDoors
input: SetMovementMultiplier
input: SetDefaultDialogCamera
input: SetRelationship
input: HumanityAdd
input: Bloodloss
input: Bloodgain
input: ClearActiveDisciplines
input: physdamagescale
input: Inventory_Remove
input: MoneyAdd
input: MoneyRemove
input: BarterBegin
input: BarterEnd
input: BloodHeal
input: FrenzyCheck
input: FrenzyTrigger
input: HungerCheck
input: FrenzyUpdate
input: PlayFloat
input: WillTalk
input: ChangeMasqueradeLevel
input: FadeHeadAsCameraTarget
input: FadeBodyAsCameraTarget
input: SetHeadAsCameraTarget
input: SetBodyAsCameraTarget
input: LookAtEntityEye
input: LookAtEntityCenter
input: LookAtEntityOrigin
input: LookAtEntityDefault
input: skin
input: SetBodygroup
input: SetSkinFadeTime
input: FadeToSkin
input: SpawnTempParticle
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

npc_VRat

output: OnDialogBegin
output: OnDialogEnd
output: OnInterestingPlaceArrived
output: OnInterestingPlaceLeft
output: OnUnknownVisionPlayer
output: OnStateFleeing
output: OnIncapacitatedStart
output: OnIncapacitatedEnd
output: OnDamaged
output: OnDeath
output: OnHalfHealth
output: OnFoundEnemy
output: OnLostEnemyLOS
output: OnLostEnemy
output: OnFoundPlayer
output: OnLostPlayerLOS
output: OnLostPlayer
output: OnHearWorld
output: OnHearPlayer
output: OnHearCombat
output: OnGrappleBegin
output: OnGrappleEnd
output: OnFedUponBegin
output: OnFedUponEnd
output: OnSellWeapon
output: OnBarterClose
output: OnLinearMoveDone
output: OnAngularMoveDone

input: pl_investigate
input: pl_criminal_flee
input: pl_criminal_attack
input: pl_supernatural_flee
input: pl_supernatural_attack
input: WalkToNode
input: TweakParam
input: SetupPatrolType
input: FollowPatrolPath
input: ClearPatrolPath
input: StartPlayerDialog
input: StartPlayerDialogRemote
input: StartPlayerDialogUnforced
input: FleeAndDie
input: Faint
input: DisableThink
input: TeleportToEntity
input: TakeDamage
input: MakeInvincible
input: UseInteresting
input: SetInvestigateMode
input: SetInvestigateModeCombat
input: SetSpeechVolume
input: PlayDialogFile
input: AllowAlertLookaround
input: StayEntrenched
input: AllowKickHintUse
input: SetScriptedDiscipline
input: SetBloodShieldDiscipline
input: SetFollowerBoss
input: SetFollowerType
input: SetFallToGround
input: ChangeSchedule
input: SetDontFacePlayerInDialog
input: SetBossMonster
input: AllowOpenDoors
input: SetMovementMultiplier
input: SetDefaultDialogCamera
input: SetRelationship
input: HumanityAdd
input: Bloodloss
input: Bloodgain
input: ClearActiveDisciplines
input: physdamagescale
input: Inventory_Remove
input: MoneyAdd
input: MoneyRemove
input: BarterBegin
input: BarterEnd
input: BloodHeal
input: FrenzyCheck
input: FrenzyTrigger
input: HungerCheck
input: FrenzyUpdate
input: PlayFloat
input: WillTalk
input: ChangeMasqueradeLevel
input: FadeHeadAsCameraTarget
input: FadeBodyAsCameraTarget
input: SetHeadAsCameraTarget
input: SetBodyAsCameraTarget
input: LookAtEntityEye
input: LookAtEntityCenter
input: LookAtEntityOrigin
input: LookAtEntityDefault
input: skin
input: SetBodygroup
input: SetSkinFadeTime
input: FadeToSkin
input: SpawnTempParticle
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

"angles" "0 0 0"


"renderfx" "0"
"rendermode" "0"
"renderamt" "255"
"rendercolor" "255 255 255"
"disableshadows" "1"
"disablereceiveshadows" "0"
"physdamagescale" "1.0"
"npc_perception" "3"
"vision" "-1"
"hearing" "-1.00"
"default_disposition" "Neutral"
"default_camera" "DialogDefault"
"model" "models/character/monster/rat/rat.mdl"
"demo_sequence" "None"
"skin" "0"
"crossfade_skin_time" "2.0"
"npc_transparent" "1"
"skincolor" "0 0 0 0"
"haircolor" "0 0 0 0"
"clothescolor1" "0 0 0 0"
"clothescolor2" "0 0 0 0"
"trimcolor" "0 0 0 0"
"stattemplate" "Rat"
"player_reaction" "D_NU 0"
"invincible" "0"
"interesting_place_groups" "22"
"use_interesting" "1"
"hint_groups" "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16â€
"investigate_mode" "4"
"investigate_mode_combat" "4"
"full_investigate" "0"
"bright_route_penalty" "0"
"pl_investigate" "6"
"pl_criminal_flee" "1"
"pl_criminal_attack" "6"
"pl_supernatural_flee" "6"
"pl_supernatural_attack" "6"
"percent_occluded_wait" "10"
"percent_occluded_cover" "30"
"percent_occluded_walk" "10"
"percent_occluded_flank" "20"
"percent_occluded_chase" "30"
"allow_alert_lookaround" "1"
"stay_entrenched" "0"
"allow_kick_hint_use" "1"
"floatfreq" "0"
"teleport_move_timer" "0"
"combat_start_activity" "-1"
"friendship_level" "1"
"warn_range" "200.0"
"conflict_range" "100.0"
"detection_distance" "256.0"
"ignore_nosferatu" "1"
"must_detect" "1"
"fright_distance" "128.0"
"fright_duration" "5.0"
"spawnflags" "4"
"follower_type" "Default"
"origin" "601 -1192 -112"

npc_VSabbatGunman

output: OnDialogBegin
output: OnDialogEnd
output: OnInterestingPlaceArrived
output: OnInterestingPlaceLeft
output: OnUnknownVisionPlayer
output: OnStateFleeing
output: OnIncapacitatedStart
output: OnIncapacitatedEnd
output: OnDamaged
output: OnDeath
output: OnHalfHealth
output: OnFoundEnemy
output: OnLostEnemyLOS
output: OnLostEnemy
output: OnFoundPlayer
output: OnLostPlayerLOS
output: OnLostPlayer
output: OnHearWorld
output: OnHearPlayer
output: OnHearCombat
output: OnGrappleBegin
output: OnGrappleEnd
output: OnFedUponBegin
output: OnFedUponEnd
output: OnSellWeapon
output: OnBarterClose
output: OnLinearMoveDone
output: OnAngularMoveDone

input: pl_investigate
input: pl_criminal_flee
input: pl_criminal_attack
input: pl_supernatural_flee
input: pl_supernatural_attack
input: WalkToNode
input: TweakParam
input: SetupPatrolType
input: FollowPatrolPath
input: ClearPatrolPath
input: StartPlayerDialog
input: StartPlayerDialogRemote
input: StartPlayerDialogUnforced
input: FleeAndDie
input: Faint
input: DisableThink
input: TeleportToEntity
input: TakeDamage
input: MakeInvincible
input: UseInteresting
input: SetInvestigateMode
input: SetInvestigateModeCombat
input: SetSpeechVolume
input: PlayDialogFile
input: AllowAlertLookaround
input: StayEntrenched
input: AllowKickHintUse
input: SetScriptedDiscipline
input: SetBloodShieldDiscipline
input: SetFollowerBoss
input: SetFollowerType
input: SetFallToGround
input: ChangeSchedule
input: SetDontFacePlayerInDialog
input: SetBossMonster
input: AllowOpenDoors
input: SetMovementMultiplier
input: SetDefaultDialogCamera
input: SetRelationship
input: HumanityAdd
input: Bloodloss
input: Bloodgain
input: ClearActiveDisciplines
input: physdamagescale
input: Inventory_Remove
input: MoneyAdd
input: MoneyRemove
input: BarterBegin
input: BarterEnd
input: BloodHeal
input: FrenzyCheck
input: FrenzyTrigger
input: HungerCheck
input: FrenzyUpdate
input: PlayFloat
input: WillTalk
input: ChangeMasqueradeLevel
input: FadeHeadAsCameraTarget
input: FadeBodyAsCameraTarget
input: SetHeadAsCameraTarget
input: SetBodyAsCameraTarget
input: LookAtEntityEye
input: LookAtEntityCenter
input: LookAtEntityOrigin
input: LookAtEntityDefault
input: skin
input: SetBodygroup
input: SetSkinFadeTime
input: FadeToSkin
input: SpawnTempParticle
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

npc_VSabbatLeader

output: OnTransformComplete
output: OnDialogBegin
output: OnDialogEnd
output: OnInterestingPlaceArrived
output: OnInterestingPlaceLeft
output: OnUnknownVisionPlayer
output: OnStateFleeing
output: OnIncapacitatedStart
output: OnIncapacitatedEnd
output: OnDamaged
output: OnDeath
output: OnHalfHealth
output: OnFoundEnemy
output: OnLostEnemyLOS
output: OnLostEnemy
output: OnFoundPlayer
output: OnLostPlayerLOS
output: OnLostPlayer
output: OnHearWorld
output: OnHearPlayer
output: OnHearCombat
output: OnGrappleBegin
output: OnGrappleEnd
output: OnFedUponBegin
output: OnFedUponEnd
output: OnSellWeapon
output: OnBarterClose
output: OnLinearMoveDone
output: OnAngularMoveDone

input: StartTransformation
input: TransformModel
input: pl_investigate
input: pl_criminal_flee
input: pl_criminal_attack
input: pl_supernatural_flee
input: pl_supernatural_attack
input: WalkToNode
input: TweakParam
input: SetupPatrolType
input: FollowPatrolPath
input: ClearPatrolPath
input: StartPlayerDialog
input: StartPlayerDialogRemote
input: StartPlayerDialogUnforced
input: FleeAndDie
input: Faint
input: DisableThink
input: TeleportToEntity
input: TakeDamage
input: MakeInvincible
input: UseInteresting
input: SetInvestigateMode
input: SetInvestigateModeCombat
input: SetSpeechVolume
input: PlayDialogFile
input: AllowAlertLookaround
input: StayEntrenched
input: AllowKickHintUse
input: SetScriptedDiscipline
input: SetBloodShieldDiscipline
input: SetFollowerBoss
input: SetFollowerType
input: SetFallToGround
input: ChangeSchedule
input: SetDontFacePlayerInDialog
input: SetBossMonster
input: AllowOpenDoors
input: SetMovementMultiplier
input: SetDefaultDialogCamera
input: SetRelationship
input: HumanityAdd
input: Bloodloss
input: Bloodgain
input: ClearActiveDisciplines
input: physdamagescale
input: Inventory_Remove
input: MoneyAdd
input: MoneyRemove
input: BarterBegin
input: BarterEnd
input: BloodHeal
input: FrenzyCheck
input: FrenzyTrigger
input: HungerCheck
input: FrenzyUpdate
input: PlayFloat
input: WillTalk
input: ChangeMasqueradeLevel
input: FadeHeadAsCameraTarget
input: FadeBodyAsCameraTarget
input: SetHeadAsCameraTarget
input: SetBodyAsCameraTarget
input: LookAtEntityEye
input: LookAtEntityCenter
input: LookAtEntityOrigin
input: LookAtEntityDefault
input: skin
input: SetBodygroup
input: SetSkinFadeTime
input: FadeToSkin
input: SpawnTempParticle
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

npc_VScurrying (Rat with Dialog?)

output: OnDialogBegin
output: OnDialogEnd
output: OnInterestingPlaceArrived
output: OnInterestingPlaceLeft
output: OnUnknownVisionPlayer
output: OnStateFleeing
output: OnIncapacitatedStart
output: OnIncapacitatedEnd
output: OnDamaged
output: OnDeath
output: OnHalfHealth
output: OnFoundEnemy
output: OnLostEnemyLOS
output: OnLostEnemy
output: OnFoundPlayer
output: OnLostPlayerLOS
output: OnLostPlayer
output: OnHearWorld
output: OnHearPlayer
output: OnHearCombat
output: OnGrappleBegin
output: OnGrappleEnd
output: OnFedUponBegin
output: OnFedUponEnd
output: OnSellWeapon
output: OnBarterClose
output: OnLinearMoveDone
output: OnAngularMoveDone

input: pl_investigate
input: pl_criminal_flee
input: pl_criminal_attack
input: pl_supernatural_flee
input: pl_supernatural_attack
input: WalkToNode
input: TweakParam
input: SetupPatrolType
input: FollowPatrolPath
input: ClearPatrolPath
input: StartPlayerDialog
input: StartPlayerDialogRemote
input: StartPlayerDialogUnforced
input: FleeAndDie
input: Faint
input: DisableThink
input: TeleportToEntity
input: TakeDamage
input: MakeInvincible
input: UseInteresting
input: SetInvestigateMode
input: SetInvestigateModeCombat
input: SetSpeechVolume
input: PlayDialogFile
input: AllowAlertLookaround
input: StayEntrenched
input: AllowKickHintUse
input: SetScriptedDiscipline
input: SetBloodShieldDiscipline
input: SetFollowerBoss
input: SetFollowerType
input: SetFallToGround
input: ChangeSchedule
input: SetDontFacePlayerInDialog
input: SetBossMonster
input: AllowOpenDoors
input: SetMovementMultiplier
input: SetDefaultDialogCamera
input: SetRelationship
input: HumanityAdd
input: Bloodloss
input: Bloodgain
input: ClearActiveDisciplines
input: physdamagescale
input: Inventory_Remove
input: MoneyAdd
input: MoneyRemove
input: BarterBegin
input: BarterEnd
input: BloodHeal
input: FrenzyCheck
input: FrenzyTrigger
input: HungerCheck
input: FrenzyUpdate
input: PlayFloat
input: WillTalk
input: ChangeMasqueradeLevel
input: FadeHeadAsCameraTarget
input: FadeBodyAsCameraTarget
input: SetHeadAsCameraTarget
input: SetBodyAsCameraTarget
input: LookAtEntityEye
input: LookAtEntityCenter
input: LookAtEntityOrigin
input: LookAtEntityDefault
input: skin
input: SetBodygroup
input: SetSkinFadeTime
input: FadeToSkin
input: SpawnTempParticle
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome
input: Kill
input: Use
input: Alpha
input: Color
input: SetParent
input: ClearParent
input: ScriptHide
input: ScriptUnhide
input: SetSoundOverrideEnt
input: SetFakeSilence

npc_VSheriffMan

output: OnFinishTransformation
output: OnTransformComplete
output: OnDialogBegin
output: OnDialogEnd
output: OnInterestingPlaceArrived
output: OnInterestingPlaceLeft
output: OnUnknownVisionPlayer
output: OnStateFleeing
output: OnIncapacitatedStart
output: OnIncapacitatedEnd
output: OnDamaged
output: OnDeath
output: OnHalfHealth
output: OnFoundEnemy
output: OnLostEnemyLOS
output: OnLostEnemy
output: OnFoundPlayer
output: OnLostPlayerLOS
output: OnLostPlayer
output: OnHearWorld
output: OnHearPlayer
output: OnHearCombat
output: OnGrappleBegin
output: OnGrappleEnd
output: OnFedUponBegin
output: OnFedUponEnd
output: OnSellWeapon
output: OnBarterClose
output: OnLinearMoveDone
output: OnAngularMoveDone

input: StartAttacking
input: StartTransformation
input: TransformModel
input: pl_investigate
input: pl_criminal_flee
input: pl_criminal_attack
input: pl_supernatural_flee
input: pl_supernatural_attack
input: WalkToNode
input: TweakParam
input: SetupPatrolType
input: FollowPatrolPath
input: ClearPatrolPath
input: StartPlayerDialog
input: StartPlayerDialogRemote
input: StartPlayerDialogUnforced
input: FleeAndDie
input: Faint
input: DisableThink
input: TeleportToEntity
input: TakeDamage
input: MakeInvincible
input: UseInteresting
input: SetInvestigateMode
input: SetInvestigateModeCombat
input: SetSpeechVolume
input: PlayDialogFile
input: AllowAlertLookaround
input: StayEntrenched
input: AllowKickHintUse
input: SetScriptedDiscipline
input: SetBloodShieldDiscipline
input: SetFollowerBoss
input: SetFollowerType
input: SetFallToGround
input: ChangeSchedule
input: SetDontFacePlayerInDialog
input: SetBossMonster
input: AllowOpenDoors
input: SetMovementMultiplier
input: SetDefaultDialogCamera
input: SetRelationship
input: HumanityAdd
input: Bloodloss
input: Bloodgain
input: ClearActiveDisciplines
input: physdamagescale
input: Inventory_Remove
input: MoneyAdd
input: MoneyRemove
input: BarterBegin
input: BarterEnd
input: BloodHeal
input: FrenzyCheck
input: FrenzyTrigger
input: HungerCheck
input: FrenzyUpdate
input: PlayFloat
input: WillTalk
input: ChangeMasqueradeLevel
input: FadeHeadAsCameraTarget
input: FadeBodyAsCameraTarget
input: SetHeadAsCameraTarget
input: SetBodyAsCameraTarget
input: LookAtEntityEye
input: LookAtEntityCenter
input: LookAtEntityOrigin
input: LookAtEntityDefault
input: skin
input: SetBodygroup
input: SetSkinFadeTime
input: FadeToSkin
input: SpawnTempParticle
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

npc_VTaxiDriver

output: OnDialogBegin
output: OnDialogEnd
output: OnInterestingPlaceArrived
output: OnInterestingPlaceLeft
output: OnUnknownVisionPlayer
output: OnStateFleeing
output: OnIncapacitatedStart
output: OnIncapacitatedEnd
output: OnDamaged
output: OnDeath
output: OnHalfHealth
output: OnFoundEnemy
output: OnLostEnemyLOS
output: OnLostEnemy
output: OnFoundPlayer
output: OnLostPlayerLOS
output: OnLostPlayer
output: OnHearWorld
output: OnHearPlayer
output: OnHearCombat
output: OnGrappleBegin
output: OnGrappleEnd
output: OnFedUponBegin
output: OnFedUponEnd
output: OnSellWeapon
output: OnBarterClose
output: OnLinearMoveDone
output: OnAngularMoveDone

input: pl_investigate
input: pl_criminal_flee
input: pl_criminal_attack
input: pl_supernatural_flee
input: pl_supernatural_attack
input: WalkToNode
input: TweakParam
input: SetupPatrolType
input: FollowPatrolPath
input: ClearPatrolPath
input: StartPlayerDialog
input: StartPlayerDialogRemote
input: StartPlayerDialogUnforced
input: FleeAndDie
input: Faint
input: DisableThink
input: TeleportToEntity
input: TakeDamage
input: MakeInvincible
input: UseInteresting
input: SetInvestigateMode
input: SetInvestigateModeCombat
input: SetSpeechVolume
input: PlayDialogFile
input: AllowAlertLookaround
input: StayEntrenched
input: AllowKickHintUse
input: SetScriptedDiscipline
input: SetBloodShieldDiscipline
input: SetFollowerBoss
input: SetFollowerType
input: SetFallToGround
input: ChangeSchedule
input: SetDontFacePlayerInDialog
input: SetBossMonster
input: AllowOpenDoors
input: SetMovementMultiplier
input: SetDefaultDialogCamera
input: SetRelationship
input: HumanityAdd
input: Bloodloss
input: Bloodgain
input: ClearActiveDisciplines
input: physdamagescale
input: Inventory_Remove
input: MoneyAdd
input: MoneyRemove
input: BarterBegin
input: BarterEnd
input: BloodHeal
input: FrenzyCheck
input: FrenzyTrigger
input: HungerCheck
input: FrenzyUpdate
input: PlayFloat
input: WillTalk
input: ChangeMasqueradeLevel
input: FadeHeadAsCameraTarget
input: FadeBodyAsCameraTarget
input: SetHeadAsCameraTarget
input: SetBodyAsCameraTarget
input: LookAtEntityEye
input: LookAtEntityCenter
input: LookAtEntityOrigin
input: LookAtEntityDefault
input: skin
input: SetBodygroup
input: SetSkinFadeTime
input: FadeToSkin
input: SpawnTempParticle
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

"angles" "0 223.5 0"


"renderamt" "255"
"rendercolor" "255 255 255"
"disableshadows" "1"
"spawnflags" "8204"
"physdamagescale" "1.0"
"npc_perception" "3"
"vision" "-1"
"hearing" "-1.00"
"default_disposition" "Neutral"
"default_camera" "vdata/CameraShots/Cabbie.txt"
"demo_sequence" "None"
"npc_transparent" "1"
"skincolor" "0 0 0 0"
"haircolor" "0 0 0 0"
"clothescolor1" "0 0 0 0"
"clothescolor2" "0 0 0 0"
"trimcolor" "0 0 0 0"
"stattemplate" "Cabbie"
"player_reaction" "D_NU 0"
"interesting_place_groups" "0"
"hint_groups" "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16â€
"investigate_mode" "0"
"investigate_mode_combat" "0"
"pl_investigate" "6"
"pl_criminal_flee" "6"
"pl_criminal_attack" "6"
"pl_supernatural_flee" "6"
"pl_supernatural_attack" "6"
"percent_occluded_wait" "10"
"percent_occluded_cover" "30"
"percent_occluded_walk" "10"
"percent_occluded_flank" "20"
"percent_occluded_chase" "30"
"allow_kick_hint_use" "1"
"model" "models/character/npc/common/cabbie/Cabbie.mdl"
"dialogname" "dlg/Generic/Cabbie.dlg"
"targetname" "cabbie"
"StartHidden" "0"
"crossfade_skin_time" "2.0"
"combat_start_activity" "ACT_INVALID"
"invincible" "1"
"follower_type" "Default"
"origin" "-82.3773 -927.09 -120.365"

npc_VTzimisce

output: OnDialogBegin
output: OnDialogEnd
output: OnInterestingPlaceArrived
output: OnInterestingPlaceLeft
output: OnUnknownVisionPlayer
output: OnStateFleeing
output: OnIncapacitatedStart
output: OnIncapacitatedEnd
output: OnDamaged
output: OnDeath
output: OnHalfHealth
output: OnFoundEnemy
output: OnLostEnemyLOS
output: OnLostEnemy
output: OnFoundPlayer
output: OnLostPlayerLOS
output: OnLostPlayer
output: OnHearWorld
output: OnHearPlayer
output: OnHearCombat
output: OnGrappleBegin
output: OnGrappleEnd
output: OnFedUponBegin
output: OnFedUponEnd
output: OnSellWeapon
output: OnBarterClose
output: OnLinearMoveDone
output: OnAngularMoveDone

input: pl_investigate
input: pl_criminal_flee
input: pl_criminal_attack
input: pl_supernatural_flee
input: pl_supernatural_attack
input: WalkToNode
input: TweakParam
input: SetupPatrolType
input: FollowPatrolPath
input: ClearPatrolPath
input: StartPlayerDialog
input: StartPlayerDialogRemote
input: StartPlayerDialogUnforced
input: FleeAndDie
input: Faint
input: DisableThink
input: TeleportToEntity
input: TakeDamage
input: MakeInvincible
input: UseInteresting
input: SetInvestigateMode
input: SetInvestigateModeCombat
input: SetSpeechVolume
input: PlayDialogFile
input: AllowAlertLookaround
input: StayEntrenched
input: AllowKickHintUse
input: SetScriptedDiscipline
input: SetBloodShieldDiscipline
input: SetFollowerBoss
input: SetFollowerType
input: SetFallToGround
input: ChangeSchedule
input: SetDontFacePlayerInDialog
input: SetBossMonster
input: AllowOpenDoors
input: SetMovementMultiplier
input: SetDefaultDialogCamera
input: SetRelationship
input: HumanityAdd
input: Bloodloss
input: Bloodgain
input: ClearActiveDisciplines
input: physdamagescale
input: Inventory_Remove
input: MoneyAdd
input: MoneyRemove
input: BarterBegin
input: BarterEnd
input: BloodHeal
input: FrenzyCheck
input: FrenzyTrigger
input: HungerCheck
input: FrenzyUpdate
input: PlayFloat
input: WillTalk
input: ChangeMasqueradeLevel
input: FadeHeadAsCameraTarget
input: FadeBodyAsCameraTarget
input: SetHeadAsCameraTarget
input: SetBodyAsCameraTarget
input: LookAtEntityEye
input: LookAtEntityCenter
input: LookAtEntityOrigin
input: LookAtEntityDefault
input: skin
input: SetBodygroup
input: SetSkinFadeTime
input: FadeToSkin
input: SpawnTempParticle
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

npc_VTzimisceHeadClaw

output: OnDialogBegin
output: OnDialogEnd
output: OnInterestingPlaceArrived
output: OnInterestingPlaceLeft
output: OnUnknownVisionPlayer
output: OnStateFleeing
output: OnIncapacitatedStart
output: OnIncapacitatedEnd
output: OnDamaged
output: OnDeath
output: OnHalfHealth
output: OnFoundEnemy
output: OnLostEnemyLOS
output: OnLostEnemy
output: OnFoundPlayer
output: OnLostPlayerLOS
output: OnLostPlayer
output: OnHearWorld
output: OnHearPlayer
output: OnHearCombat
output: OnGrappleBegin
output: OnGrappleEnd
output: OnFedUponBegin
output: OnFedUponEnd
output: OnSellWeapon
output: OnBarterClose
output: OnLinearMoveDone
output: OnAngularMoveDone

input: pl_investigate
input: pl_criminal_flee
input: pl_criminal_attack
input: pl_supernatural_flee
input: pl_supernatural_attack
input: WalkToNode
input: TweakParam
input: SetupPatrolType
input: FollowPatrolPath
input: ClearPatrolPath
input: StartPlayerDialog
input: StartPlayerDialogRemote
input: StartPlayerDialogUnforced
input: FleeAndDie
input: Faint
input: DisableThink
input: TeleportToEntity
input: TakeDamage
input: MakeInvincible
input: UseInteresting
input: SetInvestigateMode
input: SetInvestigateModeCombat
input: SetSpeechVolume
input: PlayDialogFile
input: AllowAlertLookaround
input: StayEntrenched
input: AllowKickHintUse
input: SetScriptedDiscipline
input: SetBloodShieldDiscipline
input: SetFollowerBoss
input: SetFollowerType
input: SetFallToGround
input: ChangeSchedule
input: SetDontFacePlayerInDialog
input: SetBossMonster
input: AllowOpenDoors
input: SetMovementMultiplier
input: SetDefaultDialogCamera
input: SetRelationship
input: HumanityAdd
input: Bloodloss
input: Bloodgain
input: ClearActiveDisciplines
input: physdamagescale
input: Inventory_Remove
input: MoneyAdd
input: MoneyRemove
input: BarterBegin
input: BarterEnd
input: BloodHeal
input: FrenzyCheck
input: FrenzyTrigger
input: HungerCheck
input: FrenzyUpdate
input: PlayFloat
input: WillTalk
input: ChangeMasqueradeLevel
input: FadeHeadAsCameraTarget
input: FadeBodyAsCameraTarget
input: SetHeadAsCameraTarget
input: SetBodyAsCameraTarget
input: LookAtEntityEye
input: LookAtEntityCenter
input: LookAtEntityOrigin
input: LookAtEntityDefault
input: skin
input: SetBodygroup
input: SetSkinFadeTime
input: FadeToSkin
input: SpawnTempParticle
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

npc_VTzimisceRunner

output: OnDialogBegin
output: OnDialogEnd
output: OnInterestingPlaceArrived
output: OnInterestingPlaceLeft
output: OnUnknownVisionPlayer
output: OnStateFleeing
output: OnIncapacitatedStart
output: OnIncapacitatedEnd
output: OnDamaged
output: OnDeath
output: OnHalfHealth
output: OnFoundEnemy
output: OnLostEnemyLOS
output: OnLostEnemy
output: OnFoundPlayer
output: OnLostPlayerLOS
output: OnLostPlayer
output: OnHearWorld
output: OnHearPlayer
output: OnHearCombat
output: OnGrappleBegin
output: OnGrappleEnd
output: OnFedUponBegin
output: OnFedUponEnd
output: OnSellWeapon
output: OnBarterClose
output: OnLinearMoveDone
output: OnAngularMoveDone
input: pl_investigate
input: pl_criminal_flee
input: pl_criminal_attack
input: pl_supernatural_flee
input: pl_supernatural_attack
input: WalkToNode
input: TweakParam
input: SetupPatrolType
input: FollowPatrolPath
input: ClearPatrolPath
input: StartPlayerDialog
input: StartPlayerDialogRemote
input: StartPlayerDialogUnforced
input: FleeAndDie
input: Faint
input: DisableThink
input: TeleportToEntity
input: TakeDamage
input: MakeInvincible
input: UseInteresting
input: SetInvestigateMode
input: SetInvestigateModeCombat
input: SetSpeechVolume
input: PlayDialogFile
input: AllowAlertLookaround
input: StayEntrenched
input: AllowKickHintUse
input: SetScriptedDiscipline
input: SetBloodShieldDiscipline
input: SetFollowerBoss
input: SetFollowerType
input: SetFallToGround
input: ChangeSchedule
input: SetDontFacePlayerInDialog
input: SetBossMonster
input: AllowOpenDoors
input: SetMovementMultiplier
input: SetDefaultDialogCamera
input: SetRelationship
input: HumanityAdd
input: Bloodloss
input: Bloodgain
input: ClearActiveDisciplines
input: physdamagescale
input: Inventory_Remove
input: MoneyAdd
input: MoneyRemove
input: BarterBegin
input: BarterEnd
input: BloodHeal
input: FrenzyCheck
input: FrenzyTrigger
input: HungerCheck
input: FrenzyUpdate
input: PlayFloat
input: WillTalk
input: ChangeMasqueradeLevel
input: FadeHeadAsCameraTarget
input: FadeBodyAsCameraTarget
input: SetHeadAsCameraTarget
input: SetBodyAsCameraTarget
input: LookAtEntityEye
input: LookAtEntityCenter
input: LookAtEntityOrigin
input: LookAtEntityDefault
input: skin
input: SetBodygroup
input: SetSkinFadeTime
input: FadeToSkin
input: SpawnTempParticle
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

"classname" "npc_VTzimisceRunner"
"angles" "0 0 0"
"renderfx" "0"
"rendermode" "0"
"renderamt" "255"
"rendercolor" "255 255 255"
"disableshadows" "1"
"disablereceiveshadows" "0"
"physdamagescale" "1.0"
"npc_perception" "3"
"vision" "1500"
"hearing" "-1.00"
"default_disposition" "Neutral"
"default_camera" "DialogDefault"
"demo_sequence" "None"
"skin" "0"
"npc_transparent" "1"
"skincolor" "0 0 0 0"
"haircolor" "0 0 0 0"
"clothescolor1" "0 0 0 0"
"clothescolor2" "0 0 0 0"
" trimcolor" "0 0 0 0"
"stattemplate" "TzimisceCreation3"
"player_reaction" "D_NU 0"
"interesting_place_groups" "0"
"use_interesting" "0"
"hint_groups" "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16"
"investigate_mode" "4"
"investigate_mode_combat" "4"
"full_investigate" "0"
"bright_route_penalty" "0"
"pl_investigate" "-1"
"pl_criminal_flee" "-1"
"pl_criminal_attack" "-1"
"pl_supernatural_flee" "-1"
"pl_supernatural_attack" "-1"
"percent_occluded_wait" "10"
"percent_occluded_cover" "30"
"percent_occluded_walk" "10"
"percent_occluded_flank" "20"
"percent_occluded_chase" "30"
"allow_alert_lookaround" "1"
"stay_entrenched" "0"
"allow_kick_hint_use" "1"
"floatfreq" "0"
"spawnflags" "4"
"model" "models/character/monster/tzimisce/creation3/tzim3.mdl"
"targetname" "Larry"
"StartHidden" "0"
"crossfade_skin_time" "2.0"
"combat_start_activity" "-1"
"follower_type" "Default"
"origin" "-501.218 -359.291 361"

npc_VVampire

output: OnDialogBegin
output: OnDialogEnd
output: OnInterestingPlaceArrived
output: OnInterestingPlaceLeft
output: OnUnknownVisionPlayer
output: OnStateFleeing
output: OnIncapacitatedStart
output: OnIncapacitatedEnd
output: OnDamaged
output: OnDeath
output: OnHalfHealth
output: OnFoundEnemy
output: OnLostEnemyLOS
output: OnLostEnemy
output: OnFoundPlayer
output: OnLostPlayerLOS
output: OnLostPlayer
output: OnHearWorld
output: OnHearPlayer
output: OnHearCombat
output: OnGrappleBegin
output: OnGrappleEnd
output: OnFedUponBegin
output: OnFedUponEnd
output: OnSellWeapon
output: OnBarterClose
output: OnLinearMoveDone
output: OnAngularMoveDone

input: pl_investigate
input: pl_criminal_flee
input: pl_criminal_attack
input: pl_supernatural_flee
input: pl_supernatural_attack
input: WalkToNode
input: TweakParam
input: SetupPatrolType
input: FollowPatrolPath
input: ClearPatrolPath
input: StartPlayerDialog
input: StartPlayerDialogRemote
input: StartPlayerDialogUnforced
input: FleeAndDie
input: Faint
input: DisableThink
input: TeleportToEntity
input: TakeDamage
input: MakeInvincible
input: UseInteresting
input: SetInvestigateMode
input: SetInvestigateModeCombat
input: SetSpeechVolume
input: PlayDialogFile
input: AllowAlertLookaround
input: StayEntrenched
input: AllowKickHintUse
input: SetScriptedDiscipline
input: SetBloodShieldDiscipline
input: SetFollowerBoss
input: SetFollowerType
input: SetFallToGround
input: ChangeSchedule
input: SetDontFacePlayerInDialog
input: SetBossMonster
input: AllowOpenDoors
input: SetMovementMultiplier
input: SetDefaultDialogCamera
input: SetRelationship
input: HumanityAdd
input: Bloodloss
input: Bloodgain
input: ClearActiveDisciplines
input: physdamagescale
input: Inventory_Remove
input: MoneyAdd
input: MoneyRemove
input: BarterBegin
input: BarterEnd
input: BloodHeal
input: FrenzyCheck
input: FrenzyTrigger
input: HungerCheck
input: FrenzyUpdate
input: PlayFloat
input: WillTalk
input: ChangeMasqueradeLevel
input: FadeHeadAsCameraTarget
input: FadeBodyAsCameraTarget
input: SetHeadAsCameraTarget
input: SetBodyAsCameraTarget
input: LookAtEntityEye
input: LookAtEntityCenter
input: LookAtEntityOrigin
input: LookAtEntityDefault
input: skin
input: SetBodygroup
input: SetSkinFadeTime
input: FadeToSkin
input: SpawnTempParticle
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

"targetname" "VV"
"angles" "0 219 0"
"renderfx" "0"
"rendermode" "0"
"renderamt" "255"
"rendercolor" "255 255 255"
"disableshadows" "1"
"disablereceiveshadows" "0"
"base_gender" "1"
"physdamagescale" "1.0"
"npc_perception" "3"
"vision" "-1"
"hearing" "-1.00"
"default_disposition" "Neutral"
"default_camera" "vdata/CameraShots/DialogDefaultWoman.txt"
"demo_sequence" "None"
"skin" "0"
"npc_transparent" "1"
"skincolor" "0 0 0 0"
"haircolor" "0 0 0 0"
"clothescolor1" "0 0 0 0"
"clothescolor2" "0 0 0 0"
"trimcolor" "0 0 0 0"
"stattemplate" "VampireCritical"
"player_reaction" "D_NU 0"
"interesting_place_groups" "11"
"use_interesting" "0"
"hint_groups" "1 2 3 4 5 6 7 8 9 10 11 12 13 14"
"investigate_mode" "0"
"investigate_mode_combat" "0"
"full_investigate" "0"
"bright_route_penalty" "0"
"pl_investigate" "-1"
"pl_criminal_flee" "-1"
"pl_criminal_attack" "-1"
"pl_supernatural_flee" "-1"
"pl_supernatural_attack" "-1"
"percent_occluded_wait" "10"
"percent_occluded_cover" "30"
"percent_occluded_walk" "10"
"percent_occluded_flank" "20"
"percent_occluded_chase" "30"
"allow_alert_lookaround" "1"
"stay_entrenched" "0"
"allow_kick_hint_use" "1"
"floatfreq" "0"
"spawnflags" "4"
"model" "models/character/npc/unique/Downtown/VV/VV.mdl"
"dialogname" "dlg/Hollywood/VV.dlg"
"StartHidden" "0"
"crossfade_skin_time" "2.0"
"combat_start_activity" "-1"
"follower_type" "Default"
"OnDialogEnd" ",,,0,-1,velvetRelocate(),"
"origin" "2976.51 520.543 -127"

npc_VVampireBoss

output: OnTransformComplete
output: OnDialogBegin
output: OnDialogEnd
output: OnInterestingPlaceArrived
output: OnInterestingPlaceLeft
output: OnUnknownVisionPlayer
output: OnStateFleeing
output: OnIncapacitatedStart
output: OnIncapacitatedEnd
output: OnDamaged
output: OnDeath
output: OnHalfHealth
output: OnFoundEnemy
output: OnLostEnemyLOS
output: OnLostEnemy
output: OnFoundPlayer
output: OnLostPlayerLOS
output: OnLostPlayer
output: OnHearWorld
output: OnHearPlayer
output: OnHearCombat
output: OnGrappleBegin
output: OnGrappleEnd
output: OnFedUponBegin
output: OnFedUponEnd
output: OnSellWeapon
output: OnBarterClose
output: OnLinearMoveDone
output: OnAngularMoveDone

input: TransformModel
input: pl_investigate
input: pl_criminal_flee
input: pl_criminal_attack
input: pl_supernatural_flee
input: pl_supernatural_attack
input: WalkToNode
input: TweakParam
input: SetupPatrolType
input: FollowPatrolPath
input: ClearPatrolPath
input: StartPlayerDialog
input: StartPlayerDialogRemote
input: StartPlayerDialogUnforced
input: FleeAndDie
input: Faint
input: DisableThink
input: TeleportToEntity
input: TakeDamage
input: MakeInvincible
input: UseInteresting
input: SetInvestigateMode
input: SetInvestigateModeCombat
input: SetSpeechVolume
input: PlayDialogFile
input: AllowAlertLookaround
input: StayEntrenched
input: AllowKickHintUse
input: SetScriptedDiscipline
input: SetBloodShieldDiscipline
input: SetFollowerBoss
input: SetFollowerType
input: SetFallToGround
input: ChangeSchedule
input: SetDontFacePlayerInDialog
input: SetBossMonster
input: AllowOpenDoors
input: SetMovementMultiplier
input: SetDefaultDialogCamera
input: SetRelationship
input: HumanityAdd
input: Bloodloss
input: Bloodgain
input: ClearActiveDisciplines
input: physdamagescale
input: Inventory_Remove
input: MoneyAdd
input: MoneyRemove
input: BarterBegin
input: BarterEnd
input: BloodHeal
input: FrenzyCheck
input: FrenzyTrigger
input: HungerCheck
input: FrenzyUpdate
input: PlayFloat
input: WillTalk
input: ChangeMasqueradeLevel
input: FadeHeadAsCameraTarget
input: FadeBodyAsCameraTarget
input: SetHeadAsCameraTarget
input: SetBodyAsCameraTarget
input: LookAtEntityEye
input: LookAtEntityCenter
input: LookAtEntityOrigin
input: LookAtEntityDefault
input: skin
input: SetBodygroup
input: SetSkinFadeTime
input: FadeToSkin
input: SpawnTempParticle
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome
npc_VWerewolf

output: OnConditionDeathTriggered
output: OnBeginCrushAnimation
output: OnFinishCrushAnimation
output: OnTeleportOut
output: OnTeleportIn
output: OnDialogBegin
output: OnDialogEnd
output: OnInterestingPlaceArrived
output: OnInterestingPlaceLeft
output: OnUnknownVisionPlayer
output: OnStateFleeing
output: OnIncapacitatedStart
output: OnIncapacitatedEnd
output: OnDamaged
output: OnDeath
output: OnHalfHealth
output: OnFoundEnemy
output: OnLostEnemyLOS
output: OnLostEnemy
output: OnFoundPlayer
output: OnLostPlayerLOS
output: OnLostPlayer
output: OnHearWorld
output: OnHearPlayer
output: OnHearCombat
output: OnGrappleBegin
output: OnGrappleEnd
output: OnFedUponBegin
output: OnFedUponEnd
output: OnSellWeapon
output: OnBarterClose
output: OnLinearMoveDone
output: OnAngularMoveDone

input: ToggleDoorState
input: pl_investigate
input: pl_criminal_flee
input: pl_criminal_attack
input: pl_supernatural_flee
input: pl_supernatural_attack
input: WalkToNode
input: TweakParam
input: SetupPatrolType
input: FollowPatrolPath
input: ClearPatrolPath
input: StartPlayerDialog
input: StartPlayerDialogRemote
input: StartPlayerDialogUnforced
input: FleeAndDie
input: Faint
input: DisableThink
input: TeleportToEntity
input: TakeDamage
input: MakeInvincible
input: UseInteresting
input: SetInvestigateMode
input: SetInvestigateModeCombat
input: SetSpeechVolume
input: PlayDialogFile
input: AllowAlertLookaround
input: StayEntrenched
input: AllowKickHintUse
input: SetScriptedDiscipline
input: SetBloodShieldDiscipline
input: SetFollowerBoss
input: SetFollowerType
input: SetFallToGround
input: ChangeSchedule
input: SetDontFacePlayerInDialog
input: SetBossMonster
input: AllowOpenDoors
input: SetMovementMultiplier
input: SetDefaultDialogCamera
input: SetRelationship
input: HumanityAdd
input: Bloodloss
input: Bloodgain
input: ClearActiveDisciplines
input: physdamagescale
input: Inventory_Remove
input: MoneyAdd
input: MoneyRemove
input: BarterBegin
input: BarterEnd
input: BloodHeal
input: FrenzyCheck
input: FrenzyTrigger
input: HungerCheck
input: FrenzyUpdate
input: PlayFloat
input: WillTalk
input: ChangeMasqueradeLevel
input: FadeHeadAsCameraTarget
input: FadeBodyAsCameraTarget
input: SetHeadAsCameraTarget
input: SetBodyAsCameraTarget
input: LookAtEntityEye
input: LookAtEntityCenter
input: LookAtEntityOrigin
input: LookAtEntityDefault
input: skin
input: SetBodygroup
input: SetSkinFadeTime
input: FadeToSkin
input: SpawnTempParticle
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

npc_VYukie
output: OnDialogBegin
output: OnDialogEnd
output: OnInterestingPlaceArrived
output: OnInterestingPlaceLeft
output: OnUnknownVisionPlayer
output: OnStateFleeing
output: OnIncapacitatedStart
output: OnIncapacitatedEnd
output: OnDamaged
output: OnDeath
output: OnHalfHealth
output: OnFoundEnemy
output: OnLostEnemyLOS
output: OnLostEnemy
output: OnFoundPlayer
output: OnLostPlayerLOS
output: OnLostPlayer
output: OnHearWorld
output: OnHearPlayer
output: OnHearCombat
output: OnGrappleBegin
output: OnGrappleEnd
output: OnFedUponBegin
output: OnFedUponEnd
output: OnSellWeapon
output: OnBarterClose
output: OnLinearMoveDone
output: OnAngularMoveDone

input: pl_investigate
input: pl_criminal_flee
input: pl_criminal_attack
input: pl_supernatural_flee
input: pl_supernatural_attack
input: WalkToNode
input: TweakParam
input: SetupPatrolType
input: FollowPatrolPath
input: ClearPatrolPath
input: StartPlayerDialog
input: StartPlayerDialogRemote
input: StartPlayerDialogUnforced
input: FleeAndDie
input: Faint
input: DisableThink
input: TeleportToEntity
input: TakeDamage
input: MakeInvincible
input: UseInteresting
input: SetInvestigateMode
input: SetInvestigateModeCombat
input: SetSpeechVolume
input: PlayDialogFile
input: AllowAlertLookaround
input: StayEntrenched
input: AllowKickHintUse
input: SetScriptedDiscipline
input: SetBloodShieldDiscipline
input: SetFollowerBoss
input: SetFollowerType
input: SetFallToGround
input: ChangeSchedule
input: SetDontFacePlayerInDialog
input: SetBossMonster
input: AllowOpenDoors
input: SetMovementMultiplier
input: SetDefaultDialogCamera
input: SetRelationship
input: HumanityAdd
input: Bloodloss
input: Bloodgain
input: ClearActiveDisciplines
input: physdamagescale
input: Inventory_Remove
input: MoneyAdd
input: MoneyRemove
input: BarterBegin
input: BarterEnd
input: BloodHeal
input: FrenzyCheck
input: FrenzyTrigger
input: HungerCheck
input: FrenzyUpdate
input: PlayFloat
input: WillTalk
input: ChangeMasqueradeLevel
input: FadeHeadAsCameraTarget
input: FadeBodyAsCameraTarget
input: SetHeadAsCameraTarget
input: SetBodyAsCameraTarget
input: LookAtEntityEye
input: LookAtEntityCenter
input: LookAtEntityOrigin
input: LookAtEntityDefault
input: skin
input: SetBodygroup
input: SetSkinFadeTime
input: FadeToSkin
input: SpawnTempParticle
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

npc_VZombie

output: OnAttackedVictim
output: OnDialogBegin
output: OnDialogEnd
output: OnInterestingPlaceArrived
output: OnInterestingPlaceLeft
output: OnUnknownVisionPlayer
output: OnStateFleeing
output: OnIncapacitatedStart
output: OnIncapacitatedEnd
output: OnDamaged
output: OnDeath
output: OnHalfHealth
output: OnFoundEnemy
output: OnLostEnemyLOS
output: OnLostEnemy
output: OnFoundPlayer
output: OnLostPlayerLOS
output: OnLostPlayer
output: OnHearWorld
output: OnHearPlayer
output: OnHearCombat
output: OnGrappleBegin
output: OnGrappleEnd
output: OnFedUponBegin
output: OnFedUponEnd
output: OnSellWeapon
output: OnBarterClose
output: OnLinearMoveDone
output: OnAngularMoveDone

input: SetZombieAIType
input: pl_investigate
input: pl_criminal_flee
input: pl_criminal_attack
input: pl_supernatural_flee
input: pl_supernatural_attack
input: WalkToNode
input: TweakParam
input: SetupPatrolType
input: FollowPatrolPath
input: ClearPatrolPath
input: StartPlayerDialog
input: StartPlayerDialogRemote
input: StartPlayerDialogUnforced
input: FleeAndDie
input: Faint
input: DisableThink
input: TeleportToEntity
input: TakeDamage
input: MakeInvincible
input: UseInteresting
input: SetInvestigateMode
input: SetInvestigateModeCombat
input: SetSpeechVolume
input: PlayDialogFile
input: AllowAlertLookaround
input: StayEntrenched
input: AllowKickHintUse
input: SetScriptedDiscipline
input: SetBloodShieldDiscipline
input: SetFollowerBoss
input: SetFollowerType
input: SetFallToGround
input: ChangeSchedule
input: SetDontFacePlayerInDialog
input: SetBossMonster
input: AllowOpenDoors
input: SetMovementMultiplier
input: SetDefaultDialogCamera
input: SetRelationship
input: HumanityAdd
input: Bloodloss
input: Bloodgain
input: ClearActiveDisciplines
input: physdamagescale
input: Inventory_Remove
input: MoneyAdd
input: MoneyRemove
input: BarterBegin
input: BarterEnd
input: BloodHeal
input: FrenzyCheck
input: FrenzyTrigger
input: HungerCheck
input: FrenzyUpdate
input: PlayFloat
input: WillTalk
input: ChangeMasqueradeLevel
input: FadeHeadAsCameraTarget
input: FadeBodyAsCameraTarget
input: SetHeadAsCameraTarget
input: SetBodyAsCameraTarget
input: LookAtEntityEye
input: LookAtEntityCenter
input: LookAtEntityOrigin
input: LookAtEntityDefault
input: skin
input: SetBodygroup
input: SetSkinFadeTime
input: FadeToSkin
input: SpawnTempParticle
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

npc_maker

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.

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".
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.

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. You can override stattemplate values
within the local embedded declaration. For example, you would
likely set the model and starting equipment locally.

output: OnSpawnNPC
output: OnNPCDied
output: OnLastNPCDied
output: OnDialogBegin
output: OnDialogEnd
output: OnInterestingPlaceArrived
output: OnInterestingPlaceLeft
output: OnUnknownVisionPlayer
output: OnStateFleeing
output: OnIncapacitatedStart
output: OnIncapacitatedEnd
output: OnDamaged
output: OnDeath
output: OnHalfHealth
output: OnFoundEnemy
output: OnLostEnemyLOS
output: OnLostEnemy
output: OnFoundPlayer
output: OnLostPlayerLOS
output: OnLostPlayer
output: OnHearWorld
output: OnHearPlayer
output: OnHearCombat
output: OnGrappleBegin
output: OnGrappleEnd
output: OnFedUponBegin
output: OnFedUponEnd
output: OnSellWeapon
output: OnBarterClose
output: OnLinearMoveDone
output: OnAngularMoveDone

input: Spawn
input: Enable
input: Disable
input: Toggle
input: pl_investigate
input: pl_criminal_flee
input: pl_criminal_attack
input: pl_supernatural_flee
input: pl_supernatural_attack
input: WalkToNode
input: TweakParam
input: SetupPatrolType
input: FollowPatrolPath
input: ClearPatrolPath
input: StartPlayerDialog
input: StartPlayerDialogRemote
input: StartPlayerDialogUnforced
input: FleeAndDie
input: Faint
input: DisableThink
input: TeleportToEntity
input: TakeDamage
input: MakeInvincible
input: UseInteresting
input: SetInvestigateMode
input: SetInvestigateModeCombat
input: SetSpeechVolume
input: PlayDialogFile
input: AllowAlertLookaround
input: StayEntrenched
input: AllowKickHintUse
input: SetScriptedDiscipline
input: SetBloodShieldDiscipline
input: SetFollowerBoss
input: SetFollowerType
input: SetFallToGround
input: ChangeSchedule
input: SetDontFacePlayerInDialog
input: SetBossMonster
input: AllowOpenDoors
input: SetMovementMultiplier
input: SetDefaultDialogCamera
input: SetRelationship
input: HumanityAdd
input: Bloodloss
input: Bloodgain
input: ClearActiveDisciplines
input: physdamagescale
input: Inventory_Remove
input: MoneyAdd
input: MoneyRemove
input: BarterBegin
input: BarterEnd
input: BloodHeal
input: FrenzyCheck
input: FrenzyTrigger
input: HungerCheck
input: FrenzyUpdate
input: PlayFloat
input: WillTalk
input: ChangeMasqueradeLevel
input: FadeHeadAsCameraTarget
input: FadeBodyAsCameraTarget
input: SetHeadAsCameraTarget
input: SetBodyAsCameraTarget
input: LookAtEntityEye
input: LookAtEntityCenter
input: LookAtEntityOrigin
input: LookAtEntityDefault
input: skin
input: SetBodygroup
input: SetSkinFadeTime
input: FadeToSkin
input: SpawnTempParticle
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

"targetname" "Guards_Botch"
"angles" "0 180 0"
"renderfx" "0"
"rendermode" "0"
"renderamt" "255"
"rendercolor" "255 255 255"
"disableshadows" "1"
"disablereceiveshadows" "0"
"squadname" "squad_center"
"physdamagescale" "1.0"
"npc_perception" "3"
"vision" "1000"
"hearing" ".3"
"default_disposition" "Neutral"
"default_camera" "DialogDefault"
"model"
"models/character/npc/unique/Chinatown/Temple_Guard/Temple_Guard.mdl"
"demo_sequence" "None"
"skin" "1"
"crossfade_skin_time" "2.0"
"npc_transparent" "1"
"skincolor" "0 0 0 0"
"haircolor" "0 0 0 0"
"clothescolor1" "0 0 0 0"
"clothescolor2" "0 0 0 0"
"trimcolor" "0 0 0 0"
"stattemplate" "Tpl_standard"
"player_reaction" "D_HT 5"
"invincible" "0"
"interesting_place_groups" "0"
"use_interesting" "0"
"hint_groups" "1 2 3 4 5 6 7 8 9 10 "
"investigate_mode" "4"
"investigate_mode_combat" "4"
"full_investigate" "0"
"bright_route_penalty" "0"
"pl_investigate" "-1"
"pl_criminal_flee" "-1"
"pl_criminal_attack" "-1"
"pl_supernatural_flee" "-1"
"pl_supernatural_attack" "-1"
"percent_occluded_wait" "0"
"percent_occluded_cover" "0"
"percent_occluded_walk" "0"
"percent_occluded_flank" "0"
"percent_occluded_chase" "100"
"allow_alert_lookaround" "1"
"stay_entrenched" "0"
"allow_kick_hint_use" "1"
"floatfreq" "0"
"combat_start_activity" "-1"
"spawnflags" "4"
"additionalequipment" "item_w_katana"
"follower_type" "Default"
"StartHidden" "0"
"Flag_StartDisabled" "1"
"Flag_NPCClip" "1"
"Flag_Fade" "0"
"Flag_InfChild" "0"
"Flag_NoDrop" "1"
"MaxNPCCount" "3"
"SpawnFrequency" "120"
"MaxLiveChildren" "1"
"NPCType" "npc_VHumanCombatant"
"NPCTargetname" "Botch_Guards_Spawned"
"cantdropweapons" "1"
"team_name" "temple"
"Flag_ViewCone" "0"
"origin" "288 -72 8"

npc_maker_fleshpile

output: OnSpawnNPC
output: OnNPCDied
output: OnLastNPCDied
output: OnDialogBegin
output: OnDialogEnd
output: OnInterestingPlaceArrived
output: OnInterestingPlaceLeft
output: OnUnknownVisionPlayer
output: OnStateFleeing
output: OnIncapacitatedStart
output: OnIncapacitatedEnd
output: OnDamaged
output: OnDeath
output: OnHalfHealth
output: OnFoundEnemy
output: OnLostEnemyLOS
output: OnLostEnemy
output: OnFoundPlayer
output: OnLostPlayerLOS
output: OnLostPlayer
output: OnHearWorld
output: OnHearPlayer
output: OnHearCombat
output: OnGrappleBegin
output: OnGrappleEnd
output: OnFedUponBegin
output: OnFedUponEnd
output: OnSellWeapon
output: OnBarterClose
output: OnLinearMoveDone
output: OnAngularMoveDone

input: Spawn
input: Enable
input: Disable
input: Toggle
input: pl_investigate
input: pl_criminal_flee
input: pl_criminal_attack
input: pl_supernatural_flee
input: pl_supernatural_attack
input: WalkToNode
input: TweakParam
input: SetupPatrolType
input: FollowPatrolPath
input: ClearPatrolPath
input: StartPlayerDialog
input: StartPlayerDialogRemote
input: StartPlayerDialogUnforced
input: FleeAndDie
input: Faint
input: DisableThink
input: TeleportToEntity
input: TakeDamage
input: MakeInvincible
input: UseInteresting
input: SetInvestigateMode
input: SetInvestigateModeCombat
input: SetSpeechVolume
input: PlayDialogFile
input: AllowAlertLookaround
input: StayEntrenched
input: AllowKickHintUse
input: SetScriptedDiscipline
input: SetBloodShieldDiscipline
input: SetFollowerBoss
input: SetFollowerType
input: SetFallToGround
input: ChangeSchedule
input: SetDontFacePlayerInDialog
input: SetBossMonster
input: AllowOpenDoors
input: SetMovementMultiplier
input: SetDefaultDialogCamera
input: SetRelationship
input: HumanityAdd
input: Bloodloss
input: Bloodgain
input: ClearActiveDisciplines
input: physdamagescale
input: Inventory_Remove
input: MoneyAdd
input: MoneyRemove
input: BarterBegin
input: BarterEnd
input: BloodHeal
input: FrenzyCheck
input: FrenzyTrigger
input: HungerCheck
input: FrenzyUpdate
input: PlayFloat
input: WillTalk
input: ChangeMasqueradeLevel
input: FadeHeadAsCameraTarget
input: FadeBodyAsCameraTarget
input: SetHeadAsCameraTarget
input: SetBodyAsCameraTarget
input: LookAtEntityEye
input: LookAtEntityCenter
input: LookAtEntityOrigin
input: LookAtEntityDefault
input: skin
input: SetBodygroup
input: SetSkinFadeTime
input: FadeToSkin
input: SpawnTempParticle
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

"classname" "npc_maker_fleshpile"
"angles" "0 180 0"
"renderamt" "255"
"rendercolor" "255 255 255"
"disableshadows" "1"
"spawnflags" "0"
"physdamagescale" "1.0"
"npc_perception" "10"
"vision" "-1"
"hearing" "-1.00"
"default_disposition" "Neutral"
"default_camera" "DialogDefault"
"model" "models/character/monster/tzimisce/creation3/tzim3.mdl"
"demo_sequence" "None"
"npc_transparent" "1"
"skincolor" "0 0 0 0"
"haircolor" "0 0 0 0"
"clothescolor1" "0 0 0 0"
"clothescolor2" "0 0 0 0"
"trimcolor" "0 0 0 0"
"stattemplate" "TzimisceCreation3"
"player_reaction" "D_HT 10"
"hint_groups" "1 2 3 4 5 6 7 8 9 10 11 12 13 “
"investigate_mode" "4"
"investigate_mode_combat" "4"
"pl_investigate" "-1"
"pl_criminal_flee" "-1"
"pl_criminal_attack" "-1"
"pl_supernatural_flee" "-1"
"pl_supernatural_attack" "-1"
"percent_occluded_wait" "10"
"percent_occluded_cover" "30"
"percent_occluded_walk" "10"
"percent_occluded_flank" "20"
"percent_occluded_chase" "30"
"allow_kick_hint_use" "1"
"targetname" "fleshpile1"
"NPCType" "npc_VTzimisceRunner"
"Flag_StartDisabled" "0"
"Flag_NPCClip" "0"
"Flag_Fade" "0"
"Flag_InfChild" "1"
"Flag_NoDrop" "1"
"MaxNPCCount" "9999"
"SpawnFrequency" "5"
"MaxLiveChildren" "5"
"Flag_IsGlobalSpawner" "0"
"Flag_UseGlobalSpawnerSettings" "0"
"Flag_ZombieAIType" "0"
"crossfade_skin_time" "2.0"
"combat_start_activity" "-1"
"NPCSquadname" "runners"
"follower_type" "Default"
"origin" "374.434 243.992 -240"

npc_maker_zombie

output: OnSpawnNPC
output: OnNPCDied
output: OnLastNPCDied
output: OnDialogBegin
output: OnDialogEnd
output: OnInterestingPlaceArrived
output: OnInterestingPlaceLeft
output: OnUnknownVisionPlayer
output: OnStateFleeing
output: OnIncapacitatedStart
output: OnIncapacitatedEnd
output: OnDamaged
output: OnDeath
output: OnHalfHealth
output: OnFoundEnemy
output: OnLostEnemyLOS
output: OnLostEnemy
output: OnFoundPlayer
output: OnLostPlayerLOS
output: OnLostPlayer
output: OnHearWorld
output: OnHearPlayer
output: OnHearCombat
output: OnGrappleBegin
output: OnGrappleEnd
output: OnFedUponBegin
output: OnFedUponEnd
output: OnSellWeapon
output: OnBarterClose
output: OnLinearMoveDone
output: OnAngularMoveDone

input: Spawn
input: Enable
input: Disable
input: Toggle
input: pl_investigate
input: pl_criminal_flee
input: pl_criminal_attack
input: pl_supernatural_flee
input: pl_supernatural_attack
input: WalkToNode
input: TweakParam
input: SetupPatrolType
input: FollowPatrolPath
input: ClearPatrolPath
input: StartPlayerDialog
input: StartPlayerDialogRemote
input: StartPlayerDialogUnforced
input: FleeAndDie
input: Faint
input: DisableThink
input: TeleportToEntity
input: TakeDamage
input: MakeInvincible
input: UseInteresting
input: SetInvestigateMode
input: SetInvestigateModeCombat
input: SetSpeechVolume
input: PlayDialogFile
input: AllowAlertLookaround
input: StayEntrenched
input: AllowKickHintUse
input: SetScriptedDiscipline
input: SetBloodShieldDiscipline
input: SetFollowerBoss
input: SetFollowerType
input: SetFallToGround
input: ChangeSchedule
input: SetDontFacePlayerInDialog
input: SetBossMonster
input: AllowOpenDoors
input: SetMovementMultiplier
input: SetDefaultDialogCamera
input: SetRelationship
input: HumanityAdd
input: Bloodloss
input: Bloodgain
input: ClearActiveDisciplines
input: physdamagescale
input: Inventory_Remove
input: MoneyAdd
input: MoneyRemove
input: BarterBegin
input: BarterEnd
input: BloodHeal
input: FrenzyCheck
input: FrenzyTrigger
input: HungerCheck
input: FrenzyUpdate
input: PlayFloat
input: WillTalk
input: ChangeMasqueradeLevel
input: FadeHeadAsCameraTarget
input: FadeBodyAsCameraTarget
input: SetHeadAsCameraTarget
input: SetBodyAsCameraTarget
input: LookAtEntityEye
input: LookAtEntityCenter
input: LookAtEntityOrigin
input: LookAtEntityDefault
input: skin
input: SetBodygroup
input: SetSkinFadeTime
input: FadeToSkin
input: SpawnTempParticle
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

"classname" "npc_maker_zombie"
"targetname" "zombie_gate_2"
"angles" "0 171.5 0"
"renderfx" "0"
"rendermode" "0"
"renderamt" "255"
"rendercolor" "255 255 255"
"disableshadows" "1"
"disablereceiveshadows" "0"
"squadname" "zombie_squad_male"
"interesting_place_groups" "19"
"physdamagescale" "1.0"
"npc_perception" "3"
"vision" "-1"
"hearing" "-1.00"
"default_disposition" "Neutral"
"default_camera" "DialogDefault"
"model" "models/character/monster/undead/Female2/undead_Female2.mdl"
"demo_sequence" "None"
"skin" "0"
"npc_transparent" "1"
"skincolor" "0 0 0 0"
"haircolor" "0 0 0 0"
"clothescolor1" "0 0 0 0"
"clothescolor2" "0 0 0 0"
"trimcolor" "0 0 0 0"
"additionalequipment" "item_w_fists"
"stattemplate" "Zombie"
"player_reaction" "D_HT 0"
"use_interesting" "1"
"investigate_mode" "4"
"investigate_mode_combat" "4"
"bright_route_penalty" "0"
"pl_investigate" "-1"
"pl_criminal_flee" "-1"
"pl_criminal_attack" "-1"
"pl_supernatural_flee" "-1"
"pl_supernatural_attack" "-1"
"percent_occluded_wait" "10"
"percent_occluded_cover" "30"
"percent_occluded_walk" "10"
"percent_occluded_flank" "20"
"percent_occluded_chase" "30"
"allow_alert_lookaround" "0"
"stay_entrenched" "0"
"allow_kick_hint_use" "1"
"floatfreq" "5"
"NPCType" "npc_VZombie"
"NPCTargetname" "zombie"
"NPCSquadname" "zombie_squad_male"
"Flag_StartDisabled" "1"
"Flag_NPCClip" "0"
"Flag_Fade" "0"
"Flag_InfChild" "0"
"Flag_NoDrop" "0"
"MaxNPCCount" "8"
"SpawnFrequency" "5"
"MaxLiveChildren" "2"
"Flag_ZombieAIType" "2"
"spawnflags" "4"
"hint_groups" "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16â€
"crossfade_skin_time" "2.0"
"combat_start_activity" "-1"
"remove_distance" "3000"
"invincible" "0"
"full_investigate" "0"
"cantdropweapons" "0"
"teleport_move_timer" "0"
"should_ragdoll" "1"
"follower_type" "Default"
"origin" "2171.13 -1624.19 -107.896"

npc_payphone

output: OnDialogBegin
output: OnDialogEnd
output: OnInterestingPlaceArrived
output: OnInterestingPlaceLeft
output: OnUnknownVisionPlayer
output: OnStateFleeing
output: OnIncapacitatedStart
output: OnIncapacitatedEnd
output: OnDamaged
output: OnDeath
output: OnHalfHealth
output: OnFoundEnemy
output: OnLostEnemyLOS
output: OnLostEnemy
output: OnFoundPlayer
output: OnLostPlayerLOS
output: OnLostPlayer
output: OnHearWorld
output: OnHearPlayer
output: OnHearCombat
output: OnGrappleBegin
output: OnGrappleEnd
output: OnFedUponBegin
output: OnFedUponEnd
output: OnSellWeapon
output: OnBarterClose
output: OnLinearMoveDone
output: OnAngularMoveDone

input: pl_investigate
input: pl_criminal_flee
input: pl_criminal_attack
input: pl_supernatural_flee
input: pl_supernatural_attack
input: WalkToNode
input: TweakParam
input: SetupPatrolType
input: FollowPatrolPath
input: ClearPatrolPath
input: StartPlayerDialog
input: StartPlayerDialogRemote
input: StartPlayerDialogUnforced
input: FleeAndDie
input: Faint
input: DisableThink
input: TeleportToEntity
input: TakeDamage
input: MakeInvincible
input: UseInteresting
input: SetInvestigateMode
input: SetInvestigateModeCombat
input: SetSpeechVolume
input: PlayDialogFile
input: AllowAlertLookaround
input: StayEntrenched
input: AllowKickHintUse
input: SetScriptedDiscipline
input: SetBloodShieldDiscipline
input: SetFollowerBoss
input: SetFollowerType
input: SetFallToGround
input: ChangeSchedule
input: SetDontFacePlayerInDialog
input: SetBossMonster
input: AllowOpenDoors
input: SetMovementMultiplier
input: SetDefaultDialogCamera
input: SetRelationship
input: HumanityAdd
input: Bloodloss
input: Bloodgain
input: ClearActiveDisciplines
input: physdamagescale
input: Inventory_Remove
input: MoneyAdd
input: MoneyRemove
input: BarterBegin
input: BarterEnd
input: BloodHeal
input: FrenzyCheck
input: FrenzyTrigger
input: HungerCheck
input: FrenzyUpdate
input: PlayFloat
input: WillTalk
input: ChangeMasqueradeLevel
input: FadeHeadAsCameraTarget
input: FadeBodyAsCameraTarget
input: SetHeadAsCameraTarget
input: SetBodyAsCameraTarget
input: LookAtEntityEye
input: LookAtEntityCenter
input: LookAtEntityOrigin
input: LookAtEntityDefault
input: skin
input: SetBodygroup
input: SetSkinFadeTime
input: FadeToSkin
input: SpawnTempParticle
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

"model" "models/scenery/street/payphone/payphonereceiver.mdl"
"angles" "0 135 0"
"skin" "0"
"disableshadows" "1"
"StartHidden" "0"
"renderfx" "0"
"rendermode" "0"
"renderamt" "255"
"rendercolor" "255 255 255"
"disablereceiveshadows" "0"
"physdamagescale" "1.0"
"npc_perception" "3"
"vision" "-1"
"hearing" "-1.00"
"default_disposition" "Neutral"
"default_camera" "DialogDefault"
"demo_sequence" "None"
"crossfade_skin_time" "2.0"
"npc_transparent" "1"
"skincolor" "0 0 0 0"
"haircolor" "0 0 0 0"
"clothescolor1" "0 0 0 0"
"clothescolor2" "0 0 0 0"
"trimcolor" "0 0 0 0"
"stattemplate" "NPCGeneric"
"player_reaction" "D_NU 0"
"invincible" "0"
"interesting_place_groups" "0"
"use_interesting" "0"
"hint_groups" "1 2 3 4 5 6 7 8 9 10 11 12 13 14â€
"investigate_mode" "4"
"investigate_mode_combat" "4"
"full_investigate" "0"
"bright_route_penalty" "0"
"pl_investigate" "-1"
"pl_criminal_flee" "-1"
"pl_criminal_attack" "-1"
"pl_supernatural_flee" "-1"
"pl_supernatural_attack" "-1"
"percent_occluded_wait" "10"
"percent_occluded_cover" "30"
"percent_occluded_walk" "10"
"percent_occluded_flank" "20"
"percent_occluded_chase" "30"
"allow_alert_lookaround" "0"
"stay_entrenched" "0"
"allow_kick_hint_use" "1"
"dialogname" "dlg/Hollywood/Anoncaller.dlg"
"floatfreq" "0"
"combat_start_activity" "-1"
"spawnflags" "12"
"targetname" "Anoncaller"
"follower_type" "Default"
"OnDialogEnd" ",,,0,-1,AnonCallerDialogEnd(),"
"OnDialogBegin" "timer_anoncaller,Disable,,0,-1,,"
"OnDialogBegin" "sound_anoncaller,StopSound,,0,-1,,"
"origin" "-239.508 -442.292 -114"

PHYSICAL)

phys_animlink

phys_ballsocket

output: OnBreak
input: Break
input: ConstraintBroken
input: TurnOn
input: TurnOff

phys_constraint

output: OnBreak
input: Break
input: ConstraintBroken
input: TurnOn
input: TurnOff

phys_ballsocket : attached to a lantern


output: OnBreak
input: Break
input: ConstraintBroken
input: TurnOn
input: TurnOff

phys_convert -> converts door to debris

output: OnConvert
input: ConvertTarget

"targetname" "studiodoor2-phys_convert"
"target" "room2door"
"makedebris" "1"
"origin" "59.3695 6.6373 361"

phys_hinge

output: OnBreak
input: Break
input: ConstraintBroken
input: TurnOn
input: TurnOff

phys_thruster

POINT)

point_camera

input: FollowEntity

"targetname" "point_cam1"
"angles" "0 0 0"
"FOV" "90"
"look_dest" "300 560 -60"
"origin" "473.208 584.494 15.9093"

point_explosion

input: Explode

"angles" "0 0 0"


"targetname" "wallbreak_particles"
"spawnflags" "1"
"explosion_params" "break_wall_particles"
"origin" "484 684.159 -376"

point_target

"targetname" "cat_target"
"angles" "0 225 0"
"StartHidden" "1"
"origin" "122 -122 43"
point_teleport

input: Teleport

PROPS)

prop_button

output: OnPressed
output: OnPressedLocked
output: OnSetState1
output: OnSetState2
output: OnSetState3
output: OnSetState4
output: OnSetState5
output: OnSetState6
output: OnSetState7
output: OnSetState8
output: OnLinearMoveDone
output: OnAngularMoveDone

input: Lock
input: Unlock
input: ToggleLock
input: Use
input: SetState
input: skin
input: SetBodygroup
input: SetSkinFadeTime
input: FadeToSkin
input: SpawnTempParticle
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

prop_clockhand

output: OnLinearMoveDone
output: OnAngularMoveDone

input: skin
input: SetBodygroup
input: SetSkinFadeTime
input: FadeToSkin
input: SpawnTempParticle
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

prop_destructable

output: OnBreakLevel1
output: OnBreakLevel2
output: OnBreakLevel3
output: OnBreakLevel4
output: OnBreakLevel5
output: OnBreakLevel6
output: OnBreakLevel7
output: OnBreakLevel8
output: OnBreakLastLevel
output: OnBreak
output: OnHealthChanged
output: OnLinearMoveDone
output: OnAngularMoveDone

input: RemoveHealth
input: SetToDamageLevel
input: PlayAnimation
input: physdamagescale
input: Break
input: SetHealth
input: AddHealth
input: RemoveHealth
input: FadeOutKill
input: SetDebris
input: skin
input: SetBodygroup
input: SetSkinFadeTime
input: FadeToSkin
input: SpawnTempParticle
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

"angles" "0 90 0"


"model" "models/scenery/misc/gate/neogate.mdl"
"StartHidden" "0"
"health" "33"
"damage_absorption" "0"
"break_on_end" "1"
"physics_level" "9999"
"targetname" "gate_south"
"dmg_filter_name" "gate_dmg_filter"
"collideable_gibs" "0"
"dmg_model_1" "models/scenery/misc/gate/neogate_2.mdl"
"dmg_model_2" "models/scenery/misc/gate/neogate_3.mdl"
"dmg_model_3" "models/scenery/misc/gate/neogate_4.mdl"
"spawnflags" "0"
"only_dmg_on_input" "1"
"OnBreakLastLevel" "Gate Break Out,PlaySound,,0,-1,,"
"OnBreakLevel4" "Gate Break Level,PlaySound,,0,-1,,"
"OnBreakLevel3" "Gate Break Level,PlaySound,,0,-1,,"
"OnBreakLevel2" "Gate Break Level,PlaySound,,0,-1,,"
"OnBreakLevel1" "Gate Break Level,PlaySound,,0,-1,,"
"OnHealthChanged" "Relay_south_gate_damage,Trigger,,0,-1,,"
"OnBreakLastLevel" "Relay_south_gate_break,Trigger,,0,-1,,"
"OnBreakLevel1" "Gate Break Level,StopSound,,4,-1,,"
"OnBreakLevel2" "Gate Break Level,StopSound,,4,-1,,"
"OnBreakLevel3" "Gate Break Level,StopSound,,4,-1,,"
"OnBreakLevel4" "Gate Break Level,StopSound,,4,-1,,"
"origin" "2620 -2831 -367"

prop_doorknob

output: OnSkillSuccess
output: OnSkillFail
output: OnSkillBotch
output: OnSkillAttemptBegin
output: OnSkillAttemptCycle
output: OnBreak
output: OnHealthChanged
output: OnLinearMoveDone
output: OnAngularMoveDone

input: Lock
input: Unlock
input: Use
input: ResetDifficulty
input: physdamagescale
input: Break
input: SetHealth
input: AddHealth
input: RemoveHealth
input: FadeOutKill
input: SetDebris
input: skin
input: SetBodygroup
input: SetSkinFadeTime
input: FadeToSkin
input: SpawnTempParticle
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

"angles" "0 90 0"


"parentname" "secretdoor2_locked"
"difficulty" "7"
"skilltype" "1"
"diceroll" "1"
"locksnd" "environmental/electronic/button_click_1.wav"
"delete_key" "0"
"model" "models/scenery/structural/doorknoba/drknobantique.mdl"
"use_icon" "10"
"locked_icon" "3"
"key_icon" "4"
"origin" "-301 -874 60"

prop_doorknob_electronic

output: OnSkillSuccess
output: OnSkillFail
output: OnSkillBotch
output: OnSkillAttemptBegin
output: OnSkillAttemptCycle
output: OnBreak
output: OnHealthChanged
output: OnLinearMoveDone
output: OnAngularMoveDone

input: Lock
input: Unlock
input: Use
input: ResetDifficulty
input: physdamagescale
input: Break
input: SetHealth
input: AddHealth
input: RemoveHealth
input: FadeOutKill
input: SetDebris
input: skin
input: SetBodygroup
input: SetSkinFadeTime
input: FadeToSkin
input: SpawnTempParticle
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

"classname" "prop_doorknob_electronic"
"angles" "0 270 0"
"difficulty" "1"
"delete_key" "1"
"model" "models/scenery/structural/doorknoba/drknobantique.mdl"
"targetname" "theater_lock_right"
"parentname" "theater_door_right"
"key_name" "item_k_chinese_theatre_key"
"locksnd" "environmental/electronic/button_click_1.wav"
"StartHidden" "0"
"use_icon" "10"
"locked_icon" "3"
"key_icon" "4"
"origin" "-2786 -1537 -63"

prop_dynamic

output: OnAnimationBegun
output: OnAnimationDone
output: OnAnimationLoop
output: OnBreak
output: OnHealthChanged
output: OnLinearMoveDone
output: OnAngularMoveDone

input: SetAnimation
input: SetSkin
input: physdamagescale
input: Break
input: SetHealth
input: AddHealth
input: RemoveHealth
input: FadeOutKill
input: SetDebris
input: skin
input: SetBodygroup
input: SetSkinFadeTime
input: FadeToSkin
input: SpawnTempParticle
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

"angles" "0 0 0"


"skin" "0"
"disableshadows" "1"
"solid" "6"
"model" "models/scenery/structural/temple/pedestal3.mdl"
"StartHidden" "0"
"collideable_gibs" "0"
"health" "0"
"demo_sequence" "None"
"crossfade_skin_time" "2.0"
"npc_transparent" "1"
"RandomAnimation" "0"
"MinAnimTime" "5"
"MaxAnimTime" "10"
"origin" "-96 1024 17.7781"

prop_dynamic_ornament

output: OnAnimationBegun
output: OnAnimationDone
output: OnAnimationLoop
output: OnBreak
output: OnHealthChanged
output: OnLinearMoveDone
output: OnAngularMoveDone

input: SetAttached
input: Detach
input: SetAnimation
input: SetSkin
input: physdamagescale
input: Break
input: SetHealth
input: AddHealth
input: RemoveHealth
input: FadeOutKill
input: SetDebris
input: skin
input: SetBodygroup
input: SetSkinFadeTime
input: FadeToSkin
input: SpawnTempParticle
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

"targetname" "stake"
"angles" "0 0 0"
"collideable_gibs" "0"
"health" "0"
"demo_sequence" "None"
"skin" "0"
"crossfade_skin_time" "2.0"
"disableshadows" "1"
"npc_transparent" "1"
"solid" "6"
"RandomAnimation" "0"
"MinAnimTime" "5"
"MaxAnimTime" "10"
"model" "models/cinematic/Hollywood/Asphole/stake.mdl"
"StartHidden" "1"
"parentname" "Hunter"
"InitialOwner" "Hunter"
"spawnflags" "0"
"origin" "-231 667 0"

prop_hacking

output: OnTrigger0
output: OnTrigger1
output: OnTrigger2
output: OnTrigger3
output: OnTrigger4
output: OnTrigger5
output: OnTrigger6
output: OnTrigger7
output: OnSkillSuccess
output: OnSkillFail
output: OnSkillBotch
output: OnSkillAttemptBegin
output: OnSkillAttemptCycle
output: OnBreak
output: OnHealthChanged
output: OnLinearMoveDone
output: OnAngularMoveDone

input: Enable
input: Disable
input: ResetDifficulty
input: physdamagescale
input: Break
input: SetHealth
input: AddHealth
input: RemoveHealth
input: FadeOutKill
input: SetDebris
input: skin
input: SetBodygroup
input: SetSkinFadeTime
input: FadeToSkin
input: SpawnTempParticle
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

"model" "models/scenery/furniture/computer/monitor_useable.mdl"
"angles" "0 165 0"
"difficulty" "3"
"skilltype" "2"
"diceroll" "1"
"start_enabled" "1"
"textcolumns" "36"
"textrows" "24"
"ss_delay" "1.5"
"ss_start" "5.0"
"spawnflags" "0"
"hack_file" "vdata/HackTerminals/shrekhub3_metalop.txt"
"soundgroup" "old_computer"
"OnTrigger2" ",,,0,-1,G.Shubs_Act = 3,"
"OnTrigger0" "safe_lock,Unlock,,0,-1,,"
"OnTrigger1" "safe_lock,Lock,,0,-1,,"
"origin" "232.572 1178.21 35"

prop_haunted

output: OnFling
output: OnBeginShake
output: OnEndShake
output: OnBreak
output: OnHealthChanged
output: OnLinearMoveDone
output: OnAngularMoveDone

input: FlingNow
input: StopShaking
input: StartShaking
input: ShakeAndFling
input: physdamagescale
input: Break
input: SetHealth
input: AddHealth
input: RemoveHealth
input: FadeOutKill
input: SetDebris
input: skin
input: SetBodygroup
input: SetSkinFadeTime
input: FadeToSkin
input: SpawnTempParticle
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

prop_keypad

output: OnCorrectPassword
output: OnIncorrectPassword
output: OnSkillSuccess
output: OnSkillFail
output: OnSkillBotch
output: OnSkillAttemptBegin
output: OnSkillAttemptCycle
output: OnBreak
output: OnHealthChanged
output: OnLinearMoveDone
output: OnAngularMoveDone

input: Enable
input: Disable
input: ResetDifficulty
input: physdamagescale
input: Break
input: SetHealth
input: AddHealth
input: RemoveHealth
input: FadeOutKill
input: SetDebris
input: skin
input: SetBodygroup
input: SetSkinFadeTime
input: FadeToSkin
input: SpawnTempParticle
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

prop_largehull_ignore (observatory, pillar2)

output: OnLinearMoveDone
output: OnAngularMoveDone

input: skin
input: SetBodygroup
input: SetSkinFadeTime
input: FadeToSkin
input: SpawnTempParticle
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

prop_mover (beachhouse)

output: OnLinearMoveDone
output: OnAngularMoveDone

input: skin
input: SetBodygroup
input: SetSkinFadeTime
input: FadeToSkin
input: SpawnTempParticle
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

prop_padlock

output: OnSkillSuccess
output: OnSkillFail
output: OnSkillBotch
output: OnSkillAttemptBegin
output: OnSkillAttemptCycle
output: OnBreak
output: OnHealthChanged
output: OnLinearMoveDone
output: OnAngularMoveDone

input: Lock
input: Unlock
input: Use
input: ResetDifficulty
input: physdamagescale
input: Break
input: SetHealth
input: AddHealth
input: RemoveHealth
input: FadeOutKill
input: SetDebris
input: skin
input: SetBodygroup
input: SetSkinFadeTime
input: FadeToSkin
input: SpawnTempParticle
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

prop_physics

output: OnBreak
output: OnHealthChanged
output: OnLinearMoveDone
output: OnAngularMoveDone

input: Wake
input: SetCausesImpactDamage
input: physdamagescale
input: Break
input: SetHealth
input: AddHealth
input: RemoveHealth
input: FadeOutKill
input: SetDebris
input: skin
input: SetBodygroup
input: SetSkinFadeTime
input: FadeToSkin
input: SpawnTempParticle
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

"model" "models/scenery/furniture/file_cabinet/file_cabinet_ruin.mdl"
"angles" "0 0 0"
"skin" "0"
"disableshadows" "1"
"health" "0"
"ExplodeDamage" "0"
"ExplodeRadius" "0"
"physdamagescale" "0.1"
"demo_sequence" "None"
"npc_transparent" "1"
"override_mass" "-1"
"crossfade_skin_time" "2.0"
"origin" "-1048 884 240.384"

prop_physics_contested

output: OnBreakConstraint
output: OnBreak
output: OnHealthChanged
output: OnLinearMoveDone
output: OnAngularMoveDone

input: Wake
input: SetCausesImpactDamage
input: physdamagescale
input: Break
input: SetHealth
input: AddHealth
input: RemoveHealth
input: FadeOutKill
input: SetDebris
input: skin
input: SetBodygroup
input: SetSkinFadeTime
input: FadeToSkin
input: SpawnTempParticle
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

prop_radio

output: OnLinearMoveDone
output: OnAngularMoveDone

input: Activate
input: Deactivate
input: skin
input: SetBodygroup
input: SetSkinFadeTime
input: FadeToSkin
input: SpawnTempParticle
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

"classname" "prop_radio"
"radius" "800.0"
"angles" "0 228.5 0"
"volume" "1.0"
"model" "models/scenery/misc/GehtoBlaster1/GehtoBlaster1.mdl"
"spawnflags" "1"
"targetname" "Radio1"
"origin" "220 -406 40"

prop_ragdoll

output: OnLinearMoveDone
output: OnAngularMoveDone

input: physdamagescale
input: skin
input: SetBodygroup
input: SetSkinFadeTime
input: FadeToSkin
input: SpawnTempParticle
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

"angles" "-27.6393 31.5781 37.0422"


"disableshadows" "1"
"physdamagescale" "1.0"
"demo_sequence" "None"
"skin" "0"
"npc_transparent" "1"
"spawnflags" "8196"
"model"
"models/character/npc/common/lotusblossom_girl/lotusblossom_girl.mdl"
"targetname" "PrissyMcButterjizzles"
"StartHidden" "0"
"crossfade_skin_time" "2.0"
"origin" "-38 82 128"

prop_sign

output: OnReadBegin
output: OnReadEnd
output: OnLinearMoveDone
output: OnAngularMoveDone

input: ChangeFile
input: skin
input: SetBodygroup
input: SetSkinFadeTime
input: FadeToSkin
input: SpawnTempParticle
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

"StartHidden" "0"
"angles" "85.5 270 -90"
"demo_sequence" "None"
"skin" "0"
"disableshadows" "1"
"npc_transparent" "1"
"model" "models/items/LinedPaper/Ground/LinedPaper.mdl"
"definition_file" "vdata/Signs/Sinbin_Note.txt"
"crossfade_skin_time" "2.0"
"use_icon" "18"
"origin" "107 487 -112.143"

prop_slashable (art gallery pict)

output: OnSlashed
output: OnLinearMoveDone
output: OnAngularMoveDone

input: skin
input: SetBodygroup
input: SetSkinFadeTime
input: FadeToSkin
input: SpawnTempParticle
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

prop_switch

output: OnActivate
output: OnDeactivate
output: OnUse
output: OnLockedUse
output: OnLinearMoveDone
output: OnAngularMoveDone

input: Toggle
input: Lock
input: Unlock
input: Activate
input: Deactivate
input: skin
input: SetBodygroup
input: SetSkinFadeTime
input: FadeToSkin
input: SpawnTempParticle
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

"angles" "0 0 0"


"model" "models/scenery/structural/temple/pedestal2.mdl"
"StartHidden" "1"
"use_icon" "0"
"soundgroup" "elevator_button"
"targetname" "pedestal_elephant_final_old"
"demo_sequence" "None"
"skin" "0"
"crossfade_skin_time" "2.0"
"disableshadows" "1"
"npc_transparent" "1"
"collideable_gibs" "0"
"health" "0"
"solid" "6"
"reset_state" "0"
"spawnflags" "16384"
"locked_icon" "12"
"OnActivate" ",,,0.1,-1,tpl3_check_pedestals(),"
"OnActivate" ",,,0,-1,G.tpl3_elephant_final = 1,"
"OnActivate" "secretdoor1,ScriptUnhide,,0,-1,,"
"OnActivate" "pedestal_elephant_final,Lock,,0.1,-1,,"
"origin" "93 121 7.7781"

TRIGGERS)

trigger_autosave

output: OnStartTouch
output: OnEndTouch
output: OnLinearMoveDone
output: OnAngularMoveDone

input: Enable
input: Disable
input: Toggle
input: ToggleFlagClient
input: ToggleFlagNPC
input: EnableFlagClient
input: EnableFlagNPC
input: DisableFlagClient
input: DisableFlagNPC
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

trigger_bomb_site

output: OnBombPlaced
output: OnBombDefused
output: OnStartTouch
output: OnEndTouch
output: OnLinearMoveDone
output: OnAngularMoveDone
input: Enable
input: Disable
input: Toggle
input: ToggleFlagClient
input: ToggleFlagNPC
input: EnableFlagClient
input: EnableFlagNPC
input: DisableFlagClient
input: DisableFlagNPC
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

trigger_changelevel

output: OnChangeLevel
output: OnStartTouch
output: OnEndTouch
output: OnLinearMoveDone
output: OnAngularMoveDone

input: ChangeNow
input: Enable
input: Disable
input: Toggle
input: ToggleFlagClient
input: ToggleFlagNPC
input: EnableFlagClient
input: EnableFlagNPC
input: DisableFlagClient
input: DisableFlagNPC
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

"model" "*32"
"map" "hw_redspot_1"
"landmark" "redspot2"
"targetname" "RedSpotTeleport2"
"spawnflags" "2"
"origin" "-734.5 -165.5 -58"
"OnChangeLevel" "patrol_cop_*,ClearPatrolPath,,0,-1,,"
"OnChangeLevel" ",,,0,-1,unfinishedHo(),"
"OnChangeLevel" "logic_sam_masq,Trigger,,0,-1,,"

trigger_checkvolume

output: OnEntityInVolume
output: OnStartTouch
output: OnEndTouch
output: OnLinearMoveDone
output: OnAngularMoveDone
input: CheckNow
input: Enable
input: Disable
input: Toggle
input: ToggleFlagClient
input: ToggleFlagNPC
input: EnableFlagClient
input: EnableFlagNPC
input: DisableFlagClient
input: DisableFlagNPC
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

trigger_discipline_context

output: OnStartTouch
output: OnEndTouch
output: OnLinearMoveDone
output: OnAngularMoveDone

input: Enable
input: Disable
input: Toggle
input: ToggleFlagClient
input: ToggleFlagNPC
input: EnableFlagClient
input: EnableFlagNPC
input: DisableFlagClient
input: DisableFlagNPC
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

trigger_electric_bugaloo

output: OnStartTouch
output: OnEndTouch
output: OnLinearMoveDone
output: OnAngularMoveDone

input: Enable
input: Disable
input: Toggle
input: ToggleFlagClient
input: ToggleFlagNPC
input: EnableFlagClient
input: EnableFlagNPC
input: DisableFlagClient
input: DisableFlagNPC
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome
"model" "*21"
"StartDisabled" "0"
"spawnflags" "1"
"origin" "78 686 36"
"targetname" "player_dance_trigger"
"OnUseEnd" "dance_spot,Enable,,0,-1,,"
"OnUseEnd" "dance_spot_player,Disable,,0,-1,,"
"OnUseBegin" "dance_spot_player,Enable,,0,-1,,"
"OnUseBegin" "dance_spot,Disable,,0,-1,,"

trigger_environmental_audio

output: OnStartTouch
output: OnEndTouch
output: OnLinearMoveDone
output: OnAngularMoveDone

input: Enable
input: Disable
input: Toggle
input: ToggleFlagClient
input: ToggleFlagNPC
input: EnableFlagClient
input: EnableFlagNPC
input: DisableFlagClient
input: DisableFlagNPC
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

"model" "*40"
"StartDisabled" "0"
"room_type" "6"
"spawnflags" "1"
"origin" "-1918 -711.5 -286.5"

trigger_hurt

output: OnHurt
output: OnHurtPlayer
output: OnStartTouch
output: OnEndTouch
output: OnLinearMoveDone
output: OnAngularMoveDone

input: HurtNow
input: SetDamage
input: Enable
input: Disable
input: Toggle
input: ToggleFlagClient
input: ToggleFlagNPC
input: EnableFlagClient
input: EnableFlagNPC
input: DisableFlagClient
input: DisableFlagNPC
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

"model" "*41"
"classname" "trigger_hurt"
"targetname" "Blade_L1_Hurt"
"StartDisabled" "0"
"damage" "30"
"damagetype" "0"
"damagevelocitymag" "10"
"damagevelocitydir" "0"
"spawnflags" "3"
"origin" "-830 919.67 58"
"damagevelocitypos" "-830.11 927.67 58"
"parentname" "Blade_L1_Rotater"

trigger_impact

output: ImpactForce
output: OnTrigger
output: OnStartTouch
output: OnEndTouch
output: OnLinearMoveDone
output: OnAngularMoveDone

input: Impact
input: SetMagnitude
input: Enable
input: Disable
input: Toggle
input: ToggleFlagClient
input: ToggleFlagNPC
input: EnableFlagClient
input: EnableFlagNPC
input: DisableFlagClient
input: DisableFlagNPC
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

trigger_inventory_check

output: OnPlayerHasItem
output: OnStartTouch
output: OnEndTouch
output: OnLinearMoveDone
output: OnAngularMoveDone

input: Enable
input: Disable
input: Toggle
input: ToggleFlagClient
input: ToggleFlagNPC
input: EnableFlagClient
input: EnableFlagNPC
input: DisableFlagClient
input: DisableFlagNPC
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

trigger_look

output: OnTrigger
output: OnStartTouch
output: OnEndTouch
output: OnLinearMoveDone
output: OnAngularMoveDone

input: FieldOfView
input: LookTime
input: Enable
input: Disable
input: Toggle
input: ToggleFlagClient
input: ToggleFlagNPC
input: EnableFlagClient
input: EnableFlagNPC
input: DisableFlagClient
input: DisableFlagNPC
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

"model" "*30"
"LookTime" "0.5"
"FieldOfView" "0.9"
"spawnflags" "129"
"origin" "-248 -729.5 -434"
"target" "point_3"
"targetname" "trig_3"
"OnTrigger" "logic_vision_2,Trigger,,0,-1,,"
"OnTrigger" "hunter_2,SetRelationship,Ash D_HT 5,0.5,-1,,"
"OnTrigger" "hunter_2_vision,SetRelationship,Ash D_HT 5,0.5,-1,,"
"OnTrigger" "hunter_2_vision,ScriptUnhide,,0.2,-1,,"
"OnStartTouch" "Ash,SetFollowerType,CombatNonCombatant,0,-1,,"
"OnTrigger" "trig_3,Kill,,0.5,-1,,"
"OnTrigger" "npc_cam_2,ScriptUnhide,,0,-1,,"
"OnTrigger" "hunter_2,ScriptUnhide,,0,-1,,"

trigger_multiple

output: OnTrigger
output: OnStartTouch
output: OnEndTouch
output: OnLinearMoveDone
output: OnAngularMoveDone

input: Enable
input: Disable
input: Toggle
input: ToggleFlagClient
input: ToggleFlagNPC
input: EnableFlagClient
input: EnableFlagNPC
input: DisableFlagClient
input: DisableFlagNPC
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

"model" "*6"
"targetname" "teleport_trigger"
"StartHidden" "1"
"StartDisabled" "0"
"wait" "1"
"spawnflags" "1"
"origin" "0 0 60.5"
"filtername" "prostitute_filter"
"OnTrigger" "temple_arena_transition,ChangeNow,,0,-1,,"
"OnStartTouch" "sound_cenertery,FadeOut,5,0,-1,,"
"OnStartTouch" "sound_Hollow,FadeIn,5,0,-1,,"
"OnEndTouch" "sound_Hollow,FadeOut,5,0,-1,,"
"OnEndTouch" "sound_cenertery,FadeIn,5,0,-1,,"

trigger_once

output: OnTrigger
output: OnStartTouch
output: OnEndTouch
output: OnLinearMoveDone
output: OnAngularMoveDone

input: Enable
input: Disable
input: Toggle
input: ToggleFlagClient
input: ToggleFlagNPC
input: EnableFlagClient
input: EnableFlagNPC
input: DisableFlagClient
input: DisableFlagNPC
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

"model" "*36"
"spawnflags" "1"
"origin" "697.5 1301.5 -76.14"
"targetname" "trig_bob_look"
"OnStartTouch" "logic_bobunderstairs,Trigger,,0,-1,,"
trigger_player_activity_level

output: OnStartTouch
output: OnEndTouch
output: OnLinearMoveDone
output: OnAngularMoveDone

input: SetSupernaturalLevel
input: SetCriminalLevel
input: SetInvestigateLevel
input: Enable
input: Disable
input: Toggle
input: ToggleFlagClient
input: ToggleFlagNPC
input: EnableFlagClient
input: EnableFlagNPC
input: DisableFlagClient
input: DisableFlagNPC
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

trigger_push

output: OnStartTouch
output: OnEndTouch
output: OnLinearMoveDone
output: OnAngularMoveDone
output: OnUseBegin
output: OnUseEnd
input: SetSpeed
input: SetTargetSpeed
input: SetAcceleration
input: accel
input: Enable
input: Disable
input: Toggle
input: ToggleFlagClient
input: ToggleFlagNPC
input: EnableFlagClient
input: EnableFlagNPC
input: DisableFlagClient
input: DisableFlagNPC
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

trigger_small_hull

output: OnStartTouch
output: OnEndTouch
output: OnLinearMoveDone
output: OnAngularMoveDone
input: Enable
input: Disable
input: Toggle
input: ToggleFlagClient
input: ToggleFlagNPC
input: EnableFlagClient
input: EnableFlagNPC
input: DisableFlagClient
input: DisableFlagNPC
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

"model" "*32"
"StartDisabled" "0"
"spawnflags" "1"
"origin" "-431 -182.5 239"

trigger_stealth_mod

output: OnStartTouch
output: OnEndTouch
output: OnLinearMoveDone
output: OnAngularMoveDone

input: Enable
input: Disable
input: Toggle
input: ToggleFlagClient
input: ToggleFlagNPC
input: EnableFlagClient
input: EnableFlagNPC
input: DisableFlagClient
input: DisableFlagNPC
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

"model" "*8"
"StartDisabled" "0"
"stealth_modifier" "5"
"spawnflags" "1"
"origin" "135 1119.5 -67"

trigger_teleport

output: OnStartTouch
output: OnEndTouch
output: OnLinearMoveDone
output: OnAngularMoveDone

input: Enable
input: Disable
input: Toggle
input: ToggleFlagClient
input: ToggleFlagNPC
input: EnableFlagClient
input: EnableFlagNPC
input: DisableFlagClient
input: DisableFlagNPC
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

trigger_werewolf_zone

output: OnStartTouch
output: OnEndTouch
output: OnLinearMoveDone
output: OnAngularMoveDone

input: Enable
input: Disable
input: Toggle
input: ToggleFlagClient
input: ToggleFlagNPC
input: EnableFlagClient
input: EnableFlagNPC
input: DisableFlagClient
input: DisableFlagNPC
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

MISC)

infodecal

NOTES: Used to decorate rooms. Could be blood or sign designating room


as
bathroom. Simply takes texture name and origin.

"texture" "decals/pictures/loft010"
"origin" "-252 -8.61783 162.047"

keyframe_rope

EVENTS:

METHODS:

input: SetScrollSpeed
input: SetForce
input: Break

PROPERTIES (ex):

"MoveSpeed" "64"
"Slack" "25"
"Type" "0"
"Subdiv" "2"
"Barbed" "0"
"Width" "2"
"TextureScale" "1"
"Collide" "0"
"Dangling" "0"
"Breakable" "0"
"RopeMaterial" "cable/cable"
"angles" "0 0 0"
"targetname" "light8"
"MoveTime" "1"
"origin" "-1008 236 453"

math_counter

output: OutValue
output: OnHitMin
output: OnHitMax

input: Add
input: Divide
input: Multiply
input: SetValue
input: Subtract

"classname" "math_counter"
"startvalue" "0" *if max, counts down. If in, counts up
"min" "0"
"max" "7"
"targetname" "tong_counter"
"OnHitMin" "slide_door_1,Open,,2,-1,,"
"OnHitMin" "slide_door_2,Open,,1,-1,,"
"OnHitMin" "slide_door_3,Open,,3,-1,,"
"OnHitMin" "Tong_Wave2_*,ScriptUnhide,,1,-1,npcTongWave2HateZhao(),"
"OnHitMax" "pc,ClearDialogCombatTimers,,0,-1,,"
"origin" "-928.825 838.767 249"

move_rope

input: SetScrollSpeed
input: SetForce
input: Break

"MoveSpeed" "64"
"PositionInterpolator" "0"
"Slack" "25"
"Type" "0"
"Subdiv" "2"
"Barbed" "0"
"Width" "2"
"TextureScale" "1"
"Collide" "0"
"Dangling" "0"
"Breakable" "0"
"RopeMaterial" "cable/cable"
"NextKey" "light8"
"MoveTime" "0.671875"
"origin" "-1008 236 496"

mover_keyframe

output: OnReached

"targetname" "t5"
"NextKey" "t1"
"origin" "6304 1136 -295"

params_explosion : fishmarket

"classname" "params_explosion"
"angles" "0 0 0"
"dl_color" "255 128 64"
"dl_radius" "500"
"dl_time" "2"
"dl_decay" "1500"
"dl_exponent" "0"
"dmg_amount" "5"
"dmg_radius" "500"
"damage_players" "1"
"damage_npcs" "0"
"damage_breakables" "1"
"shk_amp" "4"
"shk_freq" "0"
"shk_dur" "0"
"shk_radius" "0"
"shk_inair" "1"
"particle" "particles/C_Theater_Collum_Emitter.txt"
"snd_name" "Epic/Explosion8.wav"
"snd_dist" "1500"
"snd_pitch_min" "98"
"snd_pitch_max" "105"
"spawnflags" "111"
"targetname" "break_wall_particles"
"origin" "484 684.159 -308"

params_particle

scripted_sequence

NOTES: Scripted Sequences are used to execute animations and movements


on map
characeters. By default, they execute once and then
self-delete. You
can override this behavior by setting some of the spawn flags:

bit value Meaning bit value Meaning


1 1 9 256 Enable
looping Post Idle Animation
2 2 10 512
3 4 Persistent 11 1024
4 8 12 2048
5 16 Start Enabled 13 4096
6 32 14 8192
7 64 15 16384
8 128 16 32768

Persistent + Idle Animation Enabled = 4 + 256 = 260

"m_flRadius"- Search radius for entities. Depending on the


spawn flag,
it may or may not care if the Entity matches the
name of
the m_iszEntity property.

"m_iszIdle" - If set, this is the animation that plays PRIOR to


calling
BeginSequence. Only has affect if StartEnabled is
true.

"m_iszPlay" - When you call BeginSequence, this is the


animation that
plays (One time shot)

"m_iszPostIdle" - Animaiton that plays after m_iszPlay.

"m_fMoveTo" - 0 : entities play animations where they are.


1 : entities walk to scripted_sequence origin,
then begin animations
2 : entities run to scripted_sequence origin,
then begin animations
3 : entities walk to scripted_sequence origin,
then begin animations. Walk back when finished
4 : like 3, however entities teleport back to
original location when animation
is complete.

output: OnBeginSequence
output: OnEndSequence
output: OnScriptEvent01
output: OnScriptEvent02
output: OnScriptEvent03
output: OnScriptEvent04
output: OnScriptEvent05
output: OnScriptEvent06
output: OnScriptEvent07
output: OnScriptEvent08
output: OnDamaged
output: OnDeath
output: OnHalfHealth
output: OnFoundEnemy
output: OnLostEnemyLOS
output: OnLostEnemy
output: OnFoundPlayer
output: OnLostPlayerLOS
output: OnLostPlayer
output: OnHearWorld
output: OnHearPlayer
output: OnHearCombat
output: OnGrappleBegin
output: OnGrappleEnd
output: OnFedUponBegin
output: OnFedUponEnd
output: OnSellWeapon
output: OnBarterClose
output: OnLinearMoveDone
output: OnAngularMoveDone

input: MoveToPosition
input: BeginSequence
input: CancelSequence
input: SetRelationship
input: HumanityAdd
input: Bloodloss
input: Bloodgain
input: ClearActiveDisciplines
input: physdamagescale
input: Inventory_Remove
input: MoneyAdd
input: MoneyRemove
input: BarterBegin
input: BarterEnd
input: BloodHeal
input: FrenzyCheck
input: FrenzyTrigger
input: HungerCheck
input: FrenzyUpdate
input: PlayFloat
input: WillTalk
input: ChangeMasqueradeLevel
input: FadeHeadAsCameraTarget
input: FadeBodyAsCameraTarget
input: SetHeadAsCameraTarget
input: SetBodyAsCameraTarget
input: LookAtEntityEye
input: LookAtEntityCenter
input: LookAtEntityOrigin
input: LookAtEntityDefault
input: skin
input: SetBodygroup
input: SetSkinFadeTime
input: FadeToSkin
input: SpawnTempParticle
input: MoveToDest
input: MoveToHome
input: RotateToDest
input: RotateToHome

"m_flRadius" "512"
"m_flRepeat" "0"
"m_fMoveTo" "2"
"angles" "0 0 0"
"m_iszEntity" "romero"
"targetname" "romero_zombie_shot_1"
"spawnflags" "4704"
"StartHidden" "0"
"m_iszPlay" "m37_attack"
"m_iszNextScript" "romero_zombie_shot_2"
"OnBeginSequence" "ss_zombie_1,ScriptUnhide,,0,-1,,"
"OnBeginSequence" "ss_zombie_2,ScriptUnhide,,0,-1,,"
"OnBeginSequence" "ss_zombie_3,ScriptUnhide,,0,-1,,"
"OnEndSequence" "ss_zombie_1,TakeDamage,500,0,-1,,"
"OnEndSequence" ",,,0,-1,leaveCemetery(),"
"origin" "1554 -1165 -109"

Unrecognized:

npc_BaseVampAI (JunkYard)npc_maker
ent_angl ??
worldspawn <- dont touch
z ??
point_stop_sign ???

===================================
How do I figure out what functions I can call on entities?
===================================

Examples :

ent_info npc_VDialogPedestrian
ent_info npc_VPedestrian
ent_info npc_VVampire

------------------------------------------------------------------------
-------
H. > > > > Animations
------------------------------------------------------------------------
-------

animal_feed.mdl

- rat_feed_attacker_release
- rat_feed_attacker_loop
- rat_feed_attacker_engage

baseball.mdl

- baseballbat_attack_med
- baseballbat_attack_lowcombo
- baseballbat_attack_low
- baseballbat_attack_farcombo
- baseballbat_attack_far
- baseballbat_attack_jumpcombo
- baseballbat_attack_jump
- baseballbat_attack_heavy
- baseballbat_attack_heavy_a
- baseballbat_attack_dodge
- baseballbat_attack_idle
- baseballbat_attack_fidget
- baseballbat_attack_air
- baseballbat_attack_W1
- baseballbat_attack_W2
- baseballbat_attack_W3
- baseballbat_attack_Center1
- baseballbat_attack_Center2
- baseballbat_attack_A1
- baseballbat_attack_A2
- baseballbat_attack_W2a
- baseballbat_block
- baseballbat_block_heavy
- baseballbat_preblock
- baseballbat_blocked_reaction_left
- baseballbat_blocked_reaction_right
- baseballbat_dodge_attack
- baseballbat_hunt_walk
- baseballbat_hunt_walk_lookleft
- baseballbat_hunt_walk_lookright
- baseballbat_alert_fidget_agro_lookaround
- baseballbat_alert_front_into
- baseballbat_alert_l90_into
- baseballbat_alert_r90_into
- baseballbat_alert_front_outof
- baseballbat_alert_l90_outof
- baseballbat_alert_r90_outof
- baseballbat_alert_180_outof
- stealth_success_attacker_shortvictim
- stealth_failure_attacker_shortvictim
- stealth_success_attacker_tallvictim
- stealth_failure_attacker_tallvictim
- stealth_success_victim_shortattacker
- stealth_failure_victim_shortattacker
- stealth_success_victim_tallattacker
- stealth_failure_victim_tallattacker

bushhook.mdl

- bushhook_ready
- bushhook_attack_midright
- bushhook_attack_shortmed
- bushhook_attack_shortmedcombo
- bushhook_attack_SwingRight
- bushhook_attack_SwingRight_2nd
- bushhook_attack_SwingRight_3rd
- bushhook_attack_medcombo
- bushhook_attack_med
- bushhook_attack_lowcombo
- bushhook_attack_low
- bushhook_attack_farcombo
- bushhook_attack_far
- bushhook_attack_jumpcombo
- bushhook_attack_jump
- bushhook_attack_heavy
- bushhook_dodge
- bushhook_idle
- bushhook_fidget
- bushhook_air
- bushhook_attack_W1
- bushhook_attack_W2
- bushhook_block
- bushhook_block_heavy
- bushhook_preblock
- bushhook_blocked_reaction_left
- bushhook_blocked_reaction_right
- bushhook_dodge_attack
- stealth_success_attacker_shortvictim
- stealth_success_attacker_tallvictim
- stealth_failure_attacker
- stealth_success_victim_shortattacker
- stealth_success_victim_tallattacker
- stealth_failure_victim

claws.mdl

- claws_ready
- claws_attack_medcombo
- claws_attack_med
- claws_attack_med_right
- claws_attack_lowcombo
- claws_attack_low
- claws_attack_farcombo
- claws_attack_far
- claws_attack_far_left
- claws_attack_jumpcombo
- claws_attack_jump
- claws_attack_heavy
- claws_dodge
- claws_idle
- claws_fidget
- claws_air
- claws_block
- claws_block_heavy
- claws_preblock
- claws_blocked_reaction_left
- claws_blocked_reaction_right
- claws_dodge_attack
- Claws_hunt_walk
- Claws_hunt_walk_lookleft
- Claws_hunt_walk_lookright
- Claws_alert_fidget_agro_lookaround
- Claws_alert_front_into
- Claws_alert_l90_into
- Claws_alert_r90_into
- Claws_alert_180_into
- Claws_alert_front_outof
- Claws_alert_l90_outof
- Claws_alert_r90_outof
- Claws_alert_180_outof
- stealth_success_attacker_shortvictim
- stealth_success_attacker_tallvictim
- stealth_failure_attacker
- stealth_success_victim_shortattacker
- stealth_success_victim_tallattacker
- stealth_failure_victim

finished_moves.mdl

- Finish_Katana_Victim
- Finish_Katana_Attacker

fists.mdl

- fists_ready
- fists_attack_shortright
- fists_attack_medcombo
- fists_attack_med
- fists_attack_lowcombo
- fists_attack_low
- fists_attack_farcombo
- fists_attack_far
- fists_attack_far_right
- fists_attack_jumpcombo
- fists_attack_jump
- fists_attack_heavy
- fists_attack_heavy_old
- fists_dodge
- fists_attack_right
- fists_attack_Jabright
- kick_short
- kick_long
- fists_attack_Jableft
- fists_attack_longright
- fists_attack_RoundHouse
- Fists_air
- fists_block
- fists_block_heavy
- fists_preblock
- fists_blocked_reaction_left
- fists_blocked_reaction_right
- fists_dodge_attack
- fists_attack_W1
- fists_attack_W2
- fists_hunt_walk
- fists_hunt_walk_lookleft
- fists_hunt_walk_lookright
- fists_alert_fidget_agro_lookaround
- stealth_success_attacker_shortvictim
- stealth_failure_attacker_shortvictim
- stealth_success_attacker_tallvictim
- stealth_failure_attacker_tallvictim
- stealth_success_victim_shortattacker
- stealth_failure_victim_shortattacker
- stealth_success_victim_tallattacker
- stealth_failure_victim_tallattacker

forced_feed.mdl

- feeding_attacker_shortvictim_front_engage
- feeding_attacker_shortvictim_front_idle
- feeding_attacker_shortvictim_front_attack_release
- feeding_attacker_shortvictim_front_bite
- feeding_attacker_shortvictim_front_feed_loop
- feeding_attacker_shortvictim_front_release
- feeding_attacker_shortvictim_front_release_pc_flyback
- feeding_attacker_tallvictim_front_engage
- feeding_attacker_tallvictim_front_idle
- feeding_attacker_tallvictim_front_attack_release
- feeding_attacker_tallvictim_front_bite
- feeding_attacker_tallvictim_front_feed_loop
- feeding_attacker_tallvictim_front_release
- feeding_attacker_tallvictim_front_release_pc_flyback
- feeding_attacker_shortvictim_back_engage
- feeding_attacker_shortvictim_back_idle
- feeding_attacker_shortvictim_back_attack_release
- feeding_attacker_shortvictim_back_bite
- feeding_attacker_shortvictim_back_feed_loop
- feeding_attacker_shortvictim_back_release
- feeding_attacker_shortvictim_back_release_pc_flyback
- feeding_attacker_tallvictim_back_engage
- feeding_attacker_tallvictim_back_idle
- feeding_attacker_tallvictim_back_attack_release
- feeding_attacker_tallvictim_back_bite
- feeding_attacker_tallvictim_back_feed_loop
- feeding_attacker_tallvictim_back_release
- feeding_attacker_tallvictim_back_release_pc_flyback
- feeding_victim_shortattacker_front_engage
- feeding_victim_shortattacker_front_idle
- feeding_victim_shortattacker_front_attack_release
- feeding_victim_shortattacker_front_bite
- feeding_victim_shortattacker_front_feed_loop
- feeding_victim_shortattacker_front_release
- feeding_victim_shortattacker_front_release_pc_flyback
- feeding_victim_tallattacker_front_engage
- feeding_victim_tallattacker_front_idle
- feeding_victim_tallattacker_front_attack_release
- feeding_victim_tallattacker_front_bite
- feeding_victim_tallattacker_front_feed_loop
- feeding_victim_tallattacker_front_release
- feeding_victim_tallattacker_front_release_pc_flyback
- feeding_victim_shortattacker_back_engage
- feeding_victim_shortattacker_back_idle
- feeding_victim_shortattacker_back_attack_release
- feeding_victim_shortattacker_back_bite
- feeding_victim_shortattacker_back_feed_loop
- feeding_victim_shortattacker_back_release
- feeding_victim_shortattacker_back_release_pc_flyback
- feeding_victim_tallattacker_back_engage
- feeding_victim_tallattacker_back_idle
- feeding_victim_tallattacker_back_attack_release
- feeding_victim_tallattacker_back_bite
- feeding_victim_tallattacker_back_feed_loop
- feeding_victim_tallattacker_back_release
- feeding_victim_tallattacker_back_release_pc_flyback
- feeding_released_idle_attacker
- feeding_failure
katana.mdl

- katana_ready
- katana_attack_medcombo
- katana_attack_med
- katana_attack_lowcombo
- katana_attack_low
- katana_attack_farcombo
- katana_attack_far
- katana_attack_jumpcombo
- katana_attack_jump
- katana_attack_heavy
- katana_dodge
- katana_idle
- katana_fidget
- katana_attack_Feet
- katana_attack_Left_Right
- katana_attack_far_Spin
- katana_attack_far_roll
- katana_attack_HandSpring
- katana_attack_Run
- katana_attack_FlipKick
- katana_attack_SweepKick
- katana_attack_SweepKickCombo
- katana_attack_Kick_Spin
- katana_block
- katana_block_heavy
- katana_preblock
- katana_blocked_reaction_left
- katana_blocked_reaction_right
- katana_dodge_attack
- Katana_hunt_walk
- Katana_hunt_walk_lookleft
- Katana_hunt_walk_lookright
- Katana_alert_fidget_agro_lookaround
- Katana_alert_front_into
- Katana_alert_l90_into
- Katana_alert_r90_into
- Katana_alert_180_into
- Katana_alert_front_outof
- Katana_alert_l90_outof
- Katana_alert_r90_outof
- Katana_alert_180_outof
- katana_combo_A1
- katana_combo_A2
- katana_combo_A3
- katana_combo_B1
- katana_combo_B2
- katana_combo_B3
- katana_combo_C1
- katana_combo_C2
- katana_combo_C3
- katana_combo_D1
- katana_combo_D2
- katana_combo_D3
- katana_air
- katana_running_attack
- stealth_success_attacker_shortvictim
- stealth_failure_attacker_shortvictim
- stealth_success_attacker_tallvictim
- stealth_failure_attacker_tallvictim
- stealth_success_victim_shortattacker
- stealth_failure_victim_shortattacker
- stealth_success_victim_tallattacker
- stealth_failure_victim_tallattacker

knife.mdl

- knife_ready
- knife_attack_medcombo
- knife_attack_med
- knife_attack_med2
- knife_attack_lowcombo
- knife_attack_low
- knife_attack_farcombo
- knife_attack_far
- knife_attack_jumpcombo
- knife_attack_jump
- knife_attack_heavy
- knife_attack_Kick_Spin
- knife_attack_Slash
- knife_attack_Slash2
- knife_dodge
- knife_idle
- knife_fidget
- knife_attack_npc_Slash
- Knife_air
- Knife_attack_W1
- knife_block
- knife_block_heavy
- knife_preblock
- knife_blocked_reaction_left
- knife_blocked_reaction_right
- knife_dodge_attack
- Knife_hunt_walk
- Knife_hunt_walk_lookleft
- Knife_hunt_walk_lookright
- Knife_alert_fidget_agro_lookaround
- Knife_alert_front_into
- Knife_alert_l90_into
- Knife_alert_r90_into
- Knife_alert_180_into
- Knife_alert_front_outof
- Knife_alert_l90_outof
- Knife_alert_r90_outof
- Knife_alert_180_outof
- stealth_success_attacker_shortvictim
- stealth_failure_attacker_shortvictim
- stealth_success_attacker_tallvictim
- stealth_failure_attacker_tallvictim
- stealth_success_victim_shortattacker
- stealth_failure_victim_shortattacker
- stealth_success_victim_tallattacker
- stealth_failure_victim_tallattacker

meleeshared_onehand.mdl

- knockback_smalllow
- knockback_biglow
- knockback_smallhigh
- knockback_smallhighright
- knockback_smallhighleft
- knockback_smallhighfront
- knockback_bighighleft
- knockback_bighighright
- knockback_biguppercut
- knockback_biguppercutleft
- knockback_biguppercutright
- knockback_smalldazed
- knockback_flying_into_back
- knockback_flying_idle
- knockback_flying_land
- knockback_flying_wall_hit
- knockback_flying_wall_fall
- knockback_flying_wall_land
- knockback_flyingGut_wall_hit
- knockback_flyingGut_wall_fall
- knockback_flyingGut_wall_land
- knockback_flyinggut_into_back
- knockback_flyinggut_idle_back
- knockback_flyinggut_land_back
- Left_attack_jab
- kick_short
- kick_long
- dodge_stepback
- dodge_stepback_Right
- dodge_stepback_Left
- dodge_duck
- combatmove_0
- combatmove_45
- combatmove_90
- combatmove_135
- combatmove_180
- combatmove_225
- combatmove_270
- combatmove_315
- @knockback_lowcombo

meleeshared_twohand.mdl

misc.mdl

- holy_light_cast
- holy_light_cast_layer
- holy_light_idle
- holy_light_idle_layer
- thaumaturgy_cast
- thaumaturgy_cast_layer
- thaumaturgy_idle
- thaumaturgy_idle_layer
- d_thaum_cast_charge
- d_thaum_cast_charge_layer
- d_thaum_cast_chargehold
- d_thaum_cast_chargehold_layer
- d_thaum_cast_continue
- d_thaum_cast_continue_layer
- d_thaum_cast_hold
- d_thaum_cast_hold_layer
- d_thaum_cast_reset
- d_thaum_cast_reset_layer
- d_thaum_idle
- d_thaum_idle_layer
- dance01
- dance02
- dance03
- SM_Huddle
- SM_HuddleGetup
- SM_MutilationAction
- disposition_beatendown
- disposition_coy
- disposition_jittery
- disposition_pissed
- death01
- death02
- fidget01
- fidget02
- fidget03
- getup_back
- getup_front
- hit_head_back
- hit_head_front
- hit_head_left
- hit_head_right
- hit_torso_back
- hit_torso_back_left
- hit_torso_back_right
- hit_torso_front
- hit_torso_front_left
- hit_torso_front_right
- hit_torso_left
- hit_torso_right
- hit_stepback
- idle01
- jump
- jump_forward
- jump_long
- hop
- hop_up
- hop_down
- leap
- leap_ascend
- leap_descend
- falling
- land
- land_hard
- land_crouched
- jump_to_death
- ladder_down
- ladder_up
- lockpick
- place_bomb
- mesmerized_pre_into
- mesmerized
- sleep_pre_fall_into
- sleep_fall_into
- sleep_idle
- sleep_getup
- pre_choking
- choking
- shared_pre_into
- madness_pre_into
- madness_into
- madness_idle
- madness_getout
- comatose_pre_into
- comatose_into
- comatose_idle
- comatose_getout
- sobbing_pre_into
- sobbing_into
- sobbing_idle
- sobbing_outof
- theft_pre_into
- theft_into
- theft_idle
- theft_outof
- cauldron
- cauldron_pre
- cauldron_death
- burning_into
- burning_loop
- burning_outof
- laugh_pre_into
- laugh_into
- laugh_idle
- laugh_getout
- bleedingeyes_pre_into
- bleedingeyes_into
- bleedingeyes_idle
- bleedingeyes_getout
- vomit_pre_into
- vomit_into
- vomit_idle
- vomit_getout
- presence
- vision_of_death
- howl
- disoriented
- lost
- comfort_into
- comfort_idle
- comfort_outof
- comfort2_into
- comfort2_idle
- comfort2_outof
- cower_into
- cower_idle
- cower_outof
- cower2_into
- cower2_idle
- cower2_outof
- cower3_into
- cower3_idle
- cower3_outof
- alert_front_into
- alert_l45_into
- alert_l90_into
- alert_l135_into
- alert_r45_into
- alert_r90_into
- alert_r135_into
- alert_180_into
- alert_front_outof
- alert_l45_outof
- alert_l90_outof
- alert_l135_outof
- alert_r45_outof
- alert_r90_outof
- alert_r135_outof
- alert_180_outof
- alert_fidget_lookaround
- panic_run
- panic_run_trip
- panic_run_lookleft
- panic_run_lookright
- operate_computer
- operate_panel
- sobbing
- stunned
- stunned_recover
- swim
- treadwater
- spellhit
- stake_target
- doorknock
- pray
- praying_begin
- praying_idle
- praying_end
- dive_left
- dive_right
- hunt_walk
- hunt_walk_lookleft
- hunt_walk_lookright
- payphone_pickup
- payphone_idle
- payphone_hangup
- cellphone
- cellphone_into
- cellphone_idle
- cellphone_outof
- Cigarette_Into
- Cigarette_Idle
- Cigarette_Inhale
- Piss_Into
- Piss_Idle
- Piss_Outof
- Drag_FromBehind
- Scripted_BackHit
- ArmsCrossed_Idle
- ArmsCrossed_Fidget
- whistling_Idle
- whistling_Fidget
- Wall_Lean_into
- Wall_Lean_idle_01
- Wall_Lean_outof
- CouchTV_Into
- CouchTV_Idle_01
- CouchTV_Idle_02
- CouchTV_outof
- Drink_Into
- Drink_Idle
- Drink_Take
- Drink_LookAround
- Drink_Outof
- onehanded_crouch_relaxed
- twohanded_crouch_relaxed
- sitback_idle_left
- sitback_idle_left_deep
- sitback_idle_right
- sitback_idle_right_deep
- sitback_left
- sitback_left_deep
- sitback_right
- sitback_right_deep
- sitback_upfast_left
- sitback_upfast_left_deep
- sitback_upfast_right
- sitback_upfast_right_deep
- sitforward_idle_left
- sitforward_idle_left_deep
- sitforward_idle_right
- sitforward_idle_right_deep
- sitforward_left
- sitforward_left_deep
- sitforward_right
- sitforward_right_deep
- sitforward_upfast_left
- sitforward_upfast_left_deep
- sitforward_upfast_right
- sitforward_upfast_right_deep
- Cards_sitforward_Left_Idle
- Cards_sitforward_Left_Fidget
- Cards_sitforward_Left_Play
- Cards_sitforward_Right_Idle
- Cards_sitforward_Right_Fidget
- Cards_sitforward_Right_Play
- Bed_Left_Idle
- Bed_Left_Outof
- Bed_Right_Idle
- Bed_Right_Outof
- CoinMachine
- pinball_into
- pinball_idle01
- pinball_idle02
- pinball_outof
- waveover01
- waveover02
- forgetit
- idle_player_in_face
- sit_barstool_into
- sit_barstool_into_alt
- sit_barstool_idle
- sit_barstool_outof
- party_talk_idle1
- party_listen_idle1
- party_listen_idle2
- party_listen_idle3
- party_laugh
- wine_drink
- party_drinking
- party_idle
- party_look_around
- look_out_window
- surprised_by_window
- animalism_ravens_into
- animalism_ravens_idle
- animalism_ravens_outof
- animalism_bats
- animalism_spectralwolves_into
- animalism_spectralwolves_idle
- animalism_spectralwolves_outof
- animalism_spectralwolves_break
- animalism_pestilence_into
- animalism_pestilence_idle
- animalism_pestilence_outof

move_and_ranged.mdl

- Pistol_Reload_Fast
- anaconda_aim_CC
- anaconda_aim_CL
- anaconda_aim_CR
- anaconda_aim_DC
- anaconda_aim_DL
- anaconda_aim_DR
- anaconda_aim_UC
- anaconda_aim_UL
- anaconda_aim_UR
- anaconda_attack
- anaconda_attack_delta
- anaconda_attack_layer
- anaconda_attack_leaning_left
- anaconda_attack_leaning_right
- anaconda_bobble_base
- anaconda_bobble_delta
- anaconda_corner_cover_idle
- anaconda_dodge
- anaconda_dryfire
- anaconda_dryfire_delta
- anaconda_dryfire_layer
- anaconda_fidget
- anaconda_idle
- anaconda_lean_left_idle
- anaconda_lean_left_into
- anaconda_lean_left_outof
- anaconda_lean_right_idle
- anaconda_lean_right_into
- anaconda_lean_right_outof
- anaconda_ready
- anaconda_reload
- anaconda_reload_layer
- baseballbat_bobble_layer
- baseballbat_relaxed_move_layer
- bushhook_bobble_layer
- bushhook_relaxed_move_layer
- claws_aggressive_run
- claws_aggressive_run_layer
- claws_aggressive_walk
- claws_aggressive_walk_layer
- claws_run_0
- claws_run_0_alt1
- claws_run_0_alt2
- claws_run_135
- claws_run_180
- claws_run_225
- claws_run_270
- claws_run_315
- claws_run_45
- claws_run_90
- combat_walk_180
- crossbow_aim_CC
- crossbow_aim_CL
- crossbow_aim_CR
- crossbow_aim_DC
- crossbow_aim_DL
- crossbow_aim_DR
- crossbow_aim_UC
- crossbow_aim_UL
- crossbow_aim_UR
- crossbow_alert_180_into
- crossbow_alert_180_outof
- crossbow_alert_fidget_agro_lookaround
- crossbow_alert_front_into
- crossbow_alert_front_outof
- crossbow_alert_l135_into
- crossbow_alert_l135_outof
- crossbow_alert_l45_into
- crossbow_alert_l45_outof
- crossbow_alert_r135_into
- crossbow_alert_r135_outof
- crossbow_alert_r45_into
- crossbow_alert_r45_outof
- crossbow_attack
- crossbow_attack_delta
- crossbow_attack_layer
- crossbow_attack_leaning_left
- crossbow_attack_leaning_right
- crossbow_bobble_base
- crossbow_bobble_delta
- crossbow_crouch_aim_CC
- crossbow_crouch_aim_CL
- crossbow_crouch_aim_CR
- crossbow_crouch_aim_DC
- crossbow_crouch_aim_DL
- crossbow_crouch_aim_DR
- crossbow_crouch_aim_UC
- crossbow_crouch_aim_UL
- crossbow_crouch_aim_UR
- crossbow_crouch_attack
- crossbow_crouch_attack_delta
- crossbow_crouch_attack_layer
- crossbow_crouch_idle
- crossbow_crunch_idle
- crossbow_crunch_into
- crossbow_crunch_outof
- crossbow_dodge
- crossbow_dryfire
- crossbow_dryfire_delta
- crossbow_dryfire_layer
- crossbow_fidget
- crossbow_hunt_walk
- crossbow_hunt_walk_lookleft
- crossbow_hunt_walk_lookright
- crossbow_idle
- crossbow_lean_left_idle
- crossbow_lean_left_into
- crossbow_lean_left_outof
- crossbow_lean_right_idle
- crossbow_lean_right_into
- crossbow_lean_right_outof
- crossbow_midcrouch_aim_CC
- crossbow_midcrouch_aim_CL
- crossbow_midcrouch_aim_CR
- crossbow_midcrouch_aim_DC
- crossbow_midcrouch_aim_DL
- crossbow_midcrouch_aim_DR
- crossbow_midcrouch_aim_UC
- crossbow_midcrouch_aim_UL
- crossbow_midcrouch_aim_UR
- crossbow_midcrouch_attack
- crossbow_midcrouch_attack_delta
- crossbow_midcrouch_attack_layer
- crossbow_midcrouch_idle
- crossbow_midcrouch_idle_delta
- crossbow_midcrunch_idle
- crossbow_midcrunch_into
- crossbow_midcrunch_outof
- crossbow_ready
- crossbow_relaxed_move_layer
- crossbow_reload
- crossbow_reload_layer
- crouch
- d_thaum_cast_charge
- d_thaum_cast_charge_layer
- d_thaum_cast_chargehold
- d_thaum_cast_chargehold_layer
- d_thaum_cast_continue
- d_thaum_cast_continue_layer
- d_thaum_cast_hold
- d_thaum_cast_hold_layer
- d_thaum_cast_reset
- d_thaum_cast_reset_layer
- d_thaum_idle
- d_thaum_idle_layer
- deserteagle_aim_CC
- deserteagle_aim_CL
- deserteagle_aim_CR
- deserteagle_aim_DC
- deserteagle_aim_DL
- deserteagle_aim_DR
- deserteagle_aim_UC
- deserteagle_aim_UL
- deserteagle_aim_UR
- deserteagle_attack
- deserteagle_attack_delta
- deserteagle_attack_layer
- deserteagle_attack_leaning_left
- deserteagle_attack_leaning_right
- deserteagle_bobble_base
- deserteagle_bobble_delta
- deserteagle_corner_cover_idle
- deserteagle_dodge
- deserteagle_dryfire
- deserteagle_dryfire_delta
- deserteagle_dryfire_layer
- deserteagle_fidget
- deserteagle_idle
- deserteagle_lean_left_idle
- deserteagle_lean_left_into
- deserteagle_lean_left_outof
- deserteagle_lean_right_idle
- deserteagle_lean_right_into
- deserteagle_lean_right_outof
- deserteagle_ready
- deserteagle_relaxed_move_layer
- deserteagle_reload
- deserteagle_reload_layer
- enfield_aim_CC
- enfield_aim_CL
- enfield_aim_CR
- enfield_aim_DC
- enfield_aim_DL
- enfield_aim_DR
- enfield_aim_UC
- enfield_aim_UL
- enfield_aim_UR
- enfield_attack
- enfield_attack_delta
- enfield_attack_layer
- enfield_bobble_base
- enfield_bobble_delta
- enfield_dodge
- enfield_dryfire
- enfield_dryfire_delta
- enfield_dryfire_layer
- enfield_fidget
- enfield_idle
- enfield_ready
- enfield_relaxed_move_layer
- enfield_reload
- enfield_reload_layer
- flamet_aim_CC
- flamet_aim_CL
- flamet_aim_CR
- flamet_aim_DC
- flamet_aim_DL
- flamet_aim_DR
- flamet_aim_UC
- flamet_aim_UL
- flamet_aim_UR
- flamet_attack
- flamet_attack_delta
- flamet_attack_layer
- flamet_bobble_base
- flamet_bobble_delta
- flamet_dodge
- flamet_dryfire
- flamet_dryfire_delta
- flamet_dryfire_layer
- flamet_fidget
- flamet_idle
- flamet_ready
- flamet_relaxed_move_layer
- flamet_reload
- flamet_reload_layer
- glock_aim_CC
- glock_aim_CL
- glock_aim_CR
- glock_aim_DC
- glock_aim_DL
- glock_aim_DR
- glock_aim_UC
- glock_aim_UL
- glock_aim_UR
- glock_attack
- glock_attack_delta
- glock_attack_layer
- glock_bobble_base
- glock_bobble_delta
- glock_dodge
- glock_dryfire
- glock_dryfire_delta
- glock_dryfire_layer
- glock_fidget
- glock_idle
- glock_ready
- glock_relaxed_move_layer
- glock_reload
- glock_reload_layer
- holy_light_cast
- holy_light_cast_layer
- holy_light_idle
- holy_light_idle_layer
- katana_bobble_layer
- katana_relaxed_move_layer
- knife_bobble_layer
- knife_relaxed_move_layer
- lookback_left_layer
- lookback_right_layer
- m37_aim_CC
- m37_aim_CL
- m37_aim_CR
- m37_aim_DC
- m37_aim_DL
- m37_aim_DR
- m37_aim_UC
- m37_aim_UL
- m37_aim_UR
- m37_attack
- m37_attack_delta
- m37_attack_layer
- m37_bobble_base
- m37_bobble_delta
- m37_dodge
- m37_dryfire
- m37_dryfire_delta
- m37_dryfire_layer
- m37_fidget
- m37_idle
- m37_ready
- m37_relaxed_move_layer
- m37_reload
- m37_reload_layer
- npc_run_0
- npc_run_135
- npc_run_180
- npc_run_225
- npc_run_270
- npc_run_315
- npc_run_45
- npc_run_90
- onehand_sneak
- onehand_sneak_layer
- pistol_alert_180_into
- pistol_alert_180_outof
- pistol_alert_fidget_agro_lookaround
- pistol_alert_fidget_lookaround
- pistol_alert_front_into
- pistol_alert_front_outof
- pistol_alert_l135_into
- pistol_alert_l135_outof
- pistol_alert_l45_into
- pistol_alert_l45_outof
- pistol_alert_l90_into
- pistol_alert_l90_outof
- pistol_alert_r135_into
- pistol_alert_r135_outof
- pistol_alert_r45_into
- pistol_alert_r45_outof
- pistol_alert_r90_into
- pistol_alert_r90_outof
- pistol_crouch_aim_CC
- pistol_crouch_aim_CL
- pistol_crouch_aim_CR
- pistol_crouch_aim_DC
- pistol_crouch_aim_DL
- pistol_crouch_aim_DR
- pistol_crouch_aim_UC
- pistol_crouch_aim_UL
- pistol_crouch_aim_UR
- pistol_crouch_attack
- pistol_crouch_attack_delta
- pistol_crouch_attack_layer
- pistol_crouch_idle
- pistol_crouch_idle_delta
- pistol_crunch_idle
- pistol_crunch_into
- pistol_crunch_outof
- pistol_hunt_walk
- pistol_hunt_walk_lookleft
- pistol_hunt_walk_lookright
- pistol_midcrouch_aim_CC
- pistol_midcrouch_aim_CL
- pistol_midcrouch_aim_CR
- pistol_midcrouch_aim_DC
- pistol_midcrouch_aim_DL
- pistol_midcrouch_aim_DR
- pistol_midcrouch_aim_UC
- pistol_midcrouch_aim_UL
- pistol_midcrouch_aim_UR
- pistol_midcrouch_attack
- pistol_midcrouch_attack_delta
- pistol_midcrouch_attack_layer
- pistol_midcrouch_idle
- pistol_midcrouch_idle_delta
- pistol_midcrunch_idle
- pistol_midcrunch_into
- pistol_midcrunch_outof
- pistol_relaxed_run_layer
- pistol_relaxed_walk_layer
- rem700_aim_CC
- rem700_aim_CL
- rem700_aim_CR
- rem700_aim_DC
- rem700_aim_DL
- rem700_aim_DR
- rem700_aim_UC
- rem700_aim_UL
- rem700_aim_UR
- rem700_attack
- rem700_attack_delta
- rem700_attack_layer
- rem700_bobble_base
- rem700_bobble_delta
- rem700_dodge
- rem700_dryfire
- rem700_dryfire_delta
- rem700_dryfire_layer
- rem700_fidget
- rem700_idle
- rem700_ready
- rem700_relaxed_move_layer
- rem700_reload
- rem700_reload_layer
- run_0
- run_135
- run_180
- run_225
- run_270
- run_315
- run_45
- run_90
- sledgehammer_bobble_layer
- sledgehammer_relaxed_move_layer
- smith_aim_CC
- smith_aim_CL
- smith_aim_CR
- smith_aim_DC
- smith_aim_DL
- smith_aim_DR
- smith_aim_UC
- smith_aim_UL
- smith_aim_UR
- smith_attack
- smith_attack_delta
- smith_attack_layer
- smith_attack_leaning_left
- smith_attack_leaning_right
- smith_bobble_base
- smith_bobble_delta
- smith_corner_cover_idle
- smith_dodge
- smith_dryfire
- smith_dryfire_delta
- smith_dryfire_layer
- smith_fidget
- smith_idle
- smith_lean_left_idle
- smith_lean_left_into
- smith_lean_left_outof
- smith_lean_right_idle
- smith_lean_right_into
- smith_lean_right_outof
- smith_ready
- smith_reload
- smith_reload_layer
- sneak_0
- sneak_135
- sneak_180
- sneak_225
- sneak_270
- sneak_315
- sneak_45
- sneak_90
- stake_bobble_layer
- stake_relaxed_move_layer
- steyr_Reload_Fast
- steyr_aim_CC
- steyr_aim_CL
- steyr_aim_CR
- steyr_aim_DC
- steyr_aim_DL
- steyr_aim_DR
- steyr_aim_UC
- steyr_aim_UL
- steyr_aim_UR
- steyr_alert_180_into
- steyr_alert_180_outof
- steyr_alert_fidget_agro_lookaround
- steyr_alert_front_into
- steyr_alert_front_outof
- steyr_alert_l90_into
- steyr_alert_l90_outof
- steyr_alert_r90_into
- steyr_alert_r90_outof
- steyr_attack
- steyr_attack_delta
- steyr_attack_layer
- steyr_attack_leaning_left
- steyr_attack_leaning_right
- steyr_bobble_base
- steyr_bobble_delta
- steyr_corner_cover_idle
- steyr_crouch_aim_CC
- steyr_crouch_aim_CL
- steyr_crouch_aim_CR
- steyr_crouch_aim_DC
- steyr_crouch_aim_DL
- steyr_crouch_aim_DR
- steyr_crouch_aim_UC
- steyr_crouch_aim_UL
- steyr_crouch_aim_UR
- steyr_crouch_attack
- steyr_crouch_attack_delta
- steyr_crouch_attack_layer
- steyr_crouch_idle
- steyr_crunch_idle
- steyr_crunch_into
- steyr_crunch_outof
- steyr_dodge
- steyr_dryfire
- steyr_dryfire_delta
- steyr_dryfire_layer
- steyr_fidget
- steyr_hunt_walk
- steyr_hunt_walk_lookleft
- steyr_hunt_walk_lookright
- steyr_idle
- steyr_lean_left_idle
- steyr_lean_left_into
- steyr_lean_left_outof
- steyr_lean_right_idle
- steyr_lean_right_into
- steyr_lean_right_outof
- steyr_midcrouch_aim_CC
- steyr_midcrouch_aim_CL
- steyr_midcrouch_aim_CR
- steyr_midcrouch_aim_DC
- steyr_midcrouch_aim_DL
- steyr_midcrouch_aim_DR
- steyr_midcrouch_aim_UC
- steyr_midcrouch_aim_UL
- steyr_midcrouch_aim_UR
- steyr_midcrouch_attack
- steyr_midcrouch_attack_delta
- steyr_midcrouch_attack_layer
- steyr_midcrouch_idle
- steyr_midcrouch_idle_delta
- steyr_midcrunch_idle
- steyr_midcrunch_into
- steyr_midcrunch_outof
- steyr_ready
- steyr_relaxed_move_layer
- steyr_reload
- steyr_reload_layer
- submachinegun_aim_CC
- submachinegun_aim_CL
- submachinegun_aim_CR
- submachinegun_aim_DC
- submachinegun_aim_DL
- submachinegun_aim_DR
- submachinegun_aim_UC
- submachinegun_aim_UL
- submachinegun_aim_UR
- submachinegun_attack
- submachinegun_attack_delta
- submachinegun_attack_layer
- submachinegun_bobble_base
- submachinegun_bobble_delta
- submachinegun_crouch_aim_CC
- submachinegun_crouch_aim_CL
- submachinegun_crouch_aim_CR
- submachinegun_crouch_aim_DC
- submachinegun_crouch_aim_DL
- submachinegun_crouch_aim_DR
- submachinegun_crouch_aim_UC
- submachinegun_crouch_aim_UL
- submachinegun_crouch_aim_UR
- submachinegun_crouch_attack
- submachinegun_crouch_attack_delta
- submachinegun_crouch_attack_layer
- submachinegun_crouch_idle
- submachinegun_dodge
- submachinegun_dryfire
- submachinegun_dryfire_delta
- submachinegun_dryfire_layer
- submachinegun_fidget
- submachinegun_idle
- submachinegun_ready
- submachinegun_relaxed_move_layer
- submachinegun_reload
- submachinegun_reload_layer
- supershotgun_aim_CC
- supershotgun_aim_CL
- supershotgun_aim_CR
- supershotgun_aim_DC
- supershotgun_aim_DL
- supershotgun_aim_DR
- supershotgun_aim_UC
- supershotgun_aim_UL
- supershotgun_aim_UR
- supershotgun_attack
- supershotgun_attack_delta
- supershotgun_attack_layer
- supershotgun_bobble_base
- supershotgun_bobble_delta
- supershotgun_dodge
- supershotgun_dryfire
- supershotgun_dryfire_delta
- supershotgun_dryfire_layer
- supershotgun_fidget
- supershotgun_hunt_walk
- supershotgun_hunt_walk_lookleft
- supershotgun_hunt_walk_lookright
- supershotgun_idle
- supershotgun_ready
- supershotgun_relaxed_move_layer
- supershotgun_reload
- supershotgun_reload_layer
- thaumaturgy_cast
- thaumaturgy_cast_layer
- thaumaturgy_idle
- thaumaturgy_idle_layer
- throwing_star_aim_CC
- throwing_star_aim_CL
- throwing_star_aim_CR
- throwing_star_aim_DC
- throwing_star_aim_DL
- throwing_star_aim_DR
- throwing_star_aim_UC
- throwing_star_aim_UL
- throwing_star_aim_UR
- throwing_star_attack
- throwing_star_attack_delta
- throwing_star_attack_layer
- throwing_star_crouch_aim_CC
- throwing_star_crouch_aim_CL
- throwing_star_crouch_aim_CR
- throwing_star_crouch_aim_DC
- throwing_star_crouch_aim_DL
- throwing_star_crouch_aim_DR
- throwing_star_crouch_aim_UC
- throwing_star_crouch_aim_UL
- throwing_star_crouch_aim_UR
- throwing_star_crouch_attack_delta
- throwing_star_dryfire
- throwing_star_dryfire_delta
- throwing_star_idle
- throwing_star_idle_layer
- throwing_star_relaxed_run_layer
- throwing_star_relaxed_walk_layer
- throwing_star_reload
- tireiron_bobble_layer
- tireiron_relaxed_move_layer
- twohand_sneak
- twohand_sneak_layer
- twohanded_Reload_Fast
- twohanded_alert_180_into
- twohanded_alert_180_outof
- twohanded_alert_fidget_agro_lookaround
- twohanded_alert_fidget_lookaround
- twohanded_alert_front_into
- twohanded_alert_front_outof
- twohanded_alert_l90_into
- twohanded_alert_l90_outof
- twohanded_alert_r90_into
- twohanded_alert_r90_outof
- twohanded_attack_leaning_left
- twohanded_attack_leaning_right
- twohanded_corner_cover_idle
- twohanded_crouch_aim_CC
- twohanded_crouch_aim_CL
- twohanded_crouch_aim_CR
- twohanded_crouch_aim_DC
- twohanded_crouch_aim_DL
- twohanded_crouch_aim_DR
- twohanded_crouch_aim_UC
- twohanded_crouch_aim_UL
- twohanded_crouch_aim_UR
- twohanded_crouch_attack
- twohanded_crouch_attack_delta
- twohanded_crouch_attack_layer
- twohanded_crouch_idle
- twohanded_crouch_idle_delta
- twohanded_crunch_idle
- twohanded_crunch_into
- twohanded_crunch_outof
- twohanded_fidget_lookaround
- twohanded_hunt_walk
- twohanded_hunt_walk_lookleft
- twohanded_hunt_walk_lookright
- twohanded_lean_left_idle
- twohanded_lean_left_into
- twohanded_lean_left_outof
- twohanded_lean_right_idle
- twohanded_lean_right_into
- twohanded_lean_right_outof
- twohanded_midcrouch_aim_CC
- twohanded_midcrouch_aim_CL
- twohanded_midcrouch_aim_CR
- twohanded_midcrouch_aim_DC
- twohanded_midcrouch_aim_DL
- twohanded_midcrouch_aim_DR
- twohanded_midcrouch_aim_UC
- twohanded_midcrouch_aim_UL
- twohanded_midcrouch_aim_UR
- twohanded_midcrouch_attack
- twohanded_midcrouch_attack_delta
- twohanded_midcrouch_attack_layer
- twohanded_midcrouch_idle
- twohanded_midcrouch_idle_delta
- twohanded_midcrunch_idle
- twohanded_midcrunch_into
- twohanded_midcrunch_outof
- walk_0
- walk_135
- walk_180
- walk_225
- walk_270
- walk_315
- walk_45
- walk_90

seductive_feed.mdl

- seductive_attacker_shortvictim_front_engage
- seductive_attacker_shortvictim_front_feed_loop
- seductive_attacker_shortvictim_front_release
- seductive_attacker_shortvictim_front_release_standing
- seductive_attacker_tallvictim_front_engage
- seductive_attacker_tallvictim_front_feed_loop
- seductive_attacker_tallvictim_front_release
- seductive_attacker_tallvictim_front_release_standing
- seductive_victim_shortattacker_front_engage
- seductive_victim_shortattacker_front_feed_loop
- seductive_victim_shortattacker_front_release
- seductive_victim_shortattacker_front_release_standing
- seductive_victim_tallattacker_front_engage
- seductive_victim_tallattacker_front_feed_loop
- seductive_victim_tallattacker_front_release
- seductive_victim_tallattacker_front_release_standing
- seductive_released_idle_attacker

sherifsword.mdl

- sheriffsword_ready
- sheriffsword_attack_medcombo
- sheriffsword_attack_med
- sheriffsword_attack_lowcombo
- sheriffsword_attack_low
- sheriffsword_attack_farcombo
- sheriffsword_attack_far
- sheriffsword_attack_jumpcombo
- sheriffsword_attack_jump
- sheriffsword_attack_heavy
- sheriffsword_dodge
- sheriffsword_idle
- sheriffsword_fidget
- sheriffsword_attack_Feet
- sheriffsword_attack_Left_Right
- sheriffsword_attack_far_Spin
- sheriffsword_attack_far_roll
- sheriffsword_attack_HandSpring
- sheriffsword_attack_Run
- sheriffsword_attack_FlipKick
- sheriffsword_attack_SweepKick
- sheriffsword_attack_SweepKickCombo
- sheriffsword_attack_Kick_Spin
- sheriffsword_block
- sheriffsword_block_heavy
- sheriffsword_preblock
- sheriffsword_blocked_reaction_left
- sheriffsword_blocked_reaction_right
- sheriffsword_dodge_attack
- sheriffsword_combo_A1
- sheriffsword_combo_A2
- sheriffsword_combo_A3
- sheriffsword_combo_B1
- sheriffsword_combo_B2
- sheriffsword_combo_B3
- sheriffsword_combo_C1
- sheriffsword_combo_C2
- sheriffsword_combo_C3
- sheriffsword_combo_D1
- sheriffsword_combo_D2
- sheriffsword_combo_D3
- sheriffsword_running_attack
- stealth_success_attacker_shortvictim
- stealth_failure_attacker_shortvictim
- stealth_success_attacker_tallvictim
- stealth_failure_attacker_tallvictim
- stealth_success_victim_shortattacker
- stealth_failure_victim_shortattacker
- stealth_success_victim_tallattacker
- stealth_failure_victim_tallattacker

sledgehammer.mdl

- sledgehammer_ready
- sledgehammer_attack_midright
- sledgehammer_attack_SwingRight
- sledgehammer_attack_SwingRight_2nd
- sledgehammer_attack_SwingRight_3rd
- sledgehammer_attack_shortmedcombo
- sledgehammer_attack_medcombo
- sledgehammer_attack_med
- sledgehammer_attack_lowcombo
- sledgehammer_attack_low
- sledgehammer_attack_farcombo
- sledgehammer_attack_far
- sledgehammer_attack_jumpcombo
- sledgehammer_attack_jump
- sledgehammer_attack_heavy
- sledgehammer_dodge
- sledgehammer_idle
- sledgehammer_fidget
- Sledgehammer_air
- Sledgehammer_attack_W1
- sledgehammer_combo_A1
- sledgehammer_combo_A2
- sledgehammer_combo_A3
- sledgehammer_combo_B1
- sledgehammer_combo_B2
- sledgehammer_combo_B3
- sledgehammer_combo_C1
- sledgehammer_combo_C2
- sledgehammer_combo_C3
- sledgehammer_combo_D1
- sledgehammer_combo_D2
- sledgehammer_combo_D3
- sledgehammer_block
- sledgehammer_block_heavy
- sledgehammer_preblock
- sledgehammer_blocked_reaction_left
- sledgehammer_blocked_reaction_right
- sledgehammer_dodge_attack
- stealth_success_attacker_shortvictim
- stealth_success_attacker_tallvictim
- stealth_failure_attacker
- stealth_success_victim_shortattacker
- stealth_success_victim_tallattacker
- stealth_failure_victim

stake.mdl

- stake_ready
- stake_attack_medcombo
- stake_attack_med
- stake_attack_lowcombo
- stake_attack_low
- stake_attack_farcombo
- stake_attack_far
- stake_attack_jumpcombo
- stake_attack_jump
- stake_attack_heavy
- stake_dodge
- stake_idle
- stake_fidget
- stake_block
- stake_block_heavy
- stake_preblock
- stake_blocked_reaction_left
- stake_blocked_reaction_right
- stake_dodge_attack
- stealth_success_attacker_shortvictim
- stealth_failure_attacker_shortvictim
- stealth_success_attacker_tallvictim
- stealth_failure_attacker_tallvictim
- stealth_success_victim_shortattacker
- stealth_failure_victim_shortattacker
- stealth_success_victim_tallattacker
- stealth_failure_victim_tallattacker

tireiron.mdl

- tireiron_ready
- tireiron_attack_medcombo
- tireiron_attack_med
- tireiron_attack_lowcombo
- tireiron_attack_low
- tireiron_attack_farcombo
- tireiron_attack_far
- tireiron_attack_jumpcombo
- tireiron_attack_jump
- tireiron_attack_heavy
- tireiron_dodge
- tireiron_idle
- tireiron_fidget
- tireiron_attack_hack
- tireiron_attack_slash
- tireiron_attack_slash2
- tireiron_air
- tireiron_attack_W1
- tireiron_attack_W2
- tireiron_block
- tireiron_block_heavy
- tireiron_preblock
- tireiron_blocked_reaction_left
- tireiron_blocked_reaction_right
- tireiron_dodge_attack
- TireIron_hunt_walk
- TireIron_hunt_walk_lookleft
- TireIron_hunt_walk_lookright
- TireIron_alert_fidget_agro_lookaround
- TireIron_alert_front_into
- TireIron_alert_l90_into
- TireIron_alert_r90_into
- TireIron_alert_180_into
- TireIron_alert_front_outof
- TireIron_alert_l90_outof
- TireIron_alert_r90_outof
- TireIron_alert_180_outof
- stealth_success_attacker_shortvictim
- stealth_failure_attacker_shortvictim
- stealth_success_attacker_tallvictim
- stealth_failure_attacker_tallvictim
- stealth_success_victim_shortattacker
- stealth_failure_victim_shortattacker
- stealth_success_victim_tallattacker
- stealth_failure_victim_tallattacker

stripper.mdl (Not part of npc_allsequences)

- @lap_dance_01
- @lap_dance_02
- @lap_dance_03
- @lap_dance_04
- @pole_strole_01
- @pole_stroke_01
- @stripper_lap_dance_personal
- @HotTub_Idle
- @HotTub_LegUp
- @HotTub_touch

stances.mdl (not part of npc_allsequences)

- @Stance_BehindBack_Idle_1
- @Stance_BehindBack_Idle_2
- @Stance_BehindBack_Idle_3
- @Stance_Anger_Idle_1
- @Stance_Anger_Idle_2
- @Stance_Anger_Idle_3
- @Stance_Apathy_Idle_1
- @Stance_Apathy_Idle_2
- @Stance_Apathy_Idle_3
- @Stance_Confused_Idle_1
- @Stance_Confused_Idle_2
- @Stance_Confused_Idle_3
- @Stance_Disgust_Idle_1
- @Stance_Disgust_Idle_2
- @Stance_Disgust_Idle_3
- @Stance_Enraged_Idle_1
- @Stance_Enraged_Idle_2
- @Stance_Enraged_Idle_3
- @Stance_Fear_Idle_1
- @Stance_Fear_Idle_2
- @Stance_Fear_Idle_3
- @Stance_Flirt_Idle_1
- @Stance_Flirt_Idle_2
- @Stance_Flirt_Idle_3
- @Stance_Frightened_Idle_1
- @Stance_Frightened_Idle_2
- @Stance_Frightened_Idle_3
- @Stance_Joy_Idle_1
- @Stance_Joy_Idle_2
- @Stance_Joy_Idle_3
- @Stance_Mad_Idle_1
- @Stance_Mad_Idle_2
- @Stance_Mad_Idle_3
- @Stance_Neutral_Idle_1
- @Stance_Neutral_Idle_2
- @Stance_Neutral_Idle_3
- @Stance_Sad_Idle_1
- @Stance_Sad_Idle_2
- @Stance_Sad_Idle_3
- @Stance_Sly_Idle_1
- @Stance_Sly_Idle_2
- @Stance_Sly_Idle_3
- @Stance_Lay_Idle_1
- @Stance_Lay_Idle_2
- @Stance_Lay_Idle_3
- @Stance_Damaged_Idle_1
- @Stance_Trans_Damaged_1_Lay_1
- @Stance_Bartender_Idle_1
- @Stance_Bartender_Idle_2
- @Stance_Bartender_Idle_3
- @Stance_Dead_Idle_1
- @Stance_Sitting_Idle_1
- @Stance_Therese_Idle_1
- @Stance_Therese_Idle_2
- @Stance_Therese_Idle_3
- @Stance_Therese_Idle_4
- @Stance_Therese_Idle_6
- @Stance_Therese_Idle_7
- @Stance_Therese_Idle_9
- @Stance_Therese_Fidget_1
- @Stance_Therese_Fidget_2
- @Stance_Therese_Fidget_3
- @Stance_PrinceSitting_Idle_1
- @Stance_PrinceSitting_Idle_2
- @Stance_PrinceSitting_Idle_3

zombie_feeding.mdl (not part of npc_allsequences)

- zombie_feeding_attacker_shortvictim_front_engage
- zombie_feeding_attacker_shortvictim_front_idle
- zombie_feeding_attacker_shortvictim_front_attack_release
- zombie_feeding_attacker_shortvictim_front_bite
- zombie_feeding_attacker_shortvictim_front_feed_loop
- zombie_feeding_attacker_shortvictim_front_release
- zombie_feeding_attacker_shortvictim_front_release_pc_flyback
- zombie_feeding_attacker_tallvictim_front_engage
- zombie_feeding_attacker_tallvictim_front_idle
- zombie_feeding_attacker_tallvictim_front_attack_release
- zombie_feeding_attacker_tallvictim_front_bite
- zombie_feeding_attacker_tallvictim_front_feed_loop
- zombie_feeding_attacker_tallvictim_front_release
- zombie_feeding_attacker_tallvictim_front_release_pc_flyback
- zombie_feeding_attacker_shortvictim_back_engage
- zombie_feeding_attacker_shortvictim_back_idle
- zombie_feeding_attacker_shortvictim_back_attack_release
- zombie_feeding_attacker_shortvictim_back_bite
- zombie_feeding_attacker_shortvictim_back_feed_loop
- zombie_feeding_attacker_shortvictim_back_release
- zombie_feeding_attacker_shortvictim_back_release_pc_flyback
- zombie_feeding_attacker_tallvictim_back_engage
- zombie_feeding_attacker_tallvictim_back_idle
- zombie_feeding_attacker_tallvictim_back_attack_release
- zombie_feeding_attacker_tallvictim_back_bite
- zombie_feeding_attacker_tallvictim_back_feed_loop
- zombie_feeding_attacker_tallvictim_back_release
- zombie_feeding_attacker_tallvictim_back_release_pc_flyback
- zombie_feeding_victim_shortattacker_front_engage
- zombie_feeding_victim_shortattacker_front_idle
- zombie_feeding_victim_shortattacker_front_attack_release
- zombie_feeding_victim_shortattacker_front_bite
- zombie_feeding_victim_shortattacker_front_feed_loop
- zombie_feeding_victim_shortattacker_front_release
- zombie_feeding_victim_shortattacker_front_release_pc_flyback
- zombie_feeding_victim_tallattacker_front_engage
- zombie_feeding_victim_tallattacker_front_idle
- zombie_feeding_victim_tallattacker_front_attack_release
- zombie_feeding_victim_tallattacker_front_bite
- zombie_feeding_victim_tallattacker_front_feed_loop
- zombie_feeding_victim_tallattacker_front_release
- zombie_feeding_victim_tallattacker_front_release_pc_flyback
- zombie_feeding_victim_shortattacker_back_engage
- zombie_feeding_victim_shortattacker_back_idle
- zombie_feeding_victim_shortattacker_back_attack_release
- zombie_feeding_victim_shortattacker_back_bite
- zombie_feeding_victim_shortattacker_back_feed_loop
- zombie_feeding_victim_shortattacker_back_release
- zombie_feeding_victim_shortattacker_back_release_pc_flyback
- zombie_feeding_victim_tallattacker_back_engage
- zombie_feeding_victim_tallattacker_back_idle
- zombie_feeding_victim_tallattacker_back_attack_release
- zombie_feeding_victim_tallattacker_back_bite
- zombie_feeding_victim_tallattacker_back_feed_loop
- zombie_feeding_victim_tallattacker_back_release
- zombie_feeding_victim_tallattacker_back_release_pc_flyback
- zombie_feeding_released_idle_attacker
- zombie_feeding_failure

------------------------------------------------------------------------
-------
I. > > > > Gestures
------------------------------------------------------------------------
-------

ACT_ALERT_FIDGET_LOOKAROUND
ACT_ARMSCROSSED_IDLE
ACT_ARMSCROSSED_FIDGET

ACT_BED_LEFT
ACT_BED_LEFT_OUTOF
ACT_BED_RIGHT
ACT_BED_RIGHT_OUTOF

ACT_BLEEDINGEYES_INTO
ACT_BLEEDINGEYES_IDLE
ACT_BLEEDINGEYES_GETOUT

ACT_BLOOD_MALADY_LOOP (#Drunk)

ACT_DANCE
ACT_CARDS_SITFORWARD_LEFT_FIDGET
ACT_CARDS_SITFORWARD_LEFT_IDLE
ACT_CARDS_SITFORWARD_LEFT_PLAY
ACT_CARDS_SITFORWARD_RIGHT_FIDGET
ACT_CARDS_SITFORWARD_RIGHT_IDLE
ACT_CARDS_SITFORWARD_RIGHT_PLAY

ACT_CAULDRON_PAIN (#Scream)
ACT_CAULDRON_DEATH

ACT_CELLPHONE_INTO
ACT_CELLPHONE_IDLE
ACT_CELLPHONE_OUTOF

ACT_CIGARETTE_INTO
ACT_CIGARETTE_IDLE
ACT_COMATOSE_INTO
ACT_COMATOSE_IDLE
ACT_COMATOSE_GETOUT
ACT_COMFORT_INTO
ACT_COMFORT2_INTO
ACT_COMFORT3_INTO

ACT_CONVERSE_NORMAL_TALK
ACT_CONVERSE_NORMAL_LISTEN
ACT_COUCH_SIT_INTO
ACT_COUCH_SIT_IDLE
ACT_COUCH_SIT_OUTOF
ACT_COWER_INTO
ACT_COWER
ACT_COWER_OUTOF
ACT_COWER2_INTO
ACT_COWER2
ACT_COWER2_OUTOF
ACT_COWER3_INTO
ACT_COWER3
ACT_COWER3_OUTOF
ACT_DIE
ACT_DISORIENTED
ACT_DISPOSITION
ACT_DISPOSITION_MESMERIZED
ACT_DOORKNOCK

ACT_DRINK_IDLE
ACT_DRINK_INTO
ACT_DRINK_LOOKAROUND
ACT_DRINK_OUTOF

## Fed Upon

ACT_FEEDING_BITE_VICTIM_SHORTATTACKER_FRONT
ACT_FEEDING_BITE_VICTIM_TALLATTACKER_FRONT
ACT_FEEDING_BITE_VICTIM_SHORTATTACKER_BACK
ACT_FEEDING_BITE_VICTIM_TALLATTACKER_BACK
ACT_FEEDING_FEED_LOOP_VICTIM_SHORTATTACKER_FRONT
ACT_FEEDING_FEED_LOOP_VICTIM_TALLATTACKER_FRONT
ACT_FEEDING_FEED_LOOP_VICTIM_SHORTATTACKER_BACK
ACT_FEEDING_FEED_LOOP_VICTIM_TALLATTACKER_BACK
ACT_FEEDING_RELEASE_VICTIM_SHORTATTACKER_FRONT
ACT_FEEDING_RELEASE_VICTIM_TALLATTACKER_FRONT
ACT_FEEDING_RELEASE_VICTIM_SHORTATTACKER_BACK
ACT_FEEDING_RELEASE_VICTIM_TALLATTACKER_BACK

## Feed Upon

ACT_FEEDING_BITE_ATTACKER_SHORTVICTIM_FRONT
ACT_FEEDING_BITE_ATTACKER_TALLVICTIM_FRONT
ACT_FEEDING_BITE_ATTACKER_SHORTVICTIM_BACK
ACT_FEEDING_BITE_ATTACKER_TALLVICTIM_BACK
ACT_FEEDING_FEED_LOOP_ATTACKER_SHORTVICTIM_FRONT
ACT_FEEDING_FEED_LOOP_ATTACKER_TALLVICTIM_FRONT
ACT_FEEDING_FEED_LOOP_ATTACKER_SHORTVICTIM_BACK
ACT_FEEDING_FEED_LOOP_ATTACKER_TALLVICTIM_BACK
ACT_FEEDING_RELEASE_ATTACKER_SHORTVICTIM_FRONT
ACT_FEEDING_RELEASE_ATTACKER_TALLVICTIM_FRONT
CT_FEEDING_RELEASE_ATTACKER_SHORTVICTIM_BACK
ACT_FEEDING_RELEASE_ATTACKER_TALLVICTIM_BACK

## Feed Rat

ACT_RAT_FEED_ENGAGE_ATTACKER_SHORTVICTIM_FRONT
ACT_RAT_FEED_ENGAGE_ATTACKER_TALLVICTIM_FRONT
ACT_RAT_FEED_ENGAGE_ATTACKER_SHORTVICTIM_BACK
ACT_RAT_FEED_ENGAGE_ATTACKER_TALLVICTIM_BACK
ACT_RAT_FEED_LOOP_ATTACKER_SHORTVICTIM_FRONT
ACT_RAT_FEED_LOOP_ATTACKER_TALLVICTIM_FRONT
ACT_RAT_FEED_LOOP_ATTACKER_SHORTVICTIM_BACK
ACT_RAT_FEED_LOOP_ATTACKER_TALLVICTIM_BACK
ACT_RAT_FEED_RELEASE_ATTACKER_SHORTVICTIM_FRONT
ACT_RAT_FEED_RELEASE_ATTACKER_TALLVICTIM_FRONT
ACT_RAT_FEED_RELEASE_ATTACKER_SHORTVICTIM_BACK
ACT_RAT_FEED_RELEASE_ATTACKER_TALLVICTIM_BACK

ACT_FIST_DOWN
ACT_FLINCH_CHEST
ACT_GRAFFITI_INTO
ACT_GRAFFITI_IDLE
ACT_GRAFFITI_OUTOF
ACT_HAND_UP
ACT_HUDDLE
ACT_IDLE
ACT_IDLE_ANGRY
ACT_INVALID
ACT_KNOCKBACK_SWALLOW
ACT_LAUGH_INTO
ACT_LAUGH_IDLE
ACT_LAUGH_GETOUT

ACT_LIKE_A_BUM
ACT_LOST

ACT_MADNESS_PRE_INTO
ACT_MADNESS_INTO
ACT_MADNESS_IDLE
ACT_MADNESS_GETOUT
ACT_MELEE_ATTACK_HEAVY
ACT_ONEHANDED_CROUCH_IDLE

ACT_PANIC_RUN
ACT_PANIC_RUN_TRIP
ACT_PANIC_RUN_LOOKLEFT
ACT_PANIC_RUN_LOOKRIGHT

ACT_PARTY_TALK_IDLE
ACT_PARTY_LAUGH
ACT_PARTY_LISTEN_IDLE

ACT_PAY_PHONE_PICKUP
ACT_PAY_PHONE_IDLE
ACT_PAY_PHONE_HANGUP

ACT_PISS_INTO
ACT_PISS_IDLE
ACT_PISS_OUTOF

ACT_POLE_DANCE

ACT_PRAYING_BEGIN
ACT_PRAYING_IDLE
ACT_PRAYING_END

ACT_PRESENCE_DAZED
ACT_RANT_WAVE
ACT_RANGE_ATTACK1
ACT_RANGE_ATTACK2

ACT_SITBACK_IDLE_LEFT
ACT_SITBACK_IDLE_LEFT_DEEP
ACT_SITBACK_IDLE_RIGHT
ACT_SITBACK_IDLE_RIGHT_DEEP
ACT_SITBACK_LEFT
ACT_SITBACK_LEFT_DEEP
ACT_SITBACK_RIGHT
ACT_SITBACK_RIGHT_DEEP
ACT_SITBACK_UPFAST_LEFT
ACT_SITBACK_UPFAST_LEFT_DEEP
ACT_SITBACK_UPFAST_RIGHT
ACT_SITBACK_UPFAST_RIGHT_DEEP

ACT_SIT
ACT_SNARL

ACT_SIT_BARSTOOL_INTO
ACT_SIT_BARSTOOL_IDLE
ACT_SIT_BARSTOOL_OUTOF

ACT_SITFORWARD_IDLE_LEFT
ACT_SITFORWARD_IDLE_LEFT_DEEP
ACT_SITFORWARD_IDLE_RIGHT
ACT_SITFORWARD_IDLE_RIGHT_DEEP
ACT_SITFORWARD_LEFT
ACT_SITFORWARD_LEFT_DEEP
ACT_SITFORWARD_RIGHT

ACT_SITFORWARD_UPFAST_LEFT
ACT_SITFORWARD_UPFAST_LEFT_DEEP
ACT_SITFORWARD_UPFAST_RIGHT
ACT_SITFORWARD_UPFAST_RIGHT_DEEP

ACT_SLEEP_FALL_INTO
ACT_SLEEP_IDLE
ACT_SLEEP
ACT_SLEEP_GETUP

ACT_SOBBING_PRE_INTO
ACT_SOBBING_INTO
ACT_DISPOSITION_CRYING
ACT_SOBBING_IDLE
ACT_SOBBING_GETOUT

ACT_TECH
ACT_TOOL_HACKPANEL
ACT_TOOL_KEYBOARD
ACT_TWOHANDED_CROUCH_IDLE
ACT_VM_BOTCH
ACT_VM_DRAW
ACT_VM_DRYFIRE
ACT_VM_EMPTIED
ACT_VM_FIDGET
ACT_VM_HOLSTER

ACT_VM_IDLE
ACT_VM_IDLE_EMPTY
ACT_VM_PRIMARYATTACK
ACT_VM_RELOAD
ACT_VM_RELOAD2
ACT_VM_TOPRIMARY1
ACT_VM_TOPRIMARY2

ACT_VOMIT_INTO
ACT_VOMIT_IDLE
ACT_WALL_LEAN_IDLE
ACT_WALL_LEAN_INTO
ACT_WALL_LEAN_OUTOF
ACT_VOMIT_GETOUT
ACT_WHISTLING_FIDGET
ACT_WHISTLING_IDLE

ACT_WINE_DRINK

------------------------------------------------------------------------
-------
J. > > > > Console Variables and Commands
------------------------------------------------------------------------
-------

_fov : 0 : , cl : Automates fov command to server.

_restart : cmd : :
_setrenderer : cmd : :

_setvideomode : cmd : :

activitydump : cmd : : Forces ActivityList Dump

activitydump : cmd : : Forces ActivityList Dump

addip : cmd : : Add an IP address to the ban list.

adsp_alley_min : 122 : :

adsp_courtyard_min : 126 : :

adsp_debug : 0 : , a :

adsp_door_height : 112 : :

adsp_duct_min : 106 : :

adsp_hall_min : 110 : :

adsp_low_ceiling : 108 : :

adsp_opencourtyard_min : 126 : :

adsp_openspace_min : 130 : :

adsp_openstreet_min : 118 : :

adsp_openwall_min : 130 : :

adsp_room_min : 102 : :

adsp_street_min : 118 : :

adsp_tunnel_min : 114 : :

adsp_wall_height : 128 : :

ai_clear_bad_links : cmd : : Clears bits set on nav links indicating


link is unusable

ai_debug_node_connect : cmd : : Debug the attempted connection between


two nodes

ai_disable : cmd : : Bi-passes all AI logic routines and puts all NPCs
into their idle animations. Can be used to get NPCs out of your way and
to test effect of AI logic routines on frame rate

ai_hint_focus_npc : cmd : : Use this command to focus on an NPC for


hints. When that NPC tries to find a hint, he will mark them with
failure messages saying why he couldn't use it.

ai_hints : cmd : : Displays all hints as small boxes Blue - hint is


available for use Red - hint is currently being used by an NPC Orange -
hint not being used by timed out Grey - hint has been disabled

ai_moveprobe_debug : 0 : , sv :

ai_named_hull : cmd : : Switches to the name of the given hull

ai_next_hull : cmd : : Cycles through the various hull sizes. Currently


selected hull size is written to the screen. Controls which connections
are shown when ai_show_hull or ai_show_connect commands are used
Arguments: -none-

ai_node_graph_built : cmd : :

ai_nodes : cmd : : Toggles node display. First call displays the nodes
for the given network as green objects. Second call displays the nodes
and their IDs. Nodes are color coded as follows: Green - ground node
Cyan - air node Magenta - climb node Grey - node not available for
selected hull size Orange - node currently locked

ai_norebuildgraph : 0 : , sv :

ai_report_task_timings_on_limit : 1 : , a, sv :

ai_resume : cmd : : If NPC is stepping through tasks (see ai_step ) will


resume normal processing.

ai_show_connect : cmd : : Displays the allowed connections between each


node for the currently selected hull type. Hulls are color code as
follows: Green - ground movement Blue - jumping movement Cyan - flying
movement Magenta - climbing movement Yellow - no pedestrians Red -
connection disabled

ai_show_graph_connect : cmd : : Toggles graph connection display for the


node that the player is looking at. Nodes that are connected to the
selected node by the net graph will be drawn in red with magenta lines
connecting to the selected node. Nodes that are not connected via the
net graph from the selected node will be drawn in blue.

ai_show_grid : cmd : : Draw a grid on the floor where looking.

ai_show_hints : cmd : : Displays all hints as small boxes Blue - hint is


available for use Red - hint is currently being used by an NPC Orange -
hint not being used by timed out Grey - hint has been disabled

ai_show_hull : cmd : : Displays the allowed hulls between each node for
the currently selected hull type. Hulls are color code as follows: Green
- ground movement Blue - jumping movement Cyan - flying movement Magenta
- climbing movement Arguments: -none-

ai_show_interesting : cmd : : Draws the interesting places.

ai_show_visibility : cmd : : Toggles visibility display for the node


that the player is looking at. Nodes that are visible from the selected
node will be drawn in red with yellow lines connecting to the selected
node. Nodes that are not visible from the selected node will be drawn in
blue.
ai_step : cmd : : NPCs will freeze after completing their current task.
To complete the next task, use 'ai_step' again. To resume processing
normally use 'ai_resume'

ai_think_limit_label : 1 : , a, sv :

air_density : cmd : : Changes the density of air for drag computations.

alias : cmd : :

+alt1 : cmd : :

-alt1 : cmd : :

andrei_force_awaken : 0 : , sv :

andrei_force_charge_attack : 0 : , sv :

andrei_force_jump_attack : 0 : , sv :

andrei_force_player_collision : 0 : , sv :

appenddemo : cmd : : Append to demo file contents.

asianvamp_force_jump_up : 0 : , sv :

+attack : cmd : :

-attack : cmd : :

+attack2 : cmd : :

-attack2 : cmd : :

autosave : cmd : :

autosave_on : 1 : :

autosave_time_delay : 300 : :

+back : cmd : :

-back : cmd : :

barterend : cmd : : Ends bartering/looting

bc_fade : 0 : , cl :

bc_ground : 1 : , cl :

bc_override : 0 : , cl :

begin : cmd : :

bgmvolume : 1 : , a :

bind : cmd : :
BindToggle : cmd : :

blood : cmd : : Sets the local player's blood pool

bottomcolor : 0 : , a : Current bottomcolor

box : cmd : :

+break : cmd : :

-break : cmd : :

brightness : 1 : , a :

buddha : cmd : : Toggle. Player takes damage but won't die. (Shows red
cross when health is zero)

buildcubemaps : cmd : :

burn_hitboxes : cmd : : burns the char's hitboxes

burnpeel : cmd : : burn effect on the player

c_maxdistance : 200 : , a, cl :

c_maxpitch : 90 : , a, cl :

c_maxyaw : 135 : , a, cl :

c_mindistance : 30 : , a, cl :

c_minpitch : 0 : , a, cl :

c_minyaw : -135 : , a, cl :

c_orthoheight : 100 : , a, cl :

c_orthowidth : 100 : , a, cl :

cam_collide : 1 : , cl :

cam_command : 0 : , cl :

cam_fadeend : 18 : , cl :

cam_fadestart : 32 : , cl :

cam_idealdist : 85 : , cl :

cam_idealpitch : 0 : , cl :

cam_idealyaw : 0 : , cl :

cam_snapto : 0 : , cl :

cam_targetangle : 15 : , cl :
cam_trace_radius : 9 : , cl :

cam_yaw : 0 : , cl :

camdead_forward_base : -50 : , cl :

camdead_forward_pow : 1 : , cl :

+camdistance : cmd : :

-camdistance : cmd : :

camera_fov : -1 : , cl :

camera_ignore : 0 : , cl :

camera_kill : cmd : : Kills all cinematic cameras

camera_prefs : 7 : , a, cl :

camera_showdebug : 0 : , sv :

camera_weaponswitch : 1 : , a, cl :

camfeed_forward_base : -50 : , cl :

camfeed_forward_pow : 0 : , cl :

camfeed_pitch : 80 : , cl :

camfeed_pitch_max : 60 : , cl :

camfeed_pitch_min : 0 : , cl :

camfeed_pitch_pow1 : 2 : , cl :

camfeed_pitch_pow2 : 0 : , cl :

camfeed_roll : 0 : , cl :

camfeed_yaw : 50 : , cl :

camfeed_yaw_end : 2 : , cl :

+camin : cmd : :

-camin : cmd : :

+cammousemove : cmd : :

-cammousemove : cmd : :

camortho : cmd : :

+camout : cmd : :
-camout : cmd : :

+campitchdown : cmd : :

-campitchdown : cmd : :

+campitchup : cmd : :

-campitchup : cmd : :

camseduct_forward_base : -40 : , cl :

camseduct_forward_pow : 0 : , cl :

camseduct_forward_powm1 : -7 : , cl :

camseduct_forward_powm2 : 1 : , cl :

camseduct_pitch : 10 : , cl :

camseduct_pitch_max : 60 : , cl :

camseduct_pitch_max1 : 8 : , cl :

camseduct_pitch_max2 : 0 : , cl :

camseduct_pitch_min : 0 : , cl :

camseduct_roll : 0 : , cl :

camseduct_speedmult : 1 : , cl :

camseduct_yaw : -58 : , cl :

camseduct_yaw_pow : 1 : , cl :

camseduct_yaw_pow_end : 1 : , cl :

+camyawleft : cmd : :

-camyawleft : cmd : :

+camyawright : cmd : :

-camyawright : cmd : :

cancelselect : cmd : :

cd : cmd : : Play or stop a cd track.

cdamp_hookesconstant : 4 : , cl :

cdamp_hookesconstantwall : 15 : , cl :

cdamp_maxdist : 50 : , cl :

cdamp_on : 1 : , cl :
cdamp_springlength : 0 : , cl :

centerview : cmd : :

changbros_force_ledge_attack : 0 : , sv :

changbros_force_teleport : 0 : , sv :

changbros_force_united_attack : 0 : , sv :

changelevel : cmd : :

changelevel2 : cmd : :

+chareditor : cmd : :

-chareditor : cmd : :

chareditor : cmd : :

chooseteam : cmd : :

cl_allowdownload : 1 : : Client supports downloading

cl_allowupload : 1 : : Client supports uploading

cl_alwayscopyframebuffertotexture : 1 : , cl :

cl_anglespeedkey : 0 : , cl :

cl_backspeed : 400 : , a, cl :

cl_bob : 0 : , cl :

cl_bobcycle : 0 : , cl :

cl_bobup : 0 : , cl :

cl_captions : 0 : , a : Show captions for voice

cl_cinebar_fuzz : 0 : , cl :

cl_cinebar_power : 3 : , cl :

cl_cinebar_time : 0 : , cl :

cl_clockreset : 0 : : Client clock tolerance

cl_cmdbackup : 2 : , a : For each command packet, how many additional


history commands are sent ( helps in case of packet loss )

cl_cmdrate : 30 : , a : Max number of command packets sent to server per


second

cl_copyframebuffertotexture : 1 : , cl :
cl_deltatrace : 0 : : For debugging, print entity creation/deletion info
to console.

cl_detaildist : 600 : , cl : Draw current position at top of screen

cl_detailfade : 300 : , cl : Draw current position at top of screen

cl_dlmax : 128 : , a : Max size of each file fragment during downloading

cl_download_ingame : 1 : : Client can receive a file after initial


connection

cl_download_max : 0 : : Max size of file the client can download

cl_downloadinterval : 1 : : How often is the download progress slider


updated

cl_drawhud : 1 : , cl : Enable the rendering of the hud

cl_drawleaf : -1 : , cl :

cl_drawmaterial : 0 : , cl : Draw a particular material over the frame

cl_drawshadowtexture : 0 : , cl :

cl_ejectbrass : 1 : , cl :

cl_entityreport : 0 : : For debugging, draw entity states to console

cl_fixtimerate : 7 : : Number of ms per frame to fix client's clock

cl_flushentitypacket : 0 : : For debugging. Force the engine to flush an


entity packet.

cl_force_cinebar : -1 : , cl :

cl_forceviewcenter : 0 : , cl :

cl_forwardspeed : 400 : , a, cl :

cl_gg : 0 : :

cl_hud : cmd : :

cl_hud_bloodbar : 0 : , cl :

cl_hud_health : 0 : , cl :

cl_hudenable : 1 : , cl : Enable/disable the HUD drawing for profiling.

cl_idealpitchscale : 0 : , a, cl :

cl_interp : 0 : : Interpolate object positions starting this many


seconds in past

cl_interpolate : 1 : , cl : Interpolate entities on the client.


cl_lagcomp_errorcheck : 0 : , cl : Player index of other player to check
for position errors.

cl_lagcompensation : 0 : , cl : Perform server side lag compensation of


weapon firing events.

cl_leveloverview : 0 : , cl :

cl_meleecircle : 0 : , cl :

cl_meleefaceattack : 1 : , cl :

cl_mouseenable : 1 : , cl :

cl_obfuscate_daylight : 0 : , cl :

cl_obfuscate_nightvision : 20 : , cl :

cl_overlay_bloodshield_blur : 0 : , cl :

cl_overlay_bloodshield_scale : 0 : , cl :

cl_overlay_celerity_expand_scale : 0 : , cl :

cl_overlay_celerity_intensity_scale : 0 : , cl :

cl_overlay_noise_lightblend : 0 : , cl :

cl_overlay_noise_lightblur : 0 : , cl :

cl_overlay_obfuscate_blur : 0 : , cl :

cl_overlay_obfuscate_scale : 0 : , cl :

cl_overlay_redvision_blur_radius : 0 : , cl :

cl_overlay_redvision_dx6 : 85 : , cl :

cl_overlay_redvision_expand : 0 : , cl :

cl_overlay_redvision_intensity : 1 : , cl :

cl_overlayframebuffer : 0 : , cl :

cl_packettrace : 1 : : For debugging, massive spew to file.

cl_pclass : 0 : , cl : Dump entity by prediction classname.

cl_pdump : -1 : , cl : Dump info about this entity to screen.

cl_phys_timescale : 1 : , cl : Sets the scale of time for client-side


physics (ragdolls)

cl_pitchdown : 89 : , cl :

cl_pitchspeed : 225 : , cl :
cl_pitchup : 89 : , cl :

cl_precacheinfo : cmd : : Show precache info (client).

cl_pred_optimize : 2 : , cl : Optimize for not copying data if didn't


receive a network update (1), and also for not repredicting if there
were no errors (2).

cl_predict : 0 : , cl : Perform client side prediction.

cl_predictionlist : 0 : , cl : Show which entities are predicting

cl_predictweapons : 1 : , cl : Perform client side prediction of weapon


effects.

cl_ragdoll_collide : 0 : , cl :

cl_reportskybox : 0 : , cl :

cl_resend : 6 : : Delay in seconds before the client will resend the


'connect' attempt

cl_rollangle : 2 : , cl :

cl_rollspeed : 200 : , cl :

cl_SetupAllBones : 0 : , cl :

cl_show_client_particles : 0 : , cl :

cl_showents : cmd : :

cl_showerror : 0 : , cl : Show prediction errors, 2 for above plus


detailed field deltas.

cl_showevents : 0 : : Print event firing info in the console

cl_showfps : 0 : , cl : Draw fps meter at top of screen

cl_showmessages : 0 : : Dump network traffic to debug console

cl_shownet : 0 : : Show network traffic ( 0, 1 or 2 )

cl_showpos : 0 : , cl : Draw current position at top of screen

cl_ShowSunVectors : 0 : , cl :

cl_sidespeed : 400 : , cl :

cl_simpleshadows : 0 : , cl :

cl_sizeof : cmd : : Determines the size of the specified client class.

cl_slist : 10 : : Number of seconds to wait for server ping responses


when checking for server on your lan

cl_smooth : 0 : , cl : Smooth view/eye origin after prediction errors


cl_smoothtime : 0 : , cl : Smooth client's view after prediction error
over this many seconds

cl_softshadows : 1 : , cl :

cl_solid_players : 1 : , cl : When predicting movements, determines


whether the local player collides on the client with other player
objects

cl_soundemitter_flush : cmd : : Flushes the sounds.txt system (client


only)

cl_timeout : 305 : , a : After this many seconds without receiving a


packet from the server, the client will disconnect itself

cl_updaterate : 20 : , a : Number of packets per second of updates you


are requesting from the server

cl_upload_max : 0 : : Max size of file the client can upload

cl_upspeed : 320 : , a, cl :

cl_v_bump_mapping : 1 : , a, cl :

cl_v_combat_effects : 1 : , a :

cl_v_gamma : 1 : , a :

cl_v_geometric_detail : 5 : , a, cl :

cl_v_image_quality : 1 : , a, cl :

cl_v_lighting : 0 : , a, cl :

cl_v_shadow_count : 2 : , a, cl :

cl_v_shadows : 3 : , a, cl :

cl_view : cmd : :

cl_waterdist : 4 : , cl :

cl_winddir : 0 : : Weather effects wind direction angle

cl_windspeed : 0 : : Weather effects wind speed scalar

cl_yawspeed : 210 : , cl :

clanchangedone : cmd : :

clear : cmd : :

clear_io_states : cmd : : Clear IO states

clientport : 27005 : :
clip : 1 : :

clip_x : 0 : , cl :

clip_y : 0 : , cl :

clip_z : 0 : , cl :

cloth_reset : cmd : : resets all cloth in the world

cm_anyhit : 1 : :

cmd : cmd : :

cmdlist : cmd : : For usage help enter - cmdlist ?

collision_shake_amp : 0 : , sv :

collision_shake_freq : 0 : , sv :

collision_shake_time : 0 : , sv :

collision_test : cmd : : Tests collision system

combat_debug_stats : 0 : , sv :

+commandermousemove : cmd : :

-commandermousemove : cmd : :

con_alpha : 192 : , a : Console background alpha

con_color : 255 : , a : Determines the color of the command console

con_fastmode : 1 : :

con_notifytime : 4 : : How long to display recent console text to the


upper part of the game window

con_trace : 0 : :

con_xprint : 1 : : Debugging server startup/connection state.

connect : cmd : :

contimes : cmd : :

coop : 0 : , nf :

CreateHairball : cmd : :

createplayer : cmd : :

credits : cmd : :

credits_scrollrate : 30 : , cl :
crosshair : 1 : , a, cl :

crosshair_rot : 0 : , cl :

cvarlist : cmd : :

damage_floaters : 1 : , a, sv : Turns damage floaters above NPC's heads


on(1) and off(0).

damage_floaters_color_max_b : 0 : , cl : Blue Color Component (0-255) of


damage floaters when at full health.

damage_floaters_color_max_g : 200 : , cl : Green Color Component (0-255)


of damage floaters when at full health.

damage_floaters_color_max_r : 255 : , cl : Red Color Component (0-255)


of damage floaters when at full health.

damage_floaters_color_max_threshhold : 90 : , cl : Value (0-100) at


which above this percent health we always display the full health color.

damage_floaters_color_min_b : 0 : , cl : Blue Color Component (0-255) of


damage floaters when at zero health.

damage_floaters_color_min_g : 0 : , cl : Green Color Component (0-255)


of damage floaters when at zero health.

damage_floaters_color_min_r : 255 : , cl : Red Color Component (0-255)


of damage floaters when at zero health.

damage_floaters_dist_max : 800 : , cl : Distance from camera to be


considered the maximum for basis of scaling floater values.

damage_floaters_dist_min : 64 : , cl : Distance from camera to be


considered the minimum for basis of scaling floater values.

damage_floaters_duration_max : 1 : , cl : Duration of floaters when at


the maximum distance value.

damage_floaters_duration_min : 0 : , cl : Duration of floaters when at


the minimum distance value.

damage_floaters_queue_time : 0 : , sv : Minimum amount of time between


the release of a damage floater on a particular NPC.

damage_floaters_scale_max : 0 : , cl : Scaled size of floater art when


at the maximum distance value.

damage_floaters_scale_min : 0 : , cl : Scaled size of floater art when


at the minimum distance value.

damage_floaters_spacing_max : 8 : , cl : Spacing between floater art


when at the maximum distance value.

damage_floaters_spacing_min : 5 : , cl : Spacing between floater art


when at the minimum distance value.
damage_floaters_speed_max : 100 : , cl : Upward speed of floaters when
at the maximum distance value.

damage_floaters_speed_min : 50 : , cl : Upward speed of floaters when at


the minimum distance value.

deathmatch : 0 : , nf :

debug_alert_aggressive : 0 : , sv : Set to true to have alert states use


the aggressive animations.

debug_allow_dodge : 0 : , sv : Allows or disallows NPC dodging when no


cover nodes are found.

debug_allow_fake_reload : 1 : , sv : Allows or disallows faked NPC


reloading.

debug_allow_melee_ff : 0 : , sv :

debug_allow_mf_turn : 0 : , sv : If this is on, NPCs will turn to look


behind them periodically when they run for cover.

debug_allow_move_facing : 1 : , sv : If this is on, NPCs will move


facing the NPC when they run for cover.

debug_allow_non_idle_auto_sk : 1 : , sv : Allows or disallows automatic


stealth kills when target is not in idle state.

debug_allow_npc_hunting : 0 : , sv : Set this to 1 to allow NPCs to do


their 'scouring the area' hunting state.

debug_area_type : 0 : , sv : Set this var to true to have the area act


as a safe are for NPCs.

debug_assert_on_missing_act : 0 : , sv : Turn this on to assert on


missing activities. By default they are just dumped to a file.

debug_brawl_level : 0 : , sv : Set > 0 to override dice rolled for all


brawl checks.

debug_change_masquerade_level : cmd : : Change the player's masquerade


level.

debug_circle_dist_override : 0 : , sv : Overrides the distance guys want


to be outside the melee combat.

debug_cop_grace_time : 30 : , sv : Set the time after a player's initial


criminal act where additional acts are ignore

debug_cop_wait_area : 0 : , sv : Set this var to true to have the area


act as a safe zone for NPCs.

debug_cs_los : 0 : , sv : Set this to 1 to show a line from NPCs to


static Crimina & Supernatural acts they are testing vision on.

debug_deafzone_disable : 0 : , sv :
debug_defense_level : 0 : , sv : Set > 0 to override dice rolled for all
defense checks.

debug_disable_cylinders : 0 : : Disable cylinder collisions.

debug_dog_turn_scalar : 0 : , sv : Set this var to override turn


animation speed.

debug_dump_activity_list : 0 : , nf, sv, rep : Set this to true to get a


full list of activities and sequences when you fail to find one.

debug_dump_anim_seq_list : 0 : , nf, sv, rep : Set this to true to allow


a dump of animation seqences on errors.

debug_dump_eventqueue : cmd : : Dumps a list of the current event queue.

debug_dump_schedules : 1 : , sv : Turn this off to disable debug dump on


missing schedule.

debug_explosion_trace : 0 : , sv :

debug_feed_trace : 0 : , sv : Turn this on to trace feeding in detail.

debug_force_anim : 0 : , sv : Set to 1 to force walk anims to use run


instead, or 2 to force run to walk.

debug_force_scale : 3 : , sv :

debug_forced_bullet_damage : -1 : , sv :

debug_heightened_alert_expire_time : 40 : , sv : Determines how long


NPC's stay in heightened alert mode.

debug_hint_los : 0 : , sv : Set this to 1 to show a line from any hints


the NPCs try to use to their target when they do a LOS check.

debug_hit_by_mode : 1 : , sv : Set this to 1 to use alternate hit by


door code.

debug_hunting_aggressive : 1 : , sv : Set to true to have hunting states


use the aggressive animations.

debug_infinite_ammo : 0 : , sv, rep : Set this to 1 to give player


infinite ammo. Set to 2 to never need to reload.

debug_interval_movement : 0 : , sv : Set this to -1 to enable automatic


nosmooth movement for zombies (or other enabled NPCs). Set it to a
positive number to set the scalar rather than calculating it.

debug_lightatpoint : 0 : :

debug_masquerade_timer : 300 : , sv : Determines how long of a grace


period the player has after violating the masquerade, so that you don't
wipe yourself after a single spree.

debug_melee_advance_combatmove_dist : 100 : , sv : How close a melee


combatant needs to be to player in order to do the combat move. Outside
of this distance they will run to close the distance.

debug_melee_combat_level : 0 : , sv : Set > 0 to override dice rolled


for all melee combat checks.

debug_melee_frenzy_speed_scale : 1 : , sv :

debug_no_damage : 0 : , sv : If this is true, no one takes damage.

debug_npc_map : 0 : , sv : Set this to true and an overlay map of all


NPCs will be drawn

debug_npc_map_xscale : 16384 : , sv : Set this to scale the overlay map


up or down

debug_npc_map_yscale : 16384 : , sv : Set this to scale the overlay map


up or down

debug_npc_move_yaw_snap : 1 : , cl : Enable this to force the move_yaw


pose parameter to snap rather than blend for NPCs.

debug_physics_drag_dist : 64 : , sv :

debug_physics_hand : 0 : , sv : Turns on/off physics hand debugging info

debug_physics_lift_height : 20 : , sv :

debug_physics_throw_velocity : 20 : , sv :

debug_player_on_head : 3 : , sv : What should I do if the player is on


my head? 0 - run only : 1 - allow dive : 2 - allow fall.

debug_ranged_combat_level : 0 : , sv : Set > 0 to override dice rolled


for all ranged combat checks.

debug_ratfeed_drawcone : 0 : , sv :

debug_response_timer_max : 7 : , sv : Sets the maximum amount of time we


will wait after an offense to send WC outputs and spawn cops.

debug_response_timer_min : 5 : , sv : Sets the minimum amount of time we


will wait after an offense to send WC outputs and spawn cops.

debug_set_steering_weight : cmd : : Use this command to change the


weights that NPCs use for avoidance.

debug_show_alert_states : 0 : , sv : Set to true to display info about


cops & hunter alert states.

debug_show_body_targets : 0 : , sv : Turns on display of body targets


for selected NPCs.

debug_show_bones : 0 : , cl : Enable this to draw wireframe bones for


characters.

debug_show_cs_acts : 0 : , sv : Set to true to display criminal and


supernatural act info.
debug_show_melee_attack_boxes : 0 : , sv : Show some attack boxes.

debug_show_melee_attack_boxes_missed : 0 : , sv : Show some attack


boxes.

debug_show_melee_attack_boxes_obstructed : 0 : , sv : Show some attack


boxes.

debug_show_npc_pos : 0 : , sv : Set this to 1 to show all of the NPC's


stored positions.

debug_show_npc_skeletons : 0 : , sv : Set this to 1 to show the


server-side skeletons for the NPCs.

debug_slow_idle_yaw_speed : 20 : , sv :

debug_slow_walk_yaw_speed : 25 : , sv :

debug_soak_level : 0 : , sv : Set > 0 to override dice rolled for all


soak checks.

debug_sound_occlusion : 1 : , sv : Set this to 1 to allow certain


objects & the world to occlude sounds.

debug_stealth_light : -1 : , sv : Overrides the light on the player for


stealth calculations (-1 = off, 0 = min light, 10 = max light).

debug_stealth_show_light : 0 : , sv : Shows the light on the player.

debug_stealth_toggle : cmd : : Turns off all active disciplines on the


player.

debug_steering_visualize_pie : 1 : , sv : Draw using pies instead of


tris.

debug_supernatural_cop_spawn : 0 : , sv : Enable this if you want


supernatural acts to spawn cops.

debug_tentacle_mask : -1 : , sv :

debug_test_schedule : 0 : , sv : Forces the AI into test schedules.

debug_test_switch1 : 0 : , sv : Toggles stuff for the test task.

debug_test_switch2 : 0 : , sv : Toggles stuff for the test task.

debug_total_mass_divisor : 4 : , sv, rep :

debug_track_under_ground : 0 : , sv : Tracks guys falling underground

debug_turn_scalar : 0 : , sv : Set this var to override turn animation


speed.

debug_turning : 0 : , sv : Toggles turn animations.

debug_turning_speed : 90 : , sv : Toggles turn animations.


debug_upward_hit_force : 0 : , sv :

debug_view_cone : 0 : , sv : Set to 1 to turn show the complex viewcon


in viewcone mode

debug_view_cone_2d3d : 3 : , sv : Set the view cone tests to be in 2d or


3d.

debug_viewcone_back_dist : 40 : , sv : Change the distance we bump back


the view cone.

debug_vision_line : 0 : , sv : Set this to 1 to show a line from NPCs to


player when they can see the player through an object.

debug_weapon_shoot_pos : 0 : , sv : Set this to 1 to show the weapon


shoot positions for the NPCs.

decal : cmd : : Displays a decal. decal <name|number> [distance]

decalfrequency : 30 : , sv :

default_clan : 0 : , a, sv :

default_fov : 75 : , cl :

default_gender : 1 : , a, sv :

defense_bonus_cap : 10 : , sv :

defense_bonus_max_time : 3 : , sv :

demo_recordcommands : 1 : : Record commands typed at console into .dem


files.

demos : cmd : :

developer : 0 : :

dialog_facial_debug : 0 : , sv : Turns on debug text for the NPC you are


talking to.

dialog_force_close : cmd : : forces the current dialog to close.

dialog_line_numbers : 0 : , sv :

dialog_report_dependency_tests : 0 : , sv :

dialog_report_event_scripts : 0 : , sv :

dialog_start : 0 : , sv :

dialogpick : cmd : : Activates (picks) a dialog line.

differences : cmd : :

disable_expressions : 0 : , sv :
disconnect : cmd : :

disp_dynamic : 0 : :

disp_modlimit : 80 : :

disp_modlimit_down : 20 : :

disp_modlimit_up : 80 : :

disp_numiterations : 1 : :

dispcoll_drawplane : 0 : , sv :

displaysoundlist : 0 : , sv :

dlghist : cmd : :

dlgscrldn : cmd : :

dlgscrlup : cmd : :

draw_hud : 1 : , cl :

drawcross : cmd : : Draws a cross at the given location Arugments: x y z

drawline : cmd : : Draws line between two 3D Points. Green if no


collision Red is collides with something Arugments: x1 y1 z1 x2 y2 z2

dropclient : cmd : :

dropitem : cmd : :

dsp_automatic : 0 : :

dsp_clearstate : cmd : :

dsp_db_min : 70 : :

dsp_db_mixdrop : 0 : :

dsp_dist_max : 1440 : , a :

dsp_dist_min : 0 : , a :

dsp_facingaway : 0 : :

dsp_mix_max : 0 : :

dsp_mix_min : 0 : :

dsp_on : 0 : , a :

dsp_ontrans_clearstate : 1 : , a :

dsp_player : 0 : :
dsp_reload : cmd : :

dsp_room : 0 : :

dsp_spatial : 40 : :

dsp_speaker : 39 : :

dsp_stereo : 0 : , a :

dsp_voice_max : 0 : :

dsp_voice_scalar : 0 : :

dsp_water : 14 : :

dtwarning : 0 : :

dtwatchent : -1 : :

dtwatchvar : 0 : :

+duck : cmd : :

-duck : cmd : :

dump_activity_lists : cmd : :

dump_disposition_table : cmd : :

dump_experience_table : cmd : :

dump_expression_table_names : cmd : :

dump_quest_table : cmd : :

dump_stealthkill_table : cmd : : Re-reads the stealth kill rules text


file, and prints out a table of the values

dumpstringtables : cmd : :

echo : cmd : :

endmovie : cmd : :

ent_absbox : cmd : : Displays the total bounding box for the given
entity(s) in green. Some entites will also display entity specific
overlays. Arguments: {entity_name} / {class_name} / no argument picks
what player is looking at

ent_bbox : cmd : : Displays the movement bounding box for the given
entity(ies) in orange. Some entites will also display entity specific
overlays. Arguments: {entity_name} / {class_name} / no argument picks
what player is looking at

ent_break : cmd : :
ent_condition : cmd : : Displays condition info (See Overlay Text)
Arguments: {entity_name} / {class_name} / no argument picks what player
is looking at

ent_debugkeys : 0 : , sv :

ent_developer : 0 : :

ent_dump : cmd : : Usage: ent_dump <entity name>

ent_fire : cmd : : Usage: ent_fire <target> [action] [value] [delay]

ent_hitboxes : cmd : : Shows an entity's hit boxes. Arguments:


{entity_name} / {class_name} / no argument picks what player is looking
at

ent_info : cmd : : Usage: ent_info <class name>

ent_inven_list : cmd : : Lists the local player's Inventory

ent_io_messages : 0 : , sv : Set to true to show input and output


messages

ent_messages : cmd : : Toggles input/output message display for the


selected entity(ies). The name of the entity will be displayed as well
as any messages that it sends or receives. Arguments: {entity_name} /
{class_name} / no argument picks what player is looking at

ent_muzzle : cmd : : Displays the muzzleflash attachment point

ent_name : cmd : :

ent_pause : cmd : : Toggles pausing of input/output message processing


for entities. When turned on processing of all message will stop. Any
messages displayed with 'ent_messages' will stop fading and be displayed
indefinitely. To step through the messages one by one use 'ent_step'.

ent_pivot : cmd : : Displays the pivot for the given entity(ies).


(y=up=green, z=forward=blue, x=left=red). Arguments: {entity_name} /
{class_name} / no argument picks what player is looking at

ent_rbox : cmd : : Displays the total bounding box for the given
entity(s) in green. Some entites will also display entity specific
overlays. Arguments: {entity_name} / {class_name} / no argument picks
what player is looking at

ent_remove : cmd : : Removes the given entity(s) Arguments:


{entity_name} / {class_name} / no argument picks what player is looking
at

ent_setname : cmd : : Sets the targetname of the given entity(s)


Arguments: {new entity name} {entity_name} / {class_name} / no argument
picks what player is looking at

ent_showhitboxes : cmd : : Shows an entity's hit boxes. Arguments:


{entity_name} / {class_name} / no argument picks what player is looking
at

ent_step : cmd : : When 'ent_pause' is set this will step through one
waiting input / output message at a time.

ent_takedamageself : cmd : : Damages the entity

ent_text : cmd : : Displays text debugging information about the given


entity(ies) on top of the entity (See Overlay Text) Arguments:
{entity_name} / {class_name} / no argument picks what player is looking
at

ent_toggledebugstats : cmd : :

ent_trace : cmd : : Writes the overlay text to the debug window (See
Overlay Text) Arguments: {entity_name} / {class_name} / no argument
picks what player is looking at

ent_trace_anim_event : 0 : , nf, sv : Set this to false if you don't


care about anim events being traced.

ent_trace_buffer : cmd : : Turns tracing on to all NPC's trace buffers.


Arguments: {verbose}

ent_trace_choreo_event : 0 : , nf, sv : Set this to false if you don't


care about choreo events being traced.

ent_trace_conditions : 1 : , sv : When ent_trace is on, this will dump


info about conditions also.

ent_trace_doors : 0 : , sv : When ent_trace is on, this will dump info


about doors also.

ent_trace_dump_buffer : cmd : : Dumps the trace buffer to the debug


window. Arguments: {entity_name} / {class_name} / no argument picks what
player is looking at

ent_trace_frenzy : 0 : , sv : When ent_trace is on, this will dump info


about frenzying also.

ent_trace_hints : 0 : , sv : When ent_trace is on, this will dump info


about hints also.

ent_trace_idealact : 0 : , sv : When ent_trace is on, this will dump


info about the ideal activity being changed also.

ent_trace_melee : 0 : , sv : When ent_trace is on, this will dump info


about melee also.

ent_trace_moveshoot : 0 : , sv : When ent_trace is on, this will dump


info about moving and shooting also.

ent_trace_nav : 0 : , sv : When ent_trace is on, this will dump info


about failed navigation.

ent_trace_patrolpath : 0 : , sv : When ent_trace is on, this will dump


info about patrol paths.
ent_trace_scripted : 0 : , sv : When ent_trace is on, this will dump
info about scripted sequences also.

ent_trace_sound : 0 : , sv : When ent_trace is on, this will dump info


about sounds also.

ent_trace_status : 0 : , sv : When ent_trace is on, this will dump info


about status also.

ent_vfeats : cmd : : Lists the Entity's Vampire Feat Values

ent_vfeats_spew : cmd : : Lists the target Entity's Vampire Feats

ent_vstats : cmd : : Displays the Vampire Stats for the given


entity(ies) on top of the entity (See Overlay Text) Arguments:
{entity_name} / {class_name} / no argument picks what player is looking
at

ent_vstats_spew : cmd : : Lists the target Entity's Vampire Stats


Arguments: {Buy | Sell} {stat_name} / no arguments lists all stats.

entity_debug_stats : 1 : , sv :

envmap : cmd : :

escape : cmd : :

exec : cmd : :

exit : cmd : :

fadein : cmd : : fadein {time r g b}: Fades the screen in from black or
from the specified color over the given number of seconds.

fadeout : cmd : : fadeout {time r g b}: Fades the screen to black or to


the specified color over the given number of seconds.

faith : cmd : : Sets the local player's faith points

fakelag : 0 : :

fakeloss : 0 : :

fall_threshold : 200 : , sv, rep :

+feed : cmd : :

-feed : cmd : :

feedvision : 0 : , cl :

find : cmd : :

fire_absorbrate : 3 : , sv :

fire_dmgbase : 1 : , sv :
fire_dmginterval : 3 : , sv :

fire_dmgscale : 0 : , sv :

fire_extabsorb : 5 : , sv :

fire_extscale : 12 : , sv :

fire_growthrate : 1 : , sv :

fire_heatscale : 1 : , sv :

fire_incomingheatscale : 0 : , sv :

fire_maxabsorb : 50 : , sv :

fire_showvolume : 0 : , sv :

firetarget : cmd : :

firstperson : cmd : :

flex_maxawaytime : 1 : , sv :

flex_maxplayertime : 7 : , sv :

flex_minawaytime : 0 : , sv :

flex_minplayertime : 5 : , sv :

flex_rules : 1 : , a, cl :

flood_terminal : 0 : , cl :

flush : cmd : : Flush cache memory.

fog_clip : -1 : , cl :

fog_color : -1 : , cl :

fog_colorskybox : -1 : , cl :

fog_enable : 1 : , cl :

fog_enableskybox : 1 : , cl :

fog_end : -1 : , cl :

fog_endskybox : -1 : , cl :

fog_override : 0 : , cl :

fog_start : -1 : , cl :

fog_startskybox : -1 : , cl :
footstep_heavy_dist : 512 : , a, sv :

footstep_heavy_vol : 0 : , a, sv :

footstep_normal_dist : 256 : , a, sv :

footstep_normal_vol : 0 : , a, sv :

footstep_npc_use_templates : 1 : , sv :

footstep_pc_vol : 0 : , a, nf, sv, rep : PC Step sound volume

force_centerview : cmd : :

force_sniper_third_person : cmd : : called when the sniper rifle is


forced into third person.

force_unstick : 0 : , sv, rep :

+forward : cmd : :

-forward : cmd : :

fov : cmd : : Change players FOV

fps_max : 300 : : Frame rate limiter

frenzyplayer : cmd : : yeah, kick player into frenzy

ft_draw_chain : 0 : , sv, rep : Set to 1 to draw the client chain, 2 to


draw the server, 3 for both, 0 for none.

ft_link_drag : 0 : , sv, rep : The drag applied to a flamethrower link.


The velocity is curved by this much each second.

ft_link_gravity : -100 : , sv, rep : The amouunt of drop applied to a


link, in inches per second.

ft_link_lifetime : 1 : , sv, rep : How long a link in the chain lives

ft_link_velocity : 800 : , sv, rep : The initial velocity of a


flamethrower link

ft_node_dmg_radius : 12 : , sv :

ft_spawn_particles : 1 : , sv, rep : Set to 0 to stop spawning fire


particles

fullinfo : cmd : :

g_debug_physcannon : 0 : , sv :

game_speeds : 0 : :

gamma : 2 : :

gargoyle_obstruction_lookahead : 24 : , sv : Set this var to override


the lookahead for obstructing physics objects.

gargoyle_obstruction_scalar : 5 : , sv : Set this var to override the


forward push for obstructing physics objects.

gargoyle_obstruction_z : 75 : , sv : Set this var to override the z push


for obstructing physics objects.

gclearall : cmd : : Resets all state flags.

gcleardialog : cmd : : Resets all dialog state flags.

gg : cmd : : Play a demo with game gauge.

gib_xz_vel : 200 : , sv : Gib Vel

giftxp : cmd : : Free XP for all!

give : cmd : : Give item to player. Arguments: <item_name>

gl_clear : 0 : , cl :

god : cmd : : Toggle. Player becomes invulnerable.

+graph : cmd : :

-graph : cmd : :

grenade_lightdecay : 2000 : , sv :

grenade_lighttime : 3 : , sv :

hackcmd : cmd : : Command to current hacking console

haunted_break_speed : 150 : , sv :

heartbeat : cmd : :

help : cmd : :

hengeyokai_obstruction_lookahead : 24 : , sv : Set this var to override


the lookahead for obstructing physics objects.

hengeyokai_obstruction_scalar : 5 : , sv : Set this var to override the


forward push for obstructing physics objects.

hengeyokai_obstruction_z : 75 : , sv : Set this var to override the z


push for obstructing physics objects.

hengeyokai_stun : 0 : , sv :

hidebarter : cmd : :

hidecharwizard : cmd : :

hideconsole : cmd : :
hidegameuiwindows : cmd : :

hidehotkeys : cmd : :

hidehud : 0 : , cl :

hideiteminfo : cmd : :

hidemapscreen : cmd : :

hidemodels : 0 : :

hideteam : cmd : :

hisound : 0 : , a :

holster : cmd : :

host_framerate : 0 : :

host_limitlocal : 0 : : Apply cl_cmdrate and cl_updaterate to loopback


connection

host_map : 0 : :

host_profile : 0 : :

host_showcachemiss : 0 : : Print a debug message when the client or


server cache is missed.

host_speeds : 0 : :

host_timescale : 1 : :

host_writeconfig : cmd : : Store current settings to config.cfg (or


specified .cfg file).

hostname : 0 : :

hostport : 0 : :

hpkextract : cmd : :

hpklist : cmd : :

hpkremove : cmd : :

hpkval : cmd : :

hud_drawhistory_time : 5 : , cl :

hud_fastswitch : 0 : , a, cl :

hud_saytext_time : 12 : , cl :

ic_arr_x : 950 : , cl :
ic_arr_y : 20 : , cl :

ic_bg_x : 886 : , cl :

ic_bg_y : 20 : , cl :

ic_yaw : 0 : , cl :

impulse : cmd : :

incrementvar : cmd : :

info : cmd : :

infobar_message : cmd : :

init_hotkeys : cmd : : Sets hotkeys to initial state.

inven_drop : cmd : : Drops an item from the local player's Inventory


Arguments: {inven_slot #}

inven_drop_curr : cmd : : Drops the currently equipted weapon.

inven_holster : cmd : : holsters the currently equipted weapon.

inven_list : cmd : : Lists the local player's Inventory

inven_wield : cmd : : Wields an item from the local player's Inventory


Arguments: {inven_slot #}

invnext : cmd : :

invprev : cmd : :

ip : 0 : :

ip_clientport : 0 : :

ip_hostport : 0 : :

+jlook : cmd : :

-jlook : cmd : :

joyadvanced : 0 : , cl :

joyadvancedupdate : cmd : :

joyadvaxisr : 0 : , cl :

joyadvaxisu : 0 : , cl :

joyadvaxisv : 0 : , cl :

joyadvaxisx : 0 : , cl :

joyadvaxisy : 0 : , cl :
joyadvaxisz : 0 : , cl :

joyforwardsensitivity : -1 : , cl :

joyforwardthreshold : 0 : , cl :

joyname : 0 : , cl :

joypitchsensitivity : 1 : , cl :

joypitchthreshold : 0 : , cl :

joysidesensitivity : -1 : , cl :

joysidethreshold : 0 : , cl :

joystick : 0 : , a, cl :

joywwhack1 : 0 : , cl :

joywwhack2 : 0 : , cl :

joyyawsensitivity : -1 : , cl :

joyyawthreshold : 0 : , cl :

+jump : cmd : :

-jump : cmd : :

jump : cmd : : Sets the jumping feat to given value by setting


underlying stats. Arguments: {value} / no arguments lists current feat
value

kick : cmd : :

kill : cmd : : kills the player

killserver : cmd : :

+klook : cmd : :

-klook : cmd : :

knockback_no_attack_time : 1 : , sv : Duration of time that the player


cannot get attacked after getting up from a knockback.

lastinv : cmd : :

+left : cmd : :

-left : cmd : :

light_crosshair : cmd : :

linearFrameBuffer : 0 : :
linefile : cmd : :

list : cmd : :

listdemo : cmd : : List demo file contents.

listip : cmd : : List IP addresses on the ban list.

load : cmd : :

localinfo : cmd : : Show server's localinfo string.

lod_Enable : 1 : , cl :

lod_TransitionDist : 400 : , cl :

log : cmd : : Turn server message logging on/off

log_character : cmd : :

logaddress : cmd : : Set the IP address and port to which to log server
messages.

+lookdown : cmd : :

-lookdown : cmd : :

lookspring : 0 : , a, cl :

lookstrafe : 0 : , a, cl :

+lookup : cmd : :

-lookup : cmd : :

lservercfgfile : 0 : , sv :

m_filter : 1 : , a, cl : Mouse filtering (set this to 1 to average the


mouse over 2 frames).

m_forward : 1 : , a, cl : Mouse forward factor.

m_pitch : 0 : , a, cl : Mouse pitch factor.

m_side : 0 : , a, cl : Mouse side factor.

m_yaw : 0 : , a, cl : Mouse yaw factor.

manbat_delta : 600 : , sv :

manbat_screech_always : 0 : , sv :

manbat_stun : 0 : , sv :

map : cmd : : Start playing on specified map.


map_edit : cmd : :

map_noareas : 0 : :

mapcyclefile : 0 : , sv :

maps : cmd : : Displays list of maps.

mat_bufferprimitives : 1 : :

mat_bumpbasis : 0 : :

mat_bumpmap : 1 : :

mat_clipz : 1 : , cl :

mat_compressedtextures : 1 : , a :

mat_crosshair : cmd : :

mat_debug : cmd : :

mat_depthbias_decal : -262144 : :

mat_depthbias_normal : 0 : :

mat_diffuse : 1 : :

mat_drawflat : 0 : :

mat_drawwater : 1 : , cl :

mat_dynamicload : 0 : :

mat_envmapsize : 128 : :

mat_envmaptgasize : 32 : :

mat_fillrate : 0 : :

mat_filterlightmaps : 1 : :

mat_filtertextures : 1 : :

mat_forcedynamic : 0 : :

mat_forcehardwaresync : 1 : :

mat_fullbright : 0 : :

mat_info : cmd : :

mat_leafvis : 0 : :

mat_lightback : 0 : :

mat_lightmapsonly : 0 : :
mat_lightpasses : 1 : :

mat_loadtextures : 1 : :

mat_luxels : 0 : :

mat_maxframelatency : 1 : :

mat_measurefillrate : 0 : :

mat_mipmaptextures : 1 : :

mat_normalmaps : 0 : :

mat_normals : 0 : :

mat_numtextureunits : 0 : : Set to 0 to let the hardware/driver decide


how many texture units are available. Set to a positive integer to limit
the number of texture units.

mat_overbright : 2 : , a :

mat_picmip : 0 : , a :

mat_polyoffset : 4 : , a :

mat_proxy : 0 : :

mat_reloadmaterials : cmd : :

mat_reloadtextures : cmd : :

mat_reversedepth : 0 : :

mat_shadowstate : 1 : :

mat_showbadnormals : 0 : :

mat_showlightmappage : -1 : :

mat_showlowresimage : 0 : :

mat_showmaterials : cmd : :

mat_showmiplevels : 0 : :

mat_showtextures : cmd : :

mat_showwatertextures : 0 : , cl :

mat_slopescaledepthbias_decal : 0 : :

mat_slopescaledepthbias_normal : 0 : :

mat_softwarelighting : 0 : :
mat_softwareskin : 0 : :

mat_specular : 1 : :

mat_suppress : cmd : :

mat_trilinear : 1 : :

mat_waterdebug : 0 : , cl :

mat_wireframe : 0 : :

maxplayers : cmd : : Change the maximum number of players allowed on


this server.

mcache : cmd : :

measure_resort : 1 : : How often to re-sort profiling sections

melee_flinch_big_time : 5 : , sv : Duration of time for melee super


flinch viewkick.

melee_flinch_time : 1 : , sv : Duration of time for melee flinch


viewkick.

melee_swing_completion_percent : 0 : , sv :

melee_swish_sound_time_offset : 0 : , sv :

meleedebug : 0 : , sv :

mem_dbgfile : 0 : :

mem_dumpstats : 0 : : Dump current and max heap usage info to console at


end of frame ( set to 2 for continuous output )

mem_leakbase : 0 : : Set to 1 to set a baseline for memory leaks at the


end of the current frame

mem_leakdelta : 0 : : Set to 1 to dump the changes since mem_leakbase

mem_leakframeblock : 0 : : show block change during the next frame (set


to 2 for continuous)

mem_leakframehisto : 0 : : show block count during the next frame (set


to 2 for continuous)

mem_setallocbreaksize : cmd : : Sets SetAllocBreakSize in DLLChain

ming_xiao_charge : 1 : , sv : Set this to 1 to allow ming xiao to do a


charge attack when cornered.

ming_xiao_grub_death : 1 : , sv : Set this to 1 to kill ming xiao's


grubs when she dies.

ming_xiao_particle : cmd : : Use this command force ming xiao to show


one of her particles.
ming_xiao_pickup : 1 : , sv : Set this to 1 to allow ming xiao to pickup
and throw bodies.

ming_xiao_throw_base : 150 : , sv : Set this var to override the throw


base.

ming_xiao_throw_hds : 0 : , sv : Set this var to override the throw


height to distance scalar.

ming_xiao_throw_power : 0 : , sv : Set this var to override the throw


power.

+mlook : cmd : :

-mlook : cmd : :

mm_resetparticles : cmd : :

mm_verbose : 0 : , cl :

model : 0 : , a : Current model name

modelpanel_fov : 35 : , cl : Use this to set the field of view for the


'orthogonal' view for a model in vgui.

modelpanel_light_ang1 : 1 : , cl : Blah

modelpanel_light_ang2 : 1 : , cl : Blah

modelpanel_light_x : 60 : , cl : Blah

modelpanel_light_y : 30 : , cl : Blah

modelpanel_light_z : 60 : , cl : Blah

modelpanel_scalar : 1 : , cl : Use this to adjust the width of the


screen for the model. Increase if there is clipping. Shrink if model
looks too small.

money : 1 : , cl :

+movedown : cmd : :

-movedown : cmd : :

+moveleft : cmd : :

-moveleft : cmd : :

movement_debug_stats : 0 : , sv :

+moveright : cmd : :

-moveright : cmd : :

+moveup : cmd : :
-moveup : cmd : :

mp_allowNPCs : 1 : , sv :

mp_autocrosshair : 1 : , sv :

mp_decals : 300 : , a :

mp_defaultteam : 0 : , sv :

mp_falldamage : 0 : , sv :

mp_footsteps : 1 : , sv :

mp_forcerespawn : 1 : , sv :

mp_fraglimit : 0 : , sv :

mp_friendlyfire : 0 : , sv :

mp_logecho : 1 : :

mp_logfile : 1 : :

mp_teamlist : 0 : , sv :

mp_teamoverride : 1 : , sv :

mp_teamplay : 0 : , sv :

mp_timelimit : 0 : , sv :

mp_weaponstay : 0 : , sv :

muzzleflash_light : 1 : , a, cl :

name : 0 : , a : Current user name

net_address : 0 : :

net_chokeloop : 0 : : Apply bandwidth choke to loopback packets

net_drawslider : 0 : : Draw completion slider during signon

net_graph : 0 : , cl : Draw the network usage graph

net_graphheight : 64 : , cl :

net_graphpos : 1 : , a, cl :

net_graphsolid : 1 : , a, cl :

net_graphwidth : 192 : , a, cl :

net_scale : 5 : , a, cl :
net_showdrop : 0 : : Show dropped packets in console

net_showpackets : 0 : : Dump packet summary to console

net_synctags : 0 : : Insert tokens into the net stream to find


client/server mismatches.

new : cmd : :

newscaster_debug : 0 : , sv :

next : 0 : : Set to 1 to advance to next frame ( when singlestep == 1 )

nextdemo : cmd : : Play next demo in sequence.

noclip : cmd : : Toggle. Player becomes non-solid and flies.

nosradar_flash_speed : 8 : , cl :

nosradar_max_strike_dist : 190 : , cl :

nosradar_min_strike_dist : 80 : , cl :

notarget : cmd : : Toggle. Player becomes hidden to NPCs.

npc_addexpression : cmd : : Tells the NPC to set himself to add the


expression layer for 10 seconds

npc_attack_range : cmd : : Show NPC's current attack range.

npc_bypass : cmd : : Displays the local movement attempts by the given


NPC(s) (triangulation detours). Failed bypass routes are displayed in
red, successful bypasses are shown in green. Arguments: {entity_name} /
{class_name} / no argument picks what player is looking at.

npc_camera_viewcone : cmd : : Displays the viewcone of all NPC cameras


on a map.

npc_changestance : cmd : : Tells the NPC to set himself to the


dispostion specified

npc_combat : cmd : : Displays text debugging information about the squad


and enemy of the selected NPC (See Overlay Text) Arguments: {npc_name} /
{npc class_name} / no argument picks what player is looking at

npc_conditions : cmd : : Displays all the current AI conditions that an


NPC has in the overlay text. Arguments: {npc_name} / {npc class_name} /
no argument picks what player is looking at

npc_create : cmd : : Creates an NPC of the given type where the player
is looking (if the given NPC can actually stand at that location). Note
that this only works for npc classes that are already in the world. You
can not create an entity that doesn't have an instance in the level.
Arguments: {npc_class_name}

npc_create_aimed : cmd : : Creates an NPC aimed away from the player of


the given type where the player is looking (if the given NPC can
actually stand at that location). Note that this only works for npc
classes that are already in the world. You can not create an entity that
doesn't have an instance in the level. Arguments: {npc_class_name}

npc_create_equipment : 0 : , sv :

npc_destroy : cmd : : Removes the given NPC(s) from the universe


Arguments: {npc_name} / {npc_class_name} / no argument picks what player
is looking at

npc_destroy_unselected : cmd : : Removes all NPCs from the universe that


aren't currently selected

npc_disposition : cmd : : Tells the NPC to set himself to the dispostion


specified

npc_door_test : cmd : : Gets a door's open data and draws info about it.
Arguments: {entity_name} / {class_name} / no argument picks what player
is looking at.

npc_dump_disposition_sequences : cmd : : Gets a list of all the


disposition sequences for a give NPC

npc_dump_stats : cmd : : Dump some stats on entity run time (especially


NPCs)

npc_enemies : cmd : : Shows memory of NPC. Draws an X on top of each


memory. Eluded entities drawn in blue (don't know where it went)
Unreachable entities drawn in green (can't get to it) Current enemy
drawn in red Current target entity drawn in magenta All other entities
drawn in pink Arguments: {npc_name} / {npc class_name} / no argument
picks what player is looking at

npc_fail_route : cmd : : Displays failed routes of the given NPC as a


line on the screen. Waypoints along the route are drawn as small cyan
rectangles. Line is color coded in the following manner: Blue - path to
a node Cyan - detour around an object (triangulation) Red - jump Maroon
- path to final target position Arguments: {npc_name} / {npc_class_name}
/ no argument picks what player is looking at

npc_fail_route_hull : 0 : , sv : Set this to true if you want to get a


detailed look at where a hull trace failed.

npc_fail_route_hull_granularity : 4 : , sv : The number of lines per


axis for this test (note, the number of line tests done is this number
cubed).

npc_focus : cmd : : Displays red line to NPC's enemy (if has one) and
blue line to NPC's target entity (if has one) Arguments: {npc_name} /
{npc class_name} / no argument picks what player is looking at

npc_freeze : cmd : : Selected NPC(s) will freeze in place (or unfreeze).


If there are no selected NPCs, uses the NPC under the crosshair.
Arguments: -none-

npc_go : cmd : : Selected NPC(s) will go to the location that the player
is looking (shown with a purple box) Arguments: -none-
npc_go_random : cmd : : Sends all selected NPC(s) to a random node.
Arguments: -none-

npc_ground_speed_scalar : cmd : : Sets the ground speed scalar for an


NPC Arguments: {value} {entity_name} / {class_name} / no argument picks
what player is looking at.

npc_hearing_sensitivity : cmd : : Sets an NPC's hearing sensitivity.


Arguments: {perception} {entity_name} / {class_name} / no argument picks
what player is looking at.

npc_hit_buildup_amount : 2 : , sv :

npc_ignore_player : cmd : : NPCs will not hear or see the player

npc_ignore_senses : cmd : : NPCs will not hear or see anything

npc_motion_trail : cmd : : Sets the motion trail value for an NPC


Arguments: {value} {entity_name} / {class_name} / no argument picks what
player is looking at.

npc_motiontrailscale : 4 : , cl :

npc_nearest : cmd : : Draw's a while box around the NPC(s) nearest node
Arguments: {entity_name} / {class_name} / no argument picks what player
is looking at

npc_perception : cmd : : Sets an NPC's perception and reinitializes the


view and hearing distances. Arguments: {perception} {entity_name} /
{class_name} / no argument picks what player is looking at.

npc_play_dialog_file : cmd : : Tells the NPC you are looking at to play


a WAV or .VCD file.

npc_relationship_table : cmd : : Dumps a table of all NPC relationships


to a file. Arguments: {filename}

npc_removeall : cmd : : finds and removes every NPC entity on the map

npc_reset : cmd : : Reloads schedules for all NPC's from their script
files Arguments: -none-

npc_route : cmd : : Displays the current route of the given NPC as a


line on the screen. Waypoints along the route are drawn as small cyan
rectangles. Line is color coded in the following manner: Blue - path to
a node Cyan - detour around an object (triangulation) Red - jump Maroon
- path to final target position Arguments: {npc_name} / {npc_class_name}
/ no argument picks what player is looking at

npc_select : cmd : : Select or deselects the given NPC(s) for later


manipulation. Selected NPC's are shown surrounded by a red translucent
box Arguments: {entity_name} / {class_name} / no argument picks what
player is looking at

npc_set_expression : cmd : : Sets the npc's expression. Targets entity


in viewcone.
npc_set_free_knowledge_duration : cmd : : Sets the NPC's free knowledge
duration. Arguments: {entity_name} / {class_name} / no argument picks
what player is looking at.

npc_show_relationships : cmd : : Show the relationships with all combat


characters in the world. Arguments: {entity_name} / {class_name} / no
argument picks what player is looking at.

npc_show_stats : cmd : : Show some stats on entity run time (especially


NPCs)

npc_squads : cmd : : Obsolete. Replaced by npc_combat

npc_steering : cmd : : Displays the steering obstructions of the NPC


(used to perform local avoidance) Arguments: {entity_name} /
{class_name} / no argument picks what player is looking at

npc_steering_all : cmd : : Displays the steering obstructions of all


NPCs (used to perform local avoidance)

npc_task_text : cmd : : Outputs text debugging information to the


console about the all the tasks + break conditions of the selected NPC
current schedule Arguments: {npc_name} / {npc class_name} / no argument
picks what player is looking at

npc_tasks : cmd : : Displays detailed text debugging information about


the all the tasks of the selected NPC current schedule (See Overlay
Text) Arguments: {npc_name} / {npc class_name} / no argument picks what
player is looking at

npc_view_distance : cmd : : Sets an NPC's view distance. Arguments:


{perception} {entity_name} / {class_name} / no argument picks what
player is looking at.

npc_viewcone : cmd : : Displays the viewcone of the NPC (where they are
currently looking and what the extents of there vision is) Arguments:
{entity_name} / {class_name} / no argument picks what player is looking
at

npc_vphysics : 0 : , sv :

occult_regen_trigger : cmd : : Triggers Occult Regen action

packfiles : cmd : :

particle : cmd : : Displays a particle system. particle <name|number>


[distance]

particle_refresh : cmd : :

particle_scale : 1 : , a, nf, sv :

particle_simulateoverflow : 0 : , cl : Used for stress-testing particle


systems. Randomly denies creation of particles.

particles_disable_cull : 0 : :
particles_disable_rendering : 0 : :

particles_disable_updates : 0 : :

particles_dump : 0 : :

particles_enable_precipitation : 1 : , a :

particles_force_cull : 0 : :

particles_label : 0 : :

password : 0 : : Current server access password

pausable : 1 : , nf :

pause : cmd : :

perf_depthcomplexity : 5 : :

perf_disptoworldtriratio : 4 : :

perf_maxhiendmodeltris : 75000 : :

perf_maxlightmapmemory : 6 : :

perf_maxmisctris : 1500 : :

perf_maxmodelmemory : 16 : :

perf_maxtexturememory : 90 : :

perf_maxworldtris : 4000 : :

perf_newtexturememory : 1 : :

perf_scenetexhiend : 3 : :

perf_scenetexlowend : 2 : :

perf_warninglevel : 0 : :

perf_worldtexhiend : 15 : :

perf_worldtexlowend : 4 : :

phoneme_delay : 0 : , a, cl :

phonemefilter_max : 0 : , a, cl :

phonemefilter_min : 0 : , a, cl :

phys_pushscale : 1 : , sv :

phys_rolling_drag : 1 : , sv, rep :


phys_speeds : 0 : , sv :

phys_swap : cmd : :

phys_timescale : 1 : , sv :

physcannon_ball_cone : 0 : , sv :

physcannon_chargetime : 2 : , sv :

physcannon_cone : 0 : , sv :

physcannon_launch_multiplier : 0 : , sv :

physcannon_lob_maxforce : 650 : , sv :

physcannon_lob_maxweight : 5 : , sv :

physcannon_maxforce : 1500 : , sv :

physcannon_maxmass : 250 : , sv :

physcannon_mega_pullforce : 8000 : , sv :

physcannon_mega_tracelength : 750 : , sv :

physcannon_minforce : 700 : , sv :

physcannon_pullforce : 4000 : , sv :

physcannon_tracelength : 80 : , sv :

physics_impact_sound_max : 1 : , sv : For physics impact sounds, max


volume.

physics_impact_sound_min : 0 : , sv : For physics impact sounds, min


volume, anything less than this is not played.

physicsshadowupdate_render : 0 : , sv :

picker : cmd : : Toggles 'picker' mode. When picker is on, the bounding
box, pivot and debugging text is displayed for whatever entity the
player is looking at. Arguments: -none-

ping : cmd : :

pingservers : cmd : :

pl_autopickup_wpns : 0 : , sv : Determines whether players are allowed


to auto-pickup weapons.

pl_criminal_level : -1 : , sv : Sets the player's criminal level for


testing.

pl_investigate_level : -1 : , sv : Sets the player's investigate level


for testing.
pl_min_act_timer : 5 : , sv : Controls the minimum amount of time a
player is flagged for commiting a criminal or supernatural act.

pl_supernatural_level : -1 : , sv : Sets the player's supernatural level


for testing.

play : cmd : : Play a sound.

playdemo : cmd : : Play a recorded demo file (.dem ).

player_damage_kick_knockback_scalar : 10 : , sv : Intensity of view kick


when hit into knockback

player_damage_kick_scalar : 0 : , sv :

player_immobilize : cmd : :

player_mobilize : cmd : :

player_sequence : cmd : : tells the local player to play a sequence

player_stopuse : cmd : : kicks the player out from what they are using

player_throwforce : 1000 : , sv :

player_use_arc : 30 : , sv :

playflush : cmd : : Play a sound, reloading from disk in case of


changes.

playgamesound : cmd : : Play a sound from the game sounds txt file

playvol : cmd : : Play a sound at a specified volume.

port : 27015 : :

powerupability : cmd : : PoweringUp

pref_modelscalabilityfactor : 6 : :

prespawn : cmd : :

print_client_viewmodel_info : cmd : :

print_flex_rules : 0 : , a, cl :

print_flex_weights : 0 : , a, cl :

projectile_lightdecay : 2000 : , sv :

projectile_lighttime : 3 : , sv :

prop_crosshair : cmd : :

py_tattle : 0 : , sv :

quest_log_close : cmd : : Called upon quest log closure


quest_refresh : cmd : : Refreshes client quest info

+questlog : cmd : :

-questlog : cmd : :

questlog : cmd : :

quit : cmd : :

r_3dnow : cmd : :

r_3dsky : 1 : , cl : Enable the rendering of 3d sky boxes

r_anamorphic : 0 : , a :

r_avglight : 1 : :

r_avglightmap : 0 : :

r_ClipAreaPortals : 1 : :

r_cloth : 1 : :

r_colorstaticprops : 0 : :

r_decals : 4096 : :

r_decaltarget : 1500 : :

r_disable_highlight : 0 : , cl :

r_DispBuildable : 0 : :

r_DispDrawAxes : 0 : :

r_DispEnableLOD : 0 : :

r_DispFullRadius : 400 : : Radius within which a displacement will stay


at its highest LOD

r_DispLockLOD : 0 : :

r_DispRadius : 500 : :

r_DispSetLOD : 0 : :

r_DispTolerance : 5 : :

r_DispUpdateAll : 0 : :

r_DispUseStaticMeshes : 1 : : High end machines use static meshes. Low


end machines use temp meshes.

r_DispWalkable : 0 : :
r_DoCovertTransitions : 0 : , cl :

r_DrawBeams : 1 : , cl :

r_drawbrushmodels : 1 : :

r_drawdecals : 1 : :

r_DrawDetailProps : 1 : , cl :

r_DrawDisp : 1 : :

r_drawentities : 1 : :

r_drawleaf : -1 : :

r_drawlights : 0 : :

r_drawmrmmodels : 1 : , cl :

r_drawopaquerenderables : 1 : , cl :

r_drawopaqueworld : 1 : , cl :

r_DrawParticles : 1 : , cl : Enable/disable particle rendering

r_DrawPortals : 0 : :

r_drawropes : 1 : , cl :

r_drawskybox : 1 : :

r_DrawSpecificStaticProp : -1 : :

r_drawsprites : 1 : , cl :

r_drawstaticprops : 1 : :

r_drawtranslucentrenderables : 1 : , cl :

r_drawtranslucentworld : 1 : :

r_drawvgui : 1 : : Enable the rendering of vgui panels

r_drawviewmodel : 1 : , cl :

r_drawwatersurface : 1 : , cl :

r_drawworld : 1 : :

r_dynamic : 1 : :

r_eyegloss : 1 : , a :

r_eyemove : 1 : , a :

r_eyes : 1 : :
r_eyeshift_x : 0 : , a :

r_eyeshift_y : 0 : , a :

r_eyeshift_z : 0 : , a :

r_eyesize : 0 : , a :

r_flex : 1 : :

r_ForceRestore : 0 : :

r_frustumcullworld : 1 : :

r_glowfadein : 0 : , cl :

r_glowfadeout : 0 : , cl :

r_lightdebug : 0 : :

r_lightmap : -1 : :

r_lightmapcolorscale : 1 : :

r_lightstyle : -1 : :

r_lightupdate : 0 : :

r_lockpvs : 0 : :

r_lod : -1 : :

r_lod_noupdate : 0 : :

r_maxmodeldecal : 50 : :

r_maxnewsamples : 6 : :

r_maxsampledist : 128 : :

r_minnewsamples : 3 : :

r_mmx : cmd : :

r_modelwireframedecal : 0 : :

r_multipasslight : 1 : :

r_nohw : 0 : :

r_noisealpha : 19 : , cl :

r_noisefps : 22 : , cl :

r_noisescale : 0 : , cl :
r_norefresh : 0 : :

r_nosw : 0 : :

r_novis : 0 : :

r_occlusionglow : 1 : , cl :

r_onlylight : -1 : :

r_overlaywireframe : 0 : :

r_PortalTestEnts : 1 : , cl : Clip entities against portal frustums.

r_pos : 0 : :

r_radiosity : 2 : :

r_screendelaymax : 0 : , cl :

r_shadowcolor : cmd : :

r_shadowdir : cmd : :

r_shadowlod : -1 : :

r_shadowlodbias : 2 : :

r_shadows : 1 : :

r_shadowwireframe : 0 : :

r_showenvcubemap : 0 : :

r_skin : 0 : :

r_snapportal : -1 : :

r_speeds : 0 : :

r_speedsquiet : 0 : , a :

r_spewleaf : 0 : :

r_sse : cmd : :

r_sse2 : cmd : :

r_staticlighting : 1 : :

r_staticpropids : 0 : :

r_staticpropmodels : 0 : :

r_teeth : 1 : :

r_traceglow : 0 : , cl :
r_traceglowbackoff : 16 : , cl :

r_traceglowfast : 1 : , cl :

r_TransitionSensitivity : 6 : , cl : Controls when LODs are changed.


Lower numbers cause more overt LOD transitions.

r_useambientcube : 1 : :

r_viewcubemap : 0 : , cl :

r_viewcubemapsize : 96 : , a, cl :

r_visualizetraces : 0 : , sv, rep :

r_watercullenable : 0 : , cl :

r_watercullheight : 25 : , cl :

r_worldlightmin : 0 : :

r_worldlights : 2 : :

rat_feed_arc : 90 : , sv :

rat_feed_radius : 120 : , sv :

rate : 2500 : , a : Bytes per second max that the server can send you
data

raw_attack_value_forced : -1 : , sv :

rcon : cmd : :

rcon_address : 0 : : Address of remote server if sending unconnected


rcon commands

rcon_password : 0 : :

rcon_port : 0 : : Port of remote server if sending unconnected rcon


commands

reconnect : cmd : :

record : cmd : : Record a demo.

+reload : cmd : :

-reload : cmd : :

reload : cmd : :

remove_discipline_effects : cmd : :

remove_entities_by_class : cmd : : deletes all entities of the give


classname (i.e. 'env_sprite' )
remove_entities_by_name : cmd : : Deletes all entities that match the
give name, can use wildcards, (i.e. 'rope_*')

remove_extraneous_entities : cmd : :

removedemo : cmd : : Remove from demo file contents.

removeip : cmd : : Remove an IP address to the ban list.

report_entities : cmd : : Lists all entities

report_touchlinks : cmd : : Lists all touchlinks

reset_character_collide : cmd : :

restart : cmd : :

retry : cmd : :

revert : cmd : :

+right : cmd : :

-right : cmd : :

room_delay : 0 : :

room_dlylp : 1 : :

room_feedback : 0 : :

room_left : 0 : :

room_lp : 0 : :

room_mod : 0 : :

room_off_l : 0 : :

room_refl : 0 : :

room_rvblp : 1 : :

room_size : 0 : :

room_type : 0 : :

room_type_l : 0 : :

rope_collide : 0 : , cl : Collide rope with the world

rope_drawlines : 0 : , cl :

rope_shake : 0 : , cl :

rope_subdiv : 2 : , cl : Rope subdivision amount


sabbat_gunman_speed_scalar : 3 : , sv : Determines how much faster than
normal a sabbat gunman will move.

sabbat_gunman_speed_threshold : 0 : , sv : Determines how fast the guy


needs to be going to scale the speed.

sabbat_gunman_speed_trails : 3 : , sv : Determines what level of motion


trails to use for a speedy guy.

save : cmd : :

say : cmd : : Display player message

say : cmd : :

say_team : cmd : : Display player message to team

say_team : cmd : :

scarednpc_count : 3 : , sv :

scarednpc_time : 180 : , sv :

scene_allowoverrides : 1 : , sv : When playing back a choreographed


scene, allow per-model expression overrides.

scene_print : 0 : , sv : When playing back a scene, print timing and


event info to console.

scr_centertime : 2 : , cl :

scr_connectmsg : 0 : :

scr_connectmsg1 : 0 : :

scr_connectmsg2 : 0 : :

scr_conspeed : 600 : :

scr_downloading : -1 : :

scr_ofsx : 0 : , cl : Offset the render origin along the x axis

scr_ofsy : 0 : , cl : Offset the render origin along the y axis

scr_ofsz : 0 : , cl : Offset the render origin along the z axis

scr_printspeed : 8 : , cl :

screenshake : cmd : : screenshake [amplitude [frequency [duration


[command] ] ] ]

screenshot : cmd : :

seasick : cmd : :
sensitivity : 9 : , a, cl : Mouse sensitivity.

servercfgfile : 0 : , sv :

setdemoinfo : cmd : : Set demo file section info.

sethotkeys : cmd : : Sets hotkeys, argsx10 {type}{data}

setinfo : cmd : :

setmaster : cmd : :

setmodel : cmd : : Changes's player's model

setpause : cmd : :

shake : cmd : :

shaky_hands : cmd : :

sheriff_force_teleport : 0 : , sv :

show_python_variable_changes : 1 : , sv : Display assignments to the G


script variable.

showbarter : cmd : :

showcharwizard : cmd : :

showhotkeys : cmd : :

showinventory : cmd : :

showiteminfo : cmd : :

showloadgame : cmd : :

showloot : cmd : :

showmapscreen : cmd : :

showparticlecounts : 0 : , cl : Display number of particles drawn per


frame

showsavegame : cmd : :

showsewermapscreen : cmd : :

showtraces : 0 : :

showtriggers : 0 : , sv :

+showvprof : cmd : :

-showvprof : cmd : :

singlestep : 0 : : Run engine in single step mode ( set next to 1 to


advance a frame )

sk_basenpctroika_health : 10 : , sv :

sk_bullseye_health : 35 : , sv :

sk_crow_health : 5 : , sv :

sk_crow_melee_dmg : 0 : , sv :

sk_generic_npc_bathack_health : 10 : , sv :

sk_generic_npc_health : 10 : , sv :

sk_max_anaconda_round : 198 : , sv :

sk_max_bloodpack_round : 9 : , sv :

sk_max_bluebloodpack_round : 9 : , sv :

sk_max_buckshot : 30 : , sv :

sk_max_crossbow_bolt : 36 : , sv :

sk_max_deserteagle_round : 288 : , sv :

sk_max_eldervitaepack_round : 3 : , sv :

sk_max_flamethrower_round : 150 : , sv :

sk_max_glock_17c_round : 360 : , sv :

sk_max_grenade : 0 : , sv :

sk_max_ithica_m37_round : 90 : , sv :

sk_max_large_round : 150 : , sv :

sk_max_mac10_round : 390 : , sv :

sk_max_medium_round : 150 : , sv :

sk_max_remington_round : 20 : , sv :

sk_max_small_round : 150 : , sv :

sk_max_sniper_round : 30 : , sv :

sk_max_steyr_round : 390 : , sv :

sk_max_supershotgun_round : 160 : , sv :

sk_max_thirtyeight_round : 128 : , sv :

sk_max_throwing_star : 10 : , sv :

sk_max_uzi_round : 396 : , sv :
sk_npc_arm : 1 : , sv :

sk_npc_chest : 1 : , sv :

sk_npc_dmg_anaconda_round : 2 : , sv :

sk_npc_dmg_bloodpack_round : 0 : , sv :

sk_npc_dmg_bluebloodpack_round : 0 : , sv :

sk_npc_dmg_buckshot : 1 : , sv :

sk_npc_dmg_crossbow_bolt : 2 : , sv :

sk_npc_dmg_deserteagle_round : 2 : , sv :

sk_npc_dmg_eldervitaepack_round : 0 : , sv :

sk_npc_dmg_flamethrower_round : 1 : , sv :

sk_npc_dmg_glock_17c_round : 2 : , sv :

sk_npc_dmg_grenade : 0 : , sv :

sk_npc_dmg_ithica_m37_round : 2 : , sv :

sk_npc_dmg_large_round : 3 : , sv :

sk_npc_dmg_mac10_round : 2 : , sv :

sk_npc_dmg_medium_round : 2 : , sv :

sk_npc_dmg_remington_round : 2 : , sv :

sk_npc_dmg_small_round : 1 : , sv :

sk_npc_dmg_sniper_round : 100 : , sv :

sk_npc_dmg_steyr_round : 2 : , sv :

sk_npc_dmg_supershotgun_round : 2 : , sv :

sk_npc_dmg_thirtyeight_round : 2 : , sv :

sk_npc_dmg_throwing_star : 1 : , sv :

sk_npc_dmg_uzi_round : 2 : , sv :

sk_npc_head : 2 : , sv :

sk_npc_leg : 1 : , sv :

sk_npc_stomach : 1 : , sv :

sk_player_arm : 1 : , sv :
sk_player_chest : 1 : , sv :

sk_player_head : 1 : , sv :

sk_player_leg : 1 : , sv :

sk_player_stomach : 1 : , sv :

sk_plr_dmg_anaconda_round : 8 : , sv :

sk_plr_dmg_bloodpack_round : 0 : , sv :

sk_plr_dmg_bluebloodpack_round : 0 : , sv :

sk_plr_dmg_buckshot : 8 : , sv :

sk_plr_dmg_crossbow_bolt : 8 : , sv :

sk_plr_dmg_deserteagle_round : 8 : , sv :

sk_plr_dmg_eldervitaepack_round : 0 : , sv :

sk_plr_dmg_flamethrower_round : 1 : , sv :

sk_plr_dmg_glock_17c_round : 8 : , sv :

sk_plr_dmg_grenade : 0 : , sv :

sk_plr_dmg_ithica_m37_round : 8 : , sv :

sk_plr_dmg_large_round : 12 : , sv :

sk_plr_dmg_mac10_round : 8 : , sv :

sk_plr_dmg_medium_round : 8 : , sv :

sk_plr_dmg_remington_round : 8 : , sv :

sk_plr_dmg_small_round : 4 : , sv :

sk_plr_dmg_sniper_round : 35 : , sv :

sk_plr_dmg_steyr_round : 8 : , sv :

sk_plr_dmg_supershotgun_round : 8 : , sv :

sk_plr_dmg_thirtyeight_round : 8 : , sv :

sk_plr_dmg_throwing_star : 2 : , sv :

sk_plr_dmg_uzi_round : 8 : , sv :

sk_sabbat_npc_health : 10 : , sv :

sk_vcombatman_health : 10 : , sv :

sk_vmoleman_health : 10 : , sv :
sk_vpedestrian_health : 10 : , sv :

sk_vtest_health : 10 : , sv :

sk_vtzimisce_health : 10 : , sv :

skill : 1 : , a :

skin : 0 : , a : Selected skin

slist : cmd : :

slot1 : cmd : :

slot2 : cmd : :

slot3 : cmd : :

slot4 : cmd : :

slot5 : cmd : :

slot6 : cmd : :

slot7 : cmd : :

slot8 : cmd : :

snapshot : cmd : :

snapto : cmd : :

snd_duckattacktime : 0 : , a :

snd_duckreleasetime : 3 : , a :

snd_duckvolume : 0 : , a :

snd_foliage_db_loss : 4 : :

snd_gain : 1 : :

snd_gain_max : 1 : :

snd_gain_min : 0 : :

snd_mixahead : 0 : , a :

snd_noextraupdate : 0 : :

snd_obscured_gain_dB : -2 : :

snd_profile : 0 : :

snd_refdb : 60 : :
snd_refdist : 36 : :

snd_show : 0 : :

snd_showstart : 0 : :

snd_surround : 0 : , a :

sndplaydelay : cmd : :

sneak_debug_stats : 0 : , sv :

sound_show : cmd : : Shows all sounds made as blue spheres centered


around the sound's source. Turns off sound_show_ent.

sound_show_cylinders : cmd : : Toggles between cylinders and spheres for


sound_show display. Does not change the way sounds are heard, just the
debug representation.

sound_show_deafzone : cmd : : Shows NPC deaf zones when sound events are
fired

sound_show_ent : cmd : : Shows all sounds made as purple spheres


centered around the NPCs. Turns off sound_show.

sound_show_player_only : cmd : : Only show sounds if the player is the


owner.

sound_show_spheres : cmd : : Toggles between cylinders and spheres for


sound_show display. Does not change the way sounds are heard, just the
debug representation.

soundfade : cmd : :

soundinfo : cmd : : Describe the current sound device.

soundlist : cmd : : List all known sounds.

soundscape_fadetime : 3 : , cl : Time to crossfade sound effects between


soundscapes

soundscape_flush : cmd : : Flushes the client side soundscapes

soundscheme_combat_music_time : 15 : , sv :

soundscheme_randomness : 1000 : , sv :

soundscheme_toggledebug : cmd : : Shows what sound schemes are playing.

spawn : cmd : :

speak : cmd : : Play a constructed sentence.

+speed : cmd : :

-speed : cmd : :
speed_runbase : 225 : , sv :

speed_runbonusathletics : 5 : , sv :

speed_walk : 100 : , sv :

startdemos : cmd : :

startmovie : cmd : :

status : cmd : :

stop : cmd : : Finish recording demo.

stopdemo : cmd : :

stopsound : cmd : :

+strafe : cmd : :

-strafe : cmd : :

stuffcmds : cmd : :

suitvolume : 0 : , a, sv :

sv_accelerate : 10 : , nf, sv, rep :

sv_aim : 0 : , a, nf, sv : Autoaim state

sv_airaccelerate : 10 : , nf, sv, rep :

sv_allowdownload : 1 : , nf : Server allows downloading of data files

sv_allowupload : 1 : , nf : Server allows uploading customizations to be


sent to other clients

sv_alltalk : 0 : , sv :

sv_autojump : 0 : , sv :

sv_backspeed : 0 : , a, sv, rep : How much to slow down backwards motion

sv_bounce : 1 : , nf, sv, rep : Bounce multiplier for when physically


simulated objects collide with other objects.

sv_CacheEncodedEnts : 1 : , nf : If set to 1, does an optimization to


prevent extra SendTable_Encode calls.

sv_cheats : 1 : , nf : Allow cheats such as impulse 101

sv_clienttrace : 1 : , nf : 0 = big box(Quake), 0.5 = halfsize, 1 =


normal (100%), otherwise it's a scaling factor

sv_contact : 0 : , nf : Contact email for server sysop

sv_deccelerate : 5 : , nf, sv, rep :


sv_deltaprint : 0 : : Print accumulated CalcDelta profiling data (only
if sv_deltatime is on)

sv_deltatime : 0 : : Enable profiling of CalcDelta calls

sv_deltatrace : 0 : : For debugging, print entity creation/deletion info


to console.

sv_draw_eye_orientation : 0 : , sv :

sv_edgefriction : 2 : , nf, sv, rep :

sv_failuretime : 0 : : After this long without a packet from client,


don't send any more until client starts sending again

sv_filterban : 1 : :

sv_footsteps : 1 : , nf, sv, rep : Play footstep sound for players

sv_friction : 4 : , nf, sv, rep : World friction.

sv_gravity : 800 : , nf, sv, rep : World gravity.

sv_instancebaselines : 1 : : Enable instanced baselines. Saves network


overhead.

sv_jump_boost : 25 : , a, sv, rep : How many extra inches to add to the


player's origin on the first frame of the jump

sv_jump_boost_immediate : 0 : , a, sv, rep :

sv_jump_maxspeed : 350 : , a, sv, rep : Maximum attainable speed while


jumping.

sv_lan : 0 : : Server is a lan server ( no heartbeat, no authentication,


no non-class C addresses, 9999.0 rate, etc.

sv_language : 0 : :

sv_logrelay : 0 : : Allow log messages from remote machines to be logged


on this server

sv_maxrate : 0 : , nf : Max bandwidth rate allowed on server, 0 ==


unlimited

sv_maxspeed : 2048 : , nf, sv, rep :

sv_maxunlag : 0 : , sv :

sv_maxupdaterate : 60 : : Maximum updates per second that the server


will allow

sv_maxvelocity : 3500 : , sv, rep : Maximum speed any ballistically


moving object is allowed to attain per axis.

sv_minrate : 0 : , nf : Min bandwidth rate allowed on server, 0 ==


unlimited

sv_minupdaterate : 10 : : Minimum updates per second that the server


will allow

sv_newunit : 0 : :

sv_noclipaccelerate : 5 : , a, nf, sv, rep :

sv_noclipspeed : 1000 : , a, nf, sv, rep :

sv_packettrace : 1 : : For debugging, print entity creation/deletion


info to console.

sv_password : 0 : , nf : Server password for entry into multiplayer


games

sv_precachegeneric : cmd : : Usage: sv_precachegeneric <name> [ preload


] Add file to precache list.

sv_precacheinfo : cmd : : Show precache info.

sv_precachemodel : cmd : : Usage: sv_precachemodel <name> [ preload ]


Add model to precache list.

sv_precachesound : cmd : : Usage: sv_precachesound <name> [ preload ]


Add sound to precache list.

sv_rollangle : 2 : , nf, sv, rep :

sv_rollspeed : 200 : , nf, sv, rep :

sv_runscale : 1 : , sv :

sv_showhitboxes : -1 : , nf, sv : Send server-side hitboxes for


specified entity to client (NOTE: this uses lots of bandwidth, use on
listen server only).

sv_skyname : 0 : , a, sv, rep : Current name of the skybox texture

sv_sneakscale : 2 : , sv :

sv_soundemitter_filecheck : cmd : : Report missing .wav files for sounds


and game_sounds files.

sv_soundemitter_flush : cmd : : Flushes the sounds.txt system (server


only)

sv_soundemitter_trace : 0 : , sv, rep : Show all EmitSound calls


including their symbolic name and the actual .wav file they resolved to

sv_stepsize : 18 : , nf, sv, rep :

sv_stopspeed : 16 : , nf, sv, rep : Minimum stopping speed when on


ground.

sv_stressbots : 0 : , nf : If set to 1, the server calculates data and


fills packets to bots. Used for perf testing.

sv_suppress_viewpunch : 0 : , sv, rep :

sv_teststepsimulation : 1 : , sv :

sv_timeout : 65 : , nf : After this many seconds without a message from


a client, the client is dropped

sv_unlag : 1 : , nf, sv :

sv_unlagpush : 0 : , sv :

sv_unlagsamples : 1 : , sv :

sv_upload_