赞 | 0 |
VIP | 0 |
好人卡 | 0 |
积分 | 3 |
经验 | 0 |
最后登录 | 2025-7-9 |
在线时间 | 19 小时 |
Lv2.观梦者
- 梦石
- 0
- 星屑
- 255
- 在线时间
- 19 小时
- 注册时间
- 2023-9-8
- 帖子
- 5
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 Ruigi 于 2025-7-7 01:01 编辑
楼主在玩地球冒险2的时候发现Poo的“镜像”技能很有意思,于是就用ai写了一个,亲测有效
以下是脚本
#==============================================================================
# ** Game_Battler
#------------------------------------------------------------------------------
# 添加变身技能相关方法
#==============================================================================
class Game_Battler < Game_BattlerBase
# 添加属性访问器
attr_accessor :transformed_skills
attr_accessor :transformation_duration
# 初始化对象
alias transform_skill_initialize initialize
def initialize
transform_skill_initialize
@transformed_skills = []
@transformation_duration = 0
end
# 每回合更新
alias transform_skill_on_turn_end on_turn_end
def on_turn_end
transform_skill_on_turn_end
update_transformation
end
# 更新变身状态
def update_transformation
return if @transformation_duration <= 0
@transformation_duration -= 1
if @transformation_duration <= 0
@transformed_skills.each do |skill_id|
forget_skill(skill_id)
end
@transformed_skills.clear
end
end
# 添加变身技能
def add_transformed_skill(skill_id, duration)
return if skill_learn?($data_skills[skill_id])
learn_skill(skill_id)
@transformed_skills << skill_id
@transformation_duration = [@transformation_duration, duration].max
end
# 检查是否是变身技能
def transform_skill?(skill)
skill && skill.note.include?("<transform_skill>")
end
# 获取变身概率
def transform_probability(skill)
skill.note[/<transform_prob:(\d+)>/i] ? $1.to_i : 100
end
# 获取变身持续时间
def transform_duration(skill)
skill.note[/<transform_duration:(\d+)>/i] ? $1.to_i : 3
end
end
#==============================================================================
# ** Scene_Battle
#------------------------------------------------------------------------------
# 添加变身技能处理
#==============================================================================
class Scene_Battle < Scene_Base
# 使用技能
alias transform_skill_use_item use_item
def use_item
item = @subject.current_action.item
if @subject.transform_skill?(item) && @subject.current_action.target_index >= 0
process_transform_skill(item)
end
transform_skill_use_item
end
# 处理变身技能
def process_transform_skill(skill)
# 获取目标数组
targets = @subject.current_action.make_targets.compact
return if targets.empty?
# 只对第一个敌人目标有效
target = targets.find { |t| t.is_a?(Game_Enemy) }
return unless target
# 获取可学习的技能列表(排除特殊技能)
learnable_skills = target.actions.select do |action|
action.item && action.item.is_a?(RPG::Skill) &&
!action.item.note.include?("<no_transform>")
end
return if learnable_skills.empty?
# 随机选择一个技能
selected_action = learnable_skills.sample
skill_id = selected_action.item.id
# 计算成功概率
probability = @subject.transform_probability(skill)
duration = @subject.transform_duration(skill)
if rand(100) < probability
@subject.add_transformed_skill(skill_id, duration)
@log_window.add_text("#{@subject.name}学会了#{selected_action.item.name}!")
else
@log_window.add_text("#{@subject.name}的变身失败了!")
end
end
end
|
|
|