- Pokémon Essentials Version
- v20.1 ➖
Script to make
ripples a property of terrain tags separate from shows_reflections, for reflective floors.Code
Paste as a new script section above Main, or download as a Plugin here.
			
				Ruby:
			
		
		
		module GameData
  class TerrainTag
    attr_reader :ripples
  
    alias oldinitialize initialize
    def initialize(hash)
      oldinitialize(hash)
      @ripples           = hash[:ripples]            || true
    end
  
  end
end
  
class Sprite_Reflection
  def update
    return if disposed?
    shouldShow = @rsprite.visible
    if !shouldShow
      # Just-in-time disposal of sprite
      if @sprite
        @sprite.dispose
        @sprite = nil
      end
      return
    end
    # Just-in-time creation of sprite
    @sprite = Sprite.new(@viewport) if !@sprite
    if @sprite
      x = @rsprite.x - @rsprite.ox * TilemapRenderer::ZOOM_X
      y = @rsprite.y - @rsprite.oy * TilemapRenderer::ZOOM_Y
      y -= Game_Map::TILE_HEIGHT * TilemapRenderer::ZOOM_Y if @rsprite.character.character_name[/offset/i]
      @height = $PokemonGlobal.bridge if !@fixedheight
      y += @height * TilemapRenderer::ZOOM_Y * Game_Map::TILE_HEIGHT / 2
      width  = @rsprite.src_rect.width
      height = @rsprite.src_rect.height
      @sprite.x        = x + (width / 2) * TilemapRenderer::ZOOM_X
      @sprite.y        = y + (height + (height / 2)) * TilemapRenderer::ZOOM_Y
      @sprite.ox       = width / 2
      @sprite.oy       = (height / 2) - 2   # Hard-coded 2 pixel shift up
      @sprite.oy       -= @rsprite.character.bob_height * 2
      @sprite.z        = -50   # Still water is -100, map is 0 and above
      @sprite.z        += 1 if @event == $game_player
      @sprite.zoom_x   = @rsprite.zoom_x
      @sprite.zoom_y   = @rsprite.zoom_y
      frame = (Graphics.frame_count % 40) / 10
      ripples = @event.terrain_tag.ripples if @event
      @sprite.zoom_x   *= [1.0, 0.95, 1.0, 1.05][frame] if ripples
      @sprite.angle    = 180.0
      @sprite.mirror   = true
      @sprite.bitmap   = @rsprite.bitmap
      @sprite.tone     = @rsprite.tone
      if @height > 0
        @sprite.color   = Color.new(48, 96, 160, 255)   # Dark still water
        @sprite.opacity = @rsprite.opacity
        @sprite.visible = !Settings::TIME_SHADING   # Can't time-tone a colored sprite
      else
        @sprite.color   = Color.new(224, 224, 224, 96)
        @sprite.opacity = @rsprite.opacity * 3 / 4
        @sprite.visible = true
      end
      @sprite.src_rect = @rsprite.src_rect
    end
  end
endThis script does some rewriting in the Sprite_Reflection class - if you're concerned about any incompatibilities, you can rewrite it directly yourself, it's pretty simple. Just replace this line:
			
				Ruby:
			
		
		
		@sprite.zoom_x   *= [1.0, 0.95, 1.0, 1.05][frame]
			
				Ruby:
			
		
		
		      ripples = @event.terrain_tag.ripples if @event
      @sprite.zoom_x   *= [1.0, 0.95, 1.0, 1.05][frame] if ripplesUsing this script
Just create a new terrain tag in the script section TerrainTag, and set shows_reflections to true and ripples to false. (ripples defaults to true, so you don't have to worry about changing the existing water tags)- Credits
- Credit to TechSkylander1518, please!
 
	







