Here's the trace code in the ass.gsc file:

// Spawn an special effect at the base of the extraction zone to indicate where it is located
   traceStart = zoneTrigger.origin + (0,0,32);
   traceEnd = zoneTrigger.origin + (0,0,-32);
   trace = bulletTrace( traceStart, traceEnd, false, undefined );
   upangles = vectorToAngles( trace["normal"] );
   extractionZone.baseEffect = spawnFx( game[level.gameType]["extraction_base_effect"], trace["position"], anglesToForward( upangles ), anglesToRight( upangles ) );
   triggerFx( extractionZone.baseEffect );
   
   return extractionZone;

I would try increasing the z value to 64 and -64 to make sure it finds the level playing field. The value of 32 may not get above the ground if the origin is slightly below, just like Samuel indicated.


OR

add a wait statement and it seems to have fixed it.

createExtractionZone( attackerTeam, zoneTrigger )
{
   // Create the use object with 0 useTime so it's immediate
   extractionZone = maps\mp\gametypes\_gameobjects::createUseObject( attackerTeam, zoneTrigger, undefined, (0,0,100) );
   extractionZone maps\mp\gametypes\_gameobjects::setVisibleTeam( "any" );
   extractionZone maps\mp\gametypes\_gameobjects::setUseTime( level.scr_ass_extracting_time );
   if ( level.scr_ass_extracting_time > 0 ) {
      extractionZone maps\mp\gametypes\_gameobjects::setUseText( &"OW_ASSASSINATION_EXTRACTING_VIP" );
   }
   extractionZone maps\mp\gametypes\_gameobjects::set2DIcon( "friendly", "compass_waypoint_extraction_zone" );
   extractionZone maps\mp\gametypes\_gameobjects::set3DIcon( "friendly", "waypoint_extraction_zone" );
   extractionZone maps\mp\gametypes\_gameobjects::set2DIcon( "enemy", "compass_waypoint_extraction_zone" );
   extractionZone maps\mp\gametypes\_gameobjects::set3DIcon( "enemy", "waypoint_extraction_zone" );
   extractionZone maps\mp\gametypes\_gameobjects::allowUse( "friendly" );
   extractionZone.onUse = ::onUse;

   // Spawn an special effect at the base of the extraction zone to indicate where it is located
   traceStart = zoneTrigger.origin + (0,0,32);
   traceEnd = zoneTrigger.origin + (0,0,-32);
   trace = bulletTrace( traceStart, traceEnd, false, undefined );
   upangles = vectorToAngles( trace["normal"] );
   extractionZone.baseEffect = spawnFx( game[level.gameType]["extraction_base_effect"], trace["position"], anglesToForward( upangles ), anglesToRight( upangles ) );

        // Slow process to create FX 
        wait( 0.08 );

   triggerFx( extractionZone.baseEffect );
   
   return extractionZone;
}
