void CNPC_CombineDropship::SpawnTroops( void ) { int i; // char szAttachmentName[ 32 ]; Vector vecLocation; QAngle vecAngles; QAngle vecSpawnAngles; // memset( szAttachmentName, 0, 32 ); vecSpawnAngles = GetLocalAngles(); vecSpawnAngles.y = UTIL_AngleMod( vecSpawnAngles.y - 180 ); vecSpawnAngles.x = 0; vecSpawnAngles.z = 0; for( i = 1 ; i <= m_soldiersToDrop ; i++ ) { // Q_snprintf( szAttachmentName,sizeof(szAttachmentName), "spot%d", i ); // GetAttachment( szAttachmentName, vecLocation, vecAngles ); vecLocation = GetAbsOrigin(); vecAngles = GetAbsAngles(); // troops spawn behind vehicle at all times Vector shipDir, shipLeft; AngleVectors( vecAngles, &shipDir, &shipLeft, NULL ); vecLocation -= shipDir * 250; // set spawn position for spawning in formation switch( i ) { case 1: vecLocation -= shipLeft * DROPSHIP_TROOP_GRID; break; case 3: vecLocation += shipLeft * DROPSHIP_TROOP_GRID; break; case 4: vecLocation -= shipDir * DROPSHIP_TROOP_GRID - shipLeft * DROPSHIP_TROOP_GRID; break; case 5: vecLocation -= shipDir * DROPSHIP_TROOP_GRID; break; case 6: vecLocation -= shipDir * DROPSHIP_TROOP_GRID + shipLeft * DROPSHIP_TROOP_GRID; } // spawn based upon template CAI_BaseNPC *pEnt = NULL; CBaseEntity *pEntity = NULL; MapEntity_ParseEntity( pEntity, STRING(m_sNPCTemplateData), NULL ); if ( pEntity != NULL ) { pEnt = (CAI_BaseNPC *)pEntity; } else { Warning("Dropship could not create template NPC\n" ); return; } pEnt->SetLocalOrigin( vecLocation ); pEnt->SetLocalAngles( vecSpawnAngles ); DispatchSpawn( pEnt ); pEnt->m_NPCState = NPC_STATE_IDLE; pEnt->SetOwnerEntity( this ); pEnt->Activate(); } }