Project1

标题: “镜像”技能 [打印本页]

作者: Ruigi    时间: 2025-7-7 00:55
标题: “镜像”技能
本帖最后由 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


3D7D61C28F924E23BDB9CD05EFDC7FAB.png (49.65 KB, 下载次数: 6)

3D7D61C28F924E23BDB9CD05EFDC7FAB.png

作者: gejiziliao    时间: 2025-7-10 00:22
不明白啥效果
作者: Ruigi    时间: 2025-7-10 00:31
gejiziliao 发表于 2025-7-10 00:22
不明白啥效果

就是概率会暂时学习敌人的任意一个技能啦




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1