- 注册时间
- 2004-10-29
- 最后登录
- 2006-4-22
⑤进阶
- 积分
- 568
|
我不知道怎么用,谁能告诉我,应该加在脚本编辑器里的哪一个脚本里
一、装备特殊效果
效果:
代码(两部分):
PART 1:
# ▼▲▼ XRXS21. 特殊効果詰め合わせ:その他 with 4 parts ver..04 ▼▲▼
# by 桜雅 在土
#==============================================================================
# ◇ 付加属性名称判定モジュール
#==============================================================================
module Check_ElementName_Set
#--------------------------------------------------------------------------
# ● スキルが指定名の属性を持つか判定
#--------------------------------------------------------------------------
def skill_element_include?(skill, element_name)
@one = @two = nil
return false if skill == nil or !skill.is_a?(RPG::Skill)
for i in skill.element_set
if $data_system.elements =~ /#{element_name}([+-]?[0-9]+)?(%)?/
@one = $1
@two = $2
return true
end
end
return false
end
#--------------------------------------------------------------------------
# ● アイテムが指定名の属性を持つか判定
#--------------------------------------------------------------------------
def item_element_include?(item, element_name)
@one = @two = nil
return false if item == nil or !item.is_a?(RPG::Item)
for i in item.element_set
if $data_system.elements =~ /#{element_name}([+-]?[0-9]+)?(%)?/
@one = $1
@two = $2
return true
end
end
return false
end
#--------------------------------------------------------------------------
# ● 武器が指定名の属性を持つか判定
#--------------------------------------------------------------------------
def weapon_element_include?(weapon_id, element_name)
@one = @two = nil
return false if weapon_id == nil or weapon_id <= 0
for i in $data_weapons[weapon_id].element_set
if $data_system.elements =~ /#{element_name}([+-]?[0-9]+)?(%)?/
@one = $1
@two = $2
return true
end
end
return false
end
#--------------------------------------------------------------------------
# ● 防具が指定名の属性を持つか判定
#--------------------------------------------------------------------------
def armor_element_include?(armor_id, element_name)
@one = @two = nil
return false if armor_id == nil or armor_id <= 0
for i in $data_armors[armor_id].guard_element_set
if $data_system.elements =~ /#{element_name}([+-]?[0-9]+)?(%)?/
@one = $1
@two = $2
return true
end
end
return false
end
#--------------------------------------------------------------------------
# ● 防具が指定名の属性を持つ場合その後に付く接尾テキストを取得
#--------------------------------------------------------------------------
def armor_element_suftext(armor_id, element_name)
return nil if armor_id == nil or armor_id <= 0
for i in $data_armors[armor_id].guard_element_set
if $data_system.elements =~ /#{element_name}(.*)/
return $1
end
end
return nil
end
#--------------------------------------------------------------------------
# ● アクターが指定名の属性を持つ武器/防具を装備中か判定 数値の合計も保持
#--------------------------------------------------------------------------
def actor_element_equip?(actor, element_name)
one_total = 0
bool = false
return false if !actor.is_a?(Game_Actor)
weapon = $data_weapons[actor.weapon_id]
armor1 = $data_armors[actor.armor1_id]
armor2 = $data_armors[actor.armor2_id]
armor3 = $data_armors[actor.armor3_id]
armor4 = $data_armors[actor.armor4_id]
if weapon_element_include?(weapon.id, element_name)
one_total += @one.to_i
bool = true
end
if armor_element_include?(armor1.id, element_name)
one_total += @one.to_i
bool = true
end
if armor_element_include?(armor2.id, element_name)
one_total += @one.to_i
bool = true
end
if armor_element_include?(armor3.id, element_name)
one_total += @one.to_i
bool = true
end
if armor_element_include?(armor4.id, element_name)
one_total += @one.to_i
bool = true
end
@one = one_total
return bool
end
end
#==============================================================================
# ■ Game_Actor
#==============================================================================
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# ◇ インクルード
#--------------------------------------------------------------------------
include Check_ElementName_Set
#--------------------------------------------------------------------------
# ● セットアップ
#--------------------------------------------------------------------------
alias xrxs21_setup setup
def setup(actor_id)
xrxs21_setup(actor_id)
@character_name_original = @character_name
@battler_name_original = @battler_name
end
#--------------------------------------------------------------------------
# ● 属性補正値の取得
#--------------------------------------------------------------------------
alias xrxs21_element_rate element_rate
def element_rate(element_id)
rate = xrxs21_element_rate(element_id)
element_name = $data_system.elements[element_id]
# 属性防御を持つ"装備スキル"をもつ場合は半減
for i in @skills
skill = $data_skills
next if skill == nil
if skill_element_include?(skill, "装備スキル")
for j in skill.element_set
if $data_system.elements[j] != nil
if $data_system.elements[j] =~ /^#{element_name}属性([+-]?[0-9]+)(%|%)/
rate += $1.to_i
end
if $data_system.elements[j] =~ /^全属性([+-]?[0-9]+)(%|%)/
rate += $1.to_i
end
end
end
end
end
return rate
end
#--------------------------------------------------------------------------
# ● ステート有効度の取得
#--------------------------------------------------------------------------
def state_percent(state_id)
effect_percent = [0,100,80,60,40,20,0][self.state_ranks[state_id]]
state_name = $data_states[state_id].name
return effect_percent if self.is_a?(Game_Enemy)
# 防具にステート%防御が設定されている場合は確率減少
for k in [@armor1_id, @armor2_id, @armor3_id, @armor4_id]
armor = $data_armors[k]
next if armor == nil
for j in armor.guard_state_set
if $data_states[j] != nil
if $data_states[j].name =~ /^#{state_name}確率([0-9]+)(%|%)/
effect_percent -= $1.to_i
end
end
end
end
# ステートのステート変化を参照
for k in @states
# マイナスステートにステート%防御が設定されている場合は確率減少
for j in $data_states[k].minus_state_set
if $data_states[j] != nil
if $data_states[j].name =~ /^#{state_name}確率([0-9]+)(%|%)/
effect_percent -= $1.to_i
end
end
end
# プラスステートにステート%防御が設定されている場合は確率上昇
for j in $data_states[k].plus_state_set
if $data_states[j] != nil
if $data_states[j].name =~ /^#{state_name}確率([0-9]+)(%|%)/
effect_percent += $1.to_i
end
end
end
end
# ステート防御を持つ"装備スキル"をもつ場合は確率計算
for i in @skills
skill = $data_skills
next if skill == nil
if skill_element_include?(skill, "装備スキル")
for j in skill.plus_state_set
if $data_states[j] != nil
if $data_states[j] =~ /^#{state_name}確率([0-9]+)(%|%)/
effect_percent += $1.to_i
end
end
end
for j in skill.minus_state_set
if $data_states[j] != nil
if $data_states[j] =~ /^#{state_name}確率([0-9]+)(%|%)/
effect_percent -= $1.to_i
end
end
end
end
end
return effect_percent
end
#--------------------------------------------------------------------------
# ● 装備の変更
#--------------------------------------------------------------------------
alias xrxs21_equip equip
def equip(equip_type, id)
# 防具の場合
if equip_type >= 1
if id == 0 or $game_party.armor_number(id) > 0
# 既存装備の判定
case equip_type
when 1
armor_id = @armor1_id
when 2
armor_id = @armor2_id
when 3
armor_id = @armor3_id
when 4
armor_id = @armor4_id
end
file_name = armor_element_suftext(armor_id, "キャラクター変化")
if file_name != nil
# "キャラクター変化"がある防具を外した場合、元に戻す。
@character_name = @character_name_original
end
file_name = armor_element_suftext(armor_id, "バトラー変化")
if file_name != nil
# "バトラー変化"がある防具を外した場合、元に戻す。
@battler_name = @battler_name_original
end
# 新規装備の判定
file_name = armor_element_suftext(id, "キャラクター変化")
if file_name != nil
# "キャラクター変化"がある防具を装備した場合、変化。
#if FileTest.exist?("Graphic/Character" + file_name + ".png")
@character_name = file_name
#end
end
file_name = armor_element_suftext(id, "バトラー変化")
if file_name != nil
# "バトラー変化"がある防具を装備した場合、変化。
#if FileTest.exist?("Graphic/Battler" + file_name + ".png")
@battler_name = file_name
#end
end
# プレイヤーをリフレッシュ
$game_player.refresh
end
end
# 戻す
xrxs21_equip(equip_type, id)
end
#--------------------------------------------------------------------------
# ● 基本腕力の取得
#--------------------------------------------------------------------------
alias xrxs19_base_str base_str
def base_str
percentage = 100
for i in @skills
skill = $data_skills
if skill_element_include?(skill, "装備スキル")
percentage = percentage * skill.str_f / 10
end
end
return xrxs19_base_str * percentage / 100
end
#--------------------------------------------------------------------------
# ● 基本器用さの取得
#--------------------------------------------------------------------------
alias xrxs19_base_dex base_dex
def base_dex
percentage = 100
for i in @skills
skill = $data_skills
if skill_element_include?(skill, "装備スキル")
percentage = percentage * skill.dex_f / 10
end
end
return xrxs19_base_dex * percentage / 100
end
#--------------------------------------------------------------------------
# ● 基本素早さの取得
#--------------------------------------------------------------------------
alias xrxs19_base_agi base_agi
def base_agi
percentage = 100
for i in @skills
skill = $data_skills
if skill_element_include?(skill, "装備スキル")
percentage = percentage * skill.agi_f / 10
end
end
return xrxs19_base_agi * percentage / 100
end
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
|