查看: 1706|回复: 0

[已经过期] 如何将SRPG技能变成EFS技能

[复制链接]
梦石
0
星屑
7296
在线时间
1244 小时
注册时间
2015-8-15
回帖
473
发表于 2023-5-11 16:28:38 | 显示全部楼层 |阅读模式

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

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

×
把图中的可能使用改为平时
[pre lang="ruby"] # module RPG
  class Skill#技能类
   
    #类型: 0 是 正常技能(默认RPG MAKER 技能)
    #       1 是 SRPG技能
    #       2 是 EFS技能
    def type #定义类型
      #类型=@名称。拆分(/,/)[1]
      type = @name.split(/;/)[1]
      # #返回类型!=无类型至i:0
      return type != nil ? type.to_i : 0
    end  
   
    def name#定义名称
      # 名称=@名称。拆分(/,/)[0]
      name = @name.split(/,/)[0]
      #返回名称!=无名称:“”
      return name != nil ? name : ""
    end
   
    def range##定义射程区域
      #射程区域=@名称。拆分(/,/)[1]
      range = @name.split(/,/)[1]
       #返回射程区域!=无射程区域至i:2
      return range != nil ? range.to_i : 2
    end
   
    #---<范围魔法>---
    def area#定义魔法范围
      #魔法范围@名称。拆分(/,/)[2]
      area = @name.split(/,/)[2]
       #返回魔法范围!=魔法范围至i:2
      return area != nil ? area.to_i : 2
    end
    #---<范围魔法>---
    #  0 : 使用后无法行动
    #  1 : 使用后可以行动
    #  2 : 行动后无法使用,且使用后无法行动
    #  3 : 行动后无法使用,且使用后可以行动
   
    def cost_type#定义成本类型
      ##魔法范围@名称。拆分(/,/)[3]
      area = @name.split(/,/)[3]
       #返回魔法范围!=无?魔法范围至i:0
      return area != nil ? area.to_i : 0
    end
   
   
    def scope#定义能力范围
      #如果元素集。包括(Wzj::技能用于敌方区域)
      if @element_set.include?(Wzj::SKILL_FOR_ENEMY_AREA)
        return 8 #返回 8
        #否则元素集。包括(Wzj::我们的技能领域)
      elsif @element_set.include?(Wzj::SKILL_FOR_US_AREA)
        return 9 #返回 9
        #否则元素集。包括(Wzj::我们区域的技能_HP0)
      elsif @element_set.include?(Wzj::SKILL_FOR_US_AREA_HP0)
        return 10#返回 10
      else#否则
        return @scope#返回@范围
      end
    end
  end[/pre]








[pre lang="ruby"]class Scene_Map
  
  
  
  #=======================================================
  # SRPG技能关联
  # 格式: 技能ID =>  执行技能的名字
  #=======================================================
  #,6,10,9技能_千和箭头(@攻击者,@技能,目标)
  SRPG_SKILLS = {
    1 => "skill_ten_thousand_arrows(@attacker, @skill,target)",
    2 => "skill_zhenfen_morale(@attacker, @skill,target)",
    3 => "",
    4 => "skill_distory_morale(@attacker, @skill,target)"

  }
  #=======================================================
  # SRPG技能发动条件
  # 格式: 技能ID =>  检查技能的method名字
  # 如果空的,则可以使用
  #=======================================================
  #,6,10,9
  #SRPG_可使用SRPG技能
  SRPG_SKILLS_CAN_USE = {
    1 => "check_skill_ten_thousand_arrows(self.army)",
    2 => "",
    3 => "",
    4 => ""

  }
  def get_srpg_skills_can_use_list#定义获取srpg技能可以使用列表
    return SRPG_SKILLS_CAN_USE.clone#返回 SRPG技能可用。克隆
  end
  #=======================================================
  # SRPG技能 1 : 万箭齐发
  #=======================================================
  #定义技能_千和箭头(@攻击者,@技能,目标)
  def skill_ten_thousand_arrows(attacker,skill,target)
    #攻击者。事件转向xy(目标事件.x,目标。事件.y)
    attacker.event.turn_toward_xy(target.event.x,target.event.y)
    #目标事件转向方向xy(攻击者.事件.x,攻击者.事件.y)
    target.event.turn_toward_xy(attacker.event.x,attacker.event.y)
      #攻击者。事件伤害=“放箭!"
      attacker.event.damage = "放箭!"
      #攻击者。事件关键=错误
      attacker.event.critical = false
      #攻击者。事件伤害弹出=真
      attacker.event.damage_pop = true
    #播放动画(攻击者、攻击者、事件、角色名称+“-atk-1”)  
    play_anime(attacker,attacker.event.character_name + "-atk-1")
    #目标列表=[]
    target_list = []
    #目标成员。每个执行|组|
    target.member.each do|group|
    #组战士每个都做|f|  
    group.fighter.each do|f|
      #下一个如果f死了?
      next if f.dead?
     # 目标列表.推送 f
      target_list.push f
    end  
  end
   #全部阵亡=假
    all_killed = false
    #数字位数=0
    num_hit = 0
    #总和=0.0
    sum = 0.0
    #攻击者。成员每个执行|组|
    attacker.member.each do|group|
    ##组战士每个都做|f|  
    group.fighter.each do|f|
      if target_list.size == 0
        all_killed = true
        break
      end  
      next if f.dead? or f.is_a?(EFS_Infantry) or f.is_a?(EFS_Horseman) or f.is_a?(EFS_Hero) or f.is_a?(EFS_Object)
        Audio.se_play("Audio/SE/"+f.s_shoot_se+ (rand(f.s_shoot_se_num)+1).to_s,80, 100)
        wait_a_moment(true,4)
        Audio.se_play("Audio/SE/"+f.s_pass_by_se+ (rand(f.s_pass_by_se_num)+1).to_s,80, 100)
        wait_a_moment(true,4)
        #如果射中
        if rand(101) <= f.accuracy
          #p attacker.event.x - target.event.x,attacker.event.y
         a =  f.give_me_a_arrow_obj(attacker.event,target.event.x-attacker.event.x,target.event.y-attacker.event.y,true)
         $game_map.missiles.push a
         $scene.spriteset.add_missiles(a)
          target.event.animation_id = 153
        Audio.se_play("Audio/SE/"+f.s_atk_se+ (rand(f.s_atk_se_num)+1).to_s,80, 100)
        wait_a_moment(true,4)
          num_hit += 1
          t = target_list[rand(target_list.size)]
          damage = f.s_bro_atk + [f.s_base_atk - t.armor_hp_max,rand(5)+5].max
            t.recieve_damage(damage)
            if t.dead?
              target_list.delete(t)
            end
            
            
            sum += damage
      target.event.damage = damage
      target.event.critical = false
      target.event.damage_pop = true
    else #如果没射中
         a =  f.give_me_a_arrow_obj(attacker.event,target.event.x-attacker.event.x,target.event.y-attacker.event.y,false)
         $game_map.missiles.push a
         $scene.spriteset.add_missiles(a)
          target.event.damage = "Miss"
            target.event.critical = false
          target.event.damage_pop = true            
            target.event.animation_id = 135
        Audio.se_play("Audio/SE/"+f.s_drop_se+ (rand(f.s_drop_se_num)+1).to_s,80, 100)
        wait_a_moment(true,4)
        end  #if zhong
      end  #group
        break if all_killed
  end #attacker
    target.event.damage = sum.round
    target.event.critical = true
    target.event.damage_pop = true
    Notification.post("命中"+target.the_name+"中的"+num_hit.to_s+"人,共计造成"+sum.round.to_s+"点伤害。")
    if all_killed
    for id in @armies.keys
      if @armies[id].all_dead?
          next if @dealed_death_actors.include?(id)
          deaths_disappear(id)
      end
    end
    end
    target.delete_all_dead
    wait_a_moment(true)
  end
  #==============================================
  def check_skill_ten_thousand_arrows(attacker)
    sum = 0
    attacker.member.each do|group|
    group.fighter.each do|f|
      next if f.dead? or f.is_a?(EFS_Infantry) or f.is_a?(EFS_Horseman) or f.is_a?(EFS_Hero) or f.is_a?(EFS_Object)
      sum += 1
    end  
    end  
    return sum >=5  
  end  
  #=======================================================
  # SRPG技能 2 : 振奋士气
  #=======================================================
  #定义-skill振奋士气(攻击者、技能、目标)
  def skill_zhenfen_morale(attacker,skill,target)
   
    # 目标添加常量状态(10)
    target.add_const_state(10)
   
  
   
  end
  
  
  #=======================================================
  # SRPG技能 4 : 士气打击
  #=======================================================
   #定义技能分散士气(攻击者、技能、目标)
   #def-skill distory士气(攻击者、技能、目标)
   def skill_distory_morale(attacker,skill,target)
     # 目标添加常量状态(5)
      target.add_const_state(5)
   
  end[/pre]
技能.png
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部