Hey,
erst einmal sorry für die verzögerte Antwort. Ich schiebe gerade zuviele Überstunden. Habe mir das Ganze auch jetzt nur während der Arbeit angeschaut und konnte es daher nicht so genau betrachten.
Es liegt wohl an folgender stelle:
Script Area: CTB by Charlie - Damage and Colors
Methode: Update (ab Zeile 250+)
betroffener Code (ab Zeile ~410):
Code:
      # Support for blinking targets
      if @battler != nil and @battler.targeted
        @_target_blink_count = (@_target_blink_count + 1) % 12
        if @_target_blink_count < 6
          alpha = (6 - @_target_blink_count) * 24
        else
          alpha = (@_target_blink_count - 6) * 24
        end
        self.color.set(255, 255, 255, alpha)        
      else
        self.color.set(0, 0, 0, 0) 
      end
      
      if @_blink
        @_blink_count = (@_blink_count + 1) % 32
        if @_blink_count < 16
          alpha = (16 - @_blink_count) * 6
        else
          alpha = (@_blink_count - 16) * 6
        end
        self.color.set(255, 255, 255, alpha)
      end
      @@_animations.clear
Hier wird für das CTB das Blinkverhalten der Sprites bestimmt. Der Shadow-Sprite greift mit seinem Update auch darauf zu und wird an dieser Stelle wieder sichtbar gemacht. Als "Hotfix", da ich leider keine Zeit gerade habe, würde ich dir folgende Lösung vorschlagen:
Füge die rote Zeile über dem Code ein:
Code:
      return if($shadow_char)
      
      # Support for blinking targets
      if @battler != nil and @battler.targeted
        @_target_blink_count = (@_target_blink_count + 1) % 12
        if @_target_blink_count < 6
          alpha = (6 - @_target_blink_count) * 24
        else
          alpha = (@_target_blink_count - 6) * 24
        end
        self.color.set(255, 255, 255, alpha)        
      else
        self.color.set(0, 0, 0, 0) 
      end
      
      if @_blink
        @_blink_count = (@_blink_count + 1) % 32
        if @_blink_count < 16
          alpha = (16 - @_blink_count) * 6
        else
          alpha = (@_blink_count - 16) * 6
        end
        self.color.set(255, 255, 255, alpha)
      end
      @@_animations.clear
Im Schattenskript fügst du folgendes unter der Update-Methode in der Shadow_Sprite Klasse ein (ca. Zeile 220):
Code:
  def update
    if @character.transparent or @character.opacity <= SHADOWS_OPACITY_THRESHOLD
      self.visible = false
      return
    end
    @deltax=(@source.real_x-@character.real_x)/4
    @deltay= (@source.real_y-@character.real_y)/4
    @distance = (((@deltax ** 2) + (@deltay ** 2))** 0.5)
    if @distancemax !=0 and @distance>@distancemax
      self.visible = false
      return
    end
    self.angle = 57.3*Math.atan2(@deltax, @deltay )
    @angle_trigo= (self.angle+90) % 360
    if @anglemin !=0 or @anglemax !=0
      if (@angle_trigo<@anglemin or @angle_trigo>@anglemax) and \
          @anglemin<@anglemax
        self.visible = false
        return
      elsif (@angle_trigo<@anglemin and @angle_trigo>@anglemax) and \
             @anglemin>@anglemax
        self.visible = false
        return
      end     
    end
    super
    if @tile_id != @character.tile_id or
       @character_name != @character.character_name or
       @character_hue != @character.character_hue
       @tile_id = @character.tile_id
      @character_name = @character.character_name
      @character_hue = @character.character_hue
      if @tile_id >= 384
        self.bitmap = RPG::Cache.tile($game_map.tileset_name,
        @tile_id, @character.character_hue)
        self.src_rect.set(0, 0, 32, 32)
        self.ox = 16
        self.oy = 32
      else
        self.bitmap = RPG::Cache.character(@character.character_name,
          @character.character_hue)
        @cw = bitmap.width / 4
        @ch = bitmap.height / 4
        self.ox = @cw / 2
        self.oy = @ch
      end
    end
    self.visible = true
    self.x = @character.screen_x
    self.y = @character.screen_y-8
    self.z = @character.screen_z(@ch)-1
    if @character.animation_id != 0
      animation = $data_animations[@character.animation_id]
      animation(animation, true)
      @character.animation_id = 0
    end
    if @tile_id == 0
      sx = @character.pattern * @cw
      quarter = ((@angle_trigo/90+0.5).floor)%4
      # The quarter is the position of the event relative to the source.
      # Imagine the source is the o point (0,0). Trace the 2 lines
      # y=x and y=-x : you get something like a big X
      # On the right, quarter=0. Up, quarter = 1, and so on
      # Take the @character.direction row (2,4,6,8), and the quarter
      # column (0,1,2,3) (remember, it starts at 0), and you'll get
      # a number between 1 and 4. It correspond to the row of the charset
      # the shadow will be, and mirrored if negative.
      # Yes, it isn't obvious, but I didn't find any simple operation to
      # get those.
     magic = SHADOWS_DIRECTION_ARRAY[@character.direction][quarter]
      magic = -magic
      if magic < 0
        self.mirror = true
        magic = -magic
      else
        self.mirror = false
      end
      sy = (magic-1)*@ch
      self.src_rect.set(sx, sy, @cw, @ch)
    end
    # This is the formula of the opacity in function of the distance
    # ** 2 means square
    self.opacity = 1200/((@distance ** 2)/ 1000 + 6)
    # This is the formula of the size in function of the distance
    # The 0.75 is here so you have a size of 1:1 when next to the source.
    self.zoom_y=0.75 + @distance / 256 if SHADOW_GETS_LONGER
    
  end
  
  alias update_fix update
  def update
    $shadow_char = true
    update_fix
    $shadow_char = false
  end
  
end
Ich kann dir das Ganze bei Gelegenheit auch mal "schöner" lösen - aber da komme ich wohl erst im Dezember zu.

Hoffe es klappt, so wie es soll.

Viele liebe Grüße,
Linkey