mirror of
https://github.com/mapbase-source/source-sdk-2013.git
synced 2025-06-01 00:17:43 +03:00
WIP Shadow Walker extends Base Custom NPC
This commit is contained in:
parent
5416871138
commit
c0a7b51f8c
@ -31,6 +31,78 @@ const float MAX_TIME_NEXT_SOUND = 1.0f;
|
|||||||
const float MIN_TIME_NEXT_FOUNDENEMY_SOUND = 2.0f;
|
const float MIN_TIME_NEXT_FOUNDENEMY_SOUND = 2.0f;
|
||||||
const float MAX_TIME_NEXT_FOUNDENEMY_SOUND = 5.0f;
|
const float MAX_TIME_NEXT_FOUNDENEMY_SOUND = 5.0f;
|
||||||
|
|
||||||
|
//---------------------------------------------------------
|
||||||
|
// Save/Restore
|
||||||
|
//---------------------------------------------------------
|
||||||
|
BEGIN_DATADESC(CNPC_BaseCustomNPC)
|
||||||
|
DEFINE_KEYFIELD(m_iszWeaponModelName, FIELD_STRING, "WeaponModel"),
|
||||||
|
DEFINE_KEYFIELD(m_iHealth, FIELD_INTEGER, "Health"),
|
||||||
|
DEFINE_KEYFIELD(m_iszFearSound, FIELD_SOUNDNAME, "FearSound"),
|
||||||
|
DEFINE_KEYFIELD(m_iszDeathSound, FIELD_SOUNDNAME, "DeathSound"),
|
||||||
|
DEFINE_KEYFIELD(m_iszIdleSound, FIELD_SOUNDNAME, "IdleSound"),
|
||||||
|
DEFINE_KEYFIELD(m_iszPainSound, FIELD_SOUNDNAME, "PainSound"),
|
||||||
|
DEFINE_KEYFIELD(m_iszAlertSound, FIELD_SOUNDNAME, "AlertSound"),
|
||||||
|
DEFINE_KEYFIELD(m_iszLostEnemySound, FIELD_SOUNDNAME, "LostEnemySound"),
|
||||||
|
DEFINE_KEYFIELD(m_iszFoundEnemySound, FIELD_SOUNDNAME, "FoundEnemySound"),
|
||||||
|
DEFINE_KEYFIELD(m_bUseBothSquadSlots, FIELD_BOOLEAN, "UseBothSquadSlots"),
|
||||||
|
DEFINE_KEYFIELD(m_bCannotOpenDoors, FIELD_BOOLEAN, "CannotOpenDoors"),
|
||||||
|
DEFINE_KEYFIELD(m_bCanPickupWeapons, FIELD_BOOLEAN, "CanPickupWeapons"),
|
||||||
|
|
||||||
|
DEFINE_FIELD(m_bWanderToggle, FIELD_BOOLEAN),
|
||||||
|
DEFINE_FIELD(m_flNextSoundTime, FIELD_TIME),
|
||||||
|
DEFINE_FIELD(m_flNextFoundEnemySoundTime, FIELD_TIME),
|
||||||
|
DEFINE_FIELD(m_flSpeedModifier, FIELD_TIME),
|
||||||
|
|
||||||
|
DEFINE_INPUTFUNC(FIELD_FLOAT, "SetSpeedModifier", InputSetSpeedModifier),
|
||||||
|
DEFINE_INPUTFUNC(FIELD_VOID, "EnableOpenDoors", InputEnableOpenDoors),
|
||||||
|
DEFINE_INPUTFUNC(FIELD_VOID, "DisableOpenDoors", InputDisableOpenDoors),
|
||||||
|
DEFINE_INPUTFUNC(FIELD_VOID, "EnablePickupWeapons", InputEnablePickupWeapons),
|
||||||
|
DEFINE_INPUTFUNC(FIELD_VOID, "DisablePickupWeapons", InputDisablePickupWeapons)
|
||||||
|
END_DATADESC()
|
||||||
|
|
||||||
|
AI_BEGIN_CUSTOM_NPC(npc_base_custom, CNPC_BaseCustomNPC)
|
||||||
|
//=========================================================
|
||||||
|
// > Melee_Attack_NoInterrupt
|
||||||
|
//=========================================================
|
||||||
|
DEFINE_SCHEDULE
|
||||||
|
(
|
||||||
|
SCHED_MELEE_ATTACK_NOINTERRUPT,
|
||||||
|
|
||||||
|
" Tasks"
|
||||||
|
" TASK_STOP_MOVING 0"
|
||||||
|
" TASK_FACE_ENEMY 0"
|
||||||
|
" TASK_ANNOUNCE_ATTACK 1" // 1 = primary attack
|
||||||
|
" TASK_MELEE_ATTACK1 0"
|
||||||
|
""
|
||||||
|
" Interrupts"
|
||||||
|
" COND_ENEMY_DEAD"
|
||||||
|
" COND_ENEMY_OCCLUDED"
|
||||||
|
);
|
||||||
|
|
||||||
|
//=========================================================
|
||||||
|
// SCHED_HIDE
|
||||||
|
//=========================================================
|
||||||
|
DEFINE_SCHEDULE
|
||||||
|
(
|
||||||
|
SCHED_HIDE,
|
||||||
|
|
||||||
|
" Tasks"
|
||||||
|
" TASK_SET_FAIL_SCHEDULE SCHEDULE:SCHED_COMBAT_FACE"
|
||||||
|
" TASK_STOP_MOVING 0"
|
||||||
|
" TASK_FIND_COVER_FROM_ENEMY 0"
|
||||||
|
" TASK_RUN_PATH 0"
|
||||||
|
" TASK_WAIT_FOR_MOVEMENT 0"
|
||||||
|
" TASK_REMEMBER MEMORY:INCOVER"
|
||||||
|
" TASK_FACE_ENEMY 0"
|
||||||
|
""
|
||||||
|
" Interrupts"
|
||||||
|
" COND_HEAR_DANGER"
|
||||||
|
" COND_NEW_ENEMY"
|
||||||
|
" COND_ENEMY_DEAD"
|
||||||
|
);
|
||||||
|
AI_END_CUSTOM_NPC()
|
||||||
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// Purpose:
|
// Purpose:
|
||||||
//
|
//
|
||||||
|
@ -102,76 +102,3 @@ protected:
|
|||||||
|
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(npc_base_custom, CNPC_BaseCustomNPC);
|
LINK_ENTITY_TO_CLASS(npc_base_custom, CNPC_BaseCustomNPC);
|
||||||
|
|
||||||
//---------------------------------------------------------
|
|
||||||
// Save/Restore
|
|
||||||
//---------------------------------------------------------
|
|
||||||
BEGIN_DATADESC(CNPC_BaseCustomNPC)
|
|
||||||
DEFINE_KEYFIELD(m_iszWeaponModelName, FIELD_STRING, "WeaponModel"),
|
|
||||||
DEFINE_KEYFIELD(m_iHealth, FIELD_INTEGER, "Health"),
|
|
||||||
DEFINE_KEYFIELD(m_iszFearSound, FIELD_SOUNDNAME, "FearSound"),
|
|
||||||
DEFINE_KEYFIELD(m_iszDeathSound, FIELD_SOUNDNAME, "DeathSound"),
|
|
||||||
DEFINE_KEYFIELD(m_iszIdleSound, FIELD_SOUNDNAME, "IdleSound"),
|
|
||||||
DEFINE_KEYFIELD(m_iszPainSound, FIELD_SOUNDNAME, "PainSound"),
|
|
||||||
DEFINE_KEYFIELD(m_iszAlertSound, FIELD_SOUNDNAME, "AlertSound"),
|
|
||||||
DEFINE_KEYFIELD(m_iszLostEnemySound, FIELD_SOUNDNAME, "LostEnemySound"),
|
|
||||||
DEFINE_KEYFIELD(m_iszFoundEnemySound, FIELD_SOUNDNAME, "FoundEnemySound"),
|
|
||||||
DEFINE_KEYFIELD(m_bUseBothSquadSlots, FIELD_BOOLEAN, "UseBothSquadSlots"),
|
|
||||||
DEFINE_KEYFIELD(m_bCannotOpenDoors, FIELD_BOOLEAN, "CannotOpenDoors"),
|
|
||||||
DEFINE_KEYFIELD(m_bCanPickupWeapons, FIELD_BOOLEAN, "CanPickupWeapons"),
|
|
||||||
|
|
||||||
DEFINE_FIELD(m_bWanderToggle, FIELD_BOOLEAN),
|
|
||||||
DEFINE_FIELD(m_flNextSoundTime, FIELD_TIME),
|
|
||||||
DEFINE_FIELD(m_flNextFoundEnemySoundTime, FIELD_TIME),
|
|
||||||
DEFINE_FIELD(m_flSpeedModifier, FIELD_TIME),
|
|
||||||
|
|
||||||
DEFINE_INPUTFUNC(FIELD_FLOAT, "SetSpeedModifier", InputSetSpeedModifier),
|
|
||||||
DEFINE_INPUTFUNC(FIELD_VOID, "EnableOpenDoors", InputEnableOpenDoors),
|
|
||||||
DEFINE_INPUTFUNC(FIELD_VOID, "DisableOpenDoors", InputDisableOpenDoors),
|
|
||||||
DEFINE_INPUTFUNC(FIELD_VOID, "EnablePickupWeapons", InputEnablePickupWeapons),
|
|
||||||
DEFINE_INPUTFUNC(FIELD_VOID, "DisablePickupWeapons", InputDisablePickupWeapons)
|
|
||||||
END_DATADESC()
|
|
||||||
|
|
||||||
|
|
||||||
AI_BEGIN_CUSTOM_NPC(npc_base_custom, CNPC_BaseCustomNPC)
|
|
||||||
//=========================================================
|
|
||||||
// > Melee_Attack_NoInterrupt
|
|
||||||
//=========================================================
|
|
||||||
DEFINE_SCHEDULE
|
|
||||||
(
|
|
||||||
SCHED_MELEE_ATTACK_NOINTERRUPT,
|
|
||||||
|
|
||||||
" Tasks"
|
|
||||||
" TASK_STOP_MOVING 0"
|
|
||||||
" TASK_FACE_ENEMY 0"
|
|
||||||
" TASK_ANNOUNCE_ATTACK 1" // 1 = primary attack
|
|
||||||
" TASK_MELEE_ATTACK1 0"
|
|
||||||
""
|
|
||||||
" Interrupts"
|
|
||||||
" COND_ENEMY_DEAD"
|
|
||||||
" COND_ENEMY_OCCLUDED"
|
|
||||||
);
|
|
||||||
|
|
||||||
//=========================================================
|
|
||||||
// SCHED_HIDE
|
|
||||||
//=========================================================
|
|
||||||
DEFINE_SCHEDULE
|
|
||||||
(
|
|
||||||
SCHED_HIDE,
|
|
||||||
|
|
||||||
" Tasks"
|
|
||||||
" TASK_SET_FAIL_SCHEDULE SCHEDULE:SCHED_COMBAT_FACE"
|
|
||||||
" TASK_STOP_MOVING 0"
|
|
||||||
" TASK_FIND_COVER_FROM_ENEMY 0"
|
|
||||||
" TASK_RUN_PATH 0"
|
|
||||||
" TASK_WAIT_FOR_MOVEMENT 0"
|
|
||||||
" TASK_REMEMBER MEMORY:INCOVER"
|
|
||||||
" TASK_FACE_ENEMY 0"
|
|
||||||
""
|
|
||||||
" Interrupts"
|
|
||||||
" COND_HEAR_DANGER"
|
|
||||||
" COND_NEW_ENEMY"
|
|
||||||
" COND_ENEMY_DEAD"
|
|
||||||
);
|
|
||||||
AI_END_CUSTOM_NPC()
|
|
||||||
|
|
||||||
|
@ -19,19 +19,22 @@
|
|||||||
#include "ai_squadslot.h"
|
#include "ai_squadslot.h"
|
||||||
#include "weapon_custom_melee.h"
|
#include "weapon_custom_melee.h"
|
||||||
|
|
||||||
|
|
||||||
// memdbgon must be the last include file in a .cpp file!!!
|
// memdbgon must be the last include file in a .cpp file!!!
|
||||||
#include "tier0/memdbgon.h"
|
#include "tier0/memdbgon.h"
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//---------------------------------------------------------
|
||||||
// Purpose: Initialize the custom schedules
|
// Save/Restore
|
||||||
// Input :
|
//---------------------------------------------------------
|
||||||
// Output :
|
BEGIN_DATADESC(CNPC_ShadowWalker)
|
||||||
//-----------------------------------------------------------------------------
|
/// Custom fields go here
|
||||||
void CNPC_ShadowWalker::InitCustomSchedules(void)
|
END_DATADESC()
|
||||||
{
|
|
||||||
INIT_CUSTOM_AI(CNPC_ShadowWalker);
|
//---------------------------------------------------------
|
||||||
}
|
// Custom AI
|
||||||
|
//---------------------------------------------------------
|
||||||
|
AI_BEGIN_CUSTOM_NPC(npc_shadow_walker, CNPC_ShadowWalker)
|
||||||
|
// Custom schedules go here
|
||||||
|
AI_END_CUSTOM_NPC()
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// Purpose:
|
// Purpose:
|
||||||
|
@ -17,9 +17,10 @@
|
|||||||
|
|
||||||
//=========================================================
|
//=========================================================
|
||||||
//=========================================================
|
//=========================================================
|
||||||
class CNPC_ShadowWalker : public CNPC_BaseCustomNPC
|
class CNPC_ShadowWalker : public CAI_BlendingHost<CNPC_BaseCustomNPC>
|
||||||
{
|
{
|
||||||
DECLARE_CLASS(CNPC_ShadowWalker, CNPC_BaseCustomNPC);
|
DECLARE_DATADESC();
|
||||||
|
DECLARE_CLASS(CNPC_ShadowWalker, CAI_BlendingHost<CNPC_BaseCustomNPC>);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void Precache(void);
|
void Precache(void);
|
||||||
@ -36,16 +37,7 @@ public:
|
|||||||
void Activate();
|
void Activate();
|
||||||
void FixupWeapon();
|
void FixupWeapon();
|
||||||
|
|
||||||
DECLARE_DATADESC();
|
|
||||||
DEFINE_CUSTOM_AI;
|
DEFINE_CUSTOM_AI;
|
||||||
};
|
};
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(npc_shadow_walker, CNPC_ShadowWalker);
|
LINK_ENTITY_TO_CLASS(npc_shadow_walker, CNPC_ShadowWalker);
|
||||||
IMPLEMENT_CUSTOM_AI(npc_base_custom, CNPC_ShadowWalker);
|
|
||||||
|
|
||||||
//---------------------------------------------------------
|
|
||||||
// Save/Restore
|
|
||||||
//---------------------------------------------------------
|
|
||||||
BEGIN_DATADESC(CNPC_ShadowWalker)
|
|
||||||
/// Custom fields go here
|
|
||||||
END_DATADESC()
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user