//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CTriggerAreaCapture::Spawn( void ) { BaseClass::Spawn(); AddSpawnFlags( SF_TRIGGER_ALLOW_CLIENTS ); InitTrigger(); Precache(); m_iAreaIndex = -1; SetTouch ( &CTriggerAreaCaptureShim::Touch ); SetThink( &CTriggerAreaCapture::CaptureThink ); SetNextThink( gpGlobals->curtime + AREA_THINK_TIME ); for ( int i = 0; i < m_TeamData.Count(); i++ ) { if ( m_TeamData[i].iNumRequiredToCap < 1 ) { m_TeamData[i].iNumRequiredToCap = 1; } if ( m_TeamData[i].iNumRequiredToStartCap < 1 ) { m_TeamData[i].iNumRequiredToStartCap = 1; } } }
//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CPhysBox::Spawn( void ) { Precache(); if ( HasSpawnFlags( SF_BREAK_TRIGGER_ONLY ) ) { m_takedamage = DAMAGE_NO; AddSpawnFlags( SF_BREAK_DONT_TAKE_PHYSICS_DAMAGE ); } else if ( m_iHealth == 0 ) { m_takedamage = DAMAGE_EVENTS_ONLY; AddSpawnFlags( SF_BREAK_DONT_TAKE_PHYSICS_DAMAGE ); } else { m_takedamage = DAMAGE_YES; } SetMoveType( MOVETYPE_NONE ); SetSolid( SOLID_VPHYSICS ); SetAbsVelocity( vec3_origin ); SetModel( STRING( GetModelName() ) ); Relink(); SetSolid( SOLID_VPHYSICS ); if ( HasSpawnFlags( SF_PHYSBOX_DEBRIS ) ) { SetCollisionGroup( COLLISION_GROUP_DEBRIS ); } CreateVPhysics(); m_hCarryingPlayer = NULL; SetTouch( &CPhysBox::BreakTouch ); if ( HasSpawnFlags( SF_BREAK_TRIGGER_ONLY ) ) // Only break on trigger { SetTouch( NULL ); } if ( m_impactEnergyScale == 0 ) { m_impactEnergyScale = 1.0; } }
//-------------------------------------------------------------------------------------------------------- void CTonemapTrigger::Spawn( void ) { AddSpawnFlags( SF_TRIGGER_ALLOW_CLIENTS ); BaseClass::Spawn(); InitTrigger(); m_hTonemapController = gEntList.FindEntityByName( NULL, m_tonemapControllerName ); }
//----------------------------------------------------------------------------- // Purpose: Initializes the resource zone //----------------------------------------------------------------------------- void CFuncRespawnRoom::Spawn( void ) { AddSpawnFlags(SF_TRIGGER_ALLOW_CLIENTS); BaseClass::Spawn(); InitTrigger(); SetCollisionGroup( TFCOLLISION_GROUP_RESPAWNROOMS ); m_bActive = true; SetTouch( &CFuncRespawnRoom::RespawnRoomTouch ); }
void CASW_Item_Crate::Spawn() { DisableAutoFade(); SetModelName( AllocPooledString( ASW_ITEM_CRATE_MODEL ) ); Precache(); SetModel( ASW_ITEM_CRATE_MODEL ); AddSpawnFlags(SF_PHYSPROP_AIMTARGET); BaseClass::Spawn(); m_nSkin = 2; SetHealth(30); SetMaxHealth(30); m_takedamage = DAMAGE_YES; }
void CASW_Barrel_Explosive::Spawn() { DisableAutoFade(); SetModelName( AllocPooledString( ASW_EXPLOSIVE_BARREL_MODEL_NAME ) ); Precache(); SetModel( ASW_EXPLOSIVE_BARREL_MODEL_NAME ); AddSpawnFlags( SF_PHYSPROP_AIMTARGET ); BaseClass::Spawn(); InitHealth(); VisibilityMonitor_AddEntity( this, asw_visrange_generic.GetFloat() * 0.9f, NULL, NULL ); }
void CTriggerTimerStart::SetHasLookAngles(bool bHasLook) { if (bHasLook) { if (!HasSpawnFlags(SF_USE_LOOKANGLES)) { AddSpawnFlags(SF_USE_LOOKANGLES); } } else { if (HasSpawnFlags(SF_USE_LOOKANGLES)) { RemoveSpawnFlags(SF_USE_LOOKANGLES); } } }
void CTriggerTimerStart::SetIsLimitingSpeedOnlyXY(bool pIsLimitingSpeedOnlyXY) { if (pIsLimitingSpeedOnlyXY) { if (!HasSpawnFlags(SF_LIMIT_LEAVE_SPEED_ONLYXY)) { AddSpawnFlags(SF_LIMIT_LEAVE_SPEED_ONLYXY); } } else { if (HasSpawnFlags(SF_LIMIT_LEAVE_SPEED_ONLYXY)) { RemoveSpawnFlags(SF_LIMIT_LEAVE_SPEED_ONLYXY); } } }
void CTriggerTimerStart::SetIsLimitingSpeed(bool bIsLimitSpeed) { if (bIsLimitSpeed) { if (!HasSpawnFlags(SF_LIMIT_LEAVE_SPEED)) { AddSpawnFlags(SF_LIMIT_LEAVE_SPEED); } } else { if (HasSpawnFlags(SF_LIMIT_LEAVE_SPEED)) { RemoveSpawnFlags(SF_LIMIT_LEAVE_SPEED); } } }
//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CNPC_Monster::Spawn( void ) { ParseNPCScript( cScript.ToCStr() ); m_flLastBloodTrail = gpGlobals->curtime; m_flNextPainSoundTime = 0; m_fIsHeadless = true; AddSpawnFlags( SF_NPC_LONG_RANGE ); m_flFieldOfView = 0.2; CapabilitiesClear(); CapabilitiesAdd( bits_CAP_MOVE_GROUND | bits_CAP_INNATE_MELEE_ATTACK1 ); BaseClass::Spawn(); }
//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- CItem_DynamicResupply::CItem_DynamicResupply( void ) { AddSpawnFlags( SF_DYNAMICRESUPPLY_USE_MASTER ); m_version = VERSION_CURRENT; // Setup default values m_flDesiredHealth[0] = 1.0; // Health m_flDesiredHealth[1] = 0.3; // Armor m_flDesiredAmmo[0] = 0.5; // Pistol m_flDesiredAmmo[1] = 0.5; // SMG1 m_flDesiredAmmo[2] = 0.1; // SMG1 Grenade m_flDesiredAmmo[3] = 0.4; // AR2 m_flDesiredAmmo[4] = 0.5; // Shotgun m_flDesiredAmmo[5] = 0.0; // RPG Round m_flDesiredAmmo[6] = 0.1; // Grenade m_flDesiredAmmo[7] = 0; // 357 m_flDesiredAmmo[8] = 0; // Crossbow m_flDesiredAmmo[9] = 0; // AR2 alt-fire }
void CEnvDeferredLight::Spawn() { BaseClass::Spawn(); // Always on! AddSpawnFlags( DEFLIGHT_ENABLED|DEFLIGHT_SHADOW_ENABLED ); KeyValue( "light_type", "0" ); KeyValue( "diffuse", UTIL_VarArgs( "%f %f %f %f", m_vLightColor.x, m_vLightColor.y, m_vLightColor.z, 255.0f * m_fIntensity ) ); KeyValue( "ambient", "10 10 10 255" ); KeyValue( "power", UTIL_VarArgs( "%f", m_fStartFalloff ) ); KeyValue( "vis_dist", UTIL_VarArgs( "%d", 1024 ) ); KeyValue( "vis_range", UTIL_VarArgs( "%d", 512 ) ); KeyValue( "shadow_dist", UTIL_VarArgs( "%d", 1024 ) ); KeyValue( "shadow_range", UTIL_VarArgs( "%d", 512 ) ); KeyValue( "spot_cone_inner", UTIL_VarArgs( "%f", 35.0 ) ); KeyValue( "spot_cone_outer", UTIL_VarArgs( "%f", 45.0 ) ); }
//----------------------------------------------------------------------------- // Purpose: Spawn function //----------------------------------------------------------------------------- void CTFDroppedWeapon::Spawn( void ) { Assert( m_pWeaponInfo ); SetModel( STRING( GetModelName() ) ); AddSpawnFlags( SF_NORESPAWN ); BaseClass::Spawn(); if ( VPhysicsGetObject() ) { // All weapons must have same weight. VPhysicsGetObject()->SetMass( 25.0f ); } SetCollisionGroup( COLLISION_GROUP_DEBRIS ); m_flCreationTime = gpGlobals->curtime; // Remove 30s after spawning m_flRemoveTime = gpGlobals->curtime + 30.0f; SetThink( &CTFDroppedWeapon::RemovalThink ); SetNextThink( gpGlobals->curtime ); }
//------------------------------------------------------------------------------ // Purpose : // Input : // Output : //------------------------------------------------------------------------------ void CNPC_EnemyFinder::StartNPC ( void ) { AddSpawnFlags(SF_NPC_FALL_TO_GROUND); // this prevents CAI_BaseNPC from slamming the finder to // the ground just because it's not MOVETYPE_FLY BaseClass::StartNPC(); if ( AI_IsSinglePlayer() && m_PlayerFreePass.GetParams().duration > 0.1 ) { m_PlayerFreePass.SetPassTarget( UTIL_PlayerByIndex(1) ); AI_FreePassParams_t freePassParams = m_PlayerFreePass.GetParams(); freePassParams.coverDist = 120; freePassParams.peekEyeDist = 1.75; freePassParams.peekEyeDistZ = 4; m_PlayerFreePass.SetParams( freePassParams ); } if (!m_nStartOn) { SetThink(NULL); } }
//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CNPC_Crow::Spawn( void ) { BaseClass::Spawn(); #ifdef _XBOX // Always fade the corpse AddSpawnFlags( SF_NPC_FADE_CORPSE ); #endif // _XBOX char *szModel = (char *)STRING( GetModelName() ); if (!szModel || !*szModel) { szModel = "models/crow.mdl"; SetModelName( AllocPooledString(szModel) ); } Precache(); SetModel( szModel ); m_iHealth = sk_crow_health.GetFloat(); SetHullType(HULL_TINY); SetHullSizeNormal(); SetSolid( SOLID_BBOX ); SetMoveType( MOVETYPE_STEP ); m_flFieldOfView = VIEW_FIELD_FULL; SetViewOffset( Vector(6, 0, 11) ); // Position of the eyes relative to NPC's origin. m_flGroundIdleMoveTime = gpGlobals->curtime + random->RandomFloat( 0.0f, 5.0f ); SetBloodColor( BLOOD_COLOR_RED ); m_NPCState = NPC_STATE_NONE; m_nMorale = random->RandomInt( 0, 12 ); SetCollisionGroup( HL2COLLISION_GROUP_CROW ); CapabilitiesClear(); bool bFlying = ( ( m_spawnflags & SF_CROW_FLYING ) != 0 ); SetFlyingState( bFlying ? FlyState_Flying : FlyState_Walking ); // We don't mind zombies so much. They smell good! AddClassRelationship( CLASS_ZOMBIE, D_NU, 0 ); m_bSoar = false; m_bOnJeep = false; m_flSoarTime = gpGlobals->curtime; NPCInit(); m_iBirdType = BIRDTYPE_CROW; m_vLastStoredOrigin = vec3_origin; m_flLastStuckCheck = gpGlobals->curtime; m_flDangerSoundTime = gpGlobals->curtime; SetGoalEnt( NULL ); }
//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CNPC_AntlionGrub::Spawn( void ) { Precache(); SetModel( ANTLIONGRUB_MODEL ); m_NPCState = NPC_STATE_NONE; m_iHealth = sk_antliongrub_health.GetFloat(); m_iMaxHealth = m_iHealth; m_flFieldOfView = 0.5f; SetSolid( SOLID_BBOX ); SetMoveType( MOVETYPE_NONE ); SetCollisionGroup( COLLISION_GROUP_DEBRIS ); SetHullSizeNormal(); SetHullType( HULL_SMALL_CENTERED ); SetBloodColor( BLOOD_COLOR_YELLOW ); CapabilitiesClear(); m_flNextVoiceChange = gpGlobals->curtime; m_flSquashTime = gpGlobals->curtime; m_flNearTime = gpGlobals->curtime; m_flHealthTime = gpGlobals->curtime; m_flEnemyHostileTime = gpGlobals->curtime; m_bMoving = false; m_bSquashed = false; m_bSquashValid = false; m_bHealing = false; m_nHealthReserve = 10; SetTouch( GrubTouch ); // Attach to the surface under our belly AttachToSurface(); // Use detailed collision because we're an odd shape CollisionProp()->SetSurroundingBoundsType( USE_HITBOXES ); /* CSoundEnvelopeController &controller = CSoundEnvelopeController::GetController(); CPASAttenuationFilter filter( this ); m_pMovementSound = controller.SoundCreate( filter, entindex(), CHAN_BODY, "NPC_Antlion.Movement", 3.9f ); m_pVoiceSound = controller.SoundCreate( filter, entindex(), CHAN_VOICE, "NPC_Antlion.Voice", 3.9f ); m_pHealSound = controller.SoundCreate( filter, entindex(), CHAN_STATIC, "NPC_Antlion.Heal", 3.9f ); controller.Play( m_pMovementSound, 0.0f, 100 ); controller.Play( m_pVoiceSound, 0.0f, 100 ); controller.Play( m_pHealSound, 0.0f, 100 ); */ m_pGlowSprite = CSprite::SpriteCreate( "sprites/blueflare1.vmt", GetLocalOrigin(), false ); Assert( m_pGlowSprite ); if ( m_pGlowSprite == NULL ) return; Vector vecUp; GetVectors( NULL, NULL, &vecUp ); m_pGlowSprite->TurnOn(); m_pGlowSprite->SetTransparency( kRenderWorldGlow, 156, 169, 121, 164, kRenderFxNoDissipation ); m_pGlowSprite->SetAbsOrigin( GetAbsOrigin() + vecUp * 8.0f ); m_pGlowSprite->SetScale( 1.0f ); m_pGlowSprite->SetGlowProxySize( 16.0f ); // We don't want to teleport at this point AddSpawnFlags( SF_NPC_FALL_TO_GROUND ); // We get a bogus error otherwise NPCInit(); AddSolidFlags( FSOLID_TRIGGER ); }
//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CNPC_Combine_Cannon::Spawn( void ) { Precache(); /// HACK: SetModel( "models/combine_soldier.mdl" ); // Setup our ancillary beams but keep them hidden for now CreateLaser(); CreateAncillaryBeams(); m_iAmmoType = GetAmmoDef()->Index( "CombineHeavyCannon" ); SetHullType( HULL_HUMAN ); SetHullSizeNormal(); UTIL_SetSize( this, Vector( -16, -16 , 0 ), Vector( 16, 16, 64 ) ); SetSolid( SOLID_BBOX ); AddSolidFlags( FSOLID_NOT_STANDABLE ); SetMoveType( MOVETYPE_FLY ); m_bloodColor = DONT_BLEED; m_iHealth = 10; m_flFieldOfView = DOT_45DEGREE; m_NPCState = NPC_STATE_NONE; if( HasSpawnFlags( SF_STARTDISABLED ) ) { m_fEnabled = false; } else { m_fEnabled = true; } CapabilitiesClear(); CapabilitiesAdd( bits_CAP_INNATE_RANGE_ATTACK1 | bits_CAP_SIMPLE_RADIUS_DAMAGE ); m_HackedGunPos = Vector ( 0, 0, 0 ); AddSpawnFlags( SF_NPC_LONG_RANGE | SF_NPC_ALWAYSTHINK ); NPCInit(); // Limit our look distance SetDistLook( m_flSightDist ); AddEffects( EF_NODRAW ); AddSolidFlags( FSOLID_NOT_SOLID ); // Point the cursor straight ahead so that the sniper's // first sweep of the laser doesn't look weird. Vector vecForward; AngleVectors( GetLocalAngles(), &vecForward ); m_vecPaintCursor = GetBulletOrigin() + vecForward * 1024; // none! GetEnemies()->SetFreeKnowledgeDuration( 0.0f ); GetEnemies()->SetEnemyDiscardTime( 2.0f ); m_flTimeLastAttackedPlayer = 0.0f; }
//----------------------------------------------------------------------------- // Purpose: Called when spawning, after keyvalues have been set. //----------------------------------------------------------------------------- void CFuncRotating::Spawn( ) { #ifdef TF_DLL AddSpawnFlags( SF_BRUSH_ROTATE_CLIENTSIDE ); #endif // // Maintain compatibility with previous maps. // if (m_flVolume == 0.0) { m_flVolume = 1.0; } // // If the designer didn't set a sound attenuation, default to one. // if ( HasSpawnFlags(SF_BRUSH_ROTATE_SMALLRADIUS) ) { m_flAttenuation = ATTN_IDLE; } else if ( HasSpawnFlags(SF_BRUSH_ROTATE_MEDIUMRADIUS) ) { m_flAttenuation = ATTN_STATIC; } else if ( HasSpawnFlags(SF_BRUSH_ROTATE_LARGERADIUS) ) { m_flAttenuation = ATTN_NORM; } else { m_flAttenuation = ATTN_NORM; } // // Prevent divide by zero if level designer forgets friction! // if ( m_flFanFriction == 0 ) { m_flFanFriction = 1; } // // Build the axis of rotation based on spawnflags. // if ( HasSpawnFlags(SF_BRUSH_ROTATE_Z_AXIS) ) { m_vecMoveAng = QAngle(0,0,1); } else if ( HasSpawnFlags(SF_BRUSH_ROTATE_X_AXIS) ) { m_vecMoveAng = QAngle(1,0,0); } else { m_vecMoveAng = QAngle(0,1,0); // y-axis } // // Check for reverse rotation. // if ( HasSpawnFlags(SF_BRUSH_ROTATE_BACKWARDS) ) { m_vecMoveAng = m_vecMoveAng * -1; } SetSolid( SOLID_VPHYSICS ); // // Some rotating objects like fake volumetric lights will not be solid. // if ( HasSpawnFlags(SF_ROTATING_NOT_SOLID) ) { AddSolidFlags( FSOLID_NOT_SOLID ); SetMoveType( MOVETYPE_PUSH ); } else { RemoveSolidFlags( FSOLID_NOT_SOLID ); SetMoveType( MOVETYPE_PUSH ); } SetModel( STRING( GetModelName() ) ); SetUse( &CFuncRotating::RotatingUse ); // // Did level designer forget to assign a maximum speed? Prevent a divide by // zero in RampPitchVol as well as allowing the rotator to work. // m_flMaxSpeed = fabs( m_flMaxSpeed ); if (m_flMaxSpeed == 0) { m_flMaxSpeed = 100; } // // If the brush should be initially rotating, use it in a little while. // if ( HasSpawnFlags(SF_BRUSH_ROTATE_START_ON) ) { SetThink( &CFuncRotating::SUB_CallUseToggle ); SetNextThink( gpGlobals->curtime + .2 ); // leave a magic delay for client to start up } // // Can this brush inflict pain? // if ( HasSpawnFlags(SF_BRUSH_HURT) ) { SetTouch( &CFuncRotating::HurtTouch ); } // // Set speed to 0 in case there's an old "speed" key lying around. // m_flSpeed = 0; Precache( ); CreateVPhysics(); m_angStart = GetLocalAngles(); // Slam the object back to solid - if we really want it to be solid. if ( m_bSolidBsp ) { SetSolid( SOLID_BSP ); } if ( HasSpawnFlags(SF_BRUSH_ROTATE_CLIENTSIDE) ) { m_vecClientOrigin = GetLocalOrigin(); m_vecClientAngles = GetLocalAngles(); } }