CapabilitiesAdd: Difference between revisions
Jump to navigation
Jump to search
Thesmuggler (talk | contribs) (Created page with "== CapabilitiesAdd() == '''Tested on Source SDK 2013 Singleplayer''' CapabilitiesAdd allows the programmer to add capabilities to npc's if your npc's Spawn function you can...") |
No edit summary |
||
(5 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
{{stub}} | |||
== CapabilitiesAdd() == | == CapabilitiesAdd() == | ||
'''Tested on Source SDK 2013 Singleplayer''' | '''Tested on Source SDK 2013 Singleplayer''' | ||
Line 6: | Line 8: | ||
if your npc's Spawn function you can add capabilities like so: | if your npc's Spawn function you can add capabilities like so: | ||
< | <syntaxhighlight lang=cpp> | ||
void CNPC_YourNPC::Spawn(void){ | void CNPC_YourNPC::Spawn(void){ | ||
Line 47: | Line 49: | ||
} | } | ||
</ | </syntaxhighlight> | ||
== Here is a list of capabilities in Source SDK 2013 == | == Here is a list of capabilities in Source SDK 2013 == | ||
located in basecombatcharacter.h | located in basecombatcharacter.h | ||
< | <syntaxhighlight lang=cpp> | ||
enum Capability_t | enum Capability_t | ||
{ | { | ||
Line 91: | Line 93: | ||
#define bits_CAP_RANGE_ATTACK_GROUP (bits_CAP_WEAPON_RANGE_ATTACK1 | bits_CAP_WEAPON_RANGE_ATTACK2) | #define bits_CAP_RANGE_ATTACK_GROUP (bits_CAP_WEAPON_RANGE_ATTACK1 | bits_CAP_WEAPON_RANGE_ATTACK2) | ||
#define bits_CAP_MELEE_ATTACK_GROUP (bits_CAP_WEAPON_MELEE_ATTACK1 | bits_CAP_WEAPON_MELEE_ATTACK2) | #define bits_CAP_MELEE_ATTACK_GROUP (bits_CAP_WEAPON_MELEE_ATTACK1 | bits_CAP_WEAPON_MELEE_ATTACK2) | ||
</ | </syntaxhighlight> | ||
[[Category:Programming]] | |||
== See also == | |||
* [[ObjectCaps]] |
Latest revision as of 16:29, 1 June 2025
CapabilitiesAdd()
Tested on Source SDK 2013 Singleplayer
CapabilitiesAdd allows the programmer to add capabilities to npc's
if your npc's Spawn function you can add capabilities like so:
void CNPC_YourNPC::Spawn(void){
Precache(); // Runs your npc's Precache function
SetModel(STRING(GetModelName())); // Sets the model
SetHullType(HULL_HUMAN);// Sets body type
SetHullSizeNormal(); // Sets body size
SetSolid(SOLID_BBOX); // Set collision type
AddSolidFlags(FSOLID_NOT_STANDABLE);
SetMoveType(MOVETYPE_STEP); // Sets move type
SetBloodColor(BLOOD_COLOR_RED); // Sets blood colour
m_flFieldOfView = 0.5; // Unknown, sorry :(
m_NPCState = NPC_STATE_NONE; // Sets NPC state
// Remove all capabilities so we can add our own
CapabilitiesClear();
// Add capabilities
CapabilitiesAdd(bits_CAP_MOVE_GROUND); // NPC can walk/run
CapabilitiesAdd(bits_CAP_MOVE_JUMP); // NPC can jump/leap
CapabilitiesAdd(bits_CAP_MOVE_CLIMB); // NPC can climb ladders
CapabilitiesAdd(bits_CAP_MOVE_SHOOT); // NPC can shoot weapon while moving
CapabilitiesAdd(bits_CAP_USE); // NPC can open doors/push buttons/pull levers
CapabilitiesAdd(bits_CAP_OPEN_DOORS); // NPC can open manual doors
CapabilitiesAdd(bits_CAP_AUTO_DOORS); // NPC can trigger auto doors
CapabilitiesAdd(bits_CAP_TURN_HEAD); // NPC can turn head, always bone controller 0
CapabilitiesAdd(bits_CAP_USE_WEAPONS); // NPC can use weapons (non-innate attacks)
CapabilitiesAdd(bits_CAP_AIM_GUN); // NPC can use arms to aim gun, not just body
CapabilitiesAdd(bits_CAP_DUCK); // NPC can cover and reload ducking
CapabilitiesAdd(bits_CAP_WEAPON_MELEE_ATTACK1 || bits_CAP_WEAPON_MELEE_ATTACK2); // NPC can do weapon melee attack 1 & 2
CapabilitiesAdd(bits_CAP_INNATE_MELEE_ATTACK1 || bits_CAP_INNATE_MELEE_ATTACK2); // NPC can innate melee attack 1 & 2
CapabilitiesAdd(bits_CAP_WEAPON_RANGE_ATTACK1 || bits_CAP_WEAPON_RANGE_ATTACK2); // NPC can do weapon range attack 1 & 2
CapabilitiesAdd(bits_CAP_INNATE_RANGE_ATTACK1 || bits_CAP_INNATE_RANGE_ATTACK2); // NPC can innate range attack 1 & 2
SetMoveType(MOVETYPE_STEP); // gravity, special edge handling -- monsters use this
NPCInit();
}
Here is a list of capabilities in Source SDK 2013
located in basecombatcharacter.h
enum Capability_t
{
bits_CAP_MOVE_GROUND = 0x00000001, // walk/run
bits_CAP_MOVE_JUMP = 0x00000002, // jump/leap
bits_CAP_MOVE_FLY = 0x00000004, // can fly, move all around
bits_CAP_MOVE_CLIMB = 0x00000008, // climb ladders
bits_CAP_MOVE_SWIM = 0x00000010, // navigate in water // UNDONE - not yet implemented
bits_CAP_MOVE_CRAWL = 0x00000020, // crawl // UNDONE - not yet implemented
bits_CAP_MOVE_SHOOT = 0x00000040, // tries to shoot weapon while moving
bits_CAP_SKIP_NAV_GROUND_CHECK = 0x00000080, // optimization - skips ground tests while computing navigation
bits_CAP_USE = 0x00000100, // open doors/push buttons/pull levers
//bits_CAP_HEAR = 0x00000200, // can hear forced sounds
bits_CAP_AUTO_DOORS = 0x00000400, // can trigger auto doors
bits_CAP_OPEN_DOORS = 0x00000800, // can open manual doors
bits_CAP_TURN_HEAD = 0x00001000, // can turn head, always bone controller 0
bits_CAP_WEAPON_RANGE_ATTACK1 = 0x00002000, // can do a weapon range attack 1
bits_CAP_WEAPON_RANGE_ATTACK2 = 0x00004000, // can do a weapon range attack 2
bits_CAP_WEAPON_MELEE_ATTACK1 = 0x00008000, // can do a weapon melee attack 1
bits_CAP_WEAPON_MELEE_ATTACK2 = 0x00010000, // can do a weapon melee attack 2
bits_CAP_INNATE_RANGE_ATTACK1 = 0x00020000, // can do a innate range attack 1
bits_CAP_INNATE_RANGE_ATTACK2 = 0x00040000, // can do a innate range attack 1
bits_CAP_INNATE_MELEE_ATTACK1 = 0x00080000, // can do a innate melee attack 1
bits_CAP_INNATE_MELEE_ATTACK2 = 0x00100000, // can do a innate melee attack 1
bits_CAP_USE_WEAPONS = 0x00200000, // can use weapons (non-innate attacks)
//bits_CAP_STRAFE = 0x00400000, // strafe ( walk/run sideways)
bits_CAP_ANIMATEDFACE = 0x00800000, // has animated eyes/face
bits_CAP_USE_SHOT_REGULATOR = 0x01000000, // Uses the shot regulator for range attack1
bits_CAP_FRIENDLY_DMG_IMMUNE = 0x02000000, // don't take damage from npc's that are D_LI
bits_CAP_SQUAD = 0x04000000, // can form squads
bits_CAP_DUCK = 0x08000000, // cover and reload ducking
bits_CAP_NO_HIT_PLAYER = 0x10000000, // don't hit players
bits_CAP_AIM_GUN = 0x20000000, // Use arms to aim gun, not just body
bits_CAP_NO_HIT_SQUADMATES = 0x40000000, // none
bits_CAP_SIMPLE_RADIUS_DAMAGE = 0x80000000, // Do not use robust radius damage model on this character.
};
#define bits_CAP_DOORS_GROUP (bits_CAP_AUTO_DOORS | bits_CAP_OPEN_DOORS)
#define bits_CAP_RANGE_ATTACK_GROUP (bits_CAP_WEAPON_RANGE_ATTACK1 | bits_CAP_WEAPON_RANGE_ATTACK2)
#define bits_CAP_MELEE_ATTACK_GROUP (bits_CAP_WEAPON_MELEE_ATTACK1 | bits_CAP_WEAPON_MELEE_ATTACK2)