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.

Could someone modify the materia script for me? (Only need the stat modifiers)

I want to use sephy's materia script but only for the stat modifiers, I don't want the magic, summoning and skills part .Could anyone modify this for me I already tried but I could't figure it out properly :(

Here's the code:

#==============================================================================
# Materia System
#==============================================================================
# SephirothSpawn
# 1.28.06
# Version 2.01
#==============================================================================

#------------------------------------------------------------------------------
# * Explanations:
#------------------------------------------------------------------------------
# ~ Weapon & Armor Materia Slots
# - Basic Syntax: Item ID # => Slots Array
# - Slots Array: [Number of Paired Slots, Single Slots]
# ** You must not exceed 8 (Paired * 2 + Single * 1 <= 10)
# ~ Materia List
# * Creating Your Own Materia
# - Basic Syntax: Materia.new(id, name, type, stat_effects,
# elements, states, new_value, m_value,
# skills, exp_levels, special_effect)
#
# - id : The Idea Number of you materia. Start from 1 and add 1
# - name : The Name of your materia
# - type : The Type Of Materia. Choose From One of The Following:
# 'Skill', 'Command', 'Summon', 'Support', 'Independent'
# - stat_effects : The Percent of each stat that materia will effect
# [ Hp, Sp, Str, Dex, Agi, Int ]
# - elements : An Array of each Element ID from the systems tab
# - states : An Array of each State Id from the Status tab
# - new_value : The cost to buy the Materia
# - master_value : The value of the Materia when Mastered
# - Skills : An array of the skills you learn from the Materia.
# (Use for Skill, Command & Summon)
# - Exp Levels : An array of the experience required to level
# The First value in the array is required to get level 2
# - Special Effect : A special Effect of the Materia.
# ~ All
# ~ Elemental
# ~ Status
# ~ Steal As Well
# ~ HP Absorb
# ~ MP Absorb
# ~ MP Turbo
# ~ Exp Plus
# ~ Gil Plus
# ~ HP Plus
# ~ SP Plus
# ~ Strength Plus
# ~ Defense Plus
# ~ Speed Plus
# ~ Magic Plus
#------------------------------------------------------------------------------

#------------------------------------------------------------------------------
# * SDK Log Script
#------------------------------------------------------------------------------
SDK.log('Materia System', 'SephirothSpawn', 1, '1.27.06')

#------------------------------------------------------------------------------
# * Begin SDK Enable Test
#------------------------------------------------------------------------------

if SDK.state('Materia System') == true

#==============================================================================
# ** RPG
#==============================================================================

module RPG

#============================================================================
# ** Weapon
#============================================================================
class Weapon
#--------------------------------------------------------------------------
# * Public Instance Variables
#--------------------------------------------------------------------------
attr_accessor :paired_materia
attr_accessor :single_materia
#--------------------------------------------------------------------------
# * Set Materia Slots
#--------------------------------------------------------------------------
def set_materia_slots(slots)
@paired_materia, @single_materia = slots[0], slots[1]
end
end

#============================================================================
# ** Armor
#============================================================================
class Armor
#--------------------------------------------------------------------------
# * Public Instance Variables
#--------------------------------------------------------------------------
attr_accessor :paired_materia
attr_accessor :single_materia
#--------------------------------------------------------------------------
# * Set Materia Slots
#--------------------------------------------------------------------------
def set_materia_slots(slots)
@paired_materia, @single_materia = slots[0], slots[1]
end
end
end

#==============================================================================
# ** Materia
#==============================================================================

class Materia
#--------------------------------------------------------------------------
# * Public Instance Variables
#--------------------------------------------------------------------------
attr_reader :id
attr_accessor :name
attr_accessor :type
attr_accessor :stat_effects
attr_accessor :elements
attr_accessor :states
attr_accessor :new_value
attr_accessor :master_value
attr_accessor :skills
attr_accessor :exp_levels
attr_accessor :special_effect
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize(id, name, type, stat_effects = [], elements = [], states = [],
n_value = 500, m_value = 1000, skills = [], exp_levels = [], s_effect = nil)
# Sets Parameters
@id, @name, @type, @stat_effects, @elements, @states,
@new_value, @master_value, @skills, @exp_levels, @special_effect =
id, name, type, stat_effects, elements, states,
n_value, m_value, skills, exp_levels, s_effect
# Sets Exp
@experience = 0
end
#--------------------------------------------------------------------------
# * Experince
#--------------------------------------------------------------------------
def experience
return @experience
end
#--------------------------------------------------------------------------
# * Experince
#--------------------------------------------------------------------------
def experience=(num)
@experience = [num, @exp_levels[@exp_levels.size - 1]].min
end
#--------------------------------------------------------------------------
# * Level
#--------------------------------------------------------------------------
def level
for i in 0...@exp_levels.size
if @experience >= @exp_levels[@exp_levels.size - (1 + i)]
return @exp_levels.size - i + 1
end
end
return 1
end
#--------------------------------------------------------------------------
# * Buy Value
#--------------------------------------------------------------------------
def buy_value
return @new_value
end
#--------------------------------------------------------------------------
# * Sell Value
#--------------------------------------------------------------------------
def sell_value
return [(@master_value * (@experience / @exp_levels[@exp_levels.size - 1].to_f)).to_i,
@new_value / 2].max
end
#--------------------------------------------------------------------------
# * Get Hue
#--------------------------------------------------------------------------
def get_hue
case @type
when 'Skill'
hue = 130
when 'Command'
hue = 60
when 'Summon'
hue = 10
when 'Support'
hue = 180
when 'Independent'
hue = 300
end
return hue
end
end

#==============================================================================
# ** Materia_System
#==============================================================================

module Materia_System

#==============================================================================
# ** CONSTANTS
#==============================================================================

# ~ Weapons Materia Slots
WEAPON_MATERIA_SLOTS = {
1 => [1, 1], 2 => [1, 2], 3 => [2, 2], 4 => [4, 0],
5 => [1, 1], 6 => [1, 2], 7 => [2, 2], 8 => [4, 0],
9 => [1, 1], 10 => [1, 2], 11 => [2, 2], 12 => [4, 0],
13 => [1, 1], 14 => [1, 2], 15 => [2, 2], 16 => [4, 0],
17 => [1, 1], 18 => [1, 2], 19 => [2, 2], 20 => [4, 0],
21 => [1, 1], 22 => [1, 2], 23 => [2, 2], 24 => [4, 0],
25 => [1, 1], 26 => [1, 2], 27 => [2, 2], 28 => [4, 0],
29 => [1, 1], 30 => [1, 2], 31 => [2, 2], 32 => [4, 0]
}
# ~ Armors Materia Slots
ARMORS_MATERIA_SLOTS = {
1 => [1, 1], 2 => [1, 2], 3 => [2, 2], 4 => [4, 0],
5 => [1, 1], 6 => [1, 2], 7 => [2, 2], 8 => [4, 0],
9 => [1, 1], 10 => [1, 2], 11 => [2, 2], 12 => [4, 0],
13 => [1, 1], 14 => [1, 2], 15 => [2, 2], 16 => [4, 0],
17 => [1, 1], 18 => [1, 2], 19 => [2, 2], 20 => [4, 0],
21 => [1, 1], 22 => [1, 2], 23 => [2, 2], 24 => [4, 0],
25 => [1, 1], 26 => [1, 2], 27 => [2, 2], 28 => [4, 0],
29 => [1, 1], 30 => [1, 2], 31 => [2, 2], 32 => [4, 0]
}
# ~ Materia List
# (id, name, type, stat_effects = [], elements = [], states = [],
# n_value = 500, m_value = 1000, skills = [], exp_levels = [], s_effect = nil)
MATERIA_LIST = [nil,
# Skill Materia
Materia.new(1, 'Heal', 'Skill', [ -5, 5, -3, 0, 0, 3 ], [], [], 1000, 10000,
[1, 2, 3, 6], [1000, 3000, 6000, 10000]),
Materia.new(2,'Remedy', 'Skill', [ -4, 4, -3, 0, 0, 3 ], [], [], 750, 5000,
[4, 5], [2500, 5000]),
Materia.new(3, 'Fire', 'Skill', [ -3, 3, -1, 0, 0, 1 ], [1], [], 1000, 7500,
[7, 8, 9], [1000, 3000, 7500]),
Materia.new(4, 'Ice', 'Skill', [ -3, 3, -1, 0, 0, 1 ], [2], [], 1000, 7500,
[10, 11, 12], [1000, 3000, 7500]),
Materia.new(5, 'Electric', 'Skill', [ -3, 3, -1, 0, 0, 1 ], [3], [], 1000, 7500,
[13, 14, 15], [1000, 3000, 7500]),
Materia.new(6, 'Water', 'Skill', [ -3, 3, -1, 0, 0, 1 ], [4], [], 1000, 7500,
[16, 17, 18], [1000, 3000, 7500]),
Materia.new(7, 'Earth', 'Skill', [ -3, 3, -1, 0, 0, 1 ], [5], [], 1000, 7500,
[19, 20, 21], [1000, 3000, 7500]),
Materia.new(8, 'Wind', 'Skill', [ -3, 3, -1, 0, 0, 1 ], [6], [], 1000, 7500,
[22, 23, 24], [1000, 3000, 7500]),
Materia.new(9, 'Light', 'Skill', [ -5, 5, -3, 0, 0, 3 ], [7], [], 1000, 7500,
[25, 26, 27], [1000, 3000, 7500]),
Materia.new(10, 'Dark', 'Skill', [ -5, 5, -3, 0, 0, 3 ], [8], [], 1000, 7500,
[28, 29, 30], [1000, 3000, 7500]),
Materia.new(11, 'Negla', 'Skill', [ -4, 4, -2, 0, 0, 2 ], [], [], 1500, 7500,
[31, 32], [3000, 7500]),
Materia.new(12, 'Poison', 'Skill', [ -2, 2, 0, 0, 0, 0 ], [], [3], 750, 4500,
[33, 34], [1500, 4500]),
Materia.new(13, 'Dizzy', 'Skill', [ -2, 2, 0, 0, 0, 0 ], [], [4], 750, 4500,
[35, 36], [1500, 4500]),
Materia.new(14, 'Mute', 'Skill', [ -2, 2, 0, 0, 0, 0 ], [], [5], 750, 4500,
[37, 38], [1500, 4500]),
Materia.new(15, 'Confuse', 'Skill', [ -2, 2, 0, 0, 0, 0 ], [], [6], 750, 4500,
[39, 40], [1500, 4500]),
Materia.new(16, 'Sleep', 'Skill', [ -2, 2, 0, 0, 0, 0 ], [], [7], 750, 4500,
[41, 42], [1500, 4500]),
Materia.new(17, 'Paraylze', 'Skill', [ -2, 2, 0, 0, 0, 0 ], [], [8], 750, 4500,
[43, 44], [1500, 4500]),
Materia.new(18, 'Weak', 'Skill', [ -2, 2, 0, 0, 0, 0 ], [], [9], 750, 4500,
[45, 46], [1500, 4500]),
Materia.new(19, 'Clumbsiness', 'Skill', [ -2, 2, 0, 0, 0, 0 ], [], [10], 750, 4500,
[47, 48], [1500, 4500]),
Materia.new(20, 'Delayed', 'Skill', [ -2, 2, 0, 0, 0, 0 ], [], [11], 750, 4500,
[49, 50], [1500, 4500]),
Materia.new(21, 'Enfeebled', 'Skill', [ -2, 2, 0, 0, 0, 0 ], [], [12], 750, 4500,
[51, 52], [1500, 4500]),
Materia.new(22, 'Sharpen', 'Skill', [ -2, 2, 0, 0, 0, 0 ], [], [13], 750, 4500,
[53], [3000]),
Materia.new(23, 'Barrier', 'Skill', [ -2, 2, 0, 0, 0, 0 ], [], [14], 750, 4500,
[54], [3000]),
Materia.new(24, 'Resist', 'Skill', [ -2, 2, 0, 0, 0, 0 ], [], [15], 750, 4500,
[55], [3000]),
Materia.new(25, 'Blink', 'Skill', [ -2, 2, 0, 0, 0, 0 ], [], [16], 750, 4500,
[56], [3000]),
# Command Materia
Materia.new(26, 'Fighter', 'Command', [0, 0, 5, 3, - 3, - 5], [], [], 3000, 20000,
[57, 58, 59, 60], [2500, 5000, 9000, 14000, 2000]),
Materia.new(27, 'Lancer', 'Command', [0, 0, 4, 4, - 4, - 4], [], [], 3000, 20000,
[61, 62, 63, 64], [2500, 5000, 9000, 14000, 2000]),
Materia.new(28, 'Warrior', 'Command', [0, 0, 7, 2, - 2, - 7], [], [], 3000, 20000,
[65, 66, 67, 68], [2500, 5000, 9000, 14000, 2000]),
Materia.new(29, 'Thief', 'Command', [0, 0, 1, 8, - 8, - 1], [], [], 3000, 20000,
[69, 70, 71, 72], [2500, 5000, 9000, 14000, 2000]),
Materia.new(30, 'Hunter', 'Command', [2, 2, 2, 2, 2, 2], [], [], 3000, 20000,
[73, 74, 75, 76], [2500, 5000, 9000, 14000, 2000]),
Materia.new(31, 'Gunner', 'Command', [0, 4, 4, 0, 4, 0], [], [], 3000, 20000,
[77, 78, 79, 80], [2500, 5000, 9000, 14000, 2000]),
# Summon Materia (Not real summons, but you would set them up the same
Materia.new(32, 'Summon 1', 'Summon', [-10, 10, -5, -5, 0, 10], [], [], 5000, 25000,
[60, 64], [6500, 15000, 25000]),
Materia.new(33, 'Summon 2', 'Summon', [-10, 10, -5, -5, 0, 10], [], [], 5000, 25000,
[68, 72], [6500, 15000, 25000]),
Materia.new(34, 'Summon 3', 'Summon', [-10, 10, -5, -5, 0, 10], [], [], 5000, 25000,
[76, 80], [6500, 15000, 25000]),
# Support Materia
Materia.new(35, 'All', 'Support', [0, 0, 0, 0, 0, 0], [], [], 2000, 10000,
[], [2000, 4000, 7000, 11000], 'All'),
Materia.new(36, 'Elemental', 'Support', [0, 0, 0, 0, 0, 0], [], [], 2000, 10000,
[], [2000, 4000, 7000, 11000], 'Elemental'),
Materia.new(37, 'Status', 'Support', [0, 0, 0, 0, 0, 0], [], [], 2000, 10000,
[], [2000, 4000, 7000, 11000], 'Status'),
Materia.new(38, 'Steal as well', 'Support', [0, 0, 0, 0, 0, 0], [], [], 2000, 10000,
[], [2000, 4000, 7000, 11000], 'Steal as well'),
Materia.new(39, 'HP Absorb', 'Support', [0, 0, 0, 0, 0, 0], [], [], 2000, 10000,
[], [2000, 4000, 7000, 11000], 'HP Absorb'),
Materia.new(40, 'MP Absorb', 'Support', [0, 0, 0, 0, 0, 0], [], [], 2000, 10000,
[], [2000, 4000, 7000, 11000], 'MP Absorb'),
Materia.new(41, 'MP Turbo', 'Support', [0, 0, 0, 0, 0, 0], [], [], 2000, 10000,
[], [2000, 4000, 7000, 11000], 'MP Turbo'),
# Independent Mater
Materia.new(42, 'Exp Plus', 'Independent', [0, 0, 0, 0, 0, 0], [], [], 2000, 10000,
[], [2000, 4000, 7000, 11000], 'Exp Plus'),
Materia.new(43, 'Gil Plus', 'Independent', [0, 0, 0, 0, 0, 0], [], [], 2000, 10000,
[], [2000, 4000, 7000, 11000], 'Gil Plus'),
Materia.new(44, 'HP Plus', 'Independent', [0, 0, 0, 0, 0, 0], [], [], 2000, 10000,
[], [2000, 4000, 7000, 11000], 'HP Plus'),
Materia.new(45, 'SP Plus', 'Independent', [0, 0, 0, 0, 0, 0], [], [], 2000, 10000,
[], [2000, 4000, 7000, 11000], 'SP Plus'),
Materia.new(46, 'Strength Plus', 'Independent', [0, 0, 0, 0, 0, 0], [], [], 2000, 10000,
[], [2000, 4000, 7000, 11000], 'Strength Plus'),
Materia.new(47, 'Defense Plus', 'Independent', [0, 0, 0, 0, 0, 0], [], [], 2000, 10000,
[], [2000, 4000, 7000, 11000], 'Defense Plus'),
Materia.new(48, 'Speed Plus', 'Independent', [0, 0, 0, 0, 0, 0], [], [], 2000, 10000,
[], [2000, 4000, 7000, 11000], 'Speed Plus'),
Materia.new(49, 'Magic Plus', 'Independent', [0, 0, 0, 0, 0, 0], [], [], 2000, 10000,
[], [2000, 4000, 7000, 11000], 'Magic Plus')
]
end

#==============================================================================
# ** Game_Battler (part 3)
#==============================================================================

class Game_Battler
#--------------------------------------------------------------------------
# * Alias Listings
#--------------------------------------------------------------------------
alias seph_materiasystem_gamebattler_skilleffect skill_effect
#--------------------------------------------------------------------------
# * Apply Skill Effects
# user : the one using skills (battler)
# skill : skill
#--------------------------------------------------------------------------
def skill_effect(user, skill)
# Orginal Skill Effects Method
seph_materiasystem_gamebattler_skilleffect(user, skill)
if user.is_a?(Game_Actor)
# Gets Paired Materia
materia_set = user.return_paired_materia
for paired_set in materia_set
materia = paired_set[2]
other_materia = paired_set[3]
# HP Absorb
if materia.special_effect == 'HP Absorb'
for skill_id in other_materia.skills
unless skill_id == 0
m_skill = $data_skills[skill_id]
if skill == m_skill
hp = (user.maxhp * 0.1).to_i
user.hp += [hp, user.maxhp - hp].min
user.damage = - [hp, user.maxhp - hp].min
user.damage_pop = true
end
end
end
end
# MP Absorb
if materia.special_effect == 'MP Absorb'
for skill_id in other_materia.skills
unless skill_id == 0
m_skill = $data_skills[skill_id]
if skill == m_skill
sp = (user.maxsp * 0.1).to_i
user.sp += [sp, user.maxsp - sp].min
user.damage = - [sp, user.maxsp - sp].min
user.damage_pop = true
end
end
end
end
# MP Turbo
if materia.special_effect == 'MP Turbo'
for skill_id in other_materia.skills
unless skill_id == 0
m_skill = $data_skills[skill_id]
if skill == m_skill
unless user.sp < skill.sp_cost * 2
if self.damage > 0
self.damage *= 2
user.sp -= skill.sp_cost
user.damage = 'MP TURBO!'
user.damage_pop = true
end
end
end
end
end
end
# Steal As Well
if materia.special_effect == 'Steal as well'
for skill_id in other_materia.skills
unless skill_id == 0
m_skill = $data_skills[skill_id]
if skill == m_skill
if self.is_a?(Game_Battler)
if (rand(100) < self.treasure_prob)
unless self.item_id == 0
item = $data_items[self.item_id]
end
unless self.weapon_id == 0
item = $data_weapons[self.weapon_id]
end
unless self.armor_id == 0
item = $data_armors[self.armor_id]
end
unless item.nil?
case item
when RPG::Item
$game_party.gain_item(self.item_id, 1)
when RPG::Weapon
$game_party.gain_weapon(self.weapon_id, 1)
when RPG::Armor
$game_party.gain_armor(self.armor_id, 1)
end
user.damage = "Stole #{item.name}"
user.damage_pop = true
end
end
end
end
end
end
end
end
end
end
end

#==============================================================================
# ** Game_Actor
#==============================================================================

class Game_Actor
#--------------------------------------------------------------------------
# * Public Instance Variables
#--------------------------------------------------------------------------
attr_accessor :weapon_materia
attr_accessor :armor1_materia
attr_accessor :armor2_materia
attr_accessor :armor3_materia
attr_accessor :armor4_materia
attr_accessor :materia_skills
#--------------------------------------------------------------------------
# * Alias Listings
#--------------------------------------------------------------------------
alias seph_materiasystem_gameactor_init initialize
alias seph_materiasystem_gameactor_setup setup
alias seph_materiasystem_gameactor_skills skills
alias seph_materiasystem_gameactor_maxhp maxhp
alias seph_materiasystem_gameactor_maxsp maxsp
alias seph_materiasystem_gameactor_str str
alias seph_materiasystem_gameactor_dex dex
alias seph_materiasystem_gameactor_agi agi
alias seph_materiasystem_gameactor_int int
alias seph_materiasystem_gameactor_equip equip
alias seph_materiasystem_gameactor_exp exp
alias seph_materiasystem_gameactor_elementrate element_rate
alias seph_materiasystem_gameactor_stateguard? state_guard?
alias seph_materiasystem_gameactor_elementset element_set
alias seph_materiasystem_gameactor_plusstateset plus_state_set
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize(actor_id)
# Sets Up Materia Slots
@weapon_materia = Array.new
@armor1_materia = Array.new
@armor2_materia = Array.new
@armor3_materia = Array.new
@armor4_materia = Array.new
# Orginal Initialization Method
seph_materiasystem_gameactor_init(actor_id)
end
#--------------------------------------------------------------------------
# * Setup
#--------------------------------------------------------------------------
def setup(actor_id)
# Orginal Setup Method
seph_materiasystem_gameactor_setup(actor_id)
# Materia Skills
@materia_skills = []
# Adds Weapon Materia
sn = $data_weapons[@weapon_id].paired_materia * 2 +
$data_weapons[@weapon_id].single_materia unless @weapon_id == 0
@weapon_materia = @weapon_id == 0 ? [] : Array.new(sn, nil)
# Adds Shield Materia
sn = $data_armors[@armor1_id].paired_materia * 2 +
$data_armors[@armor1_id].single_materia unless @armor1_id == 0
@armor1_materia = @armor1_id == 0 ? [] : Array.new(sn, nil)
# Adds Head Materia
sn = $data_armors[@armor2_id].paired_materia * 2 +
$data_armors[@armor2_id].single_materia unless @armor2_id == 0
@armor2_materia = @armor2_id == 0 ? [] : Array.new(sn, nil)
# Adds Body Materia
sn = $data_armors[@armor3_id].paired_materia * 2 +
$data_armors[@armor3_id].single_materia unless @armor3_id == 0
@armor3_materia = @armor3_id == 0 ? [] : Array.new(sn, nil)
# Adds Accessory Materia
sn = $data_armors[@armor4_id].paired_materia * 2 +
$data_armors[@armor4_id].single_materia unless @armor4_id == 0
@armor4_materia = @armor4_id == 0 ? [] : Array.new(sn, nil)
end
#--------------------------------------------------------------------------
# * Skills
#--------------------------------------------------------------------------
def skills
# Deletes Materia Skills
for skill_id in @materia_skills
self.forget_skill(skill_id)
end
# Original Skills Method
skills = seph_materiasystem_gameactor_skills
# Adds Skills Attached to Weapon & Armors
for materia in @weapon_materia + @armor1_materia + @armor2_materia +
@armor3_materia + @armor4_materia
unless materia.nil?
self.learn_materia_skill(materia)
end
end
# Returns Skills
return @skills
end
#--------------------------------------------------------------------------
# * Learn Materia Skill
#--------------------------------------------------------------------------
def learn_materia_skill(materia)
# If Skill Materia
if materia.type == 'Skill' || materia.type == 'Command' || materia.type == 'Summon'
for i in 0...materia.level
skill_id = materia.skills
#check to see if materia is mastered
if skill_id != nil
# Learn Skill
self.learn_skill(skill_id)
#Adds Skills To Materia Skills
@materia_skills << skill_id
end
end
end
end
#--------------------------------------------------------------------------
# * Get Maximum HP
#--------------------------------------------------------------------------
def maxhp
# Orginal Max Hp Method
n = seph_materiasystem_gameactor_maxhp
# Collects HP Difference From Materia
variance = 0
for materia in @weapon_materia + @armor1_materia + @armor2_materia +
@armor3_materia + @armor4_materia
unless materia.nil?
variance += materia.stat_effects[0]
if materia.special_effect == 'HP Plus'
variance += (materia.level * 10)
end
end
end
# Takes Percentage
n *= ((100 + variance) / 100.0)
n = [[Integer(n), 0].max, 9999].min
return n
end
#--------------------------------------------------------------------------
# * Get HP
#--------------------------------------------------------------------------
def hp
@hp = [@hp, maxhp].min
return @hp
end
#--------------------------------------------------------------------------
# * Get Maximum SP
#--------------------------------------------------------------------------
def maxsp
# Orginal Max Sp Method
n = seph_materiasystem_gameactor_maxsp
# Collects SP Difference From Materia
variance = 0
for materia in @weapon_materia + @armor1_materia + @armor2_materia +
@armor3_materia + @armor4_materia
unless materia.nil?
variance += materia.stat_effects[1]
if materia.special_effect == 'SP Plus'
variance += (materia.level * 10)
end
end
end
# Takes Percentage
n *= ((100 + variance) / 100.0)
n = [[Integer(n), 0].max, 9999].min
return n
end
#--------------------------------------------------------------------------
# * Get SP
#--------------------------------------------------------------------------
def sp
@sp = [@sp, maxsp].min
return @sp
end
#--------------------------------------------------------------------------
# * Get Strength (STR)
#--------------------------------------------------------------------------
def str
# Orginal Max Str Method
n = seph_materiasystem_gameactor_str
# Collects SP Difference From Materia
variance = 0
for materia in @weapon_materia + @armor1_materia + @armor2_materia +
@armor3_materia + @armor4_materia
unless materia.nil?
variance += materia.stat_effects[2]
if materia.special_effect == 'Strength Plus'
variance += (materia.level * 5)
end
end
end
# Takes Percentage
n *= ((100 + variance) / 100.0)
n = [[Integer(n), 1].max, 999].min
return n
end
#--------------------------------------------------------------------------
# * Get Dexterity (DEX)
#--------------------------------------------------------------------------
def dex
# Orginal Max Dex Method
n = seph_materiasystem_gameactor_dex
# Collects SP Difference From Materia
variance = 0
for materia in @weapon_materia + @armor1_materia + @armor2_materia +
@armor3_materia + @armor4_materia
unless materia.nil?
variance += materia.stat_effects[3]
if materia.special_effect == 'Defense Plus'
variance += (materia.level * 5)
end
end
end
# Takes Percentage
n *= ((100 + variance) / 100.0)
n = [[Integer(n), 1].max, 999].min
return n
end
#--------------------------------------------------------------------------
# * Get Agility (AGI)
#--------------------------------------------------------------------------
def agi
# Orginal Max Agi Method
n = seph_materiasystem_gameactor_agi
# Collects SP Difference From Materia
variance = 0
for materia in @weapon_materia + @armor1_materia + @armor2_materia +
@armor3_materia + @armor4_materia
unless materia.nil?
variance += materia.stat_effects[4]
if materia.special_effect == 'Speed Plus'
variance += (materia.level * 5)
end
end
end
# Takes Percentage
n *= ((100 + variance) / 100.0)
n = [[Integer(n), 1].max, 999].min
return n
end
#--------------------------------------------------------------------------
# * Get Intelligence (INT)
#--------------------------------------------------------------------------
def int
# Orginal Max Int Method
n = seph_materiasystem_gameactor_int
# Collects SP Difference From Materia
variance = 0
for materia in @weapon_materia + @armor1_materia + @armor2_materia +
@armor3_materia + @armor4_materia
unless materia.nil?
variance += materia.stat_effects[5]
if materia.special_effect == 'Magic Plus'
variance += (materia.level * 5)
end
end
end
# Takes Percentage
n *= ((100 + variance) / 100.0)
n = [[Integer(n), 1].max, 999].min
return n
end
#--------------------------------------------------------------------------
# * Change Equipment
# equip_type : type of equipment
# id : weapon or armor ID (If 0, remove equipment)
#--------------------------------------------------------------------------
def equip(equip_type, id)
# Removes Equipped Materia
case equip_type
when 0 # Weapon
for materia in @weapon_materia
$game_party.materia << materia unless materia.nil?
end
when 1 # Shield
for materia in @armor1_materia
$game_party.materia << materia unless materia.nil?
end
when 2 # Head
for materia in @armor2_materia
$game_party.materia << materia unless materia.nil?
end
when 3 # Body
for materia in @armor3_materia
$game_party.materia << materia unless materia.nil?
end
when 4 # Accessory
for materia in @armor4_materia
$game_party.materia << materia unless materia.nil?
end
end
# Orginal Eqip Method
seph_materiasystem_gameactor_equip(equip_type, id)
# Resets Materia Slots
case equip_type
when 0 # Weapon
sn = $data_weapons[@weapon_id].paired_materia * 2 +
$data_weapons[@weapon_id].single_materia unless @weapon_id == 0
@weapon_materia = @weapon_id == 0 ? [] : Array.new(sn, nil)
when 1 # Shield
sn = $data_armors[@armor1_id].paired_materia * 2 +
$data_armors[@armor1_id].single_materia unless @armor1_id == 0
@armor1_materia = @armor1_id == 0 ? [] : Array.new(sn, nil)
when 2 # Head
sn = $data_armors[@armor2_id].paired_materia * 2 +
$data_armors[@armor2_id].single_materia unless @armor2_id == 0
@armor2_materia = @armor2_id == 0 ? [] : Array.new(sn, nil)
when 3 # Body
sn = $data_armors[@armor3_id].paired_materia * 2 +
$data_armors[@armor3_id].single_materia unless @armor3_id == 0
@armor3_materia = @armor3_id == 0 ? [] : Array.new(sn, nil)
when 4 # Accessory
sn = $data_armors[@armor4_id].paired_materia * 2 +
$data_armors[@armor4_id].single_materia unless @armor4_id == 0
@armor4_materia = @armor4_id == 0 ? [] : Array.new(sn, nil)
end
end
#--------------------------------------------------------------------------
# * Change EXP
# exp : new EXP
#--------------------------------------------------------------------------
def exp=(exp)
# If Gaining Exp
if exp > @exp
# Gets New Exp
new_exp = exp - @exp
# Sets Exp + % to 0
exp_plus = 0
for materia in @weapon_materia + @armor1_materia + @armor2_materia +
@armor3_materia + @armor4_materia
unless materia.nil?
# Gains Exp
materia.experience += new_exp
if materia.special_effect == 'Exp Plus'
exp_plus += (materia.level * 10)
end
end
end
new_exp *= ((100 + exp_plus) / 100.0)
exp = new_exp.to_i + @exp
end
# Orginal Exp Method
@exp = [[exp, 9999999].min, 0].max
# Level up
while @exp >= @exp_list[@level+1] and @exp_list[@level+1] > 0
@level += 1
# Learn skill
for j in $data_classes[@class_id].learnings
if j.level == @level
learn_skill(j.skill_id)
end
end
end
# Level down
while @exp < @exp_list[@level]
@level -= 1
end
# Correction if exceeding current max HP and max SP
@hp = [@hp, self.maxhp].min
@sp = [@sp, self.maxsp].min
end
#--------------------------------------------------------------------------
# * Get Element Revision Value : Defense
#--------------------------------------------------------------------------
def element_rate(element_id)
# Gets Orginal Element Set
result = seph_materiasystem_gameactor_elementrate(element_id)
# Gets Paired Materia list
paired = return_paired_materia
# Checks each set
for set in paired
# Checks Armors
if set[0] > 0
# Checks Support Materia
materia = set[2]
if materia.special_effect == 'Elemental'
other_materia = set[3]
if other_materia.elements.include?(element_id)
result /= 2
end
end
end
end
return result
end
#--------------------------------------------------------------------------
# * Determine State Guard
#--------------------------------------------------------------------------
def state_guard?(state_id)
result = seph_materiasystem_gameactor_stateguard?(state_id)
unless result
# Gets Paired Materia list
paired = return_paired_materia
# Checks each set
for set in paired
# Checks Armors
if set[0] > 0
# Checks Support Materia
materia = set[2]
if materia.special_effect == 'Status'
other_materia = set[3]
if other_materia.states.include?(state_id)
result = true
end
end
end
end
end
return result
end
#--------------------------------------------------------------------------
# * Get Normal Attack Element
#--------------------------------------------------------------------------
def element_set
# Gets Previous Element Set
result = seph_materiasystem_gameactor_elementset
# Adds Materia Element Sets
# Gets Paired Materia list
paired = return_paired_materia
# Checks each set
for set in paired
# Checks Weapon
if set[0] == 0
# Checks Support Materia
materia = set[2]
if materia.special_effect == 'Elemental'
other_materia = set[3]
for elem_id in other_materia.elements
result << elem_id unless set.include?(elem_id)
end
end
end
end
return result
end
#--------------------------------------------------------------------------
# * Get Normal Attack State Change (+)
#--------------------------------------------------------------------------
def plus_state_set
# Gets Previous Status Set
result = seph_materiasystem_gameactor_plusstateset
# Gets Paired Materia list
paired = return_paired_materia
# Checks each set
for set in paired
# Checks Weapon
if set[0] == 0
# Checks Support Materia
materia = set[2]
if materia.special_effect == 'Status'
other_materia = set[3]
for state_id in other_materia.states
result << state_id unless set.include?(state_id)
end
end
end
end
return result
end
#--------------------------------------------------------------------------
# * Equip Materia
# equip_type : type of equipment
# slot_index : index of materia
# index : index in $game_party.materia
#--------------------------------------------------------------------------
def equip_materia(equip_type, slot_index, index)
# Gets Materia
new_materia = $game_party.materia[index]
# Unequip Materia
materia = equip_type == 0 ?
@weapon_materia[slot_index] : (eval "@armor#{equip_type}_materia")[slot_index]
unless materia.nil?
$game_party.materia << materia
end
# Modifies Materia
case equip_type
when 0 # Weapon
return if @weapon_materia.size == 0
@weapon_materia[slot_index] = new_materia
when 1 # Shield
return if @armor1_materia.size == 0
@armor1_materia[slot_index] = new_materia
when 2 # Head
return if @armor2_materia.size == 0
@armor2_materia[slot_index] = new_materia
when 3 # Body
return if @armor3_materia.size == 0
@armor3_materia[slot_index] = new_materia
when 4 # Accessory
return if @armor4_materia.size == 0
@armor4_materia[slot_index] = new_materia
end
# Deletes Materia From Party: Materia
$game_party.materia.delete_at(index)
end
#--------------------------------------------------------------------------
# * Equip Materia
# equip_type : type of equipment
# slot_index : index of materia
#--------------------------------------------------------------------------
def unequip_materia(equip_type, slot_index)
materia = equip_type == 0 ?
@weapon_materia[slot_index] : (eval "@armor#{equip_type}_materia")[slot_index]
unless materia.nil?
$game_party.materia << materia
end
equip_type == 0 ?
@weapon_materia[slot_index] = nil : (eval "@armor#{equip_type}_materia")[slot_index] = nil
end
#--------------------------------------------------------------------------
# * Return Paired Materia
#--------------------------------------------------------------------------
def return_paired_materia
# Creates Your Return Array
paired = []
# Checks Weapon
unless @weapon_id == 0
if $data_weapons[@weapon_id].paired_materia > 0
for i in 0...($data_weapons[@weapon_id].paired_materia * 2)
materia = @weapon_materia
if materia.type == 'Support'
o_i = i + ([0, 2, 4, 6].include?(i) ? 1 : - 1)
other_materia = @weapon_materia[o_i]
unless other_materia.nil?
paired << [0, [i, o_i].min, materia, other_materia]
end
end
end
end
end
# Checks Armors
for a in 1..4
unless (eval "@armor#{a}_id") == 0
if (eval "$data_armors[@armor#{a}_id].paired_materia") > 0
for i in 0...((eval "$data_armors[@armor#{a}_id].paired_materia") * 2)
materia = (eval "@armor#{a}_materia")
if materia.type == 'Support'
o_i = i + ([0, 2, 4, 6].include?(i) ? 1 : - 1)
other_materia = (eval "@armor#{a}_materia")[o_i]
unless other_materia.nil?
paired << [a, [i, o_i].min, materia, other_materia]
end
end
end
end
end
end
return paired
end
end

#==============================================================================
# ** Game_Party
#==============================================================================

class Game_Party
#--------------------------------------------------------------------------
# * Public Instance Variables
#--------------------------------------------------------------------------
attr_accessor :materia
#--------------------------------------------------------------------------
# * Alias Listings
#--------------------------------------------------------------------------
alias seph_materiasystem_gameparty_init initialize
alias seph_materiasystem_gameparty_gaingold gain_gold
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
# Orginal Initialization Method
seph_materiasystem_gameparty_init
# Sets Up Materia Listings
@materia = []
end
#--------------------------------------------------------------------------
# * Gain Materia
#--------------------------------------------------------------------------
def gain_materia(materia_index)
# Adds Materia
@materia << $data_materia[materia_index].dup
end
#--------------------------------------------------------------------------
# * Gain Gold (or lose)
# n : amount of gold
#--------------------------------------------------------------------------
def gain_gold(n)
gil_plus = 0
for actor in @actors
for materia in actor.weapon_materia + actor.armor1_materia +
actor.armor2_materia + actor.armor3_materia + actor.armor4_materia
unless materia.nil?
if materia.special_effect == 'Gil Plus'
gil_plus += (materia.level * 5)
end
end
end
end
n *= (100 + gil_plus) / 100.0
# Orginal Gain Gold Method
seph_materiasystem_gameparty_gaingold(n.to_i)
end
end

#==============================================================================
# Window Horizontal Command
#==============================================================================

class Window_HorizCommand < Window_Selectable
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize(commands, width = 640, height = 64)
super(0, 0, width, height)
self.contents = Bitmap.new(width - 32, height - 32)
@commands = commands
@item_max = @commands.size
@column_max = @commands.size
refresh
self.index = 0
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
for i in 0...@item_max
draw_item(i, normal_color)
end
end
#--------------------------------------------------------------------------
# * Draw Item
# index : item number
#--------------------------------------------------------------------------
def draw_item(index, color)
self.contents.font.color = color
x = width / @item_max * index
off = width / @item_max - 32
self.contents.draw_text(x, 0, off, 32, @commands[index], 1)
end
#--------------------------------------------------------------------------
# * Disable Item
# index : item number
#--------------------------------------------------------------------------
def disable_item(index)
draw_item(index, disabled_color)
end
end

#==============================================================================
# ** Window_MateriaBio
#==============================================================================

class Window_MateriaBio < Window_Base
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
super(240, 128, 400, 352)
self.contents = Bitmap.new(width - 32, height - 32)
self.visible = false
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh(materia)
self.contents.clear
# If no Materia
return if materia.nil?
# Gets Icon Hue
hue = materia.get_hue
# Draws Materia Icon
bitmap = RPG::Cache.icon('Materia Icon').dup
bitmap.hue_change(hue)
self.contents.blt(4, 0, bitmap, Rect.new(0, 0, 24, 24))
# Draws Materia Name
self.contents.font.size = 22
self.contents.font.color = normal_color
self.contents.font.bold = false
self.contents.draw_text(32, 0, contents.width, 24, materia.name)
# Gets Star Bitmap & Changes Hue
bitmap = RPG::Cache.icon('Star - Icon').dup
bitmap.hue_change(hue)
# Gets Start of Star X Coordinate
star_x = contents.width / 2 - 20
# Draws Level Stars
materia.level.times do
self.contents.blt(star_x += 24, 0, bitmap, Rect.new(0, 0, 24, 24))
end
# Draws Un-Leveled Stars
(materia.exp_levels.size + 1 - materia.level).times do
self.contents.blt(star_x += 24, 0, bitmap, Rect.new(0, 0, 24, 24), 100)
end
# Draws Level
self.contents.draw_text(contents.width / 2 + 4, 52, contents.width / 2, 24, 'Level:')
lev = materia.level == materia.exp_levels.size + 1 ? 'Mastered' : materia.level.to_s
self.contents.draw_text(contents.width / 2 - 4, 52, contents.width / 2, 24, lev, 2)
# Draws Experience
self.contents.draw_text(contents.width / 2 + 4, 76, contents.width / 2, 24, 'Experience:')
self.contents.draw_text(contents.width / 2 - 4, 76, contents.width / 2, 24, materia.experience.to_s, 2)
# Draws Next Level
self.contents.draw_text(contents.width / 2 + 4, 100, contents.width / 2, 24, 'Next Level:')
nxt = lev == 'Mastered' ? 'N/A' : materia.exp_levels[materia.level - 1] - materia.experience
self.contents.draw_text(contents.width / 2 - 4, 100, contents.width / 2, 24, nxt.to_s, 2)
# Draws Skills
self.contents.draw_text(4, 28, contents.width, 24, 'Skills:')
for i in 0...(materia.level)
self.contents.font.color = normal_color
unless materia.skills.nil?
self.contents.draw_text(8, 52 + i * 24, contents.width / 2 - 8, 24, $data_skills[materia.skills].name)
end
end
for i in (materia.level)...materia.skills.size
self.contents.font.color = disabled_color
unless materia.skills.nil?
self.contents.draw_text(8, 52 + i * 24, contents.width / 2 - 8, 24, $data_skills[materia.skills].name)
end
end
if materia.skills.size == 0
self.contents.draw_text(8, 52, contents.width / 2 - 8, 24, 'Nothing')
end
# Draws Special Effect
self.contents.font.color = normal_color
se = materia.special_effect.nil? ? 'Nothing' : materia.special_effect
self.contents.draw_text(8, 172, contents.width, 24, "Special Effect: #{se}")
# Draw Buy Value
self.contents.font.size = 16
self.contents.font.bold = true
ox = contents.width / 3
self.contents.draw_text(4, 200, ox, 16, "Buy Value: #{materia.new_value}")
# Draw Sell Value
self.contents.draw_text(ox, 200, ox, 16, "Sell Value: #{materia.sell_value}", 1)
# Draw Mater Value
self.contents.draw_text(ox * 2 - 4, 200, ox, 16, "Master Value: #{materia.master_value}", 2)
# Draws Stat Effects
self.contents.font.size = 14
self.contents.draw_text(8, 222, contents.width / 2, 14, 'Attributes Effects:')
stat_names = ['hp', 'sp', 'str', 'dex', 'agi', 'int'].collect! {|x| eval "$data_system.words.#{x}" }
for i in 0...materia.stat_effects.size
self.contents.draw_text(8, 222 + (i + 1) * 14, contents.width / 2, 14, stat_names)
self.contents.draw_text(- 8, 222 + (i + 1) * 14, contents.width / 2, 14, "#{materia.stat_effects} %", 2)
end
# Draws Element & Status Effects
self.contents.font.size = 14
x, y = contents.width / 2 + 4, 222
self.contents.draw_text(x, y, contents.width / 2, 14, 'Element & Status Effects:')
if materia.elements.size + materia.states.size == 0
self.contents.draw_text(x + 4, y + 14, contents.width / 2, 14, 'None')
else
# Draws Elements
total = 1
for i in 0...materia.elements.size
total += 1
ox = 4 + total % 2 * (contents.width / 4)
oy = total / 2 * 14
self.contents.draw_text(x + ox, y + oy, contents.width / 2, 14, $data_system.elements[materia.elements])
end
# Draws States
for i in 0...materia.states.size
total += 1
ox = 4 + total % 2 * (contents.width / 4)
oy = total / 2 * 14
self.contents.draw_text(x + ox, y + oy, contents.width / 2, 14, $data_states[materia.states].name)
end
end
end
end

#==============================================================================
# ** Window_MateriaList
#==============================================================================

class Window_MateriaList < Window_Selectable
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize(buying, materia_list = nil, show_cost = true)
super(0, 128, 240, 352)
self.visible = self.active = false
# Creates Materia List
if buying
@materia = []
for index in materia_list
@materia << $data_materia[index].dup
end
else
@materia = $game_party.materia.sort! {|a, b| a.id <=> b.id}
end
@buying, @show_cost = buying, show_cost
refresh
self.index = 0
end
#--------------------------------------------------------------------------
# * Get Materia
#--------------------------------------------------------------------------
def materia
return @materia[self.index]
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
# Clears Contents
if self.contents != nil
self.contents.dispose
self.contents = nil
end
# If item count is not 0, make a bit map and draw all items
@materia.sort! {|a, b| a.id <=> b.id}
@item_max = @materia.size
if @item_max > 0
self.contents = Bitmap.new(width - 32, row_max * 32)
for i in 0...@item_max
draw_item(i)
end
end
end
#--------------------------------------------------------------------------
# * Draw Materia
# index : item number
#--------------------------------------------------------------------------
def draw_item(index)
# Checks to See if Selling materia
if @buying
self.contents.font.color = materia.buy_value > $game_party.gold ?
disabled_color : normal_color
end
# Gets Materia
materia = @materia[index]
# Gets Icon Hue
hue = materia.get_hue
# Clears Bitmap Contents
self.contents.fill_rect(Rect.new(0, index * 32, contents.width, 32), Color.new(0, 0, 0, 0))
# Draws Materia Icon
bitmap = RPG::Cache.icon('Materia Icon').dup
bitmap.hue_change(hue)
self.contents.blt(4, index * 32 + 4, bitmap, Rect.new(0, 0, 24, 24))
# Draws Materia Name
self.contents.draw_text(32, index * 32, contents.width, 32, materia.name)
# If Show Cost
if @show_cost
# Draws Materia Cost
value = @buying ? materia.buy_value : materia.sell_value
self.contents.draw_text(- 4, index * 32, contents.width, 32, ": #{value}", 2)
end
end
end

#==============================================================================
# ** Window_MateriaActor
#==============================================================================

class Window_MateriaActor < Window_Base
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize(actor)
super(0, 0, 640, 152)
self.contents = Bitmap.new(width - 32, height - 32)
@actor = actor
@frame = 0
refresh
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh(actor = @actor)
self.contents.clear
# Draws Actor Sprite
draw_actor_sprite
# Draw Actor Information
draw_actor_bio
# Draws Actor Equipment
draw_actor_equipment
# Draws Actor Materia
draw_actor_materia
end
#--------------------------------------------------------------------------
# * Draw Actor Sprite
#--------------------------------------------------------------------------
def draw_actor_sprite
# Clears Actor Bitmap Arena
self.contents.fill_rect(0, 0, 80, 120, Color.new(0, 0, 0, 0))
# Gets Actor Bitmap
bitmap = RPG::Cache.character(@actor.character_name, @actor.character_hue)
# Transfer Actor Frame to src_bitmap
self.contents.stretch_blt(Rect.new(0, 0, 80, 120), bitmap,
Rect.new(bitmap.width / 4 * @frame, 0, bitmap.width / 4, bitmap.height / 4))
end
#--------------------------------------------------------------------------
# * Draw Actor Bio
#--------------------------------------------------------------------------
def draw_actor_bio
# Clears Bio Space
self.contents.fill_rect(92, 0, 140, 120, Color.new(0, 0, 0, 0))
# Draws Actor name
self.contents.font.color = normal_color
self.contents.draw_text(92, 0, 140, 22, @actor.name)
# Draws Level
self.contents.draw_text(92, 22, 140, 22, "Level : #{@actor.level}")
# Draws Actor Class
self.contents.draw_text(92, 44, 410, 22, "Class : #{$data_classes[@actor.class_id].name}")
# Draws HP
self.contents.draw_text(92, 66, 140, 22, "HP : #{@actor.hp} / #{@actor.maxhp}")
draw_slant_bar(92, 90, @actor.hp, @actor.maxhp.to_f, 136, 4)
# Draws SP
self.contents.draw_text(92, 92, 140, 22, "SP : #{@actor.sp} / #{@actor.maxsp}")
draw_slant_bar(92, 116, @actor.sp, @actor.maxsp.to_f, 136, 4,
Color.new(0, 0, 200), Color.new(0, 170, 0))
end
#--------------------------------------------------------------------------
# * Draw Actor Equipment
#--------------------------------------------------------------------------
def draw_actor_equipment
# Clears Equipment Space
self.contents.fill_rect(240, 0, 176, 120, Color.new(0, 0, 0, 0))
# Draws Equipment
draw_equipment(240, 0, $data_weapons[@actor.weapon_id], 0)
draw_equipment(240, 24, $data_armors[@actor.armor1_id], 1)
draw_equipment(240, 48, $data_armors[@actor.armor2_id], 2)
draw_equipment(240, 72, $data_armors[@actor.armor3_id], 3)
draw_equipment(240, 96, $data_armors[@actor.armor4_id], 4)
end
#--------------------------------------------------------------------------
# * Draw Actor Materia
#--------------------------------------------------------------------------
def draw_actor_materia
# Clears Materia Space
self.contents.fill_rect(416, 0, 192, 120, Color.new(0, 0, 0, 0))
# Draws Materia Slots Background
for i in 0..4
self.contents.fill_rect(416, i * 24 + 2, 192, 22, Color.new(0, 0, 0, 50))
end
# Draws Materia Slots
for i in 0..4
slots_x, y = 416 - 24, i * 24
if i == 0
if @actor.weapon_id == 0
p_times, s_times = 0, 0
else
p_times = $data_weapons[@actor.weapon_id].paired_materia
s_times = $data_weapons[@actor.weapon_id].single_materia
end
else
if (eval "@actor.armor#{i}_id") == 0
p_times, s_times = 0, 0
else
p_times = eval "$data_armors[@actor.armor#{i}_id].paired_materia"
s_times = eval "$data_armors[@actor.armor#{i}_id].single_materia"
end
end
# Draws Paired Materia
p_times.times do
bitmap = RPG::Cache.icon('Materia Paired Left')
self.contents.blt(slots_x += 24, y, bitmap, Rect.new(0, 0, 24, 24))
bitmap = RPG::Cache.icon('Materia Paired Right')
self.contents.blt(slots_x += 24, y, bitmap, Rect.new(0, 0, 24, 24))
end
# Draws Single Materia
s_times.times do
bitmap = RPG::Cache.icon('Materia Single')
self.contents.blt(slots_x += 24, y, bitmap, Rect.new(0, 0, 24, 24))
end
end
# Draws Equipped Materia
for i in 0...@actor.weapon_materia.size
materia = @actor.weapon_materia
unless materia.nil?
# Gets Icon Hue
hue = materia.get_hue
# Draws Icon
bitmap = RPG::Cache.icon('Materia Icon').dup
bitmap.hue_change(hue)
self.contents.blt(416 + i * 24, 0, bitmap, Rect.new(0, 0, 24, 24))
end
end
for h in 1..4
size = eval "@actor.armor#{h}_materia.size"
for i in 0...size
list = eval "@actor.armor#{h}_materia"
materia = list
unless materia.nil?
# Gets Icon Hue
hue = materia.get_hue
# Draws Icon
bitmap = RPG::Cache.icon('Materia Icon').dup
bitmap.hue_change(hue)
self.contents.blt(416 + i * 24, 24 * h, bitmap, Rect.new(0, 0, 24, 24))
end
end
end
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
super
# Checks to Update Picture
if Graphics.frame_count % 10 == 0
@frame == 3 ? @frame = 0 : @frame += 1
draw_actor_sprite
end
end
#--------------------------------------------------------------------------
# * Draw Slant Bar
#--------------------------------------------------------------------------
def draw_slant_bar(x, y, min, max, width = 152, height = 6,
bar_color = Color.new(150, 0, 0, 255), end_color = Color.new(255, 255, 60, 255))
# Draw Border
for i in 0..height
self.contents.fill_rect(x + i, y + height - i, width + 1, 1, Color.new(50, 50, 50, 255))
end
# Draw Background
for i in 1..(height - 1)
r = 100 * (height - i) / height + 0 * i / height
g = 100 * (height - i) / height + 0 * i / height
b = 100 * (height - i) / height + 0 * i / height
a = 255 * (height - i) / height + 255 * i / height
self.contents.fill_rect(x + i, y + height - i, width, 1, Color.new(r, b, g, a))
end
# Draws Bar
for i in 1..( (min / max) * width - 1)
for j in 1..(height - 1)
r = bar_color.red * (width - i) / width + end_color.red * i / width
g = bar_color.green * (width - i) / width + end_color.green * i / width
b = bar_color.blue * (width - i) / width + end_color.blue * i / width
a = bar_color.alpha * (width - i) / width + end_color.alpha * i / width
self.contents.fill_rect(x + i + j, y + height - j, 1, 1, Color.new(r, g, b, a))
end
end
end
#--------------------------------------------------------------------------
# * Draw Equipment
#--------------------------------------------------------------------------
def draw_equipment(x, y, item, type)
if item.nil?
case type
when 0 # Weapon
bitmap = RPG::Cache.icon("001-Weapon01")
when 1 # Shield
bitmap = RPG::Cache.icon("009-Shield01")
when 2 # Helmet
bitmap = RPG::Cache.icon("010-Head01")
when 3 # Armor
bitmap = RPG::Cache.icon("014-Body02")
when 4 # Accessory
bitmap = RPG::Cache.icon("016-Accessory01")
end
contents.font.color, text, opacity = disabled_color, 'Nothing', disabled_color.alpha
else
bitmap = RPG::Cache.icon(item.icon_name)
contents.font.color, text, opacity = normal_color, item.name, 255
end
self.contents.blt(x, y, bitmap, Rect.new(0, 0, 24, 24), opacity)
self.contents.draw_text(x + 28, y, 148, 24, text, 1)
end
end

#==============================================================================
# ** Window_MateriaEquipBio
#==============================================================================

class Window_MateriaEquipBio < Window_Base
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
super(0, 152, 400, 328)
self.contents = Bitmap.new(width - 32, height - 32)
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh(materia)
self.contents.clear
# If no Materia
return if materia.nil?
# Gets Icon Hue
hue = materia.get_hue
# Draws Materia Icon
bitmap = RPG::Cache.icon('Materia Icon').dup
bitmap.hue_change(hue)
self.contents.blt(0, 0, bitmap, Rect.new(0, 0, 24, 24))
# Draws Materia Name
self.contents.font.color = normal_color
self.contents.font.size = 22
self.contents.font.bold = false
self.contents.draw_text(32, 0, contents.width, 24, materia.name)
# Gets Star Bitmap & Changes Hue
bitmap = RPG::Cache.icon('Star - Icon').dup
bitmap.hue_change(hue)
# Gets Start of Star X Coordinate
star_x = contents.width / 2 - 20
# Draws Level Stars
materia.level.times do
self.contents.blt(star_x += 24, 0, bitmap, Rect.new(0, 0, 24, 24))
end
# Draws Un-Leveled Stars
(materia.exp_levels.size + 1 - materia.level).times do
self.contents.blt(star_x += 24, 0, bitmap, Rect.new(0, 0, 24, 24), 100)
end
# Draws Skills
self.contents.font.size = 16
self.contents.font.bold = true
self.contents.draw_text(4, 28, contents.width, 16, 'Skills:')
for i in 0...(materia.level)
self.contents.font.color = normal_color
unless materia.skills.nil?
self.contents.draw_text(16, 44 + i * 16, contents.width / 2 - 8, 16, $data_skills[materia.skills].name)
end
end
for i in (materia.level)...materia.skills.size
self.contents.font.color = disabled_color
unless materia.skills.nil?
self.contents.draw_text(16, 44 + i * 16, contents.width / 2 - 8, 16, $data_skills[materia.skills].name)
end
end
# Draws Level
self.contents.font.color = normal_color
self.contents.draw_text(contents.width / 2 + 4, 44, contents.width / 2, 16, 'Level:')
lev = materia.level == materia.exp_levels.size + 1 ? 'Mastered' : materia.level.to_s
self.contents.draw_text(contents.width / 2 - 4, 44, contents.width / 2, 16, lev, 2)
# Draws Experience
self.contents.draw_text(contents.width / 2 + 4, 60, contents.width / 2, 16, 'Experience:')
self.contents.draw_text(contents.width / 2 - 4, 60, contents.width / 2, 16, materia.experience.to_s, 2)
# Draws Next Level
self.contents.draw_text(contents.width / 2 + 4, 76, contents.width / 2, 16, 'Next Level:')
nxt = lev == 'Mastered' ? 'N/A' : materia.exp_levels[materia.level - 1] - materia.experience
self.contents.draw_text(contents.width / 2 - 4, 76, contents.width / 2, 16, nxt.to_s, 2)
# Draws Special Effect
se = materia.special_effect.nil? ? 'Nothing' : materia.special_effect
self.contents.draw_text(8, 124, contents.width, 16, "Special Effect: #{se}")
# Draw Buy Value
ox = contents.width / 3
self.contents.draw_text(4, 156, ox, 16, "Buy Value: #{materia.new_value}")
# Draw Sell Value
self.contents.draw_text(ox, 156, ox, 16, "Sell Value: #{materia.sell_value}", 1)
# Draw Mater Value
self.contents.draw_text(ox * 2 - 4, 156, ox, 16, "Master Value: #{materia.master_value}", 2)
# Draws Stat Effects
self.contents.draw_text(8, 188, contents.width / 2, 16, 'Attributes Effects:')
stat_names = ['hp', 'sp', 'str', 'dex', 'agi', 'int'].collect! {|x| eval "$data_system.words.#{x}" }
for i in 0...materia.stat_effects.size
self.contents.draw_text(8, 188 + (i + 1) * 14, contents.width / 2, 16, stat_names)
self.contents.draw_text(- 8, 188 + (i + 1) * 14, contents.width / 2, 16, "#{materia.stat_effects} %", 2)
end
# Draws Element & Status Effects
x, y = contents.width / 2 + 4, 188
self.contents.draw_text(x, y, contents.width / 2, 16, 'Element & Status Effects:')
if materia.elements.size + materia.states.size == 0
self.contents.draw_text(x + 4, y + 14, contents.width / 2, 16, 'None')
else
# Draws Elements
total = 1
for i in 0...materia.elements.size
total += 1
ox = 4 + total % 2 * (contents.width / 4)
oy = total / 2 * 16
self.contents.draw_text(x + ox, y + oy, contents.width / 2, 16, $data_system.elements[materia.elements])
end
# Draws States
for i in 0...materia.states.size
total += 1
ox = 4 + total % 2 * (contents.width / 4)
oy = total / 2 * 16
self.contents.draw_text(x + ox, y + oy, contents.width / 2, 16, $data_states[materia.states].name)
end
end
end
end

#==============================================================================
# ** Scene_Title
#========================================================
 
I think this is too difficult! Not the magics change the stats, that do the materia! If you want a script like that, you need to made that! Else ask ther writer of this script!
 

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