Ignore Layer Passability

● ARCHIVED · READ-ONLY
Started by Shaz 4 posts View original ↗
  1. Ignore Layer Passability 1.0

    Shaz


    Introduction

    You know how you have a really nice, crisp cliff edge that you can't walk over, then you go and put a pretty flower or a bit of grass or a weed on it, and suddenly you can walk right off the cliff onto the level below? This script fixes that.

    Features

    - Use terrain tags to tell the game to ignore THAT tile when determining passability.

    - Game then looks at the next layer down.

    Screenshots

    Game without script - you can walk on/off the cliffs where all these flowers are:

    Spoiler
    Passable1.png
    Changing terrain tag on flower tiles (notice only red/yellow flowers changed - white still set to 0)

    Spoiler
    Passable2.png
    Game with script - game looks at cliff passability, and ignores the red and yellow flowers. Cannot walk over edge of cliff here. White flowers still let you walk on/off.

    Spoiler
    Passable3.png
    How to Use

    Paste into new slot in Materials ABOVE other scripts

    Script

    Spoiler
    Code:
    class Game_Map
      #--------------------------------------------------------------------------
      # * Check Passage
      #     bit:  Inhibit passage check bit
      #--------------------------------------------------------------------------
      def check_passage(x, y, bit)
        all_tiles(x, y).each do |tile_id|
          flag = tileset.flags[tile_id]
          next if flag & 0x10 != 0            # [☆]: No effect on passage
          next if flag >> 12 == 1             # ignore passability on terrain 1
          return true  if flag & bit == 0     # [○] : Passable
          return false if flag & bit == bit   # [×] : Impassable
        end
        return false                          # Impassable
      end
    end
    Credit and Thanks

    - Shaz - but please don't add me to your game credits for a 1-line fix.

    - Thanks to Indrah for giving me the motivation to investigate this issue.

    Author's Notes

    This OVERWRITES the Game_Map.check_passage method. If you use any scripts that alias this method, they must be below this one. If you use any scripts that overwrite this method, just take that one line (flag >> 12) and paste it in at the same place.

    This script ignores passage settings on any tile where the terrain has been set to 1. To use a different terrain tag, just change the the 1 to a different number.
  2. Perfect, just what I need for when the grass reaches the edges of the cliff!
  3. Never knew that was the reason why some people were having strange passability issues that looked like it should be working correctly.
  4. Yep, if there's something on the top layer and it's passable, then the tile is passable, without considering what's underneath. That goes back to the days of XP.

    And it's a pain to have to make that something on the top layer IMpassable just so you can decorate to the edge of cliffs.