mirror of
https://github.com/nillerusr/source-engine.git
synced 2026-09-01 15:09:19 +00:00
upload "kind" alien swarm
This commit is contained in:
@@ -0,0 +1,215 @@
|
||||
//========= Copyright © 1996-2001, Valve LLC, All rights reserved. ============
|
||||
//
|
||||
// Purpose: Antlion - nasty bug
|
||||
//
|
||||
// $NoKeywords: $
|
||||
//=============================================================================
|
||||
|
||||
#include "cbase.h"
|
||||
#include "ai_hint.h"
|
||||
#include "ai_squad.h"
|
||||
#include "ai_moveprobe.h"
|
||||
#include "ai_route.h"
|
||||
#include "npcevent.h"
|
||||
#include "gib.h"
|
||||
#include "entitylist.h"
|
||||
#include "ndebugoverlay.h"
|
||||
#include "antlion_dust.h"
|
||||
#include "engine/IEngineSound.h"
|
||||
#include "globalstate.h"
|
||||
#include "movevars_shared.h"
|
||||
#include "te_effect_dispatch.h"
|
||||
#include "vehicle_base.h"
|
||||
#include "mapentities.h"
|
||||
#include "antlion_maker.h"
|
||||
#include "npc_antlion.h"
|
||||
#include "decals.h"
|
||||
#include "asw_drone_antlion.h"
|
||||
#include "asw_player.h"
|
||||
// memdbgon must be the last include file in a .cpp file!!!
|
||||
#include "tier0/memdbgon.h"
|
||||
|
||||
#define SWARM_DRONE_MODEL "models/swarm/drone/Drone.mdl"
|
||||
|
||||
// a test ASW drone, based on the antlion
|
||||
|
||||
|
||||
|
||||
CASW_Drone_Antlion::CASW_Drone_Antlion( void ) : CNPC_Antlion()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
LINK_ENTITY_TO_CLASS( asw_drone_antlion, CASW_Drone_Antlion );
|
||||
|
||||
BEGIN_DATADESC( CASW_Drone_Antlion )
|
||||
|
||||
END_DATADESC()
|
||||
/*
|
||||
IMPLEMENT_SERVERCLASS_ST( CASW_Drone_Antlion, DT_ASW_Drone_Antlion )
|
||||
SendPropExclude( "DT_BaseAnimating", "m_flPoseParameter" ),
|
||||
SendPropExclude( "DT_BaseAnimating", "m_flPlaybackRate" ),
|
||||
SendPropExclude( "DT_BaseAnimating", "m_nSequence" ),
|
||||
SendPropExclude( "DT_BaseAnimating", "m_nNewSequenceParity" ),
|
||||
SendPropExclude( "DT_BaseAnimating", "m_nResetEventsParity" ),
|
||||
SendPropExclude( "DT_BaseEntity", "m_angRotation" ),
|
||||
SendPropExclude( "DT_BaseAnimatingOverlay", "overlay_vars" ),
|
||||
|
||||
// cs_playeranimstate and clientside animation takes care of these on the client
|
||||
SendPropExclude( "DT_ServerAnimationData" , "m_flCycle" ),
|
||||
SendPropExclude( "DT_AnimTimeMustBeFirst" , "m_flAnimTime" ),
|
||||
END_SEND_TABLE()
|
||||
*/
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
void CASW_Drone_Antlion::Spawn( void )
|
||||
{
|
||||
SetModel( SWARM_DRONE_MODEL );
|
||||
m_nSkin = 1;
|
||||
Precache();
|
||||
|
||||
BaseClass::Spawn();
|
||||
|
||||
SetModel( SWARM_DRONE_MODEL );
|
||||
|
||||
SetHullType(HULL_MEDIUMBIG);
|
||||
//SetHullSizeNormal();
|
||||
|
||||
//SetCollisionBounds(Vector(-26,-26,0), Vector(26,26,72));
|
||||
//UTIL_SetSize(this, Vector(-26,-26,0), Vector(26,26,72));
|
||||
|
||||
//UseClientSideAnimation();
|
||||
m_nSkin = 1;
|
||||
}
|
||||
|
||||
|
||||
void CASW_Drone_Antlion::Precache( void )
|
||||
{
|
||||
PrecacheModel( SWARM_DRONE_MODEL );
|
||||
|
||||
BaseClass::Precache();
|
||||
}
|
||||
|
||||
// disable pouncing for the moment
|
||||
int CASW_Drone_Antlion::MeleeAttack2Conditions( float flDot, float flDist )
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
// give our aliens 360 degree vision
|
||||
bool CASW_Drone_Antlion::FInViewCone( const Vector &vecSpot )
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
// always gib
|
||||
bool CASW_Drone_Antlion::ShouldGib( const CTakeDamageInfo &info )
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
float CASW_Drone_Antlion::GetIdealSpeed() const
|
||||
{
|
||||
//return 0;
|
||||
//return BaseClass::GetIdealSpeed();
|
||||
return 300;
|
||||
/*
|
||||
float baseSpeed = BaseClass::GetIdealSpeed();
|
||||
const CAI_BaseNPC *base = static_cast<CNPC_Antlion*>(this);
|
||||
switch ( base->GetActivity() )
|
||||
{
|
||||
case ACT_WALK:
|
||||
baseSpeed = 150.0f;
|
||||
break;
|
||||
|
||||
case ACT_RUN:
|
||||
baseSpeed = 300.0f;
|
||||
break;
|
||||
|
||||
default:
|
||||
case ACT_IDLE:
|
||||
baseSpeed = 0.0f;
|
||||
break;
|
||||
}
|
||||
|
||||
return baseSpeed * asw_drone_antlion_speedboost.GetFloat();
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
float CASW_Drone_Antlion::MaxYawSpeed( void )
|
||||
{
|
||||
switch ( GetActivity() )
|
||||
{
|
||||
case ACT_IDLE:
|
||||
return 64.0f;
|
||||
break;
|
||||
|
||||
case ACT_WALK:
|
||||
return 64.0f;
|
||||
break;
|
||||
|
||||
default:
|
||||
case ACT_RUN:
|
||||
return 64.0f;
|
||||
break;
|
||||
}
|
||||
|
||||
return 64.0f;
|
||||
}
|
||||
|
||||
float CASW_Drone_Antlion::GetSequenceGroundSpeed( int iSequence )
|
||||
{
|
||||
return BaseClass::GetSequenceGroundSpeed(iSequence);
|
||||
/*
|
||||
float t = SequenceDuration( iSequence );
|
||||
|
||||
if (t > 0)
|
||||
{
|
||||
float move_dist = GetSequenceMoveDist( iSequence );
|
||||
if (move_dist == 0)
|
||||
{
|
||||
if (iSequence == 2)
|
||||
return 150;
|
||||
else if (iSequence == 3)
|
||||
return 300;
|
||||
else if (iSequence == 6)
|
||||
return 300;
|
||||
else if (iSequence == 7)
|
||||
return 300;
|
||||
}
|
||||
return move_dist / t;
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0;
|
||||
}*/
|
||||
}
|
||||
|
||||
// player (and player controlled marines) always avoid drones
|
||||
bool CASW_Drone_Antlion::ShouldPlayerAvoid( void )
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
void CASW_Drone_Antlion::NPCThink()
|
||||
{
|
||||
CASW_Player *pPlayer;
|
||||
for ( int i = 1; i <= gpGlobals->maxClients; i++ )
|
||||
{
|
||||
pPlayer = dynamic_cast<CASW_Player*>(UTIL_PlayerByIndex( i ));
|
||||
if (pPlayer)
|
||||
pPlayer->MoveMarineToPredictedPosition();
|
||||
}
|
||||
|
||||
BaseClass::NPCThink();
|
||||
|
||||
for ( int i = 1; i <= gpGlobals->maxClients; i++ )
|
||||
{
|
||||
pPlayer = dynamic_cast<CASW_Player*>(UTIL_PlayerByIndex( i ));
|
||||
if (pPlayer)
|
||||
pPlayer->RestoreMarinePosition();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user