Project1

标题: 请教在2号状态下生命值为0后仍然可以行动三个回合的写法 [打印本页]

作者: taeckle    时间: 2020-12-15 06:21
标题: 请教在2号状态下生命值为0后仍然可以行动三个回合的写法
我想做个三回合不死脚本,具体细节为当有2号状态时就算HP为0了仍然可以再行动3个回合
3个回合后必死(这里可以设置为3个回合后强制附加第3号状态使人物必死),当然在3个回合内打赢对方还是算我方赢。

还请大家指点一二,多谢了!


作者: q3226257    时间: 2020-12-15 09:58
免疫死亡状态,三回合后移除就可以了
作者: 紫英晓狼1130    时间: 2020-12-15 13:26
  1. if self.state?(state.ID) and self.hp > 0
  2.   self.damage = 0
  3. else
  4.   remove_state(1)
  5.   self.hp == 1
  6.   self.damage = 0
  7. end
复制代码

state.ID 需要改,将此状态改为3回合后自动解除
能否运行我没有测试,仅供参考
作者: taeckle    时间: 2020-12-15 16:54
紫英晓狼1130 发表于 2020-12-15 13:26
state.ID 需要改,将此状态改为3回合后自动解除
能否运行我没有测试,仅供参考 ...

这段代码放在哪个class里面呢?
作者: RPGzh500223    时间: 2020-12-16 16:15
3楼的感觉是在 Game_Battler3 的 def attack_effect(attacker) 和 def skill_effect(user, skill)吧
更像“免受伤害”的状态



有注释的基本为原脚本
这脚本勉强满足你的需要
说明一下:除非挂了,不可能hp一直为0的,要改的太多了,我也不会……

设置
默认 状态1 为“死亡状态”
在数据库 状态2 设置  4 回合经过后 ??概率解除(回合数就是比你要求的回合多1且大于1,概率乱填就好,无效…… )

class Game_Battler
  def state_overing?(state_id)
    return (@states_turn[state_id] == 1)
  end
end

class Scene_Battle
  def state_update
    if @active_battler.state_overing?(2)
      @active_battler.hp = 0
      @active_battler.remove_state(2)
    end
  end
  
  def target_state_update
    for i in @target_battlers
      if i.state?(2)
        i.remove_state(1)
      end  
    end
  end

  def update_phase4_step1
    # 隐藏帮助窗口
    @help_window.visible = false
    # 判定胜败
    if judge
      # 胜利或者失败的情况下 : 过程结束
      return
    end
    # 强制行动的战斗者不存在的情况下
    if $game_temp.forcing_battler == nil
      # 设置战斗事件
      setup_battle_event
      # 执行战斗事件中的情况下
      if $game_system.battle_interpreter.running?
        return
      end
    end
    # 强制行动的战斗者存在的情况下
    if $game_temp.forcing_battler != nil
      # 在头部添加后移动
      @action_battlers.delete($game_temp.forcing_battler)
      @action_battlers.unshift($game_temp.forcing_battler)
    end
    # 未行动的战斗者不存在的情况下 (全员已经行动)
    if @action_battlers.size == 0
      # 开始同伴命令回合
      start_phase2
      return
    end
    # 初始化动画 ID 和公共事件 ID
    @animation1_id = 0
    @animation2_id = 0
    @common_event_id = 0
    # 未行动的战斗者移动到序列的头部
    @active_battler = @action_battlers.shift
    # 如果已经在战斗之外的情况下
    if @active_battler.index == nil
      return
    end
    # 连续伤害
    if @active_battler.hp > 0 and @active_battler.slip_damage?
      @active_battler.slip_damage_effect
      @active_battler.damage_pop = true
    end
    state_update
    # 自然解除状态
    @active_battler.remove_states_auto
    # 刷新状态窗口
    @status_window.refresh
    # 移至步骤 2
    @phase4_step = 2
  end

  def update_phase4_step3   
    target_state_update   
    # 行动方动画 (ID 为 0 的情况下是白色闪烁)
    if @animation1_id == 0
      @active_battler.white_flash = true
    else
      @active_battler.animation_id = @animation1_id
      @active_battler.animation_hit = true
    end
    # 移至步骤 4
    @phase4_step = 4
  end

end
作者: 灯笼菜刀王    时间: 2020-12-16 17:08
本帖最后由 灯笼菜刀王 于 2020-12-16 17:11 编辑

你这人, 不懂得举一反三就罢了,不愿意自己尝试也罢了,不愿意搜索自学那也随你

但是, 自己问过的东西,别人告诉你了都不去做回头继续问, 这就过分了不是么?




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