Event stop without turning

● ARCHIVED · READ-ONLY
Started by Edenstudent 5 posts View original ↗
  1. Hello,

    I am looking for a way of causing an NPC event to stop moving on activation and talk to you, but not turn.
    As it has a custom move route, using set move route on it will cause it to reset and mess up the current position (usually it just gets stuck on a wall). It normally turns in it's custom route so direction fix would not work.
    I have this amazing script by Shaz (https://forums.rpgmakerweb.com/index.php?threads/disable-npc-lock.17721/) however it causes the events to continue moving, while I'm looking for them to stop, but still not turn.

    If anyone knows of a script or some way to achieve this without one, I would be greatly appreciative.
    Thank you very much.
  2. You need to set Direction to fixed on the event page and then you'll just set the turning explicitly via the custom move route.
  3. Try this (not tested). Note, this overwrites the Game_Event.lock method, so if you are using the other script, put this one above it in the list.

    Add <noturn> as a comment rather than <nolock> - if you have both scripts, best not to use both tags on the same event page.

    Code:
    class Game_Event
      alias shaz_noturn_clear_page_settings clear_page_settings
      alias shaz_noturn_setup_page_settings setup_page_settings
     
      #--------------------------------------------------------------------------
      # * Clear Event Page Settings
      #--------------------------------------------------------------------------
      def clear_page_settings
        shaz_noturn_clear_page_settings
        @noturn = false
      end
      #--------------------------------------------------------------------------
      # * Set Up Event Page Settings
      #--------------------------------------------------------------------------
      def setup_page_settings
        shaz_noturn_setup_page_settings
        list_index = 0
        while list_index < @list.size && [108,408].include?(@list[list_index].code)
          if @list[list_index].parameters[0] =~ /<noturn>/i
            @noturn = true
            break
          end
          list_index += 1
        end
      end
      #--------------------------------------------------------------------------
      # * Lock (Processing in Which Executing Events Stop)
      #--------------------------------------------------------------------------
      def lock
        unless @locked
          @prelock_direction = @direction
          turn_toward_player unless @noturn
          @locked = true
        end
      end
    end
  4. Poryg said:
    You need to set Direction to fixed on the event page and then you'll just set the turning explicitly via the custom move route.

    Ah, thank you; yes it does work if I set direction fix on after each turn and off right before, though it is a bit tedious.
  5. Shaz said:
    Try this (not tested). Note, this overwrites the Game_Event.lock method, so if you are using the other script, put this one above it in the list.

    Add <noturn> as a comment rather than <nolock> - if you have both scripts, best not to use both tags on the same event page.

    Code:
    class Game_Event
      alias shaz_noturn_clear_page_settings clear_page_settings
      alias shaz_noturn_setup_page_settings setup_page_settings
     
      #--------------------------------------------------------------------------
      # * Clear Event Page Settings
      #--------------------------------------------------------------------------
      def clear_page_settings
        shaz_noturn_clear_page_settings
        @noturn = false
      end
      #--------------------------------------------------------------------------
      # * Set Up Event Page Settings
      #--------------------------------------------------------------------------
      def setup_page_settings
        shaz_noturn_setup_page_settings
        list_index = 0
        while list_index < @list.size && [108,408].include?(@list[list_index].code)
          if @list[list_index].parameters[0] =~ /<noturn>/i
            @noturn = true
            break
          end
          list_index += 1
        end
      end
      #--------------------------------------------------------------------------
      # * Lock (Processing in Which Executing Events Stop)
      #--------------------------------------------------------------------------
      def lock
        unless @locked
          @prelock_direction = @direction
          turn_toward_player unless @noturn
          @locked = true
        end
      end
    end




    Ah, thank you so much Shaz; the script works perfectly!