Envision, Create, Share

Welcome to HBGames, a leading amateur game development forum and Discord server. All are welcome, and amongst our ranks you will find experts in their field from all aspects of video game design and development.

[XP/VX] Gradient Font Color

Gradient Font Color
Original code by poccil, rewritten by Dargor
Version 1.0


Introduction

Some eye-candies for you today!
This script allows you to draw text with a gradient font color. By default, the gradient effect is on, but you can turn it off easily. Everything is explained in the script header!

Screenshots



Features
  • You can set 2 gradient colors
  • You can choose between 3 gradient styles. (Vertical, Horizontal and Diagonal)

Script

Code:
#==============================================================================

# ** Gradient Font Color

#------------------------------------------------------------------------------

#  Original code by poccil

#  Rewritten by Dargor, 2008

#  05/07/08

#  Version 1.0

#------------------------------------------------------------------------------

#  VERSION HISTORY:

#   - 1.0 (05/07/08), Initial release

#------------------------------------------------------------------------------

#  INSTRUCTIONS:

#   - Paste this above main

#   - Edit the font's gradient parameters in a window like that:

#        self.contents.font.gradient = true/false

#        self.contents.font.gradient_color1 = color

#        self.contents.font.gradient_color2 = color

#        self.contents.font.gradient_mode = mode 

#            Modes: (0 : Vertical, 1: Horizontal, 2: Diagonal)

#   - By default, the gradient effect is on. You can turn it off by

#     setting the @gradient flag in the Font class to false. (*line 47)

#------------------------------------------------------------------------------

#  NOTES:

#     This script is compatible with both XP and VX

#==============================================================================

 

#============================================================================== 

# ** Font

#==============================================================================

 

class Font

  #--------------------------------------------------------------------------

  # * Public Instance Variables

  #--------------------------------------------------------------------------

  attr_accessor :gradient

  attr_accessor :gradient_color1

  attr_accessor :gradient_color2

  attr_accessor :gradient_mode

  #--------------------------------------------------------------------------

  # * Alias Listing

  #--------------------------------------------------------------------------

  alias dargor_vx_font_gradient_initialize initialize

  #--------------------------------------------------------------------------

  # * Object Initialization

  #--------------------------------------------------------------------------

  def initialize(*args)

    dargor_vx_font_gradient_initialize(*args)

    @gradient = true

    @gradient_color1 = Color.new(255,255,255)

    @gradient_color2 = Color.new(255,255,255)

    @gradient_mode = 0

  end

end

 

#============================================================================== 

# ** Bitmap

#==============================================================================

 

class Bitmap

  #--------------------------------------------------------------------------

  # * Alias Listing

  #--------------------------------------------------------------------------

  alias dargor_vx_bitmap_gradient_draw_text draw_text

  #--------------------------------------------------------------------------

  # * Draw Text

  #--------------------------------------------------------------------------

  def draw_text(*args)

    # Original font color

    if self.font.gradient

      # Get text variables

      if args[0].is_a?(Rect)

        x = args[0].x

        y = args[0].y

        width = args[0].width

        height = args[0].height

        text = args[1]

        align = args[2].nil? ? 0 : args[2]

      else

        x = args[0]

        y = args[1]

        width = args[2]

        height = args[3]

        text = args[4]

        align = args[5].nil? ? 0 : args[5]

      end

      original_color = self.font.color

      alpha = original_color.alpha.to_f if alpha.nil?

      # Create temporary text bitmap

      text1=Bitmap.new(width, height)

      text2=Bitmap.new(width, height)

      text1.font.size = self.font.size

      text1.font.name = self.font.name

      text1.font.color = self.font.gradient_color2

      text_height = text1.text_size(text).height

      text_width = text1.text_size(text).width

      return if text_width < 1 or text_height < 1

      # Temporary remove the gradient effect

      self.font.gradient = false

      text1.dargor_vx_bitmap_gradient_draw_text(0, 0, width, height, text, align)

      self.font.gradient = true

      # Apply gradient effect

      case self.font.gradient_mode

      # Vertical Gradient

      when 0

        text_position = (height / 2) - (text_height / 2)

        for i in 0...height

          if i < text_position

            opacity = 0

          elsif i > text_position + text_height

            opacity = 255

          else

            ratio = ((i - text_position) * 1.0 / text_height)

            ratio -=(0.5 - ratio) * 0.5

            opacity = ratio * 255.0

            opacity = 255.0 if opacity > 255.0

            opacity = 0.0 if opacity < 0.0

          end

          text2.blt(0, i, text1, Rect.new(0,i,width,1), opacity)

        end

      # Horizontal Gradient

      when 1

        text_position = (width / 2) - (text_width / 2)

        for i in 0...width

          if i < text_position

            opacity = 0

          elsif i > text_position + text_width

            opacity = 255

          else

            ratio = ((i - text_position) * 1.0 / text_width)

            ratio -= (0.5 - ratio) * 0.5

            opacity= ratio * 255

            opacity = 255.0 if opacity > 255.0

            opacity = 0.0 if opacity < 0.0

          end

          text2.blt(i, 0, text1, Rect.new(i,0,1,height), opacity)

        end

      # Diagonal Gradient

      when 2

        text_position = (width / 2) - (text_width / 2)

        for i in 0...width

          if i < text_position

            opacity = 0

          elsif i > text_position + text_width

            opacity = 255

          else

            ratio = ((i - text_position) * 1.0 / text_width)

            ratio -= (0.5 - ratio) * 0.5

            opacity = ratio * 255

            opacity = 255.0 if opacity > 255.0

            opacity = 0.0 if opacity < 0.0

          end

          text2.blt(i, 0, text1, Rect.new(i,0,1,height), opacity)

        end

        text_position = (height / 2) - (text_height / 2)

        for i in 0...height

          if i < text_position

            opacity = 0

          elsif i > text_position + text_height

            opacity = 255

          else

            ratio = ((i - text_position) * 1.0 / text_height)

            ratio -= (0.5 - ratio) * 0.5

            opacity = ratio * 255

            opacity = 255.0 if opacity > 255.0

            opacity = 0.0 if opacity < 0.0

          end

          text2.blt(0, i, text1, Rect.new(0,i,width,1), opacity)

        end

      end

      # Draw gradient text

      self.font.color = self.font.gradient_color1

      self.font.color.alpha = alpha

      # Temporary remove the gradient effect

      self.font.gradient = false

      dargor_vx_bitmap_gradient_draw_text(*args)

      # Temporary remove the gradient effect

      self.font.gradient = true

      self.font.color = original_color

      self.font.color.alpha = alpha

      self.blt(x, y, text2, text2.rect, alpha)

      # Dispose gradient text bitmap

      text1.dispose

      text2.dispose

    else

      # The usual

      dargor_vx_bitmap_gradient_draw_text(*args)

    end

  end

end

Credits and Thanks

Credit poccil for the original code.

Hope you like it!
-Dargor
 
Code:
        text_position = (width / 2) - (width / 2)
this is 0. i think you mean
Code:
        text_position = (width / 2) - (text_width / 2)
 
Thanks, my text looks very cool now. It's pure black on the top, and dark red on the bottom, vertical. Though, I have a few compatibility problems with two of my scripts that change colour of certain text. One with this item/equipment text colouring script by Sandgolem:
Code:
#==========================================================================
# ** SG Artifact Colors
#==========================================================================
# sandgolem 
# Version 3
# 2.07.06
#==========================================================================

# Instructions: http://www.gamebaker.com/rmxp/scripts/artifact-colors.htm

#==========================================================================
#
# To check for updates or find more scripts, visit:
# http://www.gamebaker.com/rmxp/scripts/
#
# To use this script, copy it and insert it in a new section above "Main",
# under the default scripts, the SDK if you're using it, and anything else
# that rewrites these methods.
#
# Have problems? Official topic:
#   http://forums.gamebaker.com/showthread.php?t=5
#
#==========================================================================

begin
  SDK.log('SG Artifact Colors', 'sandgolem', 3, '2.07.06')
  if SDK.state('SG Artifact Colors') != true
    @sg_artifactcolors_disabled = true
  end
  rescue
end

if !@sg_artifactcolors_disabled
#--------------------------------------------------------------------------
  
class Window_Base
  def sg_artifact_colors(item,type = 0)
    if item == nil
      @sg_artifact_colored = nil
      return normal_color
    end
    if item.is_a?(RPG::Armor)
      sg_temp = 'guard_element_set'
    else
      sg_temp = 'element_set'
    end
    if eval("item.#{sg_temp}.include?(21)")
      @sg_artifact_colored = true
      return Color.new(0, 0, 210, 255)
    end
    if eval("item.#{sg_temp}.include?(22)")
      @sg_artifact_colored = true
      return Color.new(210, 0, 210, 255)
    end
    if eval("item.#{sg_temp}.include?(23)")
      @sg_artifact_colored = true
      return Color.new(210, 220, 0, 255)
    end    
    if eval("item.#{sg_temp}.include?(24)")
      @sg_artifact_colored = true
      return Color.new(50, 255, 210, 255)
    end
    # Edit/copy the ones above and paste them before this line
    @sg_artifact_colored = nil
    if type == 0
      return normal_color
    else
      return disabled_color
    end
  end

  alias sg_artifact_drawitemname draw_item_name  
  def draw_item_name(item, x, y)
    sg_artifact_drawitemname(item, x, y)
    self.contents.font.color = sg_artifact_colors(item)
    if @sg_artifact_colored != nil
      self.contents.draw_text(x + 28, y, 212, 32, item.name)
    end
  end 
end

class Window_ShopBuy < Window_Selectable
  alias sg_artifact_drawitem draw_item
  def draw_item(index)
    sg_artifact_drawitem(index)
    self.contents.font.color = sg_artifact_colors(@data[index])
    if @sg_artifact_colored != nil
      self.contents.draw_text(32,index * 32, 212, 32, @data[index].name, 0)
    end
  end
end

class Window_ShopSell < Window_Selectable
  alias sg_artifact_drawitem draw_item
  def draw_item(index)
    sg_artifact_drawitem(index)
    self.contents.font.color = sg_artifact_colors(@data[index])
    if @sg_artifact_colored != nil
      x = 4 + index % 2 * (288 + 32)
      y = index / 2 * 32
      self.contents.draw_text(x + 28, y, 212, 32, @data[index].name)
    end
  end
end

class Window_EquipItem < Window_Selectable
  alias sg_artifact_drawitem draw_item
  def draw_item(index)
    sg_artifact_drawitem(index)
    self.contents.font.color = sg_artifact_colors(@data[index])
    if @sg_artifact_colored != nil
      x = 4 + index % 2 * (288 + 32)
      y = index / 2 * 32
      self.contents.draw_text(x + 28, y, 212, 32, @data[index].name)
    end
  end 
end  

class Window_Item < Window_Selectable
  alias sg_artifact_drawitem draw_item
  def draw_item(index)
    sg_artifact_drawitem(index)
    self.contents.font.color = sg_artifact_colors(@data[index])
    if @sg_artifact_colored != nil
      x = 4 + index % 2 * (288 + 32)
      y = index / 2 * 32
      self.contents.draw_text(x + 28, y, 212, 32, @data[index].name)
    end
  end   
end  

#--------------------------------------------------------------------------
end
not changing the text colour when it is element tagged with the right element, and another compatibility problem with one of my own scripts, it is a gameover menu, and it changes the text color of the gameover menu text for the "load" option when disabled, but it stays the same text colour:
Code:
#=============================================================================== 
# Game Over Menu Script V1.0                          ~By Diablosbud~     
#-------------------------------------------------------------------------------
#    Make your Gameover screen easier to use, and cooler with this script I made
#  for Command_Rotate. This script allows the player, on Gameover to choose if
#  they would like to "Load Game" or "Exit Game". A special feature has been added 
#  to the "Exit Game" choice, now you can either exit to the titlescreen or 
#  shutdown the game  (This is an edit of LordSmith's Gameover Menu re-made with
#  Command_Rotate to make it much cooler). Many features about this are customizable
#  too, such as font, font size, disabled item colour, etc.
#
#  Requirements:
#  -Command_Rotate script
#  -This script
#
#  Compatibility:
#  -I am unsure yet if this script is compatible with the SDK
#  
#  Credit
#  -Diablosbud
#  -KHMP
#  -LordSmith
#===============================================================================

#=========================================================
# Command_Rotate
#---------------------------------------------------------
#
# Created by LordSith
# email: lordsith@globetrotter.net
# Version: 1.1
# Date: 2007-06-08 
#---------------------------------------------------------
#
#=========================================================

#==============================================================================
# ** Sprite_Text
#------------------------------------------------------------------------------
#  This class draws text on the screen without the need of a window.
#==============================================================================

class Sprite_Text
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_accessor :sprite,  # The sprite used to draw.
                :vx,      # The velocity in the x direction.
                :vy       # The velocity in the y direction.
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize(text = 'nil', size = 50, font = 'Times New Roman', disabled = false,
                 disabledcolor = Color.new(255, 255, 255, 108),
                 vx = 0, vy = 0)
    
    # Turn the text into a string even if it already is a string.
    text = text.to_s
    
    # Create the sprite that will allow drawing.
    @sprite = Sprite.new
    @sprite.bitmap = Bitmap.new(1,1)
    
    # Initialize the sprite's bitmap's font properties.
    @sprite.bitmap.font.name = font
    @sprite.bitmap.font.size = size
    
    # Find out the size of the text so the sprite doesn't waste empty space.
    lx = @sprite.bitmap.text_size(text).width 
    ly = @sprite.bitmap.text_size(text).height 
    
    # Initialize the velocity vector
    @vx, @vy = vx, vy
    
    # The offset of the shadow for the text.
    shadow = 1
    
    # Reinitialize the bitmap with the proper size.
    @sprite.bitmap = Bitmap.new(lx + shadow, ly + shadow)

    # Make the z outstanding.
    @sprite.z = 5000
    @sprite.x = @x = 320.0
    @sprite.y = @y = 240.0
    
    # Draw the shadow first.
    @sprite.bitmap.font.color = Color.new(0,0,0,255)
    @sprite.bitmap.draw_text(Rect.new(shadow, shadow, lx + shadow,ly + shadow), 
      text, 0)
    
    # If the sprite is disabled change the text color appropriately.
    @sprite.bitmap.font.color = disabled ? disabledcolor : 
      Color.new(255,255,255,255) # White if not disabled.
    
    # Draw the text onto the bitmap finally.
    @sprite.bitmap.draw_text(Rect.new(0, 0, lx, ly), text)
  end
  #--------------------------------------------------------------------------
  # * Defining X, Y
  #--------------------------------------------------------------------------
  def xy(x, y)
    @x = x
    @y = y
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    angle = Math.atan2(@vx,@vy)
    
    vx = 2 * Math.sin(angle)
    vy = 2 * Math.cos(angle)
    
    @x += vx
    @y += vy
    
    @sprite.x = @x
    @sprite.y = @y
    @sprite.opacity -= 4
    
    if @x > 640 or @x < 0 or @y > 480 or @y < 0 or @sprite.opacity <= 0
      @sprite.bitmap.dispose unless @sprite.bitmap.disposed?
      @sprite.dispose unless @sprite.disposed?
      return true
    end
    
    return false
  end
  #--------------------------------------------------------------------------
  # * Disposal
  #--------------------------------------------------------------------------
  def dispose
    @sprite.bitmap.dispose unless @sprite.bitmap.disposed?
    @sprite.dispose unless @sprite.disposed?
  end
end

def coords(x=0,y="")
  if y.is_a?(String)
    if x==0
      x=$game_player.screen_x
      y=$game_player.screen_y
    else
      y=$game_map.events[x].screen_y
      x=$game_map.events[x].screen_x
    end
    return [x,y]
  elsif x.is_a?(String)
    if y == 0
      x = $game_player.screen_x
      y = $game_player.screen_y
    else
      x = $game_map.events[y].screen_x
      y = $game_map.events[y].screen_y
    end
    return [x,y]
  end
  return [x,y]     
end

def angle(x1,y1,x2,y2)
  return 180*Math.atan2(x2-x1,y2-y1)/Math::PI
end
 
def ecart(id1,id2=0,y1="",y2="")
  x1=coords(id1,y1).at(0)
  y1=coords(id1,y1).at(1)
  x2=coords(id2,y2).at(0)
  y2=coords(id2,y2).at(1)
  return ((x1-x2)**2 + (y1-y2)**2)**0.5
end

#==============================================================================
# ** Command_Rotate
#------------------------------------------------------------------------------
#  This class presents options in circuitous manner.
#==============================================================================

class Command_Rotate
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_accessor :index
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize(choices, x = 400, y = 240, ray = 200, choices0 = 0,
                 size = 50, font = 'Times New Roman', disabled_items = nil,
                 disabledcolor = Color.new(255, 255, 255, 108))
    # By default visible.
    @visible = true
    
    @text_sprites = []
    @positions = []
    @options = choices
    @disabledcolor = disabledcolor
    @ray = ray
    @angle = 0
    @disabled_items = disabled_items
    @x, @y = coords(x, y)
    n = 0
    
    for choice in choices
      # Don't check for disabled items if it's nil.
      if !disabled_items.nil? && disabled_items.include?(n)
        text_sprite = Sprite_Text.new(choice, size, font, true, @disabledcolor)  
      else
        text_sprite = Sprite_Text.new(choice, size, font)
      end
      
      text_sprite.sprite.ox = text_sprite.sprite.bitmap.width / 2
      text_sprite.sprite.oy = text_sprite.sprite.bitmap.height / 2
      
      teta = n * 360 / choices.size
      @text_sprites << text_sprite
      @positions << teta
      @delay=0
      n+=1
    end
    
    @angle = (@options.size-choices0) * 2 * Math::PI / @options.size
    @selected = @options[choices0]
    @index_self = 0
    update 
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    @angle -= (@angle - (@options.size - @index_self) * 2 * Math::PI / 
      @options.size) / 8
    i = 0
    
    @text_sprites.each do |text_sprite|
      a = @positions.at(i) * Math::PI / 180
      text_sprite.sprite.x = 0
      text_sprite.sprite.x += @x
      text_sprite.sprite.y = @ray * Math.sin(a + @angle) / 2
      text_sprite.sprite.y+=@y
      text_sprite.sprite.zoom_x = text_sprite.sprite.zoom_y = (Math.cos(a + @angle) + 3) / 4
      text_sprite.sprite.opacity = (1 + Math.cos(a + @angle)) * 255 / 2
      i += 1
    end
   
    @delay-=1 
    if @delay<=0
      if Input.trigger?(Input::DOWN) or Input.trigger?(Input::RIGHT)
        @index_self += 1 
        @selected = @options[@index_self % @text_sprites.size]
        @index = @options.index(@selected)
      end
      if Input.trigger?(Input::UP) or Input.trigger?(Input::LEFT)
        @index_self -= 1        
        @selected = @options[@index_self % @text_sprites.size]
        @index = @options.index(@selected)
      end
      @delay=1
    end
  end
  #--------------------------------------------------------------------------
  # * Dispose
  #--------------------------------------------------------------------------
  def dispose
    @text_sprites.each {|sprite| sprite.dispose}
  end
  #--------------------------------------------------------------------------
  # * Visible
  #--------------------------------------------------------------------------
  def visible=(visible)
    return if @visible == visible
    @visible = visible
    @text_sprites[@options.index(@selected)].sprite.visible = @visible
  end
  #--------------------------------------------------------------------------
  # * Visible Accessor
  #--------------------------------------------------------------------------
  def visible
    return @visible
  end
end

#==============================================================================
# ** Scene_Gameover
#------------------------------------------------------------------------------
#  This class performs game over screen processing.
#==============================================================================

class Scene_Gameover
  #--------------------------------------------------------------------------
  # * Main Processing
  #--------------------------------------------------------------------------
  def main
    # By default we assume there are no save games.
    @continue_enabled = false
    
    # Loop through the possible save indexes and determine if a save exist.
    #for i in 0..3
      #if FileTest.exist?("Save#{i+1}.rxdata")
        #@continue_enabled = true
      #end
    #end
 @continue_enabled = (0...CPSL::Save_number).any? {|i|FileTest.exist?(CPSL.make_savename(i))}
    
    # The possible options to select.
    s1 = 'Load Game'
    s2 = 'Exit Game'
    
    # Creating a command rotate object.
    @commands1 = Command_Rotate.new([s1, s2], # Possible options
                          320,     # X Starting point
                          380,     # Y Starting point
                          100,     # Ray to rotate around?
                          0,       # Starting choice
                          40,      # Font size to use
                          'Times New Roman', # Font name to use
                          @continue_enabled ? nil : [0], # Disabled items array.
                          Color.new(255, 0, 0, 108)) # Color of disabled items
    
    # Change the strings to fit the new window.
    s1 = 'To Titlescreen'
    s2 = 'Shutdown'
    
    # Creating a command rotate object.
    @commands2 = Command_Rotate.new([s1, s2], # Possible options
                          320,     # X Starting point
                          380,     # Y Starting point
                          100,     # Ray to rotate around?
                          0,       # Starting choice
                          40,      # Font size to use
                          'Times New Roman') # Font name to use
    @commands2.visible = false
    
    # Make game over graphic
    @sprite = Sprite.new
    @sprite.bitmap = RPG::Cache.gameover($data_system.gameover_name)    
    # Play game over ME
    $game_system.me_play($data_system.gameover_me)    
    # Execute transition
    Graphics.transition
    # Main loop
    loop do
      # Update game screen
      Graphics.update
      # Update input information
      Input.update
      # Frame update
      update
      # Abort loop if screen is changed
      if $scene != self
        break
      end
    end
    
    # Prepare for transition
    Graphics.freeze
    
    # Dispose of Command_Rotate
    @commands1.dispose
    @commands2.dispose
    
    # Dispose of title graphic
    @sprite.bitmap.dispose unless @sprite.bitmap.disposed?
    @sprite.dispose unless @sprite.disposed?
  end
  #--------------------------------------------------------------------------
  # Frame Update
  #--------------------------------------------------------------------------
  def update
    # Update Command_Rotate only if it's visible.
    @commands1.update if @commands1.visible
    @commands2.update if @commands2.visible
    
    # If the initial Command_Rotate is visible.
    if @commands1.visible
      # If C button was pressed
      if Input.trigger?(Input::C)
        # Branch by command window cursor position
        case @commands1.index
        when 0  # Load game
          command_continue
        when 1  # Exit Game
          command_exit
        end
      end
    else
      # If the B button was pressed, go back.
      if Input.trigger?(Input::B)
        @commands1.visible = true
        @commands2.visible = false
      end
      
      # If C button was pressed
      if Input.trigger?(Input::C)
        # Branch by command window cursor position
        case @commands2.index
        when 0  # Load game
          command_to_title
        when 1  # Exit Game
          command_shutdown
        end
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Command: Continue
  #--------------------------------------------------------------------------
  def command_continue
    # If continue is disabled
    unless @continue_enabled
      # Play buzzer SE
      $game_system.se_play($data_system.buzzer_se)
      return
    end
    # Play decision SE
    $game_system.se_play($data_system.decision_se)
    # Switch to load screen
    $scene = Scene_Loadslot.new
  end
  #--------------------------------------------------------------------------
  # Command: Exit
  #--------------------------------------------------------------------------
  def command_exit
    # Play decision SE
    $game_system.se_play($data_system.decision_se)
    # Alter the viewing of what windows.
    @commands1.visible = false
    @commands2.visible = true
  end
  #--------------------------------------------------------------------------
  # Command: To Titlescreen
  #--------------------------------------------------------------------------
  def command_to_title
    # Play decision SE
    $game_system.se_play($data_system.decision_se)
    # Fade out BGM, BGS, and ME
    Audio.bgm_fade(800)
    Audio.bgs_fade(800)
    Audio.me_fade(800)
    # Shutdown
    $scene = Scene_GYouSure.new
  end  
  #--------------------------------------------------------------------------
  # Command: Shutdown
  #--------------------------------------------------------------------------
  def command_shutdown
    # Play decision SE
    $game_system.se_play($data_system.decision_se)
    # Fade out BGM, BGS, and ME
    Audio.bgm_fade(800)
    Audio.bgs_fade(800)
    Audio.me_fade(800)
    # Shutdown
    $scene =  Scene_GYouSure2.new

  end
end

Could you please help me fix these few small compatibility issues, of not changing certain text colours?
 

Thank you for viewing

HBGames is a leading amateur video game development forum and Discord server open to all ability levels. Feel free to have a nosey around!

Discord

Join our growing and active Discord server to discuss all aspects of game making in a relaxed environment. Join Us

Content

  • Our Games
  • Games in Development
  • Emoji by Twemoji.
    Top