NPC entities

You have very little options when defining an animal character. However, you can precisely describe how humans reacts. Note that names are sometime relevant to the character behavior.

One-handed weapon characters can either hold two pistols (default) or get equipped with the pipe. Two-handed weapon characters can have the shotgun (default), the tommygun, the heavy machine gun, the grenade launcher, the rocket launcher or the flamethrower (also, only two-handed weapon characters can equip the flashlight)

AI Cast, Description
cast_runt One-handed weapon runt
cast_shorty Two-handed weapon runt
cast_thug One-handed weapon thug
cast_punk Two-handed weapon thug
cast_bitch One-handed weapon chick
cast_whore Two-handed weapon chick
cast_dog Dog, melee attacks only
cast_thug_sit Sitting thug, unused
cast_bum_sit Sitting bum
cast_punk2 Alias for cast_thug, unused
cast_rosie Alias for cast_bitch, unused
misc_grunt Alias for cast_thug, unused

AI General, Description
path_corner_cast Destination marker
ai_boundary Abort pursuit when reaching this area
ai_event_hostile Drive cast in line of sight hostile toward trespasser
ai_event_follow Trespasser become new leader to cast in line of sight
ai_guard Guarding position
ai_territory Defines gang's territory, members will turn hostile toward trespasser
ai_trigger_characterForce targeted characters to follow their path_corner_cast
ai_locked_door Tells the AI to walk away from a specific area
ai_safespot Markers for safecrackers and locksmiths

Episode specifics (AI only), Description
ai_sy_dykes_boundry Order Moe, Larry and Curly to attack player
misc_kroker_afraid Used by Kroker in Steel Town to hide from player
misc_pv_afraid Used by Yolanda in Poison Ville when talking to the guards
misc_skidrow_afraid Used by MagicJ in Skidrow when player is acting violent toward him
misc_skidrow_ai_reset Reset positions for Bernie and Arnold
misc_skidrow_ambush Ambush spot for Bernie and Arnold
misc_skidrow_radio Attract Bernie and Arnold
misc_steeltown_afraid Used by kids in the mill to run away
misc_sy_afraid Safe spot for Moe to hide from Larry and Curly

AI flags

AI flags are special behavior attributes, some of them are used in-game only and shouldn't be set in maps.

AI Flag, Flag Name, Description
1 AI_NOWALK_FACE Never walk to someone, just face
2 AI_TEMP_STAND_GROUND Unused (although defined in g_ai.h)
4 AI_NO_TALK Never talk (useful for ambush)
8 AI_GOAL_RUN Set on a target, the IA will run toward that entity
16 AI_FACE_ATTACK Always face the ennemy when attacking
32 AI_MOVEOUT In-game, character is ordered to move out
64 AI_MELEE This character can only do melee attacks
128 AI_GRENADE_GUY The character will not shoot grenades if the target is too close (auto-set with cast_punk)
256 AI_DUCK_ATTACK This character will always duck when attacking
512 AI_GOAL_IGNOREENEMY Ignore the enemy when trying to reach its goal
1024 AI_NOSTEP Used for crates and such so they lay on the floor and not slightly above (auto-set)
2048 AI_RELOAD In-game, clip's empty! Reload before attacking again
4096 AI_TAKECOVER_IGNOREHEALTH Ignore health during combat
8192 AI_GOALENT_MANUAL_CLEAR Set on a target, this target is always a goal
16384 AI_DOKEY In-game, this character's is unlocking something
32768 AI_IMMORTAL This character do not take damages, can see through transparent surfaces (Momo is immortal)
65536 AI_REPEAT_TALK_JESTURE Keep making talking gestures
131072 AI_SKILL_LADDER In-game, the character is climbing a ladder
262144 AI_HOLD_POSITION In-game, ordered to stand put
524288 AI_TAKE_COVER In-game, the character is taking cover
1048576 AI_IGNORE_ENEMY In-game, ignore enemy (used by gang members following their leader and trying to reach a goal)
2097152 AI_FAST_WALK Running on steroids, walk and move twice faster (see Lamont in sr2)
4194304 AI_PLAYERCLIP Uses PLAYERCLIP bounding instead of MONSTERCLIP
8388608 AI_NO_TAKE_COVER Never take cover from anything
16777216 AI_ADJUSTPITCH In-game, used for dogs so they angle up for stairs and ramps
33554432 AI_TALK Do not stop talking when facing the player
67108864 AI_SIDE_ATTACK In-game, side attack
134217728 AI_TURN_BLOCKED In-game, side run, do not turn
268435456 AI_RUN_LIKE_HELL In-game, take a sprint
536870912 AI_RUSH_THE_PLAYER In-game, looks like AI_RUN_LIKE_HELL
1073741824AI_HEARD_GUN_SHOT In-game, character heard a gun shot, get nervous
2147483648AI_SIT_TALK Don't move when talking (auto-set with cast_thug_sit)

Art skins

Here's the location of each skin texture depending on the entity's classname. Note that cast_dog only has a single skin texture for the whole body and can only be 1 or 2 in original Kingpin. Always use three digits when filling the "art_skins" field (ie "103 011 005").

Classname, Head, Torso, Legs
cast_thug actors/thug/head_###.tga actors/thug/body_###.tga actors/thug/legs_###.tga
cast_punk actors/thug/head_###.tga actors/thug/body_###.tga actors/thug/legs_###.tga
cast_bum_sit actors/thug/head_###.tga actors/thug/body_###.tga actors/thug/legs_###.tga
cast_runt actors/runt/head_###.tga actors/runt/body_###.tga actors/thug/legs_###.tga
cast_shorty actors/runt/head_###.tga actors/runt/body_###.tga actors/thug/legs_###.tga
cast_bitch actors/bitch/head_###.tga actors/bitch/body_###.tga actors/bitch/legs_###.tga
cast_whore actors/bitch/head_###.tga actors/bitch/body_###.tga actors/bitch/legs_###.tga

Character's name

Every friendly character, important cast or actors with a purpose of each episode has a name. Names are used all over the game code mainly for scripting purpose. Each episode has its own cast and it might be a bad idea to mix names and episodes. Anyway, here's an extensive list of all the names available in Kingpin (it's safe to assume unused characters can be put in any map, without unexpected consequences).

BethFScared girl next to the warehouse in sr1
MagicjMCrowbar seller next to the basketball court in sr1
LisaFGirl standing opposite of the pawn-o-matic in sr1
LouieMSmoking guy next to the safe in sr1, bar_pv
ButtmunchMSewer rat gang member, under the bridge in sr1
ArnoldMSecurity guy with the flashlight in sr1
BrewsterMSewer rat gang member, under the bridge in sr1
PunkyMSewer rat gang member, under the bridge in sr1
IgmoMSewer rat gang member, next to the sewer door in sr1
JohnnyM"Hey Louie, let's play this game for Christ's sake!" in sr1
BettyFLeroy's girlfriend in sr1
LeroyMGuy in the basketball court in sr1
BusterMDemolition man at club swank in bar_pv
BubbaMHenchman waiting near the pawn-o-matic in sr1
MomoMClub bouncer for all episodes
ToughGuy1MFirst cutscene actor in sr1
ToughGuy2MFirst cutscene actor in sr1
IntroGuyMFirst cutscene hero in sr1
BernieMSecurity agent listening to the radio in sr1
LamontMThe crazy guy Lenny thew out of his appartment in sr2
MonaFGirl by the bar in sr2
LennyM"ah christ! You got my watch.", guy in the restrooms in bar_sr
SluggoMSome guy by the counter in bar_sr
RockoMSome guy by the counter in bar_sr
RoverDLamont's dog in sr2
RummyM"Gimme whisky" bum in sr1
NickMBum under the stairs in sr2
JesusM"Are you ready to be fucked?!" boss in sr4
YolandaF"for ten bucks Yolanda will distract the two guards" in pv_h
HardeyMGuard #1 next to the elevator in pv_h
LaurelMGuard #2 next to the elevator in pv_h
BurtMTalking with some girl at the club, in bar_pv, bar_rc
FingersMLocksmith in poison ville, bar_pv
ClarenceMBartender at the club in bar_pv, bar_rc, idiot
AdolfMSome guy at the typhoon in bar_rc
CandyFTalking with bartender at club in bar_pv, bar_rc, idiot
SharkyMThe pawn dude according to the game code
KingpinMFinal boss in rcboss2
BluntFKingpin's girl, rcboss2
NikkiBlancoMBoss in pv_boss, rcboss1
MoeMCoward guy, guarding the bridge with Larry and Curly in sy_h
LarryMGuarding the bridge with Moe and Curly in sy_h
CurlyMLeft side of the door, guarding the bridge with Moe and Larry in sy_h
EdMDrunk bum on the bed, next to the crime scene in sr2
PopeyeMRunt standing next to the flaming barrel in sy_h
DoggMBartender at the salty dog in bar_sy
SelmaFSome girl at the salty dog in bar_sy
BarneyMUNUSED? Supposed to be "sleepin with the wharf shrimp"
BigWillieMFather of the kidnapped girl at the salty dog in bar_sy
SalMWillie's henchman at the salty dog in bar_sy
LeftyMWillie's henchman at the salty dog in bar_sy (go find Lizzy)
BwillieMWillie, sitting in the restrooms of the salty dog in bar_sy
MungMHenchman next to the "Big louis warehouse & storage" wall in pv_h
TyroneMGuy on the office plateform, in the storage room in ty4
LukeMPeaceful guy next to the sewer access in ty1
HannMLuke's buddy, talking about the valve handle in ty1
KrokerM"Don't kill me! I'll open the safe" in steel1
kid_1MKid in steel2
kid_2MKid in steel2
kid_3MKid in steel2
kid_4MKid in steel3
kid_5MKid in steel3
kid_6MUNUSED, acts like kid_#
kid_7MUNUSED, acts like kid_#
kid_8MUNUSED, acts like kid_#
OscarMSidekick next to the secret area, under the broken stairs in steel2
DavidMBrother of Bambi, locksmith in steel3
BambiFBartender at the boiler room in bar_st
BrittanyFGirl hinting about the armor in the pawn-o-matic basement in steel1
MathewMGuy hinting about Bambi's being woried for her brother in steel1
PeteMTotally wasted bum in steel1
MokerMBoss in steel4
HeilmanMBoss in sy2
ButchMJoker guy near the exit of the station in rc1
PatrickMJoker guy near the exit of the station in rc1
GrouchoMSewer rat guy in rc1
HarpoMSewer rat guy in rc1
ChicoMSewer rat guy in rc1
BleftyMWillie's sidekick, "give'em hell" in bar_sy
ScalperMTicker dealer at the typhoon in bar_rc
DubsMTommy Gun sidekick standing next to the office door in pv_h
RochelleFSome girl in bar_st
LolaFGirl hinting about the weapon stash in rc3
DudeMGuy between the pawn-o-matic and the newspaper stall in rc3
WalterMGuy way down the stairs, next to the second exit in bar_rc
DonnyMGuy into the parking car garage in rc4

Scripts names

Scripts are specific animations and moves that can only be triggered in Skidrow. To trigger a script, you must put one of the following scriptname as a path_corner_cast "scriptname" key. Half of the hard-coded scripts can be triggered by anyone, the other half requires a specific cast name to work.

Cast name, Script name, Description
jed jed_script Jed is evading Buster.
buster buster_script All of Buster's gang members are staring at Jed.
toughguy1 intro_script1 Talking gesture.
toughguy1 intro_script2 Toughguy1 become a leader for Toughguy2.
*anyone* intro_player_script1 Play dead, Introguy1 get a new look.
*anyone* intro_camera3 Just stand up.
*anyone* intro_player_script1a Remove Toughguy1 and Toughguy2.
*anyone* intro_player_script2 Crouch down and grab pipe.
*anyone* intro_end Remove Introguy1.
*anyone* alarm Bernie and Arnold get to misc_skidrow_ambush, misc_skidrow_radio get deleted.

Navigation files

The AI requires some help when walking around the map, that's what the .NAV files are for. Load your map, open the console and enter "nav_dynamic 1" and "nav_debug 1" (always without the quotes). As you wander through the level, the engine will write waypoints for the AI pathfinding. Quit Kingpin when you're done or use the console command "nav_save" and a new .nav file should be written in "navdata/". From now on, every time the level is loaded, the AI will use this navigation file to walk around.

Here are all the related Commands available:

Command, Description
nav_debug_showpath Creates a dummy character model at current position. When moving around, an orange trail is drawn from that dummy to the current position, using the navigation data availables for that level. It's very useful to know what path characters will use to reach their goal.
nav_showpath Alias for 'nav_debug_showpath'
nav_debug_dest Seems like nav_debug_showpath, but I'm not sure.
nav_save Save available navigation data for current map in NAVDATA/[LEVELNAME].NAV
nav_clear Erase the navigation file for current map and shutdown server.
nav_rebuild ?

CVars, Description
nav_dynamic When set to '1', player moves are used to place navigation nodes in the map (default: 0)
nav_debug When set to '1', will display navigation nodes info when 'nav_dynamic' is '1' (default: 0)
nav_aipath Display an orange trail between the following AI cast and the player, using navigation data availables for that level (default: 0)