赞 | 0 |
VIP | 0 |
好人卡 | 0 |
积分 | 1 |
经验 | 1731 |
最后登录 | 2016-8-8 |
在线时间 | 23 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 50
- 在线时间
- 23 小时
- 注册时间
- 2015-9-13
- 帖子
- 14
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
#==============================================================================
# 随机学技能的物品 by 沉影不器
#------------------------------------------------------------------------------
# 功能: 指定某些一次性物品附带技能,使用后随机学会物品附带的技能之一
# 说明: 第10行设定格式如下
# 带技能的物品id => [该物品所带技能id, 该物品所带技能id, ...]
# 例: SKILL_FROM_ITEM = {22=>[77,78,79]}
# 22号物品带77,78,79号三种技能
#==============================================================================
SKILL_FROM_ITEM = {22=>[77,78,79], 23=>[80,81,82]}
#==============================================================================
# ■ Game_Battler
#==============================================================================
class Game_Battler
#--------------------------------------------------------------------------
# ● 应用物品效果
# user : 物品使用者
# item : 物品
#--------------------------------------------------------------------------
def item_effect(user, item)
clear_action_results
unless item_effective?(user, item)
@skipped = true
return
end
skill_from_item(user, item) # 随机学技能
if rand(100) >= calc_hit(user, item) # 判断命中
@missed = true
return
end
if rand(100) < calc_eva(user, item) # 判断回避
@evaded = true
return
end
hp_recovery = calc_hp_recovery(user, item) # 计算回复量
mp_recovery = calc_mp_recovery(user, item)
make_obj_damage_value(user, item) # 计算伤害
@hp_damage -= hp_recovery
@mp_damage -= mp_recovery
make_obj_absorb_effect(user, item) # 计算吸收效果
execute_damage(user) # 反映伤害
item_growth_effect(user, item) # 应用成长效果
if item.physical_attack and @hp_damage == 0 # 判断物理攻击无效
return
end
apply_state_changes(item) # 状态变化
end
#--------------------------------------------------------------------------
# ● 随机学技能
# user : 物品使用者
# item : 物品
#--------------------------------------------------------------------------
def skill_from_item(user, item)
# 物品对敌人无效 角色死亡无效
if user.is_a?(Game_Actor) and !user.dead? and
# 包含指定技能 id 的物品
SKILL_FROM_ITEM.keys.include?(item.id)
temp_skills = SKILL_FROM_ITEM[item.id]
# 随机
user.learn_skill temp_skills[rand(temp_skills.size-1)]
end
end
end
#==============================================================================
# ■ Window_Base
#==============================================================================
class Window_Base < Window
#--------------------------------------------------------------------------
# ● 设定物品描述
#--------------------------------------------------------------------------
def set_item_description(item_id)
text = ""
temp_skills = SKILL_FROM_ITEM[item_id]
for i in 0...temp_skills.size
skill_id = temp_skills[i]
skill = $data_skills[skill_id]
if i == temp_skills.size - 2
text += skill.name.to_s
elsif i == temp_skills.size - 1
text += "和" + skill.name.to_s
else
text += skill.name.to_s + "、"
end
end
return "随机学会" + text + "的物品"
end
end
#==============================================================================
# ■ Window_Item
#==============================================================================
class Window_Item < Window_Selectable
#--------------------------------------------------------------------------
# ● 更新帮助文本
#--------------------------------------------------------------------------
def update_help
if item == nil
text = ""
elsif SKILL_FROM_ITEM.keys.include?(item.id)
text = set_item_description(item.id)
else
text = item.description
end
@help_window.set_text(text)
end
end
#==============================================================================
# ■ Window_ShopBuy
#==============================================================================
class Window_ShopBuy < Window_Selectable
#--------------------------------------------------------------------------
# ● 更新帮助文本
#--------------------------------------------------------------------------
def update_help
if item == nil
text = ""
elsif SKILL_FROM_ITEM.keys.include?(item.id)
text = set_item_description(item.id)
else
text = item.description
end
@help_window.set_text(text)
end
end |
|