• Our software update is now concluded. You will need to reset your password to log in. In order to do this, you will have to click "Log in" in the top right corner and then "Forgot your password?".
  • Welcome to PokéCommunity! Register now and join one of the best fan communities on the 'net to talk Pokémon and more! We are not affiliated with The Pokémon Company or Nintendo.

Bitmap Auto Hue

Zeak6464

Zeak #3205 - Discord
1,101
Posts
11
Years
  • This script allows you to change pokemon hues by using the .hue_change function
    Thanks to Vendily

    Code:
    #===============================================================================
    # * Bitmap Hue Pokémon - by Vendily / Zeak6464
    #===============================================================================
    def drawShadowPoke(bitmap,hue=nil)
      shadowhue=(hue ? hue : 0)
      bitmap.hue_change(shadowhue)
    end
    
    alias _shadow_pbLoadPokemonBitmapSpecies pbLoadPokemonBitmapSpecies
    if defined?(EBUISTYLE)
      def pbLoadPokemonBitmapSpecies(pokemon, species, back=false,scale=POKEMONSPRITESCALE)
        ret=_shadow_pbLoadPokemonBitmapSpecies(pokemon, species, back,scale)
        if ret
          hue=(MultipleForms.call("bitmapHue",pokemon))
          ret.prepareStrip
          for i in 0...ret.totalFrames
            drawShadowPoke(ret.alterBitmap(i),180) if (pokemon.isShadow? rescue false)
            drawShadowPoke(ret.alterBitmap(i),300) if (pokemon.isDeltap? rescue false) 
          end
          ret.compileStrip
        end
        return ret
      end
    else
        def pbLoadPokemonBitmapSpecies(pokemon, species, back=false)
          ret=_shadow_pbLoadPokemonBitmapSpecies(pokemon, species, back)
          if ret
            hue=(MultipleForms.call("bitmapHue",pokemon))
            animatedBitmap=ret
            copiedBitmap=animatedBitmap.copy
            animatedBitmap.dispose
            copiedBitmap.each {|bitmap|
              drawShadowPoke(bitmap,180) if (pokemon.isShadow? rescue false)
              drawShadowPoke(bitmap,300) if (pokemon.isDeltap? rescue false)
            }
            ret=copiedBitmap
          end
          return ret
        end
    end
    
    
    class PokemonIconSprite
        alias _shadow_pokemon= pokemon=
      def pokemon=(value)
        self._shadow_pokemon=value
        if pokemon
           bitmap.hue_change(180) if (pokemon.isShadow? rescue false)
           bitmap.hue_change(300) if (pokemon.isDeltap? rescue false)
        end
      end
    end
     
    Last edited:

    WolfPP

    Spriter/ Pixel Artist
    1,309
    Posts
    5
    Years
  • To make this code perfect, we just need to find a way to "fix/ make an upgrade" about Pokemon Following script...
    But nice code. Thanks for share!
     

    Zeak6464

    Zeak #3205 - Discord
    1,101
    Posts
    11
    Years
  • To make this code perfect, we just need to find a way to "fix/ make an upgrade" about Pokemon Following script...
    But nice code. Thanks for share!

    This goes into def change_sprite
    Code:
    if $Trainer.party[0].isShadow?
           @realEvents[i].character_hue=180
         end
     

    WolfPP

    Spriter/ Pixel Artist
    1,309
    Posts
    5
    Years
  • This goes into def change_sprite
    Code:
    if $Trainer.party[0].isShadow?
           @realEvents[i].character_hue=180
         end

    Yep, but we need to add inside `update` about Dependent Event, like we have to change the palette when your pokemon haves a status condition (burned, poisoned, etc):

    Code:
    About HUE script to make OW a shadow pokemon, we need put inside here:
          if $game_switches[Toggle_Following_Switch] && $Trainer.party[0] && $Trainer.party[0].hp>0
            case $Trainer.party[0].status
            when PBStatuses::BURN
              @sprites[i].tone.set(@sprites[i].tone.red+BURNTONE[0],@sprites[i].tone.green+BURNTONE[1],@sprites[i].tone.blue+BURNTONE[2],@sprites[i].tone.gray+BURNTONE[3])
            when PBStatuses::POISON
              @sprites[i].tone.set(@sprites[i].tone.red+POISONTONE[0],@sprites[i].tone.green+POISONTONE[1],@sprites[i].tone.blue+POISONTONE[2],@sprites[i].tone.gray+POISONTONE[3])
            when PBStatuses::PARALYSIS
              @sprites[i].tone.set(@sprites[i].tone.red+PARALYSISTONE[0],@sprites[i].tone.green+PARALYSISTONE[1],@sprites[i].tone.blue+PARALYSISTONE[2],@sprites[i].tone.gray+PARALYSISTONE[3])
            when PBStatuses::FROZEN
              @sprites[i].tone.set(@sprites[i].tone.red+FREEZETONE[0],@sprites[i].tone.green+FREEZETONE[1],@sprites[i].tone.blue+FREEZETONE[2],@sprites[i].tone.gray+FREEZETONE[3])
            when PBStatuses::SLEEP
              @sprites[i].tone.set(@sprites[i].tone.red+SLEEPTONE[0],@sprites[i].tone.green+SLEEPTONE[1],@sprites[i].tone.blue+SLEEPTONE[2],@sprites[i].tone.gray+SLEEPTONE[3])
            end
          end
     
    Last edited:

    Zeak6464

    Zeak #3205 - Discord
    1,101
    Posts
    11
    Years
  • Yep, but we need to add inside `update` about Dependent Event, like we have to change the palette when your pokemon haves a status condition (burned, poisoned, etc):

    We did it yay !

    Code:
    class DependentEventSprites
      attr_accessor :sprites
      
      def refresh
        $PokemonTemp.dependentEvents.refresh_sprite(false)
        for sprite in @sprites
          sprite.dispose
        end
        @sprites.clear
        $PokemonTemp.dependentEvents.eachEvent {|event,data|
           if data[0][email protected]_id # Check original map
             #@map.events[data[1]].erase
           end
           if data[2][email protected]_id # Check current map
             spr = Sprite_Character.new(@viewport,event)
             @sprites.push(spr)
           end
        }
      end
    
      def update
        refresh
        if $PokemonTemp.dependentEvents.lastUpdate!=@lastUpdate
          refresh
          @lastUpdate=$PokemonTemp.dependentEvents.lastUpdate
        end
        for sprite in @sprites
          sprite.update
        end
        for i in [email protected]
          pbDayNightTint(@sprites[i])
          if $game_switches[Toggle_Following_Switch] && APPLYSTATUSTONES && $Trainer.party[0] && $Trainer.party[0].hp>0
            case $Trainer.party[0].status
            when PBStatuses::BURN
              @sprites[i].tone.set(@sprites[i].tone.red+BURNTONE[0],@sprites[i].tone.green+BURNTONE[1],@sprites[i].tone.blue+BURNTONE[2],@sprites[i].tone.gray+BURNTONE[3])
            when PBStatuses::POISON
              @sprites[i].tone.set(@sprites[i].tone.red+POISONTONE[0],@sprites[i].tone.green+POISONTONE[1],@sprites[i].tone.blue+POISONTONE[2],@sprites[i].tone.gray+POISONTONE[3])
            when PBStatuses::PARALYSIS
              @sprites[i].tone.set(@sprites[i].tone.red+PARALYSISTONE[0],@sprites[i].tone.green+PARALYSISTONE[1],@sprites[i].tone.blue+PARALYSISTONE[2],@sprites[i].tone.gray+PARALYSISTONE[3])
            when PBStatuses::FROZEN
              @sprites[i].tone.set(@sprites[i].tone.red+FREEZETONE[0],@sprites[i].tone.green+FREEZETONE[1],@sprites[i].tone.blue+FREEZETONE[2],@sprites[i].tone.gray+FREEZETONE[3])
            when PBStatuses::SLEEP
              @sprites[i].tone.set(@sprites[i].tone.red+SLEEPTONE[0],@sprites[i].tone.green+SLEEPTONE[1],@sprites[i].tone.blue+SLEEPTONE[2],@sprites[i].tone.gray+SLEEPTONE[3])
            end
          end
        end
      end
    end
     

    WolfPP

    Spriter/ Pixel Artist
    1,309
    Posts
    5
    Years
  • Edit to " $PokemonTemp.dependentEvents.refresh_sprite(false) if $game_switches[Toggle_Following_Switch] && Trainer.party[0].isShadow?", is better imo:
    Spoiler:
     
    Last edited:
    Back
    Top