Project1

标题: 嘲讽后如何改变敌人单体伤害技能的攻击目标 [打印本页]

作者: crow2006    时间: 2014-4-14 13:53
标题: 嘲讽后如何改变敌人单体伤害技能的攻击目标
本帖最后由 crow2006 于 2014-4-14 13:55 编辑

  #--------------------------------------------------------------------------
  # ● 作成技能或是物品的目标的扩张
  #--------------------------------------------------------------------------
  def make_obj_targets2(obj, targets)
########################################################################
    for member in $game_party.members
      if member.state?(229) #MT释放嘲讽技能之后自身获得的状态编号
        if not battler.actor? and obj.base_damage > 0 and obj.scope == 1 #敌方施放单体伤害技能
???? #这里应当如何写?让敌人单体伤害技能的攻击目标强制变为我方队员中携带229号状态的角色
        end
      end
    end
########################################################################
    if obj.extension.include?("全区域")
      targets = []
      targets += opponents_unit.existing_members
      targets += friends_unit.existing_members
    end
    if obj.extension.include?("自分以外")
      targets.delete($game_party.members[battler.index]) if battler.actor?
      targets.delete($game_troop.members[battler.index]) unless battler.actor?
    end
    return targets.compact
  end
作者: 丿梁丶小柒    时间: 2014-4-14 17:21
本帖最后由 丿梁丶小柒 于 2014-4-14 17:22 编辑

嘲讽技能不必这样写,LZ可以参考我这个。

在Game_Actor里搜索def odds
然后照我下面的这样写下去
  1.   def odds  #吸引力
  2.     if self.state?(x) #当获得指定x编号的状态时
  3.     return 100      #当获得指定状态时吸引最大
  4.   else
  5.     return 4 - self.class.position   #正常状态时的吸引力
  6.     end
  7.   end
复制代码

作者: 丿梁丶小柒    时间: 2014-4-15 12:16
是不是百分之100  这个是用于设定嘲讽技能的,嘲讽技能也不至于100%,不过只是提高吸引力而已。
如果是剧情使用的话可以使用战斗指令强制敌人攻击战斗排在第几位的伙伴。
作者: crow2006    时间: 2014-4-26 09:40
有人能够解答一下吗
作者: 皮卡星    时间: 2014-4-26 15:34
本帖最后由 皮卡星 于 2014-4-26 08:37 编辑
  1.   def random_target
  2.     roulette = []
  3.     for member in existing_members
  4.       member.odds.times do
  5.         roulette.push(member)
  6.       end
  7.     end
  8.     return roulette.size > 0 ? roulette[rand(roulette.size)] : nil
  9.   end
复制代码
参考Game_Unit的52行开始
这段就是决定随机目标的写法了,虽然没测试不过大概可以这样写:
  1.   def random_target
  2.     roulette = []
  3.     for member in existing_members
  4.       if member.state?(229)
  5.         return member
  6.       else
  7.         member.odds.times do
  8.           roulette.push(member)
  9.         end
  10.       end
  11.     end
  12.     return roulette.size > 0 ? roulette[rand(roulette.size)] : nil
  13.   end
复制代码
没经过测试,不知道可不可以,LZ试试
作者: crow2006    时间: 2014-4-27 09:16
本帖最后由 crow2006 于 2014-4-28 00:57 编辑

  #--------------------------------------------------------------------------
  # ● 嘲讽
  #     index : 位置
  #--------------------------------------------------------------------------
  def chaofeng_target(index)  
########################################嘲讽后强制改变目标
    for member in existing_members
      return member if member.state?(235) #猎人印记
      return member if member.state?(229) #援护队友
    end
#######################################     
    member = members[index]
    return member if member != nil and member.exist?
    return existing_members[0]
  end


      elsif obj.for_one?        # 敌单体
        targets.push(opponents_unit.chaofeng_target(@target_index)) #嘲讽


解决了,在直接目标选择这里设置即可。




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