Please or Register to create posts and topics.

Elevator talk scene

In the game, the screen faded into the loading screen only after the character finished it's monologue and until then you could see the elevator just keep passing through an occasional light. How do I make that happen in my map? How should I call my logic_choreographed_scenes in order for the elevator's script will recognize it?

Also, partially unrelated, can I add more than one sentence in a logic_choreographed_scene or if I want to create a complex scene like the first core transfer do I need to place hundreds of these everywhere?

ImageImageImage
Instance: Co-Op Tube Ride

I've never made a sp map, so I dont know much about those elevlators. But. If I were you... I would click "edit instance" find the trigger/script/relay/whatever it is that ends the map. Then either adjust the time or delete it and make my own to fit my needs. Then copy everything in the instance and paste it into my map.

Maps(Newest to Oldest): Storming the Castle / The Amazing Race / Wreaked / Mental Breakdown / Lost In Transition / Split / Mind Lock
Mapping Since May 21, 2011

I think there is an option that when the sound stops, the map will transition, it's in the elevator or logic_choreographed_scene
And yes you can have two, just like in the original portal

This is the code that is responsible of the elevator speed and "ReadyForTransition()" command. Does it help?

Code: Select all
ElevatorMotifs <-
[
   { map = "sp_a1_intro1", speed = 200 },
   { map = "sp_a1_intro2", speed = 200 },   // this is what we do for continual elevator shafts
   { map = "sp_a1_intro3", speed = 200 },   // this is what we do for continual elevator shafts
   { map = "sp_a1_intro5", speed = 200 },   // this is what we do for continual elevator shafts
   { map = "sp_a1_intro6", speed = 200 },   // this is what we do for continual elevator shafts
   { map = "sp_a2_bridge_intro", speed = 200  },
//   { map = "sp_a2_laser_over_goo", speed = 300, motifs = [ "@shaft_stoppage_1", "transition", ] },
   { map = "sp_a2_column_blocker", speed = 200 },
   { map = "sp_a2_trust_fling", speed = 300 },

   { map = "sp_a2_intro", speed = 125 },   
   { map = "sp_a2_laser_intro", speed = 200 },
   { map = "sp_a2_laser_stairs", speed = 200 },
   { map = "sp_a2_dual_lasers", speed = 200 },
   { map = "sp_a2_catapult_intro", speed = 200 },
   { map = "sp_a2_pit_flings", speed = 200 },
//   { map = "sp_a2_fizzler_intro", speed = 200 },
   { map = "sp_a2_sphere_peek", speed = 200 },
   { map = "sp_a2_ricochet", speed = 200 },
   { map = "sp_a2_bridge_the_gap", speed = 200},
   { map = "sp_a2_turret_intro", speed = 200 },
   { map = "sp_a2_laser_relays", speed = 200 },
   { map = "sp_a2_turret_blocker", speed = 200 },
   { map = "sp_a2_laser_vs_turret", speed = 200 },
   { map = "sp_a2_pull_the_rug", speed = 200 },
   { map = "sp_a2_ring_around_turrets", speed = 200 },
   { map = "sp_a2_laser_chaining", speed = 200 },
   { map = "sp_a2_triple_laser", speed = 200 },
   { map = "sp_a3_jump_intro", speed = 120 },
   { map = "sp_a3_bomb_flings", speed = 120 },
   { map = "sp_a3_crazy_box", speed = 120 },
   { map = "sp_a3_speed_ramp", speed = 120 },
   { map = "sp_a3_speed_flings", speed = 120 },
   { map = "sp_a4_intro", speed = 200 },
   { map = "sp_a4_tb_intro", speed = 200 },
   { map = "sp_a4_tb_trust_drop", speed = 200 },
   { map = "sp_a4_tb_wall_button", speed = 200 },
   { map = "sp_a4_tb_polarity", speed = 200 },
   { map = "sp_a4_tb_catch", speed = 100 },
   { map = "sp_a4_stop_the_box", speed = 200 },
   { map = "sp_a4_laser_catapult", speed = 200 },
   { map = "sp_a4_speed_tb_catch", speed = 200 },
   { map = "sp_a4_jump_polarity", speed = 200 },
]

function StartMoving()
{
   SendToConsole( "map_wants_save_disable 1" )   
   
   local foundLevel = false
   
   foreach (index, level in ElevatorMotifs)
   {
      if (level.map == GetMapName() && ("speed" in level) )
      {
         printl( "Starting elevator " + self.GetName() + " with speed " + level.speed )
         EntFire(self.GetName(),"SetSpeedReal",level.speed,0.0)
         foundLevel = true
      }
   }
   
   if (foundLevel == false)
   {
      printl( "Using default elevator speed 300" )
      EntFire(self.GetName(),"SetSpeedReal","300",0.0)
   }
}

function ReadyForTransition()
{
   // see if we need to teleport to somewhere else or
   PrepareTeleport()
}

function FailSafeTransition()
{
   // fire whichever one of these we have.
   EntFire("@transition_from_map","Trigger","",0.0)
   EntFire("@transition_with_survey","Trigger","",0.0)
}

function PrepareTeleport()
{   
   local foundLevel = false
      
   if ( ::TransitionFired == 1 )
      return

   foreach (index, level in ElevatorMotifs)
   {
      if ( level.map == GetMapName() )
      {
         if ("motifs" in level)
         {
            printl( "Trying to connect to motif " + level.motifs[::MotifIndex] )

            if( level.motifs[::MotifIndex] == "transition" )
            {
               EntFire("@transition_with_survey","Trigger","",0.0)
               EntFire("@transition_from_map","Trigger","",0.0)
               return
            }
            else
            {
               EntFire(self.GetName(),"SetRemoteDestination",level.motifs[::MotifIndex],0.0)
               if( ::MotifIndex == 0 )
               {
                  EntFire("departure_elevator-elevator_1","Stop","",0.05)
               }
            }
            foundLevel = true
         }
         else
         {
            if( ::TransitionReady == 1 )
            {
               ::TransitionFired <- 1
               EntFire("@transition_from_map","Trigger","",0.0)
               EntFire("@transition_with_survey","Trigger","",0.0)
            }
            // just bail, we don't need to do anything weird here.
            return;
         }
      }
   }
   
   if (foundLevel == false)
   {
//      printl("**********************************")
//      printl("Level not found in elevator_motifs")
//      printl("**********************************")
      {
         ::TransitionFired <- 1
         EntFire("@transition_with_survey","Trigger","",0.0)
         EntFire("@transition_from_map","Trigger","",0.0)
         printl("Level not found in elevator_motifs defaulting to transition")
      }

      // just bail, we don't need to do anything weird here.
      return;
   }
   
   EntFire(self.GetName(),"Enable",0.0)   
   ::MotifIndex += 1
}

function OnPostSpawn()
{
   ::MotifIndex <- 0
   ::TransitionReady <- 0
   ::TransitionFired <- 0
}
[code]ElevatorMotifs <-
[
   { map = "sp_a1_intro1", speed = 200 },
   { map = "sp_a1_intro2", speed = 200 },   // this is what we do for continual elevator shafts
   { map = "sp_a1_intro3", speed = 200 },   // this is what we do for continual elevator shafts
   { map = "sp_a1_intro5", speed = 200 },   // this is what we do for continual elevator shafts
   { map = "sp_a1_intro6", speed = 200 },   // this is what we do for continual elevator shafts
   { map = "sp_a2_bridge_intro", speed = 200  },
//   { map = "sp_a2_laser_over_goo", speed = 300, motifs = [ "@shaft_stoppage_1", "transition", ] },
   { map = "sp_a2_column_blocker", speed = 200 },
   { map = "sp_a2_trust_fling", speed = 300 },

   { map = "sp_a2_intro", speed = 125 },   
   { map = "sp_a2_laser_intro", speed = 200 },
   { map = "sp_a2_laser_stairs", speed = 200 },
   { map = "sp_a2_dual_lasers", speed = 200 },
   { map = "sp_a2_catapult_intro", speed = 200 },
   { map = "sp_a2_pit_flings", speed = 200 },
//   { map = "sp_a2_fizzler_intro", speed = 200 },
   { map = "sp_a2_sphere_peek", speed = 200 },
   { map = "sp_a2_ricochet", speed = 200 },
   { map = "sp_a2_bridge_the_gap", speed = 200},
   { map = "sp_a2_turret_intro", speed = 200 },
   { map = "sp_a2_laser_relays", speed = 200 },
   { map = "sp_a2_turret_blocker", speed = 200 },
   { map = "sp_a2_laser_vs_turret", speed = 200 },
   { map = "sp_a2_pull_the_rug", speed = 200 },
   { map = "sp_a2_ring_around_turrets", speed = 200 },
   { map = "sp_a2_laser_chaining", speed = 200 },
   { map = "sp_a2_triple_laser", speed = 200 },
   { map = "sp_a3_jump_intro", speed = 120 },
   { map = "sp_a3_bomb_flings", speed = 120 },
   { map = "sp_a3_crazy_box", speed = 120 },
   { map = "sp_a3_speed_ramp", speed = 120 },
   { map = "sp_a3_speed_flings", speed = 120 },
   { map = "sp_a4_intro", speed = 200 },
   { map = "sp_a4_tb_intro", speed = 200 },
   { map = "sp_a4_tb_trust_drop", speed = 200 },
   { map = "sp_a4_tb_wall_button", speed = 200 },
   { map = "sp_a4_tb_polarity", speed = 200 },
   { map = "sp_a4_tb_catch", speed = 100 },
   { map = "sp_a4_stop_the_box", speed = 200 },
   { map = "sp_a4_laser_catapult", speed = 200 },
   { map = "sp_a4_speed_tb_catch", speed = 200 },
   { map = "sp_a4_jump_polarity", speed = 200 },
]

function StartMoving()
{
   SendToConsole( "map_wants_save_disable 1" )   
   
   local foundLevel = false
   
   foreach (index, level in ElevatorMotifs)
   {
      if (level.map == GetMapName() && ("speed" in level) )
      {
         printl( "Starting elevator " + self.GetName() + " with speed " + level.speed )
         EntFire(self.GetName(),"SetSpeedReal",level.speed,0.0)
         foundLevel = true
      }
   }
   
   if (foundLevel == false)
   {
      printl( "Using default elevator speed 300" )
      EntFire(self.GetName(),"SetSpeedReal","300",0.0)
   }
}

function ReadyForTransition()
{
   // see if we need to teleport to somewhere else or
   PrepareTeleport()
}

function FailSafeTransition()
{
   // fire whichever one of these we have.
   EntFire("@transition_from_map","Trigger","",0.0)
   EntFire("@transition_with_survey","Trigger","",0.0)
}

function PrepareTeleport()
{   
   local foundLevel = false
      
   if ( ::TransitionFired == 1 )
      return

   foreach (index, level in ElevatorMotifs)
   {
      if ( level.map == GetMapName() )
      {
         if ("motifs" in level)
         {
            printl( "Trying to connect to motif " + level.motifs[::MotifIndex] )

            if( level.motifs[::MotifIndex] == "transition" )
            {
               EntFire("@transition_with_survey","Trigger","",0.0)
               EntFire("@transition_from_map","Trigger","",0.0)
               return
            }
            else
            {
               EntFire(self.GetName(),"SetRemoteDestination",level.motifs[::MotifIndex],0.0)
               if( ::MotifIndex == 0 )
               {
                  EntFire("departure_elevator-elevator_1","Stop","",0.05)
               }
            }
            foundLevel = true
         }
         else
         {
            if( ::TransitionReady == 1 )
            {
               ::TransitionFired <- 1
               EntFire("@transition_from_map","Trigger","",0.0)
               EntFire("@transition_with_survey","Trigger","",0.0)
            }
            // just bail, we don't need to do anything weird here.
            return;
         }
      }
   }
   
   if (foundLevel == false)
   {
//      printl("**********************************")
//      printl("Level not found in elevator_motifs")
//      printl("**********************************")
      {
         ::TransitionFired <- 1
         EntFire("@transition_with_survey","Trigger","",0.0)
         EntFire("@transition_from_map","Trigger","",0.0)
         printl("Level not found in elevator_motifs defaulting to transition")
      }

      // just bail, we don't need to do anything weird here.
      return;
   }
   
   EntFire(self.GetName(),"Enable",0.0)   
   ::MotifIndex += 1
}

function OnPostSpawn()
{
   ::MotifIndex <- 0
   ::TransitionReady <- 0
   ::TransitionFired <- 0
}

ImageImageImage
Instance: Co-Op Tube Ride
Mr. P. Kiwi wrote:
This is the code that is responsible of the elevator speed and "ReadyForTransition()" command. Does it help?

Code: Select all
ElevatorMotifs <-
[
   { map = "sp_a1_intro1", speed = 200 },
   { map = "sp_a1_intro2", speed = 200 },   // this is what we do for continual elevator shafts
   { map = "sp_a1_intro3", speed = 200 },   // this is what we do for continual elevator shafts
   { map = "sp_a1_intro5", speed = 200 },   // this is what we do for continual elevator shafts
   { map = "sp_a1_intro6", speed = 200 },   // this is what we do for continual elevator shafts
   { map = "sp_a2_bridge_intro", speed = 200  },
//   { map = "sp_a2_laser_over_goo", speed = 300, motifs = [ "@shaft_stoppage_1", "transition", ] },
   { map = "sp_a2_column_blocker", speed = 200 },
   { map = "sp_a2_trust_fling", speed = 300 },

   { map = "sp_a2_intro", speed = 125 },   
   { map = "sp_a2_laser_intro", speed = 200 },
   { map = "sp_a2_laser_stairs", speed = 200 },
   { map = "sp_a2_dual_lasers", speed = 200 },
   { map = "sp_a2_catapult_intro", speed = 200 },
   { map = "sp_a2_pit_flings", speed = 200 },
//   { map = "sp_a2_fizzler_intro", speed = 200 },
   { map = "sp_a2_sphere_peek", speed = 200 },
   { map = "sp_a2_ricochet", speed = 200 },
   { map = "sp_a2_bridge_the_gap", speed = 200},
   { map = "sp_a2_turret_intro", speed = 200 },
   { map = "sp_a2_laser_relays", speed = 200 },
   { map = "sp_a2_turret_blocker", speed = 200 },
   { map = "sp_a2_laser_vs_turret", speed = 200 },
   { map = "sp_a2_pull_the_rug", speed = 200 },
   { map = "sp_a2_ring_around_turrets", speed = 200 },
   { map = "sp_a2_laser_chaining", speed = 200 },
   { map = "sp_a2_triple_laser", speed = 200 },
   { map = "sp_a3_jump_intro", speed = 120 },
   { map = "sp_a3_bomb_flings", speed = 120 },
   { map = "sp_a3_crazy_box", speed = 120 },
   { map = "sp_a3_speed_ramp", speed = 120 },
   { map = "sp_a3_speed_flings", speed = 120 },
   { map = "sp_a4_intro", speed = 200 },
   { map = "sp_a4_tb_intro", speed = 200 },
   { map = "sp_a4_tb_trust_drop", speed = 200 },
   { map = "sp_a4_tb_wall_button", speed = 200 },
   { map = "sp_a4_tb_polarity", speed = 200 },
   { map = "sp_a4_tb_catch", speed = 100 },
   { map = "sp_a4_stop_the_box", speed = 200 },
   { map = "sp_a4_laser_catapult", speed = 200 },
   { map = "sp_a4_speed_tb_catch", speed = 200 },
   { map = "sp_a4_jump_polarity", speed = 200 },
]

function StartMoving()
{
   SendToConsole( "map_wants_save_disable 1" )   
   
   local foundLevel = false
   
   foreach (index, level in ElevatorMotifs)
   {
      if (level.map == GetMapName() && ("speed" in level) )
      {
         printl( "Starting elevator " + self.GetName() + " with speed " + level.speed )
         EntFire(self.GetName(),"SetSpeedReal",level.speed,0.0)
         foundLevel = true
      }
   }
   
   if (foundLevel == false)
   {
      printl( "Using default elevator speed 300" )
      EntFire(self.GetName(),"SetSpeedReal","300",0.0)
   }
}

function ReadyForTransition()
{
   // see if we need to teleport to somewhere else or
   PrepareTeleport()
}

function FailSafeTransition()
{
   // fire whichever one of these we have.
   EntFire("@transition_from_map","Trigger","",0.0)
   EntFire("@transition_with_survey","Trigger","",0.0)
}

function PrepareTeleport()
{   
   local foundLevel = false
      
   if ( ::TransitionFired == 1 )
      return

   foreach (index, level in ElevatorMotifs)
   {
      if ( level.map == GetMapName() )
      {
         if ("motifs" in level)
         {
            printl( "Trying to connect to motif " + level.motifs[::MotifIndex] )

            if( level.motifs[::MotifIndex] == "transition" )
            {
               EntFire("@transition_with_survey","Trigger","",0.0)
               EntFire("@transition_from_map","Trigger","",0.0)
               return
            }
            else
            {
               EntFire(self.GetName(),"SetRemoteDestination",level.motifs[::MotifIndex],0.0)
               if( ::MotifIndex == 0 )
               {
                  EntFire("departure_elevator-elevator_1","Stop","",0.05)
               }
            }
            foundLevel = true
         }
         else
         {
            if( ::TransitionReady == 1 )
            {
               ::TransitionFired <- 1
               EntFire("@transition_from_map","Trigger","",0.0)
               EntFire("@transition_with_survey","Trigger","",0.0)
            }
            // just bail, we don't need to do anything weird here.
            return;
         }
      }
   }
   
   if (foundLevel == false)
   {
//      printl("**********************************")
//      printl("Level not found in elevator_motifs")
//      printl("**********************************")
      {
         ::TransitionFired <- 1
         EntFire("@transition_with_survey","Trigger","",0.0)
         EntFire("@transition_from_map","Trigger","",0.0)
         printl("Level not found in elevator_motifs defaulting to transition")
      }

      // just bail, we don't need to do anything weird here.
      return;
   }
   
   EntFire(self.GetName(),"Enable",0.0)   
   ::MotifIndex += 1
}

function OnPostSpawn()
{
   ::MotifIndex <- 0
   ::TransitionReady <- 0
   ::TransitionFired <- 0
}
[code]ElevatorMotifs <-
[
   { map = "sp_a1_intro1", speed = 200 },
   { map = "sp_a1_intro2", speed = 200 },   // this is what we do for continual elevator shafts
   { map = "sp_a1_intro3", speed = 200 },   // this is what we do for continual elevator shafts
   { map = "sp_a1_intro5", speed = 200 },   // this is what we do for continual elevator shafts
   { map = "sp_a1_intro6", speed = 200 },   // this is what we do for continual elevator shafts
   { map = "sp_a2_bridge_intro", speed = 200  },
//   { map = "sp_a2_laser_over_goo", speed = 300, motifs = [ "@shaft_stoppage_1", "transition", ] },
   { map = "sp_a2_column_blocker", speed = 200 },
   { map = "sp_a2_trust_fling", speed = 300 },

   { map = "sp_a2_intro", speed = 125 },   
   { map = "sp_a2_laser_intro", speed = 200 },
   { map = "sp_a2_laser_stairs", speed = 200 },
   { map = "sp_a2_dual_lasers", speed = 200 },
   { map = "sp_a2_catapult_intro", speed = 200 },
   { map = "sp_a2_pit_flings", speed = 200 },
//   { map = "sp_a2_fizzler_intro", speed = 200 },
   { map = "sp_a2_sphere_peek", speed = 200 },
   { map = "sp_a2_ricochet", speed = 200 },
   { map = "sp_a2_bridge_the_gap", speed = 200},
   { map = "sp_a2_turret_intro", speed = 200 },
   { map = "sp_a2_laser_relays", speed = 200 },
   { map = "sp_a2_turret_blocker", speed = 200 },
   { map = "sp_a2_laser_vs_turret", speed = 200 },
   { map = "sp_a2_pull_the_rug", speed = 200 },
   { map = "sp_a2_ring_around_turrets", speed = 200 },
   { map = "sp_a2_laser_chaining", speed = 200 },
   { map = "sp_a2_triple_laser", speed = 200 },
   { map = "sp_a3_jump_intro", speed = 120 },
   { map = "sp_a3_bomb_flings", speed = 120 },
   { map = "sp_a3_crazy_box", speed = 120 },
   { map = "sp_a3_speed_ramp", speed = 120 },
   { map = "sp_a3_speed_flings", speed = 120 },
   { map = "sp_a4_intro", speed = 200 },
   { map = "sp_a4_tb_intro", speed = 200 },
   { map = "sp_a4_tb_trust_drop", speed = 200 },
   { map = "sp_a4_tb_wall_button", speed = 200 },
   { map = "sp_a4_tb_polarity", speed = 200 },
   { map = "sp_a4_tb_catch", speed = 100 },
   { map = "sp_a4_stop_the_box", speed = 200 },
   { map = "sp_a4_laser_catapult", speed = 200 },
   { map = "sp_a4_speed_tb_catch", speed = 200 },
   { map = "sp_a4_jump_polarity", speed = 200 },
]

function StartMoving()
{
   SendToConsole( "map_wants_save_disable 1" )   
   
   local foundLevel = false
   
   foreach (index, level in ElevatorMotifs)
   {
      if (level.map == GetMapName() && ("speed" in level) )
      {
         printl( "Starting elevator " + self.GetName() + " with speed " + level.speed )
         EntFire(self.GetName(),"SetSpeedReal",level.speed,0.0)
         foundLevel = true
      }
   }
   
   if (foundLevel == false)
   {
      printl( "Using default elevator speed 300" )
      EntFire(self.GetName(),"SetSpeedReal","300",0.0)
   }
}

function ReadyForTransition()
{
   // see if we need to teleport to somewhere else or
   PrepareTeleport()
}

function FailSafeTransition()
{
   // fire whichever one of these we have.
   EntFire("@transition_from_map","Trigger","",0.0)
   EntFire("@transition_with_survey","Trigger","",0.0)
}

function PrepareTeleport()
{   
   local foundLevel = false
      
   if ( ::TransitionFired == 1 )
      return

   foreach (index, level in ElevatorMotifs)
   {
      if ( level.map == GetMapName() )
      {
         if ("motifs" in level)
         {
            printl( "Trying to connect to motif " + level.motifs[::MotifIndex] )

            if( level.motifs[::MotifIndex] == "transition" )
            {
               EntFire("@transition_with_survey","Trigger","",0.0)
               EntFire("@transition_from_map","Trigger","",0.0)
               return
            }
            else
            {
               EntFire(self.GetName(),"SetRemoteDestination",level.motifs[::MotifIndex],0.0)
               if( ::MotifIndex == 0 )
               {
                  EntFire("departure_elevator-elevator_1","Stop","",0.05)
               }
            }
            foundLevel = true
         }
         else
         {
            if( ::TransitionReady == 1 )
            {
               ::TransitionFired <- 1
               EntFire("@transition_from_map","Trigger","",0.0)
               EntFire("@transition_with_survey","Trigger","",0.0)
            }
            // just bail, we don't need to do anything weird here.
            return;
         }
      }
   }
   
   if (foundLevel == false)
   {
//      printl("**********************************")
//      printl("Level not found in elevator_motifs")
//      printl("**********************************")
      {
         ::TransitionFired <- 1
         EntFire("@transition_with_survey","Trigger","",0.0)
         EntFire("@transition_from_map","Trigger","",0.0)
         printl("Level not found in elevator_motifs defaulting to transition")
      }

      // just bail, we don't need to do anything weird here.
      return;
   }
   
   EntFire(self.GetName(),"Enable",0.0)   
   ::MotifIndex += 1
}

function OnPostSpawn()
{
   ::MotifIndex <- 0
   ::TransitionReady <- 0
   ::TransitionFired <- 0
}

The script the doesn't matter, you can set the speed as fast as you can and the map will not end until the lines are over I think this works for all elevators.
Anyway have you added a choreographed scene and have you set tHe "if actor is taking" wait actor to finish?

spongylover123 wrote:
The script the doesn't matter, you can set the speed as fast as you can and the map will not end until the lines are over I think this works for all elevators.
Anyway have you added a choreographed scene and have you set tHe "if actor is taking" wait actor to finish?

Yes I have set it to waift for actor, why?

ImageImageImage
Instance: Co-Op Tube Ride
Mr. P. Kiwi wrote:
spongylover123 wrote:
The script the doesn't matter, you can set the speed as fast as you can and the map will not end until the lines are over I think this works for all elevators.
Anyway have you added a choreographed scene and have you set tHe "if actor is taking" wait actor to finish?

Yes I have set it to waift for actor, why?

Everything will have to wait until the actor has finished

Yet the fade with the ending lines show up before it is done playing both files.

ImageImageImage
Instance: Co-Op Tube Ride

Were you using a wav or vcd

I used a .vcd file. But isn't the 'wait for actor to finish?' a command indicating when the .vcd will start? I don't think it has any effects on other entities

ImageImageImage
Instance: Co-Op Tube Ride