Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
# Also, you can have multiple weapons in array and the same equipment in differe
nt
# sets.
#
#
# SET BONUSES
#
# For set bonuses, go to Set_Bonuses. Use the follwing syntax to add bonuses:
#
# set id => {
#
amount of pieces required => [[sort, parameter, bonus]]
#
},
#
# Specifications:
# set id = the same set id as in Sets.
#
# amount of pieces required = the amount of pieces the player must be wearing in
# order to receive the bonuses. If you want to skip one, just skip it. Like:
# 1 => blablabla
# 3 => blablabla
#
# sort = type of bonus. For all sorts, see SPECIAL VALUES.
#
# parameter = the parameter which receives the bonus. For all parameters, see
# SPECIAL VALUES.
#
# bonus = the bonus to be added to parameter. Note that this is a direct bonus,
# not a percentage. If the vale is negative, the bonus will become negative. If
# the value is 0, there will be no bonus to that stat.
#
#
# SPECIAL VALUES
# Sets
# ---# Equipment types: 0 and 1. 0 is the Weapons tab in the database, 1 is the
# Armors tab in the database.
#
# Set_Bonuses
# --# Sorts:
# 0 - Standard Parameter
# 1 - Standard Parameter (Percentage)
# 2 - Extra Parameter
# 3 - Special Paramater
# 4 - Skills (WARNING, DIFFERENT SYNTAX!! See Skills on how to use them)
# 5 - Elemental Efficiency
# 6 - Debuff Rate
# 7 - State Rate
# 8 - State Resistance (WARNING, VALUE HAS A DIFFERENT FUNCTION!!)
# 9 - Attack Elements (WARNING, VALUE HAS A DIFFERENT FUNCTION!!)
# 10 - Attack States
# 11 - Equipment Types (WARNING, DIFFERENT SYNTAX!! See Equipment Types on how
#
to use them)
# 12 - Attack Specials
# 13 - Additional Skill Types (WARNING, VALUE HAS A DIFFERENT FUNCTION!!)
# 14 - Sealed Skill Types (WARNING, VALUE HAS A DIFFERENT FUNCTION!!)
# 15 - Sealed Skills (WARNING, VALUE HAS A DIFFERENT FUNCTION!!)
# 16 - Fixed Equip Types (WARNING, VALUE HAS A DIFFERENT FUNCTION!!)
# 17 - Sealed Equip Types (WARNING, VALUE HAS A DIFFERENT FUNCTION!!)
# 18 - Special Flags (WARNING, VALUE HAS A DIFFERENT FUNCTION!!)
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
g
#
#
t
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
# CONFIGURATION
#
#============================================================================
module EME
MAX_ELEMENTS = 10
#---------------------------------------------------------------------------# Sets syntax
#---------------------------------------------------------------------------# Sets = {
#
set_id => [[equipment_type, equipment_id]]
#
}
#
# set_id must be bigger than 0
# equipment_type can be either 0 (weapon) or 1 (armor)
# Add a comma after a ']' if it's not the last element in the array/hash.
#
# Don't forget to add a ungettable item at the end! Else, the last item will
# count for two!
#---------------------------------------------------------------------------Sets = {
1 => [[0, 1], [1, 1]],
2 => [[1, 2], [0, 2]]
}
#---------------------------------------------------------------------------# Sets syntax
#---------------------------------------------------------------------------# Set_Bonuses = {
#
set id => {
#
amount of pieces required => [[sort, parameter, bonus]], [sort, random
parameter, 0]]
#
}
#
}
#
# set_id must correspond to set_id of Sets
# amount of pieces required indicates how many pieces of the set the actor must
# be wearing before receiving the bonus. If you want to skip one, make the only
# element in it's array [0, 0, 0].
# sort indicates which kind of parameters the bonuses change. See SPECIAL VALUES
# for all sorts.
# parameter can be a value depending on sort. See SPECIAL VALUES in the
# instructions for their corresponding stats.
# Bonus is a direct value added to 'parameter'. If 0, no bonus is added. If
# negative, bonus becomes negative.
# Random paramter is just a random parameter to prevent the last bonus from
# being doubled. Always make the bonus of this element 0.
#
# Add a comma after a ']' or '}' if it's not the last element in the array/hash.
#
# Don't forget to add a bonus of [0, 0, 0] at the end! Or else, the last bonus
# will be doubled!
#---------------------------------------------------------------------------Set_Bonuses =
{
1 => {
eme_init_equips(equips)
equips.each_with_index{|item_id, i|
etype_id = index_to_etype_id(i)
slot_id = empty_slot(etype_id)
for set_id in 1..EME::Sets.size
for ees_set_equip in EME::Sets[set_id]
if item_id != nil and slot_id != nil and ees_is_the_set_item?(etype_id
== 0 ? $data_weapons[item_id] : $data_armors[item_id], ees_set_equip)
@item_sets[set_id] += 1
@active_sets.push(set_id) unless @active_sets.include?(set_id)
end
end
end
}
refresh
end
def ees_is_the_set_item?(item, ees_set_equip)
return (((ees_set_equip[0] == 0 and item.is_a?(RPG::Weapon)) or (ees_set_equ
ip[0] == 1 and item.is_a?(RPG::Armor))) and ees_set_equip[1] == item.id)
end
alias eme_ees_learn_skill learn_skill
def learn_skill(skill_id)
eme_ees_learn_skill(skill_id)
@non_set_skills.push(skill_id) unless @skill_from_sets
@skill_from_sets = false
end
alias eme_ebs_change_equip change_equip
def change_equip(slot_id, item)
for set_id in 1..EME::Sets.size
for ees_set_equip in EME::Sets[set_id]
if slot_id != nil and @equips[slot_id] != nil and @equips[slot_id].obj
ect != nil
if ees_is_the_set_item?(@equips[slot_id].object, ees_set_equip)
@item_sets[set_id] -= 1
@active_sets.delete(set_id) if @item_sets[set_id] == 0
end
end
if item != nil and ees_is_the_set_item?(item, ees_set_equip)
@item_sets[set_id] += 1
@active_sets.push(set_id) unless @active_sets.include?(set_id)
if EME::Set_Sounds.has_key?(set_id) and EME::Set_Sounds[set_id].has_
key?(set_amount_wearing(set_id))
sound = EME::Set_Sounds[set_id][set_amount_wearing(set_id)]
Audio.se_play("Audio/SE/" + sound[0], sound[1], sound[2])
end
end
end
end
set_check
eme_ebs_change_equip(slot_id, item)
end
def unlearn_set_skills(set_id)
EME::Set_Bonuses[set_id].each_value{|bonus_array|
bonus_array.each{|bonus|
if bonus[0] == 4
forget_skill(bonus[2]) unless @non_set_skills.include?(bonus[2])
@ees_skills.delete(bonus[2])
end
}
}
end
def item_set_reset_all
@active_sets.each{|set_id| item_set_reset(set_id)}
end
def item_set_reset(set_id)
return unless set_id > 0 and @item_sets[set_id] > 0
unlearn_set_skills(set_id)
end
def release_unequippable_items(item_gain = true)
@equips.each_with_index do |item, i|
if !equippable?(item.object) || item.object.etype_id != equip_slots[i]
trade_item_with_party(nil, item.object) if item_gain
item.object = nil
end
end
end
def release_unequippable_items(item_gain = true)
loop do
change_equips = 0
@equips.each_with_index do |item, i|
if !equippable?(item.object) or item.object.etype_id != equip_slots[i]
next if (RPG::Weapon.method_defined?(:two_handed?) and dual_wield? and
(equip_slots[i] == 1 and item.object.etype_id == 0))
trade_item_with_party(nil, item.object) if item_gain
change_equips += 1 unless item.object.nil?
unless item.object.nil?
for set_id in 1..EME::Sets.size
for ees_set_equip in EME::Sets[set_id]
if ees_is_the_set_item?(item.object, ees_set_equip)
@item_sets[set_id] -= 1
@active_sets.delete(set_id) if @item_sets[set_id] == 0
end
end
end
end
item.object = nil
end
end
set_check
break if change_equips == 0
end
end
alias eme_ebs_discard_equip discard_equip
def discard_equip(item)
slot_id = equips.index(item)
if slot_id != nil
for set_id in 1..EME::Sets.size
for ees_set_equip in EME::Sets[set_id]
if ees_is_the_set_item?(item, ees_set_equip)
@item_sets[set_id] -= 1
@active_sets.delete(set_id) if @item_sets[set_id] == 0
end
end
end
end
eme_ebs_discard_equip(item)
refresh
end
def set_amount_wearing(set_id)
return @item_sets[set_id]
end
def set_check
item_set_reset_all
reset_bonuses
@active_sets.each{|set| change_bonuses(set) unless set == nil}
end
def change_bonuses(set_id)
return if set_id == 0 or set_amount_wearing(set_id) == 0
EME::Set_Bonuses[set_id].each_key{|key|
if set_amount_wearing(set_id) >= key
for g in 0...EME::Set_Bonuses[set_id][key].size
sort = EME::Set_Bonuses[set_id][key][g][0]
stat = EME::Set_Bonuses[set_id][key][g][1]
stat_bonus = EME::Set_Bonuses[set_id][key][g][2]
case EME::Set_Bonuses[set_id][key][g][0]
when 0
sets_param_change(stat, stat_bonus)
when 1
sets_per_param_change(stat, stat_bonus)
when 2
sets_xparam_change(stat, stat_bonus)
when 3
sets_sparam_change(stat, stat_bonus)
when 4
next if skill_learn?(stat_bonus)
@skill_from_sets = true
learn_skill(stat_bonus)
@ees_skills.push(stat_bonus)
when 5
stat -= 1
sets_element_rate_change(stat, stat_bonus)
when 6
stat -= 1
sets_debuff_rate_change(stat, stat_bonus)
when 7
stat -= 1
sets_state_rate_change(stat, stat_bonus)
when 8
sets_state_resist_change(stat, stat_bonus)
when 9
sets_atk_elements_change(stat, stat_bonus)
when 10
sets_atk_states_change(stat) if stat_bonus > 0
sets_atk_states_rate_change(stat, stat_bonus)
when 11
if stat < 2
change_sets_additional_wtypes(stat_bonus, (stat == 0 ? true : fals
e))
@sets_skill_types_remove = []
@sets_sealed_skill_types = []
@sets_sealed_skill_types_remove = []
@sets_sealed_skills = []
@sets_sealed_skills_remove = []
@sets_fixed_equip_types = []
@sets_fixed_equip_types_remove = []
@sets_sealed_equip_types = []
@sets_sealed_equip_types_remove = []
@ees_added_special_flags = []
@ees_removed_special_flags = []
@ees_added_party_abilities = []
@ees_removed_party_abilities = []
@ees_bonus_max_tp = 0
@new_atk_skill = nil
@new_grd_skill = nil
@ees_skills = []
@sets_wtypes = []
@sets_atypes = []
@sets_removed_wtypes = []
@sets_removed_atypes = []
@eme_ebs_two_swords_style = false
end
def sets_param_plus(param_id)
@sets_param_plus[param_id]
end
def sets_param_change(param_id, value)
@sets_param_plus[param_id] += value
end
def sets_per_param_plus(param_id)
value = param_base(param_id) + param_plus(param_id)
value *= @sets_per_param_plus[param_id] / 100
return value
end
def sets_per_param_change(param_id, value)
@sets_per_param_plus[param_id] += value
end
def sets_xparam_plus(param_id)
@sets_xparam_plus[param_id]
end
def sets_xparam_change(param_id, value)
@sets_xparam_plus[param_id] += value
end
def sets_sparam_plus(param_id)
@sets_sparam_plus[param_id]
end
def sets_sparam_change(param_id, value)
@sets_sparam_plus[param_id] += value
end
def sets_element_rate(element_id)
@sets_element_rate[element_id]
end
def sets_element_rate_change(element_id, value)
@sets_element_rate[element_id] += value
end
def sets_debuff_rate(param_id)
@sets_debuff_rate[param_id]
end
def sets_debuff_rate_change(param_id, value)
@sets_debuff_rate[param_id] += value
end
def sets_state_rate(state_id)
@sets_state_rate[state_id]
end
def sets_state_rate_change(state_id, value)
@sets_state_rate[state_id] += value
end
def sets_state_resist(state_id)
@sets_state_resist[state_id]
end
def sets_state_resist_remove(state_id)
@sets_state_resist_remove[state_id]
end
def sets_state_resist_change(state_id, value)
value >= 0 ? (@sets_state_resist.push(state_id) unless @sets_state_resist.in
clude?(state_id)) : (@sets_state_resist_remove.delete(state_id) unless @sets_sta
te_resist_remove.include?(state_id))
end
def sets_atk_elements(element_id)
@sets_atk_elements[element_id]
end
def sets_atk_elements_remove(element_id)
@sets_atk_elements_remove[element_id]
end
def sets_atk_elements_change(element_id, value)
value >= 0 ? (@sets_atk_elements.push(element_id) unless @sets_atk_elements.
include?(element_id)) : (@sets_attack_elements_remove.delete(element_id) unless
@sets_atk_elements_remove.include?(element_id))
end
def sets_atk_states(state_id)
@sets_atk_states[state_id]
end
def sets_atk_states_change(state_id)
@sets_atk_states.push(state_id) unless @sets_atk_states.include?(state_id)
end
def sets_atk_states_rate(state_id)
@sets_atk_states_rate[state_id]
end
def sets_atk_states_rate_change(state_id, value)
@sets_atk_states_rate[state_id] += value
end
def sets_atk_speed_plus
@sets_atk_speed_plus
end
def sets_atk_times_plus
@sets_atk_times_plus
end
def sets_atk_specials_change(parameter, value)
parameter == 0 ? @sets_atk_speed_plus += value : @sets_atk_times_plus += val
ue
end
def sets_skill_types(skill_type_id)
@sets_skill_types[skill_type_id]
end
def sets_skill_types_remove(skill_type_id)
@sets_skill_types_remove[skill_type_id]
end
def add_sets_skill_types(skill_type_id, value)
value >= 0 ? (@sets_skill_types.push(skill_type_id) unless @sets_skill_types
.include?(skill_type_id)) : (@sets_skill_types_remove.delete(skill_type_id) unle
ss @sets_skill_types_remove.include?(skill_type_id))
end
def sets_sealed_skill_types(skill_type_id)
@sets_sealed_skill_types[skill_type_id]
end
def sets_sealed_skill_types_remove(skill_type_id)
@sets_sealed_skill_types_remove[skill_type_id]
end
def add_sealed_skill_types(skill_type_id, value)
value >= 0 ? (@sets_sealed_skill_types.push(skill_type_id) unless @sets_seal
ed_skill_types.include?(skill_type_id)) : (@sets_sealed_skill_types_remove.delet
e(skill_type_id) unless @sets_sealed_skill_types_remove.include?(skill_type_id))
end
def sets_sealed_skills(skill_id)
@sets_sealed_skills[skill_id]
end
def sets_sealed_skills_remove(skill_id)
@sets_sealed_skills_remove[skill_id]
end
def add_sets_sealed_skills(skill_id, value)
value > 0 ? (@sets_sealed_skills.push(skill_id) unless @sets_sealed_skills.i
nclude?(skill_id)) : (@sets_attack_elements_remove.delete(skill_id) unless @sets
_sealed_skills_remove.include?(skill_id))
end
def sets_additional_wtypes
@sets_wtypes
end
def sets_additional_atypes
@sets_atypes
end
def sets_removed_wtypes
@sets_removed_wtypes
end
def sets_removed_atypes
@sets_removed_atypes
end
def change_sets_additional_wtypes(wtype_id, positive_change = true)
positive_change ? @sets_wtypes.push(wtype_id) : @sets_removed_wtypes.push(wt
ype_id)
end
def change_sets_additional_atypes(atype_id, positive_change = true)
positive_change ? @sets_atypes.push(atype_id) : @sets_removed_atypes.push(at
ype_id)
end
def sets_fixed_equip_types(equip_type_id)
@sets_fixed_equip_types[equip_type_id]
end
def sets_fixed_equip_types_remove(equip_type_id)
@sets_fixed_equip_types_remove[equip_type_id]
end
def add_fixed_equip_types(equip_type_id, value)
value >= 0 ? @sets_fixed_equip_types.push(equip_type_id) : @sets_fixed_equip
_types_remove.delete(sequip_type_id)
end
def sets_sealed_equip_types(equip_type_id)
@sets_sealed_equip_types[equip_type_id]
end
def sets_sealed_equip_types_remove(equip_type_id)
@sets_sealed_equip_types_remove[equip_type_id]
end
def add_sealed_equip_types(equip_type_id, value)
value > 0 ? (@sets_sealed_equip_types.push(equip_type_id) unless @sets_seale
d_equip_types.include?(equip_type_id)) : (@sets_sealed_equip_types_remove.delete
(equip_type_id) unless @sets_sealed_equip_types_remove.include?(equip_type_id))
end
def change_special_flags(flag_id, negative = false)
!negative ? @ees_added_special_flags.push(flag_id) : @ees_removed_special_fl
ags.push(flag_id)
end
value = features_set(FEATURE_STYPE_SEAL)
@sets_sealed_skill_types.each{|sk_type| value.push(sk_type)}
@sets_sealed_skill_types_remove.each{|sk_type| value.delete(sk_type)}
return true if value.include?(stype_id)
end
def skill_sealed?(skill_id)
value = features_set(FEATURE_SKILL_SEAL)
@sets_sealed_skills.each{|skill| value.push(skill)}
@sets_sealed_skills_remove.each{|skill| value.delete(skill)}
return true if value.include?(skill_id)
end
def equip_wtype_ok?(wtype_id)
value = features_set(FEATURE_EQUIP_WTYPE)
@sets_wtypes.each{|w_type| value.push(w_type)}
@sets_removed_wtypes.each{|w_type| value.delete(w_type)}
return true if value.include?(wtype_id)
end
def equip_atype_ok?(atype_id)
value = features_set(FEATURE_EQUIP_ATYPE)
@sets_atypes.each{|a_type| value.push(a_type)}
@sets_removed_atypes.each{|a_type| value.delete(a_type)}
return true if value.include?(atype_id)
end
def equip_type_fixed?(etype_id)
value = features_set(FEATURE_EQUIP_FIX)
@sets_fixed_equip_types.each{|e_type| value.push(e_type)}
@sets_fixed_equip_types_remove.each{|e_type| value.delete(e_type)}
return true if value.include?(etype_id)
end
def equip_type_sealed?(etype_id)
value = features_set(FEATURE_EQUIP_SEAL)
@sets_sealed_equip_types.each{|e_type| value.push(e_type)}
@sets_sealed_equip_types_remove.each{|e_type| value.delete(e_type)}
return true if value.include?(etype_id)
end
alias eme_ees_special_flag special_flag
def special_flag(flag_id)
return false if @ees_removed_special_flags.include?(flag_id)
return @ees_added_special_flags.include?(flag_id) ? true : eme_ees_special_f
lag(flag_id)
end
alias eme_ees_party_ability party_ability
def party_ability(ability_id)
return false if @ees_removed_party_abilities.include?(ability_id)
return @ees_added_party_abilities.include?(ability_id) ? true : eme_ees_part
y_ability(ability_id)
end
alias eme_ees_max_tp max_tp
def max_tp
return eme_ees_max_tp + @ees_bonus_max_tp
end