Project1

标题: 如何设定多次行动的敌人特定类型技能每回合只发动一个? [打印本页]

作者: fbeds    时间: 2021-10-23 23:08
标题: 如何设定多次行动的敌人特定类型技能每回合只发动一个?
本帖最后由 fbeds 于 2021-10-25 17:12 编辑

【问题已修改】我找到了之前那个问题的解决办法,就是更改判定敌人选择哪个技能发动的时机。默认敌人的行动是和我方角色一样在回合开始前决定好的,我想把敌人的行动设定成敌人即将行动时再判定选择哪个可以发动的技能发动,而且对于每回合多次行动的敌人来说(比方说行动两次的),它是第一次行动结束后,再进行第二次行动的判定,而不是在轮到它行动时就把两次行动都决定好。在这样的情况下,敌人第一次行动时选择了我想指定的那个类型的技能后,给其附加一个不能再使用这个技能类型的状态,这样其本回合接下来的行动就不会再使用这个类型的技能,而且也不会什么也做不了。这个应该只需要改变脚本的位置就行了吧?懂脚本的知道怎么改吗?
作者: 这是一个昵称9    时间: 2021-10-23 23:08
本帖最后由 这是一个昵称9 于 2021-10-25 23:54 编辑

如果是默认战斗还是挺好改的
在Scene_Battle里修改
def process_action
    return if scene_changing?
    if !@subject || [email protected]_action
      @subject = BattleManager.next_subject
    end
    return turn_end unless @subject
    if @subject.current_action
      @subject.current_action.prepare
      if @subject.current_action.valid?
        @status_window.open
        execute_action
      elsif [email protected]?#加的
        @subject.make_current_action
        if @subject.current_action.valid?
          @status_window.open
          execute_action
        end#以上是加的
      end
      @subject.remove_current_action
    end
    process_action_end unless @subject.current_action
  end

#在Game_Enemy里加下面这段
  def make_current_action
    action_list = enemy.actions.select {|a| action_valid?(a) }
    return if action_list.empty?
    rating_max = action_list.collect {|a| a.rating }.max
    rating_zero = rating_max - 3
    action_list.reject! {|a| a.rating <= rating_zero }
    @actions[0].set_enemy_action(select_enemy_action(action_list, rating_zero))
  end

作者: 涅炎    时间: 2021-10-24 16:06
两个思路:
1.试试设置让这个敌人免疫该道具附加的状态。
2.额外单独给这个敌人设置一套技能。

比如在使用“道具”后,开一个开关【公共事件设置】,其他技能需要在这个开关开启后才能使用。
作者: 寂静的夜里    时间: 2021-10-24 16:28
使用yanfly的技能冷却脚本?
作者: fbeds    时间: 2021-10-24 21:32
本帖最后由 fbeds 于 2021-10-24 21:36 编辑
涅炎 发表于 2021-10-24 16:06
两个思路:
1.试试设置让这个敌人免疫该道具附加的状态。
2.额外单独给这个敌人设置一套技能。


1.如果这样设置,那敌人可能会每回合使用两个以上的道具,这样就和每回合只能使用一个道具的设定相违背了。
2.敌人每回合的行动在行动前已经全部决定好了,即使打开了开关,也不会改变本回合其选择的行动。所以如果敌人本回合选择了两次“物品”技能,则其还是会只能行动一次,后一次并不会变成其它可进行的行动,而是直接无法行动。
我想要的效果就是一旦敌人选择了“物品”的技能,那本回合之后的其它行动就不会再是发动“物品”技能。如果把每回合多次行动的敌人选择哪个技能发动的判定时机改为上次行动结束后,那可能可以解决问题。不过这样可能会导致“不公平”:角色的所有行动都是在回合开始时决定的,但敌人的行动是在回合过程中临时决定的。不过这样只是增加了游戏难度而已,其实也没有那么不公平。
作者: soulsaga    时间: 2021-10-24 21:50
搜一下def conditions_met?
看看能不能在这里动手术..
作者: fbeds    时间: 2021-10-26 17:11
本帖最后由 fbeds 于 2021-10-26 17:16 编辑
这是一个昵称9 发表于 2021-10-25 23:46
如果是默认战斗还是挺好改的
在Scene_Battle里修改
def process_action


谢谢,问题已解决。
作者: erzsebet    时间: 2021-10-26 20:54
用公共事件写战斗试试看。
一个敌人只有一个技能,这个技能会触发公共事件,然后在公共事件里写技能发动的序列
这样会比较好控制吧




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