Is there a script out there that will allow you to consume items that require you to have for a spell to be cast like Secret of evermore?
For which maker? XP, VX, or VXA?
Assuming your using ace, there is by Yanfly.
#==============================================================================
#
# ? Yanfly Engine Ace - Skill Cost Manager v1.02
# -- Last Updated: 2012.01.23
# -- Level: Normal, Hard, Lunatic
# -- Requires: n/a
#
#==============================================================================
$imported = {} if $imported.nil?
$imported["YEA-SkillCostManager"] = true
#==============================================================================
# ? Updates
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# 2012.01.23 - Compatibility Update: Doppelganger
# 2011.12.11 - Started Script and Finished.
# - Added max and min notetags.
#
#==============================================================================
# ? Introduction
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# This script adds more functionality towards skill costs. Skills can now cost
# HP, more MP, more TP, gold, and even have custom costs. The way the skill
# costs are drawn in the display windows are changed to deliver more effective
# and reliable information to the player. And if four skill costs aren't enough
# to satisfy you, you can even make your own custom skill costs.
#
#==============================================================================
# ? Instructions
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# To install this script, open up your script editor and copy/paste this script
# to an open slot below ? Materials/?? but above ? Main. Remember to save.
#
# -----------------------------------------------------------------------------
# Actor Notetags - These notetags go in the actors notebox in the database.
# -----------------------------------------------------------------------------
# <hp cost rate: x%>
# Allows the actor to drop the HP cost of skills to x%.
#
# <tp cost rate: x%>
# Allows the actor to drop the TP cost of skills to x%.
#
# <gold cost rate: x%>
# Allows the actor to drop the Gold cost of skills to x%.
#
# -----------------------------------------------------------------------------
# Class Notetags - These notetags go in the class notebox in the database.
# -----------------------------------------------------------------------------
# <hp cost rate: x%>
# Allows the class to drop the HP cost of skills to x%.
#
# <tp cost rate: x%>
# Allows the class to drop the TP cost of skills to x%.
#
# <gold cost rate: x%>
# Allows the class to drop the Gold cost of skills to x%.
#
# -----------------------------------------------------------------------------
# Skill Notetags - These notetags go in the skills notebox in the database.
# -----------------------------------------------------------------------------
# <hp cost: x>
# Sets the skill's HP cost to x. This function did not exist by default in
# RPG Maker VX Ace.
#
# <hp cost: x%>
# Sets the HP cost to a percentage of the actor's MaxHP. If a normal HP cost is
# present on the skill, too, then this value is added to the HP cost.
#
# <hp cost max: x>
# <hp cost min: x>
# Sets the maximum and minimum range of the HP Cost of the skill. If you do not
# use this tag, there will be no maximum and/or minimum range.
#
# <mp cost: x>
# Sets the skill's MP cost to x. Allows MP cost to exceed 9999, which is RPG
# Maker VX Ace's database editor's maximum limit.
#
# <mp cost: x%>
# Sets the MP cost to a percentage of the actor's MaxMP. If a normal MP cost is
# present on the skill, too, then this value is added to the MP cost.
#
# <mp cost max: x>
# <mp cost min: x>
# Sets the maximum and minimum range of the MP Cost of the skill. If you do not
# use this tag, there will be no maximum and/or minimum range.
#
# <tp cost: x>
# Sets the skill's TP cost to x. Allows TP cost to exceed 100, which is RPG
# Maker VX Ace's database editor's maximum limit.
#
# <tp cost: x%>
# Sets the TP cost to a percentage of the actor's MaxTP. If a normal TP cost is
# present on the skill, too, then this value is added to the TP cost.
#
# <tp cost max: x>
# <tp cost min: x>
# Sets the maximum and minimum range of the TP Cost of the skill. If you do not
# use this tag, there will be no maximum and/or minimum range.
#
# <gold cost: x>
# Sets the skill's gold cost to x. Enemies with skills that cost gold do not
# use gold. If the player does not have enough gold, the skill can't be used.
#
# <gold cost: x%>
# Sets the skill's gold cost equal to a percentage of the party's total gold.
# If both a regular gold cost and a percentile gold cost is used, the total of
# both values will be the skill's gold cost.
#
# <gold cost max: x>
# <gold cost min: x>
# Sets the maximum and minimum range of the Gold Cost of the skill. If you do
# not use this tag, there will be no maximum and/or minimum range.
#
# --- Making Your Own Custom Costs ---
#
# <custom cost: string>
# If you decide to have a custom cost for your game, insert this notetag to
# change what displays in the skill menu visually.
#
# <custom cost colour: x>
# This is the "Window" skin text colour used for the custom cost. By default,
# it is text colour 0, which is the white colour.
#
# <custom cost size: x>
# This is the text font size used for the custom cost in the display windows.
# By default, it is font size 20.
#
# <custom cost icon: x>
# If you wish to use an icon for your custom cost, replace x with the icon ID
# you wish to show in display windows. By default, it is 0 (and not shown).
#
# <custom cost requirement>
# string
# string
# </custom cost requirement>
# Sets the custom cost requirement of the skill with an eval function using the
# strings in between. The strings are a part of one line even if in the notebox
# they are on separate lines.
#
# <custom cost perform>
# string
# string
# </custom cost perform>
# Sets how the custom cost payment is done with an eval function using the
# strings in between. The strings are a part of one line even if in the notebox
# they are on separate lines.
#
# -----------------------------------------------------------------------------
# Weapon Notetags - These notetags go in the weapons notebox in the database.
# -----------------------------------------------------------------------------
# <hp cost rate: x%>
# Allows the weapon to drop the HP cost of skills to x% when worn.
#
# <tp cost rate: x%>
# Allows the weapon to drop the TP cost of skills to x% when worn.
#
# <gold cost rate: x%>
# Allows the weapon to drop the Gold cost of skills to x% when worn.
#
# -----------------------------------------------------------------------------
# Armour Notetags - These notetags go in the armours notebox in the database.
# -----------------------------------------------------------------------------
# <hp cost rate: x%>
# Allows the armour to drop the HP cost of skills to x% when worn.
#
# <tp cost rate: x%>
# Allows the armour to drop the TP cost of skills to x% when worn.
#
# <gold cost rate: x%>
# Allows the armour to drop the TP cost of skills to x% when worn.
#
# -----------------------------------------------------------------------------
# Enemy Notetags - These notetags go in the enemies notebox in the database.
# -----------------------------------------------------------------------------
# <hp cost rate: x%>
# Allows the enemy to drop the HP cost of skills to x%.
#
# <tp cost rate: x%>
# Allows the enemy to drop the TP cost of skills to x%.
#
# -----------------------------------------------------------------------------
# State Notetags - These notetags go in the states notebox in the database.
# -----------------------------------------------------------------------------
# <hp cost rate: x%>
# Allows the state to drop the HP cost of skills to x% when afflicted.
#
# <tp cost rate: x%>
# Allows the state to drop the TP cost of skills to x% when afflicted.
#
# <gold cost rate: x%>
# Allows the state to drop the Gold cost of skills to x% when afflicted.
#
#==============================================================================
# ? Compatibility
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# This script is made strictly for RPG Maker VX Ace. It is highly unlikely that
# it will run with RPG Maker VX without adjusting.
#
#==============================================================================
module YEA
module SKILL_COST
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# - HP Cost Settings -
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# New to this script are HP costs. HP costs require the battler to have
# sufficient HP before being able to use the skill. The text colour that's
# used, the suffix, or whether or not to use an icon. If you do not wish
# to use an icon, set the icon to 0.
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
HP_COST_COLOUR = 21 # Colour used from "Window" skin.
HP_COST_SIZE = 20 # Font size used for HP costs.
HP_COST_SUFFIX = "%sHP" # Suffix used for HP costs.
HP_COST_ICON = 0 # Icon used for HP costs. Set 0 to disable.
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# - MP Cost Settings -
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# Here, you can change the settings for MP costs: the text colour that's
# used, the suffix, or whether or not to use an icon. If you do not wish
# to use an icon, set the icon to 0.
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
MP_COST_COLOUR = 23 # Colour used from "Window" skin. Default: 23
MP_COST_SIZE = 20 # Font size used for MP costs. Default: 24
MP_COST_SUFFIX = "%sMP" # Suffix used for MP costs. No suffix default.
MP_COST_ICON = 0 # Icon used for MP costs. Set 0 to disable.
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# - TP Cost Settings -
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# Here, you can change the settings for TP costs: the text colour that's
# used, the suffix, or whether or not to use an icon. If you do not wish
# to use an icon, set the icon to 0.
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
TP_COST_COLOUR = 2 # Colour used from "Window" skin. Default: 29
TP_COST_SIZE = 20 # Font size used for TP costs. Default: 24
TP_COST_SUFFIX = "%sTP" # Suffix used for TP costs. No suffix default.
TP_COST_ICON = 0 # Icon used for TP costs. Set 0 to disable.
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# - Gold Cost Settings -
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# New to this script are Gold costs. Gold costs require the party to have
# enough gold before being able to use the skill. The text colour that's
# used, the suffix, or whether or not to use an icon. If you do not wish
# to use an icon, set the icon to 0.
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
GOLD_COST_COLOUR = 6 # Colour used from "Window" skin.
GOLD_COST_SIZE = 20 # Font size used for Gold costs.
GOLD_COST_SUFFIX = "%sGold" # Suffix used for Gold costs.
GOLD_COST_ICON = 0 # Icon used for Gold costs. Set 0 to disable.
end # SKILL_COST
end # YEA
#==============================================================================
# ? Editting anything past this point may potentially result in causing
# computer damage, incontinence, explosion of user's head, coma, death, and/or
# halitosis so edit at your own risk.
#==============================================================================
module YEA
module REGEXP
module BASEITEM
HP_COST_RATE = /<(?:HP_COST_RATE|hp cost rate):[ ](\d+)([%?])>/i
TP_COST_RATE = /<(?:TP_COST_RATE|tp cost rate):[ ](\d+)([%?])>/i
GOLD_COST_RATE = /<(?:GOLD_COST_RATE|gold cost rate):[ ](\d+)([%?])>/i
end # BASEITEM
module SKILL
HP_COST_SET = /<(?:HP_COST|hp cost):[ ](\d+)>/i
HP_COST_PER = /<(?:HP_COST|hp cost):[ ](\d+)([%?])>/i
MP_COST_SET = /<(?:MP_COST|mp cost):[ ](\d+)>/i
MP_COST_PER = /<(?:MP_COST|mp cost):[ ](\d+)([%?])>/i
TP_COST_SET = /<(?:TP_COST|tp cost):[ ](\d+)>/i
TP_COST_PER = /<(?:TP_COST|tp cost):[ ](\d+)([%?])>/i
GOLD_COST_SET = /<(?:GOLD_COST|gold cost):[ ](\d+)>/i
GOLD_COST_PER = /<(?:GOLD_COST|gold cost):[ ](\d+)([%?])>/i
CUSTOM_COST_TEXT = /<(?:CUSTOM_COST|custom cost):[ ](.*)>/i
CUSTOM_COST_COLOUR =
/<(?:CUSTOM_COST_COLOUR|custom cost colour|custom cost color):[ ](\d+)>/i
CUSTOM_COST_SIZE = /<(?:CUSTOM_COST_SIZE|custom cost size):[ ](\d+)>/i
CUSTOM_COST_ICON = /<(?:CUSTOM_COST_ICON|custom cost icon):[ ](\d+)>/i
CUSTOM_COST_REQUIREMENT_ON =
/<(?:CUSTOM_COST_REQUIREMENT|custom cost requirement)>/i
CUSTOM_COST_REQUIREMENT_OFF =
/<\/(?:CUSTOM_COST_REQUIREMENT|custom cost requirement)>/i
CUSTOM_COST_PERFORM_ON =
/<(?:CUSTOM_COST_PERFORM|custom cost perform)>/i
CUSTOM_COST_PERFORM_OFF =
/<\/(?:CUSTOM_COST_PERFORM|custom cost perform)>/i
HP_COST_MIN = /<(?:HP_COST_MIN|hp cost min):[ ](\d+)>/i
HP_COST_MAX = /<(?:HP_COST_MIN|hp cost max):[ ](\d+)>/i
MP_COST_MIN = /<(?:MP_COST_MIN|mp cost min):[ ](\d+)>/i
MP_COST_MAX = /<(?:MP_COST_MIN|mp cost max):[ ](\d+)>/i
TP_COST_MIN = /<(?:TP_COST_MIN|tp cost min):[ ](\d+)>/i
TP_COST_MAX = /<(?:TP_COST_MIN|tp cost max):[ ](\d+)>/i
GOLD_COST_MIN = /<(?:GOLD_COST_MIN|gold cost min):[ ](\d+)>/i
GOLD_COST_MAX = /<(?:GOLD_COST_MIN|gold cost max):[ ](\d+)>/i
end # SKILL
end # REGEXP
end # YEA
#==============================================================================
# ? Icon
#==============================================================================
module Icon
#--------------------------------------------------------------------------
# self.mp_cost
#--------------------------------------------------------------------------
def self.mp_cost; return YEA::SKILL_COST::MP_COST_ICON; end
#--------------------------------------------------------------------------
# self.tp_cost
#--------------------------------------------------------------------------
def self.tp_cost; return YEA::SKILL_COST::TP_COST_ICON; end
#--------------------------------------------------------------------------
# self.hp_cost
#--------------------------------------------------------------------------
def self.hp_cost; return YEA::SKILL_COST::HP_COST_ICON; end
#--------------------------------------------------------------------------
# self.gold_cost
#--------------------------------------------------------------------------
def self.gold_cost; return YEA::SKILL_COST::GOLD_COST_ICON; end
end # Icon
#==============================================================================
# ? Numeric
#==============================================================================
class Numeric
#--------------------------------------------------------------------------
# new method: group_digits
#--------------------------------------------------------------------------
unless $imported["YEA-CoreEngine"]
def group; return self.to_s; end
end # $imported["YEA-CoreEngine"]
end # Numeric
#==============================================================================
# ? DataManager
#==============================================================================
module DataManager
#--------------------------------------------------------------------------
# alias method: load_database
#--------------------------------------------------------------------------
class <<self; alias load_database_scm load_database; end
def self.load_database
load_database_scm
load_notetags_scm
end
#--------------------------------------------------------------------------
# new method: load_notetags_scm
#--------------------------------------------------------------------------
def self.load_notetags_scm
groups = [$data_actors, $data_classes, $data_skills, $data_weapons,
$data_armors, $data_enemies, $data_states]
for group in groups
for obj in group
next if obj.nil?
obj.load_notetags_scm
end
end
end
end # DataManager
#==============================================================================
# ? RPG::BaseItem
#==============================================================================
class RPG::BaseItem
#--------------------------------------------------------------------------
# public instance variables
#--------------------------------------------------------------------------
attr_accessor :tp_cost_rate
attr_accessor :hp_cost_rate
attr_accessor :gold_cost_rate
#--------------------------------------------------------------------------
# common cache: load_notetags_scm
#--------------------------------------------------------------------------
def load_notetags_scm
@tp_cost_rate = 1.0
@hp_cost_rate = 1.0
@gold_cost_rate = 1.0
#---
self.note.split(/[\r\n]+/).each { |line|
case line
#---
when YEA::REGEXP::BASEITEM::TP_COST_RATE
@tp_cost_rate = $1.to_i * 0.01
when YEA::REGEXP::BASEITEM::HP_COST_RATE
@hp_cost_rate = $1.to_i * 0.01
when YEA::REGEXP::BASEITEM::GOLD_COST_RATE
@gold_cost_rate = $1.to_i * 0.01
#---
end
} # self.note.split
#---
end
end # RPG::BaseItem
#==============================================================================
# ? RPG::Skill
#==============================================================================
class RPG::Skill < RPG::UsableItem
#--------------------------------------------------------------------------
# public instance variables
#--------------------------------------------------------------------------
attr_accessor :hp_cost
attr_accessor :hp_cost_percent
attr_accessor :mp_cost_percent
attr_accessor :tp_cost_percent
attr_accessor :gold_cost
attr_accessor :gold_cost_percent
attr_accessor :hp_cost_min
attr_accessor :hp_cost_max
attr_accessor :mp_cost_min
attr_accessor :mp_cost_max
attr_accessor :tp_cost_min
attr_accessor :tp_cost_max
attr_accessor :gold_cost_min
attr_accessor :gold_cost_max
attr_accessor :use_custom_cost
attr_accessor :custom_cost_text
attr_accessor :custom_cost_colour
attr_accessor :custom_cost_size
attr_accessor :custom_cost_icon
attr_accessor :custom_cost_requirement
attr_accessor :custom_cost_perform
#--------------------------------------------------------------------------
# common cache: load_notetags_scm
#--------------------------------------------------------------------------
def load_notetags_scm
@hp_cost = 0
@gold_cost = 0
@hp_cost_percent = 0.0
@mp_cost_percent = 0.0
@tp_cost_percent = 0.0
@gold_cost_percent = 0.0
@custom_cost_text = "0"
@custom_cost_colour = 0
@custom_cost_size = 20
@custom_cost_icon = 0
@custom_cost_requirement = ""
@custom_cost_perform = ""
@use_custom_cost = false
@custom_cost_req_on = false
@custom_cost_per_on = false
#---
self.note.split(/[\r\n]+/).each { |line|
case line
#---
when YEA::REGEXP::SKILL::MP_COST_SET
@mp_cost = $1.to_i
when YEA::REGEXP::SKILL::MP_COST_PER
@mp_cost_percent = $1.to_i * 0.01
when YEA::REGEXP::SKILL::TP_COST_SET
@tp_cost = $1.to_i
when YEA::REGEXP::SKILL::TP_COST_PER
@tp_cost_percent = $1.to_i * 0.01
when YEA::REGEXP::SKILL::HP_COST_SET
@hp_cost = $1.to_i
when YEA::REGEXP::SKILL::HP_COST_PER
@hp_cost_percent = $1.to_i * 0.01
when YEA::REGEXP::SKILL::GOLD_COST_SET
@gold_cost = $1.to_i
when YEA::REGEXP::SKILL::GOLD_COST_PER
@gold_cost_percent = $1.to_i * 0.01
#---
when YEA::REGEXP::SKILL::HP_COST_MIN
@hp_cost_min = $1.to_i
when YEA::REGEXP::SKILL::HP_COST_MAX
@hp_cost_max = $1.to_i
when YEA::REGEXP::SKILL::MP_COST_MIN
@mp_cost_min = $1.to_i
when YEA::REGEXP::SKILL::MP_COST_MAX
@mp_cost_max = $1.to_i
when YEA::REGEXP::SKILL::TP_COST_MIN
@tp_cost_min = $1.to_i
when YEA::REGEXP::SKILL::TP_COST_MAX
@tp_cost_max = $1.to_i
when YEA::REGEXP::SKILL::GOLD_COST_MIN
@gold_cost_min = $1.to_i
when YEA::REGEXP::SKILL::GOLD_COST_MAX
@gold_cost_max = $1.to_i
#---
when YEA::REGEXP::SKILL::CUSTOM_COST_TEXT
@custom_cost_text = $1.to_s
when YEA::REGEXP::SKILL::CUSTOM_COST_COLOUR
@custom_cost_colour = $1.to_i
when YEA::REGEXP::SKILL::CUSTOM_COST_SIZE
@custom_cost_size = $1.to_i
when YEA::REGEXP::SKILL::CUSTOM_COST_ICON
@custom_cost_icon = $1.to_i
when YEA::REGEXP::SKILL::CUSTOM_COST_REQUIREMENT_ON
@custom_cost_req_on = true
@use_custom_cost = true
when YEA::REGEXP::SKILL::CUSTOM_COST_REQUIREMENT_OFF
@custom_cost_req_on = false
@use_custom_cost = true
when YEA::REGEXP::SKILL::CUSTOM_COST_PERFORM_ON
@custom_cost_per_on = true
@use_custom_cost = true
when YEA::REGEXP::SKILL::CUSTOM_COST_PERFORM_OFF
@custom_cost_per_on = false
@use_custom_cost = true
else
@custom_cost_requirement += line.to_s if @custom_cost_req_on
@custom_cost_perform += line.to_s if @custom_cost_per_on
#---
end
} # self.note.split
#---
end
end # RPG::Skill
#==============================================================================
# ? Game_BattlerBase
#==============================================================================
class Game_BattlerBase
#--------------------------------------------------------------------------
# alias method: skill_cost_payable?
#--------------------------------------------------------------------------
alias game_battlerbase_skill_cost_payable_scm skill_cost_payable?
def skill_cost_payable?(skill)
return false if hp <= skill_hp_cost(skill)
return false unless gold_cost_met?(skill)
return false unless custom_cost_met?(skill)
return game_battlerbase_skill_cost_payable_scm(skill)
end
#--------------------------------------------------------------------------
# new method: gold_cost_met?
#--------------------------------------------------------------------------
def gold_cost_met?(skill)
return true unless actor?
return $game_party.gold >= skill_gold_cost(skill)
end
#--------------------------------------------------------------------------
# new method: custom_cost_met?
#--------------------------------------------------------------------------
def custom_cost_met?(skill)
return true unless skill.use_custom_cost
return eval(skill.custom_cost_requirement)
end
#--------------------------------------------------------------------------
# alias method: pay_skill_cost
#--------------------------------------------------------------------------
alias game_battlerbase_pay_skill_cost_scm pay_skill_cost
def pay_skill_cost(skill)
game_battlerbase_pay_skill_cost_scm(skill)
self.hp -= skill_hp_cost(skill)
$game_party.lose_gold(skill_gold_cost(skill)) if actor?
pay_custom_cost(skill)
end
#--------------------------------------------------------------------------
# new method: pay_custom_cost
#--------------------------------------------------------------------------
def pay_custom_cost(skill)
return unless skill.use_custom_cost
eval(skill.custom_cost_perform)
end
#--------------------------------------------------------------------------
# alias method: skill_mp_cost
#--------------------------------------------------------------------------
alias game_battlerbase_skill_mp_cost_scm skill_mp_cost
def skill_mp_cost(skill)
n = game_battlerbase_skill_mp_cost_scm(skill)
n += skill.mp_cost_percent * mmp * mcr
n = [n.to_i, skill.mp_cost_max].min unless skill.mp_cost_max.nil?
n = [n.to_i, skill.mp_cost_min].max unless skill.mp_cost_min.nil?
return n.to_i
end
#--------------------------------------------------------------------------
# alias method: skill_tp_cost
#--------------------------------------------------------------------------
alias game_battlerbase_skill_tp_cost_scm skill_tp_cost
def skill_tp_cost(skill)
n = game_battlerbase_skill_tp_cost_scm(skill) * tcr
n += skill.tp_cost_percent * max_tp * tcr
n = [n.to_i, skill.tp_cost_max].min unless skill.tp_cost_max.nil?
n = [n.to_i, skill.tp_cost_min].max unless skill.tp_cost_min.nil?
return n.to_i
end
#--------------------------------------------------------------------------
# new method: tcr
#--------------------------------------------------------------------------
def tcr
n = 1.0
if actor?
n *= self.actor.tp_cost_rate
n *= self.class.tp_cost_rate
for equip in equips
next if equip.nil?
n *= equip.tp_cost_rate
end
else
n *= self.enemy.tp_cost_rate
if $imported["YEA-Doppelganger"] && !self.class.nil?
n *= self.class.tp_cost_rate
end
end
for state in states
next if state.nil?
n *= state.tp_cost_rate
end
return n
end
#--------------------------------------------------------------------------
# new method: skill_hp_cost
#--------------------------------------------------------------------------
def skill_hp_cost(skill)
n = skill.hp_cost * hcr
n += skill.hp_cost_percent * mhp * hcr
n = [n.to_i, skill.hp_cost_max].min unless skill.hp_cost_max.nil?
n = [n.to_i, skill.hp_cost_min].max unless skill.hp_cost_min.nil?
return n.to_i
end
#--------------------------------------------------------------------------
# new method: hcr
#--------------------------------------------------------------------------
def hcr
n = 1.0
if actor?
n *= self.actor.hp_cost_rate
n *= self.class.hp_cost_rate
for equip in equips
next if equip.nil?
n *= equip.hp_cost_rate
end
else
n *= self.enemy.hp_cost_rate
if $imported["YEA-Doppelganger"] && !self.class.nil?
n *= self.class.hp_cost_rate
end
end
for state in states
next if state.nil?
n *= state.hp_cost_rate
end
return n
end
#--------------------------------------------------------------------------
# new method: skill_gold_cost
#--------------------------------------------------------------------------
def skill_gold_cost(skill)
n = skill.gold_cost * gcr
n += skill.gold_cost_percent * $game_party.gold * gcr
n = [n.to_i, skill.gold_cost_max].min unless skill.gold_cost_max.nil?
n = [n.to_i, skill.gold_cost_min].max unless skill.gold_cost_min.nil?
return n.to_i
end
#--------------------------------------------------------------------------
# new method: gcr
#--------------------------------------------------------------------------
def gcr
n = 1.0
n *= self.actor.gold_cost_rate
n *= self.class.gold_cost_rate
for equip in equips
next if equip.nil?
n *= equip.gold_cost_rate
end
for state in states
next if state.nil?
n *= state.gold_cost_rate
end
return n
end
end # Game_BattlerBase
#==============================================================================
# ? Window_Base
#==============================================================================
class Window_Base < Window
#--------------------------------------------------------------------------
# overwrite methods: cost_colours
#--------------------------------------------------------------------------
def mp_cost_color; text_color(YEA::SKILL_COST::MP_COST_COLOUR); end;
def tp_cost_color; text_color(YEA::SKILL_COST::TP_COST_COLOUR); end;
def hp_cost_color; text_color(YEA::SKILL_COST::HP_COST_COLOUR); end;
def gold_cost_color; text_color(YEA::SKILL_COST::GOLD_COST_COLOUR); end;
end # Window_Base
#==============================================================================
# ? Window_SkillList
#==============================================================================
class Window_SkillList < Window_Selectable
#--------------------------------------------------------------------------
# overwrite method: draw_skill_cost
#--------------------------------------------------------------------------
def draw_skill_cost(rect, skill)
draw_tp_skill_cost(rect, skill) unless $imported["YEA-BattleEngine"]
draw_mp_skill_cost(rect, skill)
draw_tp_skill_cost(rect, skill) if $imported["YEA-BattleEngine"]
draw_hp_skill_cost(rect, skill)
draw_gold_skill_cost(rect, skill)
draw_custom_skill_cost(rect, skill)
end
#--------------------------------------------------------------------------
# new method: draw_mp_skill_cost
#--------------------------------------------------------------------------
def draw_mp_skill_cost(rect, skill)
return unless @actor.skill_mp_cost(skill) > 0
change_color(mp_cost_color, enable?(skill))
#---
icon = Icon.mp_cost
if icon > 0
draw_icon(icon, rect.x + rect.width-24, rect.y, enable?(skill))
rect.width -= 24
end
#---
contents.font.size = YEA::SKILL_COST::MP_COST_SIZE
cost = @actor.skill_mp_cost(skill)
text = sprintf(YEA::SKILL_COST::MP_COST_SUFFIX, cost.group)
draw_text(rect, text, 2)
cx = text_size(text).width + 4
rect.width -= cx
reset_font_settings
end
#--------------------------------------------------------------------------
# new method: draw_tp_skill_cost
#--------------------------------------------------------------------------
def draw_tp_skill_cost(rect, skill)
return unless @actor.skill_tp_cost(skill) > 0
change_color(tp_cost_color, enable?(skill))
#---
icon = Icon.tp_cost
if icon > 0
draw_icon(icon, rect.x + rect.width-24, rect.y, enable?(skill))
rect.width -= 24
end
#---
contents.font.size = YEA::SKILL_COST::TP_COST_SIZE
cost = @actor.skill_tp_cost(skill)
text = sprintf(YEA::SKILL_COST::TP_COST_SUFFIX, cost.group)
draw_text(rect, text, 2)
cx = text_size(text).width + 4
rect.width -= cx
reset_font_settings
end
#--------------------------------------------------------------------------
# new method: draw_hp_skill_cost
#--------------------------------------------------------------------------
def draw_hp_skill_cost(rect, skill)
return unless @actor.skill_hp_cost(skill) > 0
change_color(hp_cost_color, enable?(skill))
#---
icon = Icon.hp_cost
if icon > 0
draw_icon(icon, rect.x + rect.width-24, rect.y, enable?(skill))
rect.width -= 24
end
#---
contents.font.size = YEA::SKILL_COST::HP_COST_SIZE
cost = @actor.skill_hp_cost(skill)
text = sprintf(YEA::SKILL_COST::HP_COST_SUFFIX, cost.group)
draw_text(rect, text, 2)
cx = text_size(text).width + 4
rect.width -= cx
reset_font_settings
end
#--------------------------------------------------------------------------
# new method: draw_gold_skill_cost
#--------------------------------------------------------------------------
def draw_gold_skill_cost(rect, skill)
return unless @actor.skill_gold_cost(skill) > 0
change_color(gold_cost_color, enable?(skill))
#---
icon = Icon.gold_cost
if icon > 0
draw_icon(icon, rect.x + rect.width-24, rect.y, enable?(skill))
rect.width -= 24
end
#---
contents.font.size = YEA::SKILL_COST::GOLD_COST_SIZE
cost = @actor.skill_gold_cost(skill)
text = sprintf(YEA::SKILL_COST::GOLD_COST_SUFFIX, cost.group)
draw_text(rect, text, 2)
cx = text_size(text).width + 4
rect.width -= cx
reset_font_settings
end
#--------------------------------------------------------------------------
# new method: draw_custom_skill_cost
#--------------------------------------------------------------------------
def draw_custom_skill_cost(rect, skill)
return unless skill.use_custom_cost
change_color(text_color(skill.custom_cost_colour), enable?(skill))
icon = skill.custom_cost_icon
if icon > 0
draw_icon(icon, rect.x + rect.width-24, rect.y, enable?(skill))
rect.width -= 24
end
contents.font.size = skill.custom_cost_size
text = skill.custom_cost_text
draw_text(rect, text, 2)
cx = text_size(text).width + 4
rect.width -= cx
reset_font_settings
end
end # Window_SkillList
#==============================================================================
#
# ? End of File
#
#==============================================================================
Sorry for not being spacific. RPG MAKER VX. I can't use ace on this old pc.
I can't recall for certain, but I believe my Equipment Constraints (http://rmrk.net/index.php/topic,27955.0.html) script had an option to do that.
Please tell us if that solved it, otherwise I can put together something.
I'm testing it now I hope it works with my other scripts lol. Thanks guys.
I'm doing tutorials on RPG MAKER VX on youtube and people asked me about this so I'm looking for something like their requests then i'm going to learn how to use the script and make a video on how to use it. So if this works with the scripts in question by my viewers. I'll be greatful and glad i joined this site.
Turns out even if you don't have the items in inventory you can cast the spell.. Sorry it won't work for what i'm looking for. Thanks for trying though.
I found one that works just wish it would either tell you how many times you can cast it or items remaining that the spell requires.
#==============================================================================
# ** Skill Consume Items by RPGI
#------------------------------------------------------------------------------
# This scrip allows the creation of skills that require items to use and
# consume the items when used.
#
# How to use:
# To define a skill that consumes an item, place in it's notebox:
# <requireitem=ID,N> where N = the number required
# ID = the ID of the item required
#
#==============================================================================
class Game_Actor < Game_Battler
alias ri_skill_can_use? skill_can_use? unless $@
def skill_can_use?(skill)
return false unless have_skill_items?(skill)
ri_skill_can_use?(skill)
end
def have_skill_items?(skill)
data = skill.requireitem
return true if data.empty?
return true if $game_party.item_number($data_items[data[0]]) >= data[1]
end
end
class Scene_Battle < Scene_Base
alias ri_execute_action_skill execute_action_skill
def execute_action_skill
req_item_data = @active_battler.action.skill.requireitem
unless req_item_data.empty?
$game_party.gain_item($data_items[req_item_data[0]], -req_item_data[1])
end
ri_execute_action_skill
end
end
class RPG::UsableItem
def requireitem
result = []
if self.note[/<requireitem=(.+)>/] != nil then
result = $1.split(",").map { |data| data.to_i }
end
return result
end
end