void CNPC_Controller::Spawn() { Precache( ); SetModel( "models/controller.mdl" ); UTIL_SetSize( this, Vector( -32, -32, 0 ), Vector( 32, 32, 64 )); SetSolid( SOLID_BBOX ); AddSolidFlags( FSOLID_NOT_STANDABLE ); SetMoveType( MOVETYPE_STEP ); SetGravity(0.001); m_bloodColor = BLOOD_COLOR_GREEN; m_iHealth = sk_controller_health.GetFloat(); m_flFieldOfView = VIEW_FIELD_FULL;// indicates the width of this monster's forward view cone ( as a dotproduct result ) m_NPCState = NPC_STATE_NONE; SetRenderColor( 255, 255, 255, 255 ); CapabilitiesClear(); AddFlag( FL_FLY ); SetNavType( NAV_FLY ); CapabilitiesAdd( bits_CAP_MOVE_FLY | bits_CAP_INNATE_RANGE_ATTACK1 | bits_CAP_INNATE_RANGE_ATTACK2 | bits_CAP_MOVE_SHOOT); NPCInit(); SetDefaultEyeOffset(); }
//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CNPC_Monk::Spawn() { Precache(); BaseClass::Spawn(); SetModel( "models/Monk.mdl" ); SetHullType(HULL_HUMAN); SetHullSizeNormal(); SetSolid( SOLID_BBOX ); AddSolidFlags( FSOLID_NOT_STANDABLE ); SetMoveType( MOVETYPE_STEP ); SetBloodColor( BLOOD_COLOR_RED ); m_iHealth = 100; m_flFieldOfView = m_flFieldOfView = -0.707; // 270` m_NPCState = NPC_STATE_NONE; m_HackedGunPos = Vector ( 0, 0, 55 ); CapabilitiesAdd( bits_CAP_TURN_HEAD | bits_CAP_DOORS_GROUP | bits_CAP_MOVE_GROUND ); CapabilitiesAdd( bits_CAP_USE_WEAPONS ); CapabilitiesAdd( bits_CAP_ANIMATEDFACE ); CapabilitiesAdd( bits_CAP_FRIENDLY_DMG_IMMUNE ); CapabilitiesAdd( bits_CAP_AIM_GUN ); CapabilitiesAdd( bits_CAP_MOVE_SHOOT ); NPCInit(); }
void CNPC_Infected::Spawn() { Precache(); SetZombieModel(); BaseClass::Spawn(); SetHullType( HULL_HUMAN ); SetHullSizeNormal(); SetDefaultEyeOffset(); SetNavType( NAV_GROUND ); m_NPCState = NPC_STATE_NONE; m_iHealth = m_iMaxHealth = sk_infected_health.GetInt(); m_flFieldOfView = 0.2; SetSolid( SOLID_BBOX ); AddSolidFlags( FSOLID_NOT_STANDABLE ); SetMoveType( MOVETYPE_STEP ); SetupGlobalModelData(); CapabilitiesAdd( bits_CAP_MOVE_GROUND ); CapabilitiesAdd( bits_CAP_INNATE_MELEE_ATTACK1 ); NPCInit(); }
//----------------------------------------------------------------------------- // Spawn //----------------------------------------------------------------------------- void CNPC_Eli :: Spawn() { Precache(); BaseClass::Spawn(); SetModel( "models/eli.mdl" ); SetHullType(HULL_HUMAN); SetHullSizeNormal(); SetSolid( SOLID_BBOX ); AddSolidFlags( FSOLID_NOT_STANDABLE ); SetMoveType( MOVETYPE_STEP ); SetBloodColor( BLOOD_COLOR_RED ); m_iHealth = 8; m_flFieldOfView = 0.5;// indicates the width of this NPC's forward view cone ( as a dotproduct result ) m_NPCState = NPC_STATE_NONE; CapabilitiesAdd( bits_CAP_MOVE_GROUND | bits_CAP_OPEN_DOORS | bits_CAP_ANIMATEDFACE | bits_CAP_TURN_HEAD ); NPCInit(); Relink(); }
//----------------------------------------------------------------------------- // Purpose: This used to have something to do with bees flying, but // now it only initializes moving furniture in scripted sequences //----------------------------------------------------------------------------- void CNPC_Furniture::Spawn( ) { Precache(); SetModel( STRING(GetModelName()) ); SetMoveType( MOVETYPE_STEP ); SetSolid( SOLID_BBOX ); // Our collision, if needed, will be done through bone followers AddSolidFlags( FSOLID_NOT_SOLID ); SetBloodColor( DONT_BLEED ); m_iHealth = TOO_MUCH_HEALTH_TO_DIE; //wow m_takedamage = DAMAGE_AIM; SetSequence( 0 ); SetCycle( 0 ); SetNavType( NAV_FLY ); AddFlag( FL_FLY ); CapabilitiesAdd( bits_CAP_MOVE_FLY | bits_CAP_TURN_HEAD | bits_CAP_ANIMATEDFACE ); AddEFlags( EFL_NO_MEGAPHYSCANNON_RAGDOLL ); // pev->nextthink += 1.0; // SetThink (WalkMonsterDelay); ResetSequenceInfo( ); SetCycle( 0 ); NPCInit(); // Furniture needs to block LOS SetBlocksLOS( true ); }
//========================================================= // Spawn //========================================================= void CGenericActor::Spawn() { Precache(); SetModel( STRING( GetModelName() ) ); /* if ( FStrEq( STRING( GetModelName() ), "models/player.mdl" ) ) UTIL_SetSize(this, VEC_HUMAN_HULL_MIN, VEC_HUMAN_HULL_MAX); else UTIL_SetSize(this, VEC_HULL_MIN, VEC_HULL_MAX); */ if ( FStrEq( STRING( GetModelName() ), "models/player.mdl" ) || FStrEq( STRING( GetModelName() ), "models/holo.mdl" ) || FStrEq( STRING( GetModelName() ), "models/blackout.mdl" ) ) { UTIL_SetSize(this, VEC_HULL_MIN, VEC_HULL_MAX); } else { UTIL_SetSize(this, NAI_Hull::Mins(HULL_HUMAN), NAI_Hull::Maxs(HULL_HUMAN)); } if ( !FStrEq( STRING( GetModelName() ), "models/blackout.mdl" ) ) { SetSolid( SOLID_BBOX ); AddSolidFlags( FSOLID_NOT_STANDABLE ); } else { SetSolid( SOLID_NONE ); } SetMoveType( MOVETYPE_STEP ); SetBloodColor( BLOOD_COLOR_RED ); m_iHealth = 8; m_flFieldOfView = 0.5;// indicates the width of this NPC's forward view cone ( as a dotproduct result ) m_NPCState = NPC_STATE_NONE; CapabilitiesAdd( bits_CAP_MOVE_GROUND | bits_CAP_OPEN_DOORS ); // remove head turn if no eyes or forward attachment if (LookupAttachment( "eyes" ) > 0 && LookupAttachment( "forward" ) > 0) { CapabilitiesAdd( bits_CAP_TURN_HEAD | bits_CAP_ANIMATEDFACE ); } if (m_strHullName != NULL_STRING) { SetHullType( NAI_Hull::LookupId( STRING( m_strHullName ) ) ); } else { SetHullType( HULL_HUMAN ); } SetHullSizeNormal( ); NPCInit(); }
//----------------------------------------------------------------------------- // Purpose: // // //----------------------------------------------------------------------------- void CNPC_Blob::Spawn( void ) { Precache(); SetModel( NPC_BLOB_MODEL ); SetHullType(HULL_TINY); SetHullSizeNormal(); SetSolid( SOLID_NONE ); AddSolidFlags( FSOLID_NOT_STANDABLE ); SetMoveType( MOVETYPE_STEP ); SetBloodColor( BLOOD_COLOR_RED ); m_iHealth = INT_MAX; m_flFieldOfView = -1.0f; m_NPCState = NPC_STATE_NONE; CapabilitiesClear(); CapabilitiesAdd( bits_CAP_MOVE_GROUND ); m_Elements.RemoveAll(); NPCInit(); AddEffects( EF_NODRAW ); m_flMinElementDist = blob_mindist.GetFloat(); }
//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CNPC_Bug_Builder::Spawn( void ) { Precache(); SetModel( BUG_BUILDER_MODEL ); SetHullType(HULL_TINY); SetHullSizeNormal(); SetDefaultEyeOffset(); SetViewOffset( (WorldAlignMins() + WorldAlignMaxs()) * 0.5 ); // See from my center SetDistLook( 1024.0 ); m_flNextDawdle = 0; SetNavType(NAV_GROUND); m_NPCState = NPC_STATE_NONE; SetBloodColor( BLOOD_COLOR_YELLOW ); m_iHealth = npc_bug_builder_health.GetFloat(); SetSolid( SOLID_BBOX ); AddSolidFlags( FSOLID_NOT_STANDABLE ); SetMoveType( MOVETYPE_STEP ); CapabilitiesAdd( bits_CAP_MOVE_GROUND ); NPCInit(); BaseClass::Spawn(); }
//========================================================= // Spawn //========================================================= void CNPC_Houndeye::Spawn() { Precache( ); SetModel("models/houndeye.mdl"); SetHullType(HULL_WIDE_SHORT); SetHullSizeNormal(); SetSolid( SOLID_BBOX ); AddSolidFlags( FSOLID_NOT_STANDABLE ); SetMoveType( MOVETYPE_STEP ); SetBloodColor( BLOOD_COLOR_YELLOW ); m_iHealth = sk_Houndeye_health.GetFloat(); m_flFieldOfView = 0.5;// indicates the width of this monster's forward view cone ( as a dotproduct result ) m_NPCState = NPC_STATE_NONE; m_fAsleep = false; // everyone spawns awake m_fDontBlink = false; CapabilitiesAdd( bits_CAP_SQUAD ); CapabilitiesAdd( bits_CAP_MOVE_GROUND ); CapabilitiesAdd( bits_CAP_INNATE_RANGE_ATTACK1 ); CapabilitiesAdd( bits_CAP_TURN_HEAD ); m_flNextSecondaryAttack = 0; m_bLoopClockwise = random->RandomInt(0,1) ? true : false; m_pEnergyWave = NULL; m_flEndEnergyWaveTime = 0; SetCollisionGroup( HL2COLLISION_GROUP_HOUNDEYE ); NPCInit(); }
//========================================================= // Spawn //========================================================= void CNPC_Bullsquid::Spawn() { Precache( ); SetModel( "models/bullsquid.mdl"); SetHullType(HULL_WIDE_SHORT); SetHullSizeNormal(); SetSolid( SOLID_BBOX ); AddSolidFlags( FSOLID_NOT_STANDABLE ); SetMoveType( MOVETYPE_STEP ); m_bloodColor = BLOOD_COLOR_GREEN; SetRenderColor( 255, 255, 255, 255 ); m_iHealth = sk_bullsquid_health.GetFloat(); m_flFieldOfView = 0.2;// indicates the width of this monster's forward view cone ( as a dotproduct result ) m_NPCState = NPC_STATE_NONE; CapabilitiesClear(); CapabilitiesAdd( bits_CAP_MOVE_GROUND | bits_CAP_INNATE_RANGE_ATTACK1 | bits_CAP_INNATE_MELEE_ATTACK1 | bits_CAP_INNATE_MELEE_ATTACK2 ); m_fCanThreatDisplay = TRUE; m_flNextSpitTime = gpGlobals->curtime; NPCInit(); m_flDistTooFar = 784; }
//========================================================= // Spawn //========================================================= void CNPC_HL1Barney::Spawn() { Precache( ); SetModel( "models/hl1bar.mdl"); SetRenderColor( 255, 255, 255, 255 ); SetHullType(HULL_HUMAN); SetHullSizeNormal(); SetSolid( SOLID_BBOX ); AddSolidFlags( FSOLID_NOT_STANDABLE ); SetMoveType( MOVETYPE_STEP ); m_bloodColor = BLOOD_COLOR_RED; m_iHealth = sk_barneyhl1_health.GetFloat(); SetViewOffset( Vector ( 0, 0, 100 ) );// position of the eyes relative to monster's origin. m_flFieldOfView = VIEW_FIELD_WIDE; // NOTE: we need a wide field of view so npc will notice player and say hello m_NPCState = NPC_STATE_NONE; SetBodygroup( 1, 0 ); m_fGunDrawn = false; CapabilitiesClear(); CapabilitiesAdd( bits_CAP_MOVE_GROUND | bits_CAP_OPEN_DOORS | bits_CAP_AUTO_DOORS | bits_CAP_USE | bits_CAP_DOORS_GROUP); CapabilitiesAdd( bits_CAP_INNATE_RANGE_ATTACK1 | bits_CAP_TURN_HEAD | bits_CAP_ANIMATEDFACE ); NPCInit(); SetUse( &CNPC_HL1Barney::FollowerUse ); }
//----------------------------------------------------------------------------- // Spawn //----------------------------------------------------------------------------- void CNPC_Kleiner::Spawn() { // Allow custom model usage (mostly for monitors) char *szModel = (char *)STRING( GetModelName() ); if (!szModel || !*szModel) { szModel = "models/kleiner.mdl"; SetModelName( AllocPooledString(szModel) ); } Precache(); SetModel( szModel ); BaseClass::Spawn(); SetHullType(HULL_HUMAN); SetHullSizeNormal(); SetSolid( SOLID_BBOX ); AddSolidFlags( FSOLID_NOT_STANDABLE ); SetMoveType( MOVETYPE_STEP ); SetBloodColor( BLOOD_COLOR_RED ); m_iHealth = 8; m_flFieldOfView = 0.5;// indicates the width of this NPC's forward view cone ( as a dotproduct result ) m_NPCState = NPC_STATE_NONE; CapabilitiesAdd( bits_CAP_MOVE_GROUND | bits_CAP_OPEN_DOORS | bits_CAP_ANIMATEDFACE | bits_CAP_TURN_HEAD ); CapabilitiesAdd( bits_CAP_FRIENDLY_DMG_IMMUNE ); AddEFlags( EFL_NO_DISSOLVE | EFL_NO_MEGAPHYSCANNON_RAGDOLL | EFL_NO_PHYSCANNON_INTERACTION ); NPCInit(); }
//========================================================= // Spawn() // Crear un nuevo //========================================================= void CNPC_Scient::Spawn() { Precache(); // Modelo y color de sangre. SetModel(MODEL_BASE); SetBloodColor(BLOOD); // Tamaño SetHullType(HULL_WIDE_SHORT); SetHullSizeNormal(); // Navegación, estado físico y opciones extra. SetSolid(SOLID_BBOX); SetNavType(NAV_GROUND); AddSolidFlags(FSOLID_NOT_STANDABLE); SetMoveType(MOVETYPE_STEP); SetRenderColor(255, 255, 255, 255); SetDistLook(SEE_DIST); // Reseteo de variables. // Salud, estado del NPC y vista. m_iHealth = sk_scient_health.GetFloat(); m_NPCState = NPC_STATE_NONE; m_flFieldOfView = FOV; // Capacidades CapabilitiesClear(); CapabilitiesAdd(CAPABILITIES); NPCInit(); BaseClass::Spawn(); }
//========================================================= // Spawn //========================================================= void CNPC_HAssassin::Spawn() { Precache( ); SetModel( "models/hassassin.mdl"); SetHullType(HULL_HUMAN); SetHullSizeNormal(); SetNavType ( NAV_GROUND ); SetSolid( SOLID_BBOX ); AddSolidFlags( FSOLID_NOT_STANDABLE ); SetMoveType( MOVETYPE_STEP ); m_bloodColor = BLOOD_COLOR_RED; ClearEffects(); m_iHealth = sk_hassassin_health.GetFloat(); m_flFieldOfView = VIEW_FIELD_WIDE; // indicates the width of this monster's forward view cone ( as a dotproduct result ) m_NPCState = NPC_STATE_NONE; m_HackedGunPos = Vector( 0, 24, 48 ); m_iTargetRanderamt = 20; SetRenderColor( 255, 255, 255, 20 ); m_nRenderMode = kRenderTransTexture; CapabilitiesClear(); CapabilitiesAdd( bits_CAP_MOVE_GROUND ); CapabilitiesAdd( bits_CAP_INNATE_RANGE_ATTACK1 | bits_CAP_INNATE_RANGE_ATTACK2 | bits_CAP_INNATE_MELEE_ATTACK1 ); NPCInit(); }
//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CNPC_Bug_Warrior::Spawn( void ) { Precache(); SetModel( BUG_WARRIOR_MODEL ); SetHullType(HULL_WIDE_HUMAN);//HULL_WIDE_SHORT; SetHullSizeNormal(); SetDefaultEyeOffset(); SetViewOffset( (WorldAlignMins() + WorldAlignMaxs()) * 0.5 ); // See from my center SetDistLook( 1024.0 ); SetNavType(NAV_GROUND); m_NPCState = NPC_STATE_NONE; SetBloodColor( BLOOD_COLOR_YELLOW ); m_iHealth = npc_bug_warrior_health.GetFloat(); SetSolid( SOLID_BBOX ); AddSolidFlags( FSOLID_NOT_STANDABLE ); SetMoveType( MOVETYPE_STEP ); m_iszPatrolPathName = NULL_STRING; // Only do this if a squadname appears in the entity if ( m_SquadName != NULL_STRING ) { CapabilitiesAdd( bits_CAP_SQUAD ); } CapabilitiesAdd( bits_CAP_MOVE_GROUND | bits_CAP_INNATE_MELEE_ATTACK1 ); NPCInit(); BaseClass::Spawn(); }
//----------------------------------------------------------------------------- // Spawn //----------------------------------------------------------------------------- void CNPC_GMan::Spawn() { Precache(); BaseClass::Spawn(); SetModel( "models/gman.mdl" ); SetHullType(HULL_HUMAN); SetHullSizeNormal(); SetSolid( SOLID_BBOX ); AddSolidFlags( FSOLID_NOT_STANDABLE ); SetMoveType( MOVETYPE_STEP ); SetBloodColor( BLOOD_COLOR_RED ); m_iHealth = 8; m_flFieldOfView = 0.5;// indicates the width of this NPC's forward view cone ( as a dotproduct result ) m_NPCState = NPC_STATE_NONE; SetImpactEnergyScale( 0.0f ); // no physics damage on the gman CapabilitiesAdd( bits_CAP_MOVE_GROUND | bits_CAP_OPEN_DOORS | bits_CAP_ANIMATEDFACE | bits_CAP_TURN_HEAD ); CapabilitiesAdd( bits_CAP_FRIENDLY_DMG_IMMUNE ); AddEFlags( EFL_NO_DISSOLVE | EFL_NO_MEGAPHYSCANNON_RAGDOLL ); NPCInit(); }
//----------------------------------------------------------------------------- // Purpose: // Input : // Output : //----------------------------------------------------------------------------- void CNPC_Headcrab::Spawn( void ) { Precache(); SetRenderColor( 255, 255, 255, 255 ); SetModel( "models/headcrab.mdl" ); m_iHealth = sk_headcrab_health.GetFloat(); SetHullType(HULL_TINY); SetHullSizeNormal(); SetSolid( SOLID_BBOX ); AddSolidFlags( FSOLID_NOT_STANDABLE ); SetMoveType( MOVETYPE_STEP ); SetViewOffset( Vector(6, 0, 11) ); // Position of the eyes relative to NPC's origin. m_bloodColor = BLOOD_COLOR_GREEN; m_flFieldOfView = 0.5; m_NPCState = NPC_STATE_NONE; m_nGibCount = HEADCRAB_ALL_GIB_COUNT; CapabilitiesClear(); CapabilitiesAdd( bits_CAP_MOVE_GROUND | bits_CAP_INNATE_RANGE_ATTACK1 ); NPCInit(); }
//----------------------------------------------------------------------------- // Purpose: // // //----------------------------------------------------------------------------- void CNPC_Roller::Spawn( void ) { Precache(); m_pRollSound = NULL; m_flForwardSpeed = ROLLER_FORWARD_SPEED; SetModel( "models/roller.mdl" ); SetHullType( HULL_TINY_CENTERED ); SetHullSizeNormal(); m_bloodColor = DONT_BLEED; m_iHealth = 20; m_flFieldOfView = 0.5; m_NPCState = NPC_STATE_NONE; m_fHACKJustSpawned = true; m_RollerController.Off(); m_flTimeMarcoSound = gpGlobals->curtime + ROLLER_MARCO_FREQUENCY * random->RandomFloat( 1, 3 ); m_flTimePoloSound = TIME_NEVER; CapabilitiesClear(); CapabilitiesAdd( bits_CAP_MOVE_GROUND ); m_iFail = 0; // Create the object in the physics system IPhysicsObject *pPhysicsObject = VPhysicsInitNormal( SOLID_BBOX, FSOLID_NOT_STANDABLE, false ); m_pMotionController = physenv->CreateMotionController( &m_RollerController ); m_pMotionController->AttachObject( pPhysicsObject ); NPCInit(); // Generate me an access code int i; int iLastDigit = -10; for( i = 0 ; i < ROLLER_CODE_DIGITS ; i++ ) { // Generate a digit, and make sure it's not the same // or sequential to the previous digit. do { m_iAccessCode[ i ] = rand() % 6; } while( abs(m_iAccessCode[ i ] - iLastDigit) <= 1 ); iLastDigit = m_iAccessCode[ i ]; } // this suppresses boatloads of warnings in the movement code. // (code that assumes everyone is propelled by animation). m_flGroundSpeed = 20; }
void CNPC_Hydra::Spawn() { Precache(); BaseClass::Spawn(); SetModel( "models/Hydra.mdl" ); SetHullType(HULL_HUMAN); SetHullSizeNormal(); SetSolid( SOLID_BBOX ); AddSolidFlags( FSOLID_NOT_STANDABLE ); SetMoveType( MOVETYPE_STEP ); SetBloodColor( BLOOD_COLOR_RED ); ClearEffects(); m_iHealth = 20; m_flFieldOfView = -1.0;// indicates the width of this NPC's forward view cone ( as a dotproduct result ) m_NPCState = NPC_STATE_NONE; GetVectors( NULL, NULL, &m_vecOutward ); SetAbsAngles( QAngle( 0, 0, 0 ) ); m_vecChain.Set( 0, GetAbsOrigin( ) - m_vecOutward * 32 ); m_vecChain.Set( 1, GetAbsOrigin( ) + m_vecOutward * 16 ); m_vecHeadGoal = m_vecChain[1] + m_vecOutward * HYDRA_OUTWARD_BIAS; m_vecHeadDir = Vector( 0, 0, 1 ); // init bones HydraBone bone; bone.flActualLength = 0.0f; bone.vecGoalPos = Vector(0.0f, 0.0f, 0.0f); bone.vecPos = GetAbsOrigin( ) - m_vecOutward * HYDRA_INWARD_BIAS; m_body.AddToTail( bone ); bone.vecPos = m_vecChain[1]; m_body.AddToTail( bone ); bone.vecPos = m_vecHeadGoal; m_body.AddToTail( bone ); bone.vecPos = m_vecHeadGoal + m_vecHeadDir; m_body.AddToTail( bone ); m_idealSegmentLength = sv_hydraSegmentLength.GetFloat(); for (int i = 2; i < CHAIN_LINKS; i++) { m_vecChain.Set( i, m_vecChain[i-1] ); } m_seed = random->RandomFloat( 0.0, 2000.0 ); NPCInit(); m_takedamage = DAMAGE_NO; }
//----------------------------------------------------------------------------- // Purpose: // // //----------------------------------------------------------------------------- void CNPC_Assassin::Spawn( void ) { Precache(); SetModel( "models/fassassin.mdl" ); SetHullType(HULL_HUMAN); SetHullSizeNormal(); SetSolid( SOLID_BBOX ); AddSolidFlags( FSOLID_NOT_STANDABLE ); SetMoveType( MOVETYPE_STEP ); SetBloodColor( BLOOD_COLOR_RED ); m_iHealth = sk_assassin_health.GetFloat(); m_flFieldOfView = 0.1; m_NPCState = NPC_STATE_NONE; CapabilitiesClear(); CapabilitiesAdd( bits_CAP_MOVE_CLIMB | bits_CAP_MOVE_GROUND | bits_CAP_MOVE_JUMP ); CapabilitiesAdd( bits_CAP_SQUAD | bits_CAP_USE_WEAPONS | bits_CAP_AIM_GUN | bits_CAP_INNATE_RANGE_ATTACK1 | bits_CAP_INNATE_RANGE_ATTACK2 | bits_CAP_INNATE_MELEE_ATTACK1 ); //Turn on our guns SetBodygroup( 1, 1 ); int attachment = LookupAttachment( "Eye" ); // Start up the eye glow m_pEyeSprite = CSprite::SpriteCreate( "sprites/redglow1.vmt", GetLocalOrigin(), false ); if ( m_pEyeSprite != NULL ) { m_pEyeSprite->SetAttachment( this, attachment ); m_pEyeSprite->SetTransparency( kRenderTransAdd, 255, 255, 255, 200, kRenderFxNone ); m_pEyeSprite->SetScale( 0.25f ); } // Start up the eye trail m_pEyeTrail = CSpriteTrail::SpriteTrailCreate( "sprites/bluelaser1.vmt", GetLocalOrigin(), false ); if ( m_pEyeTrail != NULL ) { m_pEyeTrail->SetAttachment( this, attachment ); m_pEyeTrail->SetTransparency( kRenderTransAdd, 255, 0, 0, 200, kRenderFxNone ); m_pEyeTrail->SetStartWidth( 8.0f ); m_pEyeTrail->SetLifeTime( 0.75f ); } NPCInit(); m_bEvade = false; m_bAggressive = false; }
void CASW_Path_Utils_NPC::Spawn() { CapabilitiesAdd( bits_CAP_MOVE_GROUND | bits_CAP_OPEN_DOORS ); SetModel( SWARM_NEW_DRONE_MODEL ); NPCInit(); UTIL_SetSize(this, NAI_Hull::Mins(HULL_MEDIUMBIG), NAI_Hull::Maxs(HULL_MEDIUMBIG)); SetSolid( SOLID_BBOX ); AddSolidFlags( FSOLID_NOT_SOLID ); AddSolidFlags( FSOLID_NOT_STANDABLE ); SetMoveType( MOVETYPE_STEP ); m_takedamage = DAMAGE_NO; }
//----------------------------------------------------------------------------- // Purpose: // // //----------------------------------------------------------------------------- void CNPC_EnemyFinder::Spawn( void ) { Precache(); SetModel( "models/roller.mdl" ); // This is a dummy model that is never used! UTIL_SetSize(this, vec3_origin, vec3_origin); SetMoveType( MOVETYPE_NONE ); SetBloodColor( DONT_BLEED ); SetGravity( 0.0 ); m_iHealth = 1; AddFlag( FL_NPC ); SetSolid( SOLID_NONE ); m_bEnemyStatus = false; if (m_flFieldOfView < -1.0) { DevMsg("ERROR: EnemyFinder field of view must be between -1.0 and 1.0\n"); m_flFieldOfView = 0.5; } else if (m_flFieldOfView > 1.0) { DevMsg("ERROR: EnemyFinder field of view must be between -1.0 and 1.0\n"); m_flFieldOfView = 1.0; } CapabilitiesAdd ( bits_CAP_SQUAD ); NPCInit(); // Set this after NPCInit() m_takedamage = DAMAGE_NO; AddEffects( EF_NODRAW ); m_NPCState = NPC_STATE_ALERT; // always alert SetViewOffset( vec3_origin ); if ( m_flMaxSearchDist ) { SetDistLook( m_flMaxSearchDist ); } if ( HasSpawnFlags( SF_ENEMY_FINDER_SHORT_MEMORY ) ) { GetEnemies()->SetEnemyDiscardTime( 0.2 ); } }
//----------------------------------------------------------------------------- // Spawn //----------------------------------------------------------------------------- void CNPC_Hutman::Spawn() { Precache(); m_iHealth = 80; m_iszCombatExpression = m_iszIdleExpression = m_iszAlertExpression = MAKE_STRING( HUTMAN_IDLE_SCENE ); BaseClass::Spawn(); AddEFlags( EFL_NO_DISSOLVE | EFL_NO_MEGAPHYSCANNON_RAGDOLL | EFL_NO_PHYSCANNON_INTERACTION ); NPCInit(); }
//========================================================= // Spawn //========================================================= void CGenericNPC::Spawn() { Precache(); SetModel( STRING( GetModelName() ) ); /* if ( FStrEq( STRING( GetModelName() ), "models/player.mdl" ) ) UTIL_SetSize(this, VEC_HUMAN_HULL_MIN, VEC_HUMAN_HULL_MAX); else UTIL_SetSize(this, VEC_HULL_MIN, VEC_HULL_MAX); */ if ( FStrEq( STRING( GetModelName() ), "models/player.mdl" ) || FStrEq( STRING( GetModelName() ), "models/holo.mdl" ) ) UTIL_SetSize(this, VEC_HULL_MIN, VEC_HULL_MAX); else UTIL_SetSize(this, NAI_Hull::Mins(HULL_HUMAN), NAI_Hull::Maxs(HULL_HUMAN)); SetSolid( SOLID_BBOX ); AddSolidFlags( FSOLID_NOT_STANDABLE ); SetMoveType( MOVETYPE_STEP ); m_bloodColor = BLOOD_COLOR_RED; m_iHealth = 8; m_flFieldOfView = 0.5;// indicates the width of this NPC's forward view cone ( as a dotproduct result ) m_NPCState = NPC_STATE_NONE; CapabilitiesAdd( bits_CAP_MOVE_GROUND | bits_CAP_OPEN_DOORS ); NPCInit(); if ( !HasSpawnFlags(SF_GENERICNPC_NOTSOLID) ) { trace_t tr; UTIL_TraceEntity( this, GetAbsOrigin(), GetAbsOrigin(), MASK_SOLID, &tr ); if ( tr.startsolid ) { Msg("Placed npc_generic in solid!!! (%s)\n", STRING(GetModelName()) ); m_spawnflags |= SF_GENERICNPC_NOTSOLID; } } if ( HasSpawnFlags(SF_GENERICNPC_NOTSOLID) ) { AddSolidFlags( FSOLID_NOT_SOLID ); m_takedamage = DAMAGE_NO; VPhysicsDestroyObject(); } }
//------------------------------------------------------------------------------ // Purpose : //------------------------------------------------------------------------------ void CNPC_VehicleDriver::Spawn( void ) { Precache( ); BaseClass::Spawn(); CapabilitiesClear(); CapabilitiesAdd( bits_CAP_MOVE_GROUND ); CapabilitiesAdd( bits_CAP_MOVE_SHOOT ); SetModel( "models/roller_vehicledriver.mdl" ); SetHullType(HULL_LARGE); SetHullSizeNormal(); m_iMaxHealth = m_iHealth = 1; m_flFieldOfView = VIEW_FIELD_FULL; SetSolid( SOLID_BBOX ); AddSolidFlags( FSOLID_NOT_SOLID ); SetMoveType( MOVETYPE_NONE ); AddEffects( EF_NODRAW ); m_lifeState = LIFE_ALIVE; SetCycle( 0 ); ResetSequenceInfo(); AddFlag( FL_NPC ); m_flMaxSpeed = 0; m_flGoalSpeed = m_flInitialSpeed; m_vecDesiredVelocity = vec3_origin; m_vecPrevPoint = vec3_origin; m_vecPrevPrevPoint = vec3_origin; m_vecPostPoint = vec3_origin; m_vecPostPostPoint = vec3_origin; m_vecDesiredPosition = vec3_origin; m_flSteering = 45; m_flDistanceAlongSpline = 0.2; m_pCurrentWaypoint = m_pNextWaypoint = NULL; GetNavigator()->SetPathcornerPathfinding( false ); NPCInit(); m_takedamage = DAMAGE_NO; }
//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CNPC_Barney::Spawn( void ) { Precache(); m_iHealth = 80; m_iszIdleExpression = MAKE_STRING("scenes/Expressions/BarneyIdle.vcd"); m_iszAlertExpression = MAKE_STRING("scenes/Expressions/BarneyAlert.vcd"); m_iszCombatExpression = MAKE_STRING("scenes/Expressions/BarneyCombat.vcd"); BaseClass::Spawn(); AddEFlags( EFL_NO_DISSOLVE | EFL_NO_MEGAPHYSCANNON_RAGDOLL | EFL_NO_PHYSCANNON_INTERACTION ); NPCInit(); SetUse( &CNPC_Barney::UseFunc ); }
void CNPC_Cremator::Spawn() { Precache(); SetModel( "models/cremator_test2.mdl" ); // a model with a bit of a tesselation (tesselated head and collar) SetHullType(HULL_HUMAN); // отключено, т.к. это новый введенный тип хулла, и вряд ли есть смысл возиться с его введением. //SetHullType( HULL_MEDIUM_TALL ); // данный стандартный тип подходит для большинства ситуаций, однако крематор не сможет проходить в двери, если они ненамного выше его /*that hull type is made special for a cremator since HULL_MEDIUM is not high enough but HULL_LARGE is too big and a cremator cannot fit in Borealis maps with it. The hull type is enumarated in ai_hull.h under the HULL_MEDIUM_TALL and then MUST be enumeraten in Hull_Bits_t, again, UNDER HULL_MEDIUM_TALL with the adress of 0x00000400, so that the definitions in ai_hull.cpp will then find the corresponding hull type.*/ SetHullSizeNormal(); SetBodygroup( 1, 0 ); // the gun SetBodygroup( 2, 0 ); // the head SetSolid( SOLID_BBOX ); AddSolidFlags( FSOLID_NOT_STANDABLE ); SetMoveType( MOVETYPE_STEP ); m_bloodColor = DONT_BLEED;//BLOOD_COLOR_YELLOW; m_iHealth = sk_cremator_health.GetFloat(); m_flFieldOfView = VIEW_FIELD_WIDE;// indicates the width of this NPC's forward view cone ( as a dotproduct result ) m_NPCState = NPC_STATE_NONE; m_nSkin = CREMATOR_SKIN_ALERT; // original yellow-eyes skin // Если надо спаунить крематора с иным цветом глаз, подставь значение из npc_cremator_h. m_iAmmo = m_iMaxAmmo = 54; NPCInit(); m_flDistTooFar = 6000.0; GetSenses()->SetDistLook( 6000.0 -1 ); m_flNextIdleSoundTime = gpGlobals->curtime; // + random->RandomFloat( 14.0f, 28.0f ); m_flNextRangeAttack2Time = gpGlobals->curtime; // + random->RandomFloat( 10.0f, 20.0f ); m_MuzzleAttachment = LookupAttachment( "muzzle" ); m_HeadAttachment = LookupAttachment( "headattachment" ); CapabilitiesAdd( bits_CAP_MOVE_GROUND | bits_CAP_TURN_HEAD ); CapabilitiesAdd( bits_CAP_INNATE_RANGE_ATTACK1 ); // flamethrower CapabilitiesAdd( bits_CAP_INNATE_RANGE_ATTACK2 ); CapabilitiesAdd( bits_CAP_MOVE_SHOOT ); // TODO: Melee? }
//========================================================= // Spawn //========================================================= void CMyNPC::Spawn() { Precache( ); engine.SetModel(edict(), "models/mymodel.mdl"); UTIL_SetSize( this, Vector( -12, -12, 0 ), Vector( 12, 12, 24 ) ); SetSolid( SOLID_SLIDEBOX ); SetMoveType( MOVETYPE_STEP ); m_bloodColor = BLOOD_COLOR_GREEN; m_iHealth = 8; m_vecViewOffset = Vector ( 0, 0, 0 );// position of the eyes relative to NPC's origin. m_flFieldOfView = 0.5;// indicates the width of this NPC's forward view cone ( as a dotproduct result ) m_NPCState = NPCSTATE_NONE; NPCInit(); }
//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CNPC_Fisherman::Spawn( void ) { m_iHatLayer = -1; m_iHatState = -1; Precache(); m_iHealth = 80; // m_iszIdleExpression = MAKE_STRING("scenes/Expressions/FishermanIdle.vcd"); // m_iszAlertExpression = MAKE_STRING("scenes/Expressions/FishermanAlert.vcd"); // m_iszCombatExpression = MAKE_STRING("scenes/Expressions/FishermanCombat.vcd"); BaseClass::Spawn(); AddEFlags( EFL_NO_DISSOLVE | EFL_NO_MEGAPHYSCANNON_RAGDOLL | EFL_NO_PHYSCANNON_INTERACTION ); NPCInit(); }
//----------------------------------------------------------------------------- // Spawn //----------------------------------------------------------------------------- void CNPC_Eli::Spawn() { // Eli is allowed to use multiple models, because he appears in the pod. // He defaults to his normal model. char *szModel = (char *)STRING( GetModelName() ); if (!szModel || !*szModel) { szModel = "models/eli.mdl"; SetModelName( AllocPooledString(szModel) ); } Precache(); SetModel( szModel ); BaseClass::Spawn(); SetHullType(HULL_HUMAN); SetHullSizeNormal(); // If Eli has a parent, he's currently inside a pod. Prevent him from moving. if ( GetMoveParent() ) { SetSolid( SOLID_BBOX ); AddSolidFlags( FSOLID_NOT_STANDABLE ); SetMoveType( MOVETYPE_NONE ); CapabilitiesAdd( bits_CAP_ANIMATEDFACE | bits_CAP_TURN_HEAD ); CapabilitiesAdd( bits_CAP_FRIENDLY_DMG_IMMUNE ); } else { SetupWithoutParent(); } AddEFlags( EFL_NO_DISSOLVE | EFL_NO_MEGAPHYSCANNON_RAGDOLL | EFL_NO_PHYSCANNON_INTERACTION ); SetBloodColor( BLOOD_COLOR_RED ); m_iHealth = 8; m_flFieldOfView = 0.5;// indicates the width of this NPC's forward view cone ( as a dotproduct result ) m_NPCState = NPC_STATE_NONE; NPCInit(); }