Demo
Demo – Version 1.8 >
This script requires graphics from the demo. This demo has an old version of the script.
Script
#------------------------------------------------------------------------------#
# Galv's Magic Shards
#------------------------------------------------------------------------------#
# For: RPGMAKER VX ACE
# Version - 1.9
# Thanks: Ocedic, DP3, Reactive Owl, LucidK for ideas, inspiration and/or help
#------------------------------------------------------------------------------#
# 2024-11-12 - Version 1.9 - changed class name that conflicts with plugins
# 2013-12-30 - Version 1.8 - added unequip_shards script call
# 2013-08-09 - Version 1.7 - fixed bug with optimizing equips
# 2013-06-30 - Version 1.6 - made armors and weapons parameters add to actor
# 2013-04-02 - Version 1.5 - linked shard skills no longer display learned
# - skill if they dont have that skill type.
# 2013-03-28 - Version 1.4 - skills learned no longer appear in 'view skills'
# if actor doesn't have that skill type.
# 2013-03-25 - Version 1.3 - added indication of what linked skills were
# - learned of forgotten when changing shards.
# 2013-03-25 - Version 1.2 - added swith to enable/disable Orb Shard menu item
# - added message when gaining slots via level up
# 2013-03-24 - Version 1.1 - added indicator line signifying adjacent shards
# 2013-03-24 - Version 1.0 - release
#------------------------------------------------------------------------------#
# This script adds a system of equipping shards to actors via a new scene.
# Each shard can give bonuses (just like equipping normal equips) and can also
# allow actors to use different skills depending on which shards are placed
# touching each other.
#------------------------------------------------------------------------------#
#------------------------------------------------------------------------------#
# INFORMATION
#------------------------------------------------------------------------------#
# TYPES OF SHARDS
# You can make items, armors or weapons into shards.
#
# Armors and Weapons as shards:
# If you use armors and weapons for a shard, it will display in either the item
# OR key item category of the item screen (you set this in the settings below).
# All the features of the armor/weapon will work when the shard is equipped
# and only actors with the correct weapon/armor type (and nothing is stopping
# them from equipping the head/shield/accessory/etc.) can equip them.
#
# Items as shards:
# If you use an item as a shard, you can make it be consumable and work just
# like a normal item as well as be equipped as a shard. Any actor can equip
# an item shard without restriction but as it is an item, it's features do not
# effect the actor. There is, however, a note tag below to allow item shards to
# add skills to the actor and they can still be part of an adjacent shard.
#
# Adjacent Shards:
# If shards are equipped touching another shard, it is possible that the actor
# is granted an additional skill. When you notetag a shard, you give it an id.
# In the SHARD SETUP, you specify what skill is learned when any two id's are
# touching each other.
# An indicator light appears on shards that are adjacent. The first and last
# shard are counted as adjacent to each other, so this light will be visible
# on all the locked shards so the player knows.
#------------------------------------------------------------------------------#
#------------------------------------------------------------------------------#
# SCRIPT CALLS
#------------------------------------------------------------------------------#
#
# add_shard_level(id,x) # Adds x amounts of shard slots to actor number id.
# # Make id 0 to add shard slots to party leader
#
# unequip_shards(actor_id) # Remove all shards from actor
#
# SceneManager.call(Scene_Shards) # Manually bring up shard equip screen
#
#------------------------------------------------------------------------------#
# EXAMPLE SCRIPT CALLS
#
# add_shard_level(1,4) # Adds 4 shard slots to actor 1
#------------------------------------------------------------------------------#
#------------------------------------------------------------------------------#
# Notetag ITEMS, ARMORS or WEAPONS
#------------------------------------------------------------------------------#
#
# # x is the shard id to use in SHARD SETUP below.
#
# # x is the skill ids for the shard to teach the player.
# # NOTE, Armors and equips can still use the feature.
# # An item can teach skills via this tag.
#
# # RGB color applied to the shard (RGB can be 0-255).
# # Default is 255,255,255 (white)
#
# # A different image for the shard from /Graphics/Shards
#
#------------------------------------------------------------------------------#
#------------------------------------------------------------------------------#
# Notetag for CLASS skill acquired on level up list (Classes tab, Skills box)
#------------------------------------------------------------------------------#
#
# # x is how many slots you want the actor to gain
# # when the class reaches the level to gain this
# # skill. skill? can be true or false. If true,
# # the skill is learned as normal. If false, the
# # skill isn't learned.
#
#------------------------------------------------------------------------------#
# This notetag goes in the CLASSES tab in the database in the notes field of
# skills that you set the actor to learn when he reaches certain levels. It is
# used for the player to gain slots at that level. EXAMPLE:
#
# # Actor gains 2 shard slots and doesn't learn the
# # skill selected. (used for if you want to add just
# # slots at that level and no skill.
#
# # Actor gains 1 shard slot and also the skill.
#------------------------------------------------------------------------------#
($imported ||= {})["Galv_Shards"] = true
module Galv_Shard
#------------------------------------------------------------------------------#
# SHARD SETUP
#------------------------------------------------------------------------------#
# This is where you setup the skills learned when placing shards adjacent to
# each other. NOTE: Your shard id's must be lowest first, higest second
#------------------------------------------------------------------------------#
SHARDS = { # Don't touch
#------------------------------------------------------------------------------#
# [shard_id,shard_id] => skill_id,
[1,2] => 46, # fire and water = skill 46 (steam)
[2,3] => 4, # water and earth = skill 4 (mudslide)
[2,5] => 13, # water and healing = skill 13 (healing rain)
#------------------------------------------------------------------------------#
} # Don't touch
#------------------------------------------------------------------------------#
#------------------------------------------------------------------------------#
# MORE SETTINGS
#------------------------------------------------------------------------------#
#-----------#
# General #
#-----------#
HIDE_SHARDS = false # Hide shards completely from normal inventory screen
# true or false
KEY_ITEMS = false # If HIDE_SHARDS is false, setting this to true will
# display all armor/weapons shards as key items in the
# item screen. false will display them as normal items
SKIN = "" # Use a different windowskin from /Graphics/Shards folder
FONT_NAME = "Arial" # Font used in the right orb window only.
ORB_X_OFFSET = 0 # T0 move the orb container left and right
ORB_Y_OFFSET = 0 # T0 move the orb container up and down
LINKED_COLOR = [0,204,255] # Colour of light indicating linked shards
#---------#
# Vocab #
#---------#
LEVEL_NAME = "Orb Level: " # Text used for level
EMPTY_SLOT = "Empty Slot" # Text used in help box for empty slot
ADD_TO_MENU = true # Add equip shards to menu true or false
DISABLE_SWITCH = 1 # Disable menu item when switch is ON
MENU_TEXT = "Orb Shards" # Text used for menu item
LEVEL_UP_SLOTS = "Shard Slots Gained: " # Message displayed when gaining
# shard slots with a level up followed
# by how many were gained. Make this
# = "" if don't want to use it.
#---------#
# Sound # ["SE_NAME",volume,pitch]
#---------#
SE_EQUIP = ["Cursor2",90,50] # SE When equipping a shard
SE_REMOVE = ["Water1",80,150] # SE When removing a shard
SE_CLEAR = ["Darkness7",90,150] # SE When clearning shards
#------------------------------------------------------------------------------#
# END SETTINGS
#------------------------------------------------------------------------------#
end
module Cache
def self.shards(filename)
load_bitmap("Graphics/Shards/", filename)
end
end # Cache
class Game_Interpreter
def add_shard_level(actor,amount)
if actor == 0
$game_party.leader.add_shard_level(amount)
elsif actor > 0
return if $game_actors[actor].nil?
$game_actors[actor].add_shard_level(amount)
end
end
def unequip_shards(actor_id)
$game_actors[actor_id].shards.each_with_index { |shard,i|
next if shard == (:blank || nil)
$game_party.gain_item(shard, 1)
$game_actors[actor_id].shards[i] = :blank
}
end
end # Game_Interpreter
#------------------------------------------------------------------------
if Galv_Shard::ADD_TO_MENU
class Scene_Menu < Scene_MenuBase
alias galv_shards_sm_create_command_window create_command_window
def create_command_window
galv_shards_sm_create_command_window
@command_window.set_handler(:shards, method(:command_personal))
end
alias galv_shards_sm_on_personal_ok on_personal_ok
def on_personal_ok
if @command_window.current_symbol == :shards
return SceneManager.call(Scene_Shards)
end
galv_shards_sm_on_personal_ok
end
end # Scene_Menu < Scene_MenuBase
class Window_MenuCommand < Window_Command
alias galv_shards_wmc_add_main_commands add_main_commands
def add_main_commands
galv_shards_wmc_add_main_commands
add_command(Galv_Shard::MENU_TEXT, :shards,
!$game_switches[Galv_Shard::DISABLE_SWITCH])
end
end # Window_MenuCommand < Window_Command
end
#------------------------------------------------------------------------
class Game_Actor < Game_Battler
attr_accessor :shards
attr_accessor :shardlinks
attr_accessor :known_links
alias galv_shards_ga_setup setup
def setup(actor_id)
galv_shards_ga_setup(actor_id)
@shards = []
@shardlinks = []
@known_links = []
@slots_gained = 0
end
alias galv_shards_ga_feature_objects feature_objects
def feature_objects
galv_shards_ga_feature_objects + shard_array
end
def shard_array
return [] if !shards
array = Array.new(shards)
array.delete(:blank)
array
end
alias galv_shards_ga_param_plus param_plus
def param_plus(param_id)
galv_shards_ga_param_plus(param_id) + shard_params(param_id)
end
def shard_params(param_id)
return 0 if !shards
result = 0
shard_array.each { |shard|
next if shard.is_a?(RPG::Item) || shard.nil?
result += shard.params[param_id]
}
return result
end
alias galv_shards_ga_added_skills added_skills
def added_skills
galv_shards_ga_added_skills + shard_item_skills + shard_linked_skills
end
def shard_item_skills
return [] if !shards
sarray = []
shards.each { |shard|
next if shard == :blank || shard.nil?
shard.sskills.each { |skill| sarray << skill } if shard.sskills
}
sarray.compact
end
def shard_linked_skills
lst = Galv_Shard::SHARDS
return [] if !shards
sarray = []
shards.each_with_index { |s,i|
nxt = shards[i + 1].nil? ? 0 : i + 1
next if s == :blank || shards[nxt] == :blank
check_for = [shards[i].shard,shards[nxt].shard].sort
sarray < 12
amount = 12 - shards.count
end
amount.times { |i| shards << :blank }
end
alias galv_shards_ga_level_up level_up
def level_up
galv_shards_ga_level_up
self.class.learnings.each do |learning|
if learning.note =~ //i && learning.level == level
plus_slots = $1.to_i
@slots_gained += plus_slots
add_shard_level(plus_slots)
forget_skill(learning.skill_id) if $2 == "false"
end
end
end
alias galv_shards_ga_display_level_up display_level_up
def display_level_up(new_skills)
galv_shards_ga_display_level_up(new_skills)
if @slots_gained > 0 && Galv_Shard::LEVEL_UP_SLOTS != ""
$game_message.add(sprintf(Galv_Shard::LEVEL_UP_SLOTS + @slots_gained.to_s))
@slots_gained = 0
end
end
end # Game_Actor < Game_Battler
class Game_BattlerBase
alias galv_shards_gbb_equippable? equippable?
def equippable?(item)
return false if item && item.shard
galv_shards_gbb_equippable?(item)
end
def shard_equippable?(item)
return false unless item.is_a?(RPG::EquipItem)
return false if equip_type_sealed?(item.etype_id)
return equip_wtype_ok?(item.wtype_id) if item.is_a?(RPG::Weapon)
return equip_atype_ok?(item.atype_id) if item.is_a?(RPG::Armor)
return false
end
end
class RPG::BaseItem
def shard
if @shard.nil?
if @note =~ //i
@shard = $1.to_i
else
@shard = nil
end
end
@shard
end
def sskills
if @sskills.nil?
if @note =~ //i
@sskills = $1.to_s.split(",").map {|i| i.to_i}
else
@sskills = nil
end
end
@sskills
end
def scolor
if @scolor.nil?
if @note =~ //i
@scolor = $1.to_s.split(",").map {|i| i.to_i}
else
@scolor = [255,255,255]
end
end
@scolor
end
def simage
if @simage.nil?
if @note =~ //i
@simage = $1.to_s
else
@simage = "shard-equipped"
end
end
@simage
end
end # RPG::BaseItem
class Window_ItemList < Window_Selectable
alias galv_shards_wil_include? include?
def include?(item)
return false if item && item.shard && Galv_Shard::HIDE_SHARDS
case @category
when :item
if !Galv_Shard::KEY_ITEMS
return true if item.is_a?(RPG::Weapon) && item.shard
return true if item.is_a?(RPG::Armor) && item.shard
end
when :weapon
return false if item.is_a?(RPG::Weapon) && item.shard
when :armor
return false if item.is_a?(RPG::Armor) && item.shard
when :key_item
if Galv_Shard::KEY_ITEMS
return true if item.is_a?(RPG::Weapon) && item.shard
return true if item.is_a?(RPG::Armor) && item.shard
end
end
galv_shards_wil_include?(item)
end
end # Window_ItemList < Window_Selectable
class Window_EquipItem < Window_ItemList
alias galv_shards_wei_include? include?
def include?(item)
return false if item && item.shard
galv_shards_wei_include?(item)
end
end # Window_EquipItem < Window_ItemList
#==============================================================================
# ** Scene_Shards
#==============================================================================
class Scene_Shards = 0
@item_window.activate
else
@command_window.activate
end
end
def on_orb_ok
case @command_window.current_symbol
when :equip
# Do equip
equip_shard
when :remove
# Do Remove
remove_shard
@orb_window.activate
end
end
def on_orb_cancel
case @command_window.current_symbol
when :equip
@orb_window.unselect
@item_window.activate
when :remove
@info_window.clear
@orb_window.unselect
@command_window.activate
end
end
def on_item_ok
@info_window.clear
if !@item_window.item.nil?
@orb_window.activate
@orb_window.select(@orb_window.last_index)
else
@item_window.activate
end
end
def on_item_cancel
@info_window.clear
@item_window.unselect
@command_window.activate
end
def on_actor_change
@info_window.clear
@orb_window.select_none
@item_window.actor = @actor
@orb_window.actor = @actor
@character_sprite.character = @actor
@skill_window.refresh
@command_window.activate
end
#--------------------------------------------------------------------------
# * Shard Stuff
#--------------------------------------------------------------------------
def remove_shard
return Sound.play_buzzer if @orb_window.item.nil? || @orb_window.item == :blank
se = Galv_Shard::SE_REMOVE
RPG::SE.new(se[0],se[1],se[2]).play
$game_party.gain_item(@orb_window.item, 1)
@actor.shards[@orb_window.index] = :blank
@orb_window.refresh
@item_window.refresh
do_shard_change
end
def clear_all
@info_window.clear
@help_window.set_item(nil) if @skill_window.active
@actor.shards.each_with_index { |shard,i|
next if shard.nil? || shard == :blank
$game_party.gain_item(shard,1)
@actor.shards[i] = :blank
}
se = Galv_Shard::SE_CLEAR
RPG::SE.new(se[0],se[1],se[2]).play
@orb_window.refresh
@item_window.refresh
end
def equip_shard
se = Galv_Shard::SE_EQUIP
RPG::SE.new(se[0],se[1],se[2]).play
temp_item = @item_window.item
if @orb_window.item != :blank
$game_party.gain_item(@orb_window.item,1)
end
@actor.shards[@orb_window.index] = @item_window.item
$game_party.lose_item(@item_window.item, 1)
@orb_window.refresh
@item_window.refresh
@item_window.activate
@orb_window.unselect
do_shard_change
end
def do_shard_change
learned = @actor.shard_linked_skills - @actor.known_links
forgot = @actor.known_links - @actor.shard_linked_skills
learn_usable = []
forgot_usable = []
learned.each { |sid|
if @actor.added_skill_types.include?($data_skills[sid].stype_id)
learn_usable << sid
end
}
forgot.each { |sid|
if @actor.added_skill_types.include?($data_skills[sid].stype_id)
forgot_usable <= 0
@item_window.activate
else
@command_window.activate
end
else
Sound.play_ok
@command_window.deactivate
@item_window.deactivate
@skill_window.activate
@skill_window.select(0)
@skill_window.actor = @actor
@skill_window.visible = true
@skill_window.refresh
@help_window.set_item(@skill_window.item)
end
end
end
def terminate
super
dispose_orb_graphics
end
def dispose_orb_graphics
@character_sprite.dispose
end
end
#==============================================================================
# ** Windows and whatsis
#==============================================================================
class Window_OrbCommand < Window_HorzCommand
def initialize(x, y, width)
@window_width = width
super(x, y)
self.windowskin = Cache.shards(Galv_Shard::SKIN) if Galv_Shard::SKIN != ""
end
def window_width
@window_width
end
def col_max
return 2
end
def make_command_list
add_command("Equip", :equip)
add_command("Remove", :remove)
end
end # Window_OrbCommand < Window_HorzCommand
class Window_OrbHelp < Window_Help
def initialize
super
end
def set_item(item)
return set_text("") if item.nil?
if item == :blank
set_text("Empty Slot")
else
set_text(item ? item.description : "")
end
end
end # Window_OrbHelp < Window_Help
class Window_ShardInfo < Window_Base
def initialize(width)
super(0, Graphics.height - fitting_height(2), width, fitting_height(2))
self.windowskin = Cache.shards(Galv_Shard::SKIN) if Galv_Shard::SKIN != ""
@learned ||= []
@forgot ||= []
end
def refresh
contents.clear
draw_skills
end
def clear
contents.clear
end
def display(learned,forgot)
@learned = learned
@forgot = forgot
refresh
end
def draw_skills
ind = 0
w = contents.width
x = 0
h = line_height
change_color(Color.new(197,255,202,255))
@learned.uniq.each { |skill|
sk = $data_skills[skill]
draw_text(0,h * ind,w,h,"+" + sk.name,1)
ind += 1
}
change_color(Color.new(255,197,197,255))
@forgot.uniq.each { |skill|
sk = $data_skills[skill]
draw_text(0,h * ind,w,h,"-" + sk.name,1)
ind += 1
}
change_color(normal_color)
end
end # Window_Info < Window_Base
class Window_Orb = 0
@cursor.update
end
def actor=(actor)
return if @actor == actor
@actor = actor
refresh
end
def refresh
contents.clear
dispose_shards
create_shards
create_text
end
def create_text
return if @actor.nil?
contents.font.size = 22
change_color(text_color(15))
contents.font.out_color = text_color(0)
contents.font.bold = true
contents.font.name = Galv_Shard::FONT_NAME
draw_text(0, 0, contents.width, line_height, @actor.name)
draw_text(0, 0, contents.width - 30, line_height, Galv_Shard::LEVEL_NAME,2)
change_color(text_color(9))
draw_text(0, 0, contents.width, line_height, @actor.shards.count,2)
end
def create_shards
12.times { |i| draw_item(i) }
end
def draw_item(ind)
shard = @actor.shards[ind] if @actor.shards[ind]
sx = @cursor.x
sy = @cursor.y
return if shard == :blank
@shard_images[ind] = Sprite_Shard.new(@viewport,ind,shard,sx,sy)
if item_linked(ind) && !@actor.shards.empty?
@shards_active[ind] = Sprite_Shard.new(@viewport,ind,:active,sx,sy)
end
draw_shard_icon(shard,ind)
end
def draw_shard_icon(shard,ind)
center_x = contents.width - @orb_back.bitmap.width / 2 + Galv_Shard::ORB_X_OFFSET
center_y = 160 + Galv_Shard::ORB_Y_OFFSET
round_x = center_x + Math::cos((@shard_images[ind].angle - 90) / -57) * 100
round_y = center_y + Math::sin((@shard_images[ind].angle - 90) / -57) * 100
return if shard.nil?
draw_icon(shard.icon_index,round_x,round_y,true)
end
def dispose_shards
@shard_images.each { |s| s.dispose if s }
@shard_images = []
@shards_active.each { |s| s.dispose if s }
@shards_active = []
end
def item_linked(ind)
sh = @actor.shards
return false if sh[ind] == :blank
if sh[ind].nil?
if sh.first != :blank && sh.last != :blank
return true
else
return false
end
end
case ind
when 0
return true if sh.last != :blank || sh[ind+1] != :blank
when (sh.count-1)
return true if sh.first != :blank || sh[ind-1] != :blank
else
return true if sh[ind+1] != :blank || sh[ind-1] != :blank
end
false
end
def item
@actor ? @actor.shards[index] : nil
end
def item_max
return 0 if @actor.nil?
@actor.shards.count
end
def activate
super
@cursor.opacity = 100
end
def deactivate
super
@cursor.opacity = 0
end
def update_help
super
@help_window.set_item(item) if @help_window
end
def dispose
@orb_back.bitmap.dispose
@orb_front.bitmap.dispose
@orb_nums.bitmap.dispose
@orb_keys.bitmap.dispose
@cursor.bitmap.dispose
dispose_shards
super
end
def update_cursor
if @cursor_all
cursor_rect.empty
self.top_row = 0
elsif @index = col_max || index == @actor.shards.count - 1 || index == 0
select((index - col_max + item_max) % item_max)
end
end
def cursor_up(wrap = false)
if index < item_max - col_max || index == @actor.shards.count - 1 || index == 0
select((index + col_max) % item_max)
end
end
end # Window_Orb < Window_Selectable
class Window_OrbItems < Window_ItemList
def initialize(x, y, width, height)
super
self.windowskin = Cache.shards(Galv_Shard::SKIN) if Galv_Shard::SKIN != ""
end
def col_max
return 1
end
def include?(item)
return false if item.nil?
return true if item == :blank
return true if @actor.shard_equippable?(item) && item.shard
return true if item.is_a?(RPG::Item) && item.shard
end
def refresh
super
end
def enable?(item)
return false if item.nil?
return false if @actor.shards.empty?
true
end
def actor=(actor)
return if @actor == actor
@actor = actor
refresh
self.oy = 0
end
end # Window_OrbItems < Window_ItemList
class Window_OrbSkillList < Window_SkillList
def initialize(x, y, width, height)
super
@actor = nil
@data = []
self.back_opacity = 255
end
def col_max
return 1
end
def update; super; end
def refresh; super; end
def current_item_enabled?
false
end
def include?(item)
return false if item.nil?
return false if !@actor.added_skill_types.include?(item.stype_id)
item
end
def enable?(item)
true
end
end # Window_OrbSkillList < Window_SkillList
#==============================================================================
# ** Sprites and Things
#==============================================================================
class OrbCharacter < Sprite_Base
attr_accessor :character
def initialize(viewport, character = nil)
@pattern = 1
@step_speed = 20
@step = true
@character = character
super(viewport)
update
end
def set_character_bitmap
self.bitmap = Cache.character(@character_name)
sign = @character_name[/^[\!\$]./]
if sign && sign.include?('$')
@cw = bitmap.width / 3
@ch = bitmap.height / 4
else
@cw = bitmap.width / 12
@ch = bitmap.height / 8
end
self.ox = @cw / 2
self.oy = @ch
self.x = Graphics.width - 300
self.y = 150
self.z = 500
end
def update_src_rect
index = @character.character_index
sx = (index % 4 * 3 + @pattern) * @cw
sy = (index / 4 * 4 + (2 - 2) / 2) * @ch
self.src_rect.set(sx, sy, @cw, @ch)
end
def update_bitmap
if graphic_changed?
@character_name = @character.character_name
@character_index = @character.character_index
set_character_bitmap
end
end
def graphic_changed?
@character_name != @character.character_name ||
@character_index != @character.character_index
end
def update
super
update_bitmap
update_src_rect
update_animation
end
def update_animation
@step_speed -= 1
if @step_speed <= 0
if @step
if @pattern 0
@pattern -= 1
else
@pattern = 1
@step ^= true
end
end
@step_speed = 20
end
end
def dispose
super
self.bitmap.dispose
end
end # OrbCharacter < Sprite_Base
class Sprite_Cursor = 0
end
def update_position
return if index = 150
else
self.opacity -= 3
@fade = 0 if self.opacity <= 80
end
end
def dispose; super; end
end # Sprite_Cursor < Sprite_Base
class Sprite_Shard < Sprite_Base
def initialize(viewport,index,item,sx,sy)
@index = index
@item = item
super(viewport)
create_graphic
self.x = sx
self.y = sy
end
def create_graphic
if @item == :active
self.bitmap = Cache.shards("linked-light")
c = Galv_Shard::LINKED_COLOR
self.color = Color.new(c[0],c[1],c[2],160)
elsif @item.nil?
self.bitmap = Cache.shards("shard-locked")
else
self.bitmap = Cache.shards(@item.simage)
c = @item.scolor
self.color = Color.new(c[0],c[1],c[2],160)
end
self.ox = self.bitmap.width / 2
self.angle = 285 - @index * 30
self.z = -20
end
def update
super
end
def dispose; super; end
end # Sprite_Shard < Sprite_Base
Awesome script! Thank you very much :D
It doesn’t work for me it says:
Script ‘Galv’s Magic Shards’ line 899: NoMethodError occurred.
undefined method `[]’ for nil:NilClass
Which is
shard = @actor.shards[ind] if @actor.shards[ind]
It sounds like you didn’t start a new game after adding the script. Here’s something I wrote to help solve errors:
Hello Galv’s I really Love your work! and I use you shard System for my game..is really what i wanted!
But for the link colors….you think you can add a new feature?
Like the possibility to have more color for specific thing…like if the character where a ”Stone” permit to only have Fire Shard the color link has read….but if you change for (in your equipement ) for a stone permit to only have Water shard the color link become Blue ….
Is was a idea i thinked is great because is had..somme dynamic in game!
I thank you if you can add this :3!
Sounds like a good idea but I’m sorry I am making no changes to this script currently. Too many people have offered suggestions to make it different and I cannot do them all.
Okai is correct don’t apogalise :3….
BUt i have question because i want to do my own graphic for the shard system …but i think i need to do some adjustement in the script for make my graphic compatible?
(because the ”shard ” is not triangular is a simple stone you enchance in a hole and the link light whas more high)
(don’t worry i have some knowledge for programming and i also do my own script poste on rpgmaker :3 (but i am still a begginer so the script are not really sensationnal and is in construction)
So is all i ask :3….have a good days :3!
I don’t understand what you would like to do. Changing the shape of the shard would be a fairly big job getting the angles in the circle right
Galv, in the Demo the Water Shard doesn’t show up, why?
Ok, I got it! It’s because It was an “advanced shard” :)
This is cool if you want to put some shard only for one actor, right! Great!
That’s correct, so you can only allow certain actors to equip certain shards :)
Glad you figured it out
Galv I think I found a bug ! My game was running very well until I made my character have 3 weapon, when I tried to change wapons, the game crashed and took me to this script line 436, I don’t think it’s a compatibility issue as your script works really well. I already have versión 1.7 so I don’t know what could be wrong. Hope you check this out.
What do you mean your character had 3 weapon?
Two weapons or 1 weapon equipped and one weapon in your inventory. Then I press Change my equiped weapon and the game crashes x.x
I cannot duplicate this crash or see why it would crash on that line. Can you please try to do exactly what you did using this script’s demo?
If you cannot duplicate the crash in the demo I suspect it is a script conflict and you might have to do some tests to find which one is conflicting
Well I couldn’t replicate the error in the demo, here’s an image of the error :
Thank you for your answers and quick help.
Looks like a script conflict with a script that creates custom equipment
Thank you I will look for the script causing the issue, your awesome BTW (:
Is there a way to add something like tiers? for example: I have hero who can only have 1 tier III shard, 3 tier II shards and 4 tier I shards.
Sorry, don’t think so. The script only does what it says it does I’m afraid :)
is there a way to make this compatible with moghunters cursor?
Did you try putting cursor script below?
Yes. I believe both use similar coding for cursors and overlap each other. Its ok i just grabbed a different script.
Is there a possibility to link more than just two shards?
So that you can link three shards to get a skill and if the shards have a link between just two
this skill also will be learned?
Sorry, no.
Okay, well i still will use this in my game.
Curious if there is a way to add this system into Mog’s Monogatari Menu? I’ve tried everything to my knowledge and still await any help via the forums.
I have not used Mog’s script so I’m sorry I cannot help you there
Oh alright, that’s fine I’ll keep at it until it works, I need this system for my game! Thank you anyway Galv and for your timely reply to my inquiry!
Where can i find the demo folder?
What do you mean the demo folder? You can download the demo using the link at the top of this page under the heading “Demo”. I can’t help you find where you download it to on your computer
Hello.
I have small “problem” with this script:
Knight class can use type A shards.
Mage class can use type B shards.
Hero is Knight so he can equip type A shards. But when he change class to Mage he still have type A shards equipped.
It there a way to automatic unequip shards after class change?
You will need to modify the class change script you are using to do that. This script has a script call to remove all shards : unequip_shards(actor_id)
So, I think I got a bug, I dont know if its Compatibility or a script bug…I’m using your menu script and the shards script, I had to do a “Scene_Shards” add to the menu script, not a problem worked fine, it opens the window of the shards and work really well… But when I close the window the image of the shard place are still there, is there a way to make it work?
Try going to Killozappit’s cache script and change the below setting to:
KEEP_DISPOSED_BITMAPS = false
Thank you so much it worked :) , another thing (Sorry for taking your time xD) i have a lot of skills on my character…Is there a way to show only the skills that where mastered by the shards instead of showing every skill?
Not setup in this script, sorry. Would require script editing
Hey there Galv, I would like to know if there is a way to acess the shard equiping without entering the menu for this? My game have no menus but I would like to use shards.
Hey, I just had a look to remind myself and unfortunately how it was written there is no easy way to do it out of the menu. I’d have to write in a way for you. I don’t know when I can get to do this, though
I must say that this is a very interesting gameplay concept. I actually wonder if it is possible to increase the amount of slots (or decrease them), depending on actor class, equipment, etcetera?
Like, my Knight is next to useless with magic and has a six shard capacity, how could that be implemented to where he only has six available slots (I mean visibly not just have six of twelve perma-locked slots).
Or if my Great Mage is thoroughly proficient with magic, and has a maximum of twenty-four slots…if she has her best weapon and specific armor equipped?
Unfortunately the Ace version doesn’t do anything like that. I have moved on to MV which can have as many slots as required and not just lock certain slots
sorry to bring up such a very old thread, but i would like to ask, is there a way to disable it on the menu? (like the option on the menu becomes grayed out until you activated later via an event)
a script call to turn it off and on would be helpful.
thanks in advance.
and thank you for the hard work.
Unless it’s in the script help file, I didn’t add that functionality, sorry.
it says “cannot find Graphics/System/Background
can anyone help?
You need graphics for this plugin. You can grab them from the demo.
hello, I was wondering if it was possible to activate a variable if we equip a shard? Thank you very much
If it’s not in the documentation then not in the plugin, sorry.