设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 40|回复: 0
打印 上一主题 下一主题

[原创发布] “镜像”技能

[复制链接]

Lv2.观梦者

梦石
0
星屑
255
在线时间
19 小时
注册时间
2023-9-8
帖子
5
跳转到指定楼层
1
发表于 前天 00:55 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

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


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

3D7D61C28F924E23BDB9CD05EFDC7FAB.png
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2025-7-9 08:49

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表