It is currently Mon May 21, 2012 1:32 am



Welcome
Welcome to icugigasoft

You are currently viewing our boards as a guest, which gives you limited access to view most discussions and access our other features. By joining our free community, you will have access to post topics, communicate privately with other members (PM), respond to polls, upload content, and access many other special features. In addition, registered members also see less advertisements. Registration is fast, simple, and absolutely free, so please, join our community today!





 Page 1 of 1 [ 2 posts ] 
Author Message
 Post subject: Chrono Cross Color Field System 1.1
PostPosted: Fri May 06, 2011 11:23 pm 
Senior Member
Senior Member
User avatar

Joined: Sun Nov 01, 2009 7:38 pm
Posts: 4321
Chrono Cross Color Field
version 1.1
by U Division of ICU Gigasoft


Introduction & Features
-faithfully recreates the skill Color system from the Squaresoft game Chrono Cross
-Each skill is assigned a color (or none at all) through elements, and whenver a skill is used it's "color" is added to the battle's color field. The more of a certain color there is, the more powerful the skill of that color becomes. The field can hold up to a certain number of colors at a time
-An extra bonus (or penalty) if the color field is completely one color
-Anti-colors that negatively affect others

v1.1
-Skills that add 2 colors
-Skills that add 2 anti-colors
-Skills that reset the field to blank
-Skills that set the field to 1 color
-Skills that set the field to the anti-color

Screenshots
Image

Demo
Color Field Icons
Demo VX v1.1
Demo XP v1.1
Demo XP v1.0

v1.1 Script VX
 
#-------------------------------------------------------------------------------
#  Chrono Cross Color Field
#  version 1.1
#  by U-Division of ICU Gigasoft
#
#  What is does:
#  -faithfully recreates the skill Color system from the Squaresoft
#   game Chrono Cross
#  -Each skill is assigned a color (or none at all) through elements,
#   and whenver a skill is used it's "color" is added to the battle's
#   color field. The more of a certain color there is, the more
#   powerful the skill of that color becomes.  The field can hold up
#   to a certain number of colors at a time
#  -An extra bonus (or penalty) if the color field is completely one color
#
#  Installation
#  -You need a CF_X.png where X is the ID of the color for every color in the
#   icons folder
#  -Put script above main
#-------------------------------------------------------------------------------
 
#-------------------------------------------------------------------------------
#  Color Field Battel Modifier Configuartion
#-------------------------------------------------------------------------------
 
CF_COLOR_BONUS = 0.10
#Rate of increase of power for each color the battler's
#currently used skill on field. Set to 0 to disable.
 
CF_ANTI_PENALTY = 0.10
#Rate of decrease of power for each anti-color of the battler's
#currently used skill's color on field. Set to 0 to disable.
 
CF_FULL_BONUS = 0.50
#The extra bonus given when the color of the battler's skill completely
#fills the field.
 
CF_FULL_PENALTY = 0.50
#The extra subtraction given when the anti-color of the battler's skill
#completely fills the field.
 
 
 
#-------------------------------------------------------------------------------
#  Color & Color Field Configuration
#-------------------------------------------------------------------------------
#
#Using the ELEMENT ID fill out the hash like this
#   CF_ELEM_COLORS = {
#   element_id => color_id,
#   element_id => color_id,
#   ...
#   }
CF_ELEM_COLORS = {
17 => 0,
18 => 1,
19 => 2,
20 => 3,
21 => 4,
22 => 5,
}
 
CF_FIELD_MAX = 6
#Set this to the number of colors, or however many colors you want to be
#remembered.
 
 
#-------------------------------------------------------------------------------
#  Anti Color Configuration
#-------------------------------------------------------------------------------
#
#Using the COLOR ID (as in not the element ID) fill out the hash like this
#   CF_ELEM_ANTI_COLORS = {
#   color_id => anti_color_id,
#   color_id => anti_color_id,
#   ...
#   }
CF_ELEM_ANTI_COLORS = {
0 => 1,
1 => 0,
2 => 3,
3 => 2,
4 => 5,
5 => 6,
}
 
#-------------------------------------------------------------------------------
#  Special Color Effects
#-------------------------------------------------------------------------------
#
# Using the ELEMENT ID fill out the hash like this
#   CF_ELEM_SFX = {
#   element_id => effect,
#   element_id=> effect,
#   ...
#   }
#
#   replace "effect" with one of the following
#  
#   1 : sets the entire field to the color of this skill
#  -1 : sets the entire field to the anti-color of this skill
#   2 : adds an extra color of the skill to the field
#  -2 : adds an extra anti-color of the skill to the field
#   0 : resets the color field to all blank
#
CF_ELEM_SFX = {
23 => -1,
24 => 1,
25 => 0,
26 => -2,
27 => 2,
}
 
 
module Kernel
  def CF_getColor(element_id)
    id = CF_ELEM_COLORS[element_id]
    id = -1 if id == nil
    return id
  end
 
  def CF_getColorFromSet(elementarray)
  for element_id in elementarray
    id = CF_ELEM_COLORS[element_id]
    id = -1 if id == nil
    return id if id != -1
  end
  return -1
  end
 
  def CF_hasColor?(element_id)
    return (getColor(element_id) != -1)
  end
 
  def CF_antiColor(color)
    return CF_ELEM_ANTI_COLORS[color] if CF_ELEM_ANTI_COLORS.has_key?(color)
    return -1
  end
 
  def CF_getSFXFromSet(elementarray)
    sfx_array = []
    for element_id in elementarray
      sfx_array.push(CF_ELEM_SFX[element_id]) if CF_ELEM_SFX.has_key?(element_id)
    end
    return sfx_array
    end
end
 
 
#-------------------------------------------------------------------------------
#  RPG::Skill
#  new methods:
#      color(color)      :returns the skills color
#      hasColor?         :returns whether or not the skill has a color
#-------------------------------------------------------------------------------
 
module RPG
  class Skill
   
    def color
      color_elems = []
      for e in element_set
        color_elems.push(e) if CF_ELEM_COLORS.include?(e)
      end
      color_elems.push(0) if color_elems.empty?
      return CF_getColor(color_elems[0])
    end
 
    def hasColor?
      return (color != -1)
    end
   
    def special_type_skill?
      effect_set = CF_getSFXFromSet(element_set)
      return effect_set.include?(-2) || effect_set.include?(-1) || effect_set.include?(0)
    end
   
    end
  end
 
#-------------------------------------------------------------------------------
#  Scene_Battle
#  new methods:
#      add_color(color)      :adds color to color field
#      refresh_color_field   :redraws the icons
#      reset_color_field     :resets color field
#      color_boost(color)    :calculates the damage modifier
#-------------------------------------------------------------------------------
 
class Scene_Battle
  attr_accessor :color_set
  attr_accessor :color_max
  attr_accessor :active_battler
 
alias :_orig_main :main
def main
  @color_set = []
  @color_max = CF_FIELD_MAX
  @color_icons = Window_ColorField.new(@color_set)
  _orig_main
  @color_icons.dispose
end
 
def add_color(color)
  if @color_set.size == @color_max
    @color_set.pop
  end
  @color_set.unshift(color)
end
 
def refresh_color_field
    @color_icons.refresh(@color_set)
end
 
def reset_color_field
  @color_set = []
  refresh_color_field
end
 
def set_color_field(new_color)
  for i in 0 ... @color_set.size
    @color_set[i] = new_color
    end
end
 
def color_boost(color)
  mod =  1.00
  count = 0
  anti_count = 0
  anti_color = CF_antiColor(color)
  return mod if @color_set == nil
   for color_field in @color_set
     mod += CF_COLOR_BONUS  if color_field == color
     mod -= CF_ANTI_PENALTY if color_field == anti_color
     count += 1 if color_field == color
     count -= 1 if color_field == anti_color
   end
  mod += CF_FULL_BONUS if count == @color_max
  mod -= CF_FULL_PENALTY if count == -@color_max
  mod = 0.01 if mod < 0.01
 return mod
end
 
end
 
#--------------------------------------------------------------------------
# Game_Battler
#---------------------------------------------------------------------------
class Game_Battler
 
#alias :elements_max_rate :elements_correct
alias :_orig_elements_max_rate :elements_max_rate
def elements_max_rate(element_set)
  weakest = _orig_elements_max_rate(element_set)
  if $scene.is_a?(Scene_Battle)
    color = CF_getColorFromSet(element_set)
    mod = $scene.color_boost(color)
    weakest = Integer(weakest*mod)
    skill_id = $scene.active_battler.action.skill_id
    skill = nil
    skill = $data_skills[skill_id] if skill_id > 0
      if skill != nil
        skill_color_field_fx(skill_id,color)
      end
    if skill != nil && skill.special_type_skill?
    $scene.add_color(CF_antiColor(color))
      else
    $scene.add_color(color) if color != -1
    end
    $scene.refresh_color_field
  end
  return weakest
end
 
def skill_color_field_fx(skill_id, color)
  elem_set = $data_skills[skill_id].element_set
  effect_set = CF_getSFXFromSet(elem_set)
  for cfx in effect_set
    cf_set(cfx,color)
  end
end
 
def cf_set(type, color)
  case type
  when 0
    $scene.reset_color_field
  when -1
    if color != -1
    $scene.set_color_field(CF_antiColor(color))
    end
  when 1
    if color != -1
    $scene.set_color_field(color)
    end
  when 2
    if color != -1
    $scene.add_color(color)
    end
  when -2
    if color != -1
    $scene.add_color(CF_antiColor(color))
    end
  end
 
end
 
end
 
#--------------------------------------------------------------------------
# Window_ColorField
#   Displays the Color icons
#   CF_WINDOW_X = The X Position of the window
#   CF_WINDOW_Y = The Y Position of the window
#--------------------------------------------------------------------------
 
class Window_ColorField < Window_Base
 
  CF_WINDOW_X = 0 #Default is 0
  CF_WINDOW_Y = 0 #Default is 0
 
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize(color_set)
    super(CF_WINDOW_X, CF_WINDOW_Y, 640, 64)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.opacity = 0
    self.z -= 10
    refresh(color_set)
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh(color_set)
    self.contents.clear
    return if color_set == nil
     count = 0
      for i in color_set
       color_image = "CF_" + i.to_s
       bitmap = Cache.picture(color_image)
       self.contents.blt(x + count*24, y + 4, bitmap, Rect.new(0, 0, 24, 24))
       count += 1
     end
  end
end
 
 

v1.1 Script XP
[spoiler=1.0]
 
#-------------------------------------------------------------------------------
#  Chrono Cross Color Field
#  version 1.1
#  by U-Division of ICU Gigasoft
#
#  What is does:
#  -faithfully recreates the skill Color system from the Squaresoft
#   game Chrono Cross
#  -Each skill is assigned a color (or none at all) through elements,
#   and whenver a skill is used it's "color" is added to the battle's
#   color field. The more of a certain color there is, the more
#   powerful the skill of that color becomes.  The field can hold up
#   to a certain number of colors at a time
#  -An extra bonus (or penalty) if the color field is completely one color
#
#  Installation
#  -You need a CF_X.png where X is the ID of the color for every color in the
#   icons folder
#  -Put script above main
#-------------------------------------------------------------------------------
 
#-------------------------------------------------------------------------------
#  Color Field Battel Modifier Configuartion
#-------------------------------------------------------------------------------
 
CF_COLOR_BONUS = 0.10
#Rate of increase of power for each color the battler's
#currently used skill on field. Set to 0 to disable.
 
CF_ANTI_PENALTY = 0.10
#Rate of decrease of power for each anti-color of the battler's
#currently used skill's color on field. Set to 0 to disable.
 
CF_FULL_BONUS = 0.50
#The extra bonus given when the color of the battler's skill completely
#fills the field.
 
CF_FULL_PENALTY = 0.50
#The extra subtraction given when the anti-color of the battler's skill
#completely fills the field.
 
 
 
#-------------------------------------------------------------------------------
#  Color & Color Field Configuration
#-------------------------------------------------------------------------------
#
#Using the ELEMENT ID fill out the hash like this
#   CF_ELEM_COLORS = {
#   element_id => color_id,
#   element_id => color_id,
#   ...
#   }
CF_ELEM_COLORS = {
17 => 0,
18 => 1,
19 => 2,
20 => 3,
21 => 4,
22 => 5,
}
 
CF_FIELD_MAX = 6
#Set this to the number of colors, or however many colors you want to be
#remembered.
 
 
#-------------------------------------------------------------------------------
#  Anti Color Configuration
#-------------------------------------------------------------------------------
#
#Using the COLOR ID (as in not the element ID) fill out the hash like this
#   CF_ELEM_ANTI_COLORS = {
#   color_id => anti_color_id,
#   color_id => anti_color_id,
#   ...
#   }
CF_ELEM_ANTI_COLORS = {
0 => 1,
1 => 0,
2 => 3,
3 => 2,
4 => 5,
5 => 6,
}
 
#-------------------------------------------------------------------------------
#  Special Color Effects
#-------------------------------------------------------------------------------
#
# Using the ELEMENT ID fill out the hash like this
#   CF_ELEM_SFX = {
#   element_id => effect,
#   element_id=> effect,
#   ...
#   }
#
#   replace "effect" with one of the following
#  
#   1 : sets the entire field to the color of this skill
#  -1 : sets the entire field to the anti-color of this skill
#   2 : adds an extra color of the skill to the field
#  -2 : adds an extra anti-color of the skill to the field
#   0 : resets the color field to all blank
#
CF_ELEM_SFX = {
23 => -1,
24 => 1,
25 => 0,
26 => -2,
27 => 2,
}
 
 
module Kernel
  def CF_getColor(element_id)
    id = CF_ELEM_COLORS[element_id]
    id = -1 if id == nil
    return id
  end
 
  def CF_getColorFromSet(elementarray)
  for element_id in elementarray
    id = CF_ELEM_COLORS[element_id]
    id = -1 if id == nil
    return id if id != -1
  end
  return -1
  end
 
  def CF_hasColor?(element_id)
    return (getColor(element_id) != -1)
  end
 
  def CF_antiColor(color)
    return CF_ELEM_ANTI_COLORS[color] if CF_ELEM_ANTI_COLORS.has_key?(color)
    return -1
  end
 
  def CF_getSFXFromSet(elementarray)
    sfx_array = []
    for element_id in elementarray
      sfx_array.push(CF_ELEM_SFX[element_id]) if CF_ELEM_SFX.has_key?(element_id)
    end
    return sfx_array
    end
end
 
 
#-------------------------------------------------------------------------------
#  RPG::Skill
#  new methods:
#      color(color)      :returns the skills color
#      hasColor?         :returns whether or not the skill has a color
#-------------------------------------------------------------------------------
 
module RPG
  class Skill
   
    def color
      color_elems = []
      for e in element_set
        color_elems.push(e) if CF_ELEM_COLORS.include?(e)
      end
      color_elems.push(0) if color_elems.empty?
      return CF_getColor(color_elems[0])
    end
 
    def hasColor?
      return (color != -1)
    end
   
    def special_type_skill?
      effect_set = CF_getSFXFromSet(element_set)
      return effect_set.include?(-2) || effect_set.include?(-1) || effect_set.include?(0)
    end
   
    end
  end
 
#-------------------------------------------------------------------------------
#  Scene_Battle
#  new methods:
#      add_color(color)      :adds color to color field
#      refresh_color_field   :redraws the icons
#      reset_color_field     :resets color field
#      color_boost(color)    :calculates the damage modifier
#-------------------------------------------------------------------------------
 
class Scene_Battle
  attr_accessor :color_set
  attr_accessor :color_max
  attr_accessor :active_battler
 
alias :_orig_main :main
def main
  @color_set = []
  @color_max = CF_FIELD_MAX
  @color_icons = Window_ColorField.new(@color_set)
  _orig_main
  @color_icons.dispose
end
 
def add_color(color)
  if @color_set.size == @color_max
    @color_set.pop
  end
  @color_set.unshift(color)
end
 
def refresh_color_field
    @color_icons.refresh(@color_set)
end
 
def reset_color_field
  @color_set = []
  refresh_color_field
end
 
def set_color_field(new_color)
  for i in 0 ... @color_set.size
    @color_set[i] = new_color
    end
end
 
def color_boost(color)
  mod =  1.00
  count = 0
  anti_count = 0
  anti_color = CF_antiColor(color)
  return mod if @color_set == nil
   for color_field in @color_set
     mod += CF_COLOR_BONUS  if color_field == color
     mod -= CF_ANTI_PENALTY if color_field == anti_color
     count += 1 if color_field == color
     count -= 1 if color_field == anti_color
   end
  mod += CF_FULL_BONUS if count == @color_max
  mod -= CF_FULL_PENALTY if count == -@color_max
  mod = 0.01 if mod < 0.01
 return mod
end
 
end
 
#--------------------------------------------------------------------------
# Game_Battler
#---------------------------------------------------------------------------
class Game_Battler
 
alias :_orig_elements_correct :elements_correct
def elements_correct(element_set)
  weakest = _orig_elements_correct(element_set)
  if $scene.is_a?(Scene_Battle)
    color = CF_getColorFromSet(element_set)
    mod = $scene.color_boost(color)
    weakest = Integer(weakest*mod)
    skill_id = $scene.active_battler.current_action.skill_id
    skill = nil
    skill = $data_skills[skill_id] if skill_id > 0
      if $scene.active_battler.current_action.skill_id > 0
        skill_color_field_fx($scene.active_battler.current_action.skill_id,color)
      end
    if skill != nil && skill.special_type_skill?
    $scene.add_color(CF_antiColor(color))
      else
    $scene.add_color(color) if color != -1
    end
    $scene.refresh_color_field
  end
  return weakest
end
 
def skill_color_field_fx(skill_id, color)
  elem_set = $data_skills[skill_id].element_set
  effect_set = CF_getSFXFromSet(elem_set)
  for cfx in effect_set
    cf_set(cfx,color)
  end
end
 
def cf_set(type, color)
  case type
  when 0
    $scene.reset_color_field
  when -1
    if color != -1
    $scene.set_color_field(CF_antiColor(color))
    end
  when 1
    if color != -1
    $scene.set_color_field(color)
    end
  when 2
    if color != -1
    $scene.add_color(color)
    end
  when -2
    if color != -1
    $scene.add_color(CF_antiColor(color))
    end
  end
 
end
 
end
 
#--------------------------------------------------------------------------
# Window_ColorField
#   Displays the Color icons
#   CF_WINDOW_X = The X Position of the window
#   CF_WINDOW_Y = The Y Position of the window
#--------------------------------------------------------------------------
 
class Window_ColorField < Window_Base
 
  CF_WINDOW_X = 0 #Default is 0
  CF_WINDOW_Y = 0 #Default is 0
 
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize(color_set)
    super(CF_WINDOW_X, CF_WINDOW_Y, 640, 64)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.opacity = 0
    self.z -= 10
    refresh(color_set)
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh(color_set)
    self.contents.clear
    return if color_set == nil
     count = 0
      for i in color_set
       color_image = "CF_" + i.to_s
       bitmap = RPG::Cache.icon(color_image)
       self.contents.blt(x + count*24, y + 4, bitmap, Rect.new(0, 0, 24, 24))
       count += 1
     end
  end
end
 
 

Instructions
-YOU NEED A CF_X.png for every color in the ICONS FOLDER (CF_0.png, CF_1.png)
-You can just download my icons unless you want to make your own
-Put script above main

FAQ
N/A

Compatibility
Should be compatible with most battle scripts. Nothing was overwritten.

Credits and Thanks
Square Enix for making the game that inspired this even though I've never played it and dislike most of the endings...

Terms and Conditions
Just give credit if used.


Offline
 Profile  
 
 Post subject: Re: Chrono Cross Color Field System 1.1
PostPosted: Sun May 08, 2011 1:59 pm 
Senior Member
Senior Member
User avatar

Joined: Mon Jun 28, 2010 5:55 pm
Posts: 1270
Location: Look somewhere else...
It looks pretty good, although I've
never had the chance of playing chrono trigger.

I am also interested if you are using this for
a project.



_________________
Super Mario RPG
Working on:Maps :P
Offline
 Profile  
 
Display posts from previous:  Sort by  
 Page 1 of 1 [ 2 posts ] 


Who is online

Users browsing this forum: No registered users and 0 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  


suspicion-preferred