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

Project1

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

[已经解决] 如何让怪物不盲目乱放治疗技能呢

[复制链接]

Lv5.捕梦者 (版主)

鼬痴汉

梦石
29
星屑
3401
在线时间
1300 小时
注册时间
2010-4-24
帖子
971

短篇十吟唱者组别亚军开拓者

跳转到指定楼层
1
发表于 2012-1-21 14:52:27 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
战斗中怪物会对着满血的其他怪物放治疗技能,而血条见底的却视而不见ORZ
有什么办法让怪物只对受伤最严重的其他怪物施放治疗技能?

【强制行动?为啥强制行动时,怪物会顶着混乱、狂乱状态放技能?】

Lv5.捕梦者 (版主)

鼬痴汉

梦石
29
星屑
3401
在线时间
1300 小时
注册时间
2010-4-24
帖子
971

短篇十吟唱者组别亚军开拓者

4
 楼主| 发表于 2012-1-21 15:20:19 | 只看该作者
爆焰 发表于 2012-1-21 14:56
设置怪物的治疗技能时可以设置当HP百分之几时再施放的嘛,如图。

那样的话是治疗怪物的HP在50%以下时,乱放治疗技能吧OTL..

点评

概率调小一点还是会吧= =  发表于 2012-7-25 18:03
把概率调小一点不就好了  发表于 2012-1-21 15:25
回复

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3176
在线时间
1442 小时
注册时间
2009-7-27
帖子
1454
3
发表于 2012-1-21 14:56:26 | 只看该作者
设置怪物的治疗技能时可以设置当HP百分之几时再施放的嘛,如图。

博客:我的博客
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
132 小时
注册时间
2012-1-21
帖子
512
2
发表于 2012-1-21 14:55:03 | 只看该作者
本帖最后由 零の使魔 于 2012-1-21 15:23 编辑

这个代码插入main前面,可以让敌人的回复技能(仅限对队友)对象选择hp最低的同伴(不会临时改变)

敌人智商不能这么高,所以,这个脚本的作用只限于回合开始决定敌人行动时(战斗中hp减少无视)
如果还要什么效果就继续补充吧
  1. class Game_BattleAction

  2. def de
  3.     # 效果范围的分支
  4.     if for_one_friend_hp0?
  5.       battler = $game_troop.random_target_enemy_hp0
  6.     elsif for_one_friend?
  7.       l = []
  8.       for e in $game_troop.enemies
  9.         l.push(e.hp)
  10.       end
  11.       hp = l.min
  12.       for e in $game_troop.enemies
  13.         if e.hp == hp
  14.           battler = e
  15.         end
  16.       end
  17.       if battler.hp * 100.0/  battler.maxhp == 100
  18.       battler = $game_troop.random_target_enemy
  19.       end
  20.     else
  21.       battler = $game_party.random_target_actor
  22.     end
  23.     # 对像存在的话取得索引、
  24.     # 对像不存在的场合下清除行动
  25.     if battler != nil
  26.       @target_index = battler.index
  27.     else
  28.       clear
  29.     end
  30.   end

  31. end
  32. class Game_Enemy < Game_Battler
  33.   #--------------------------------------------------------------------------
  34.   # ● 生成行动
  35.   #--------------------------------------------------------------------------
  36.   def make_action
  37.     # 清除当前行动
  38.     self.current_action.clear
  39.     # 无法行动的情况
  40.     unless self.movable?
  41.       # 过程结束
  42.       return
  43.     end
  44.     # 抽取现在有效的行动
  45.     available_actions = []
  46.     rating_max = 0
  47.     for action in self.actions
  48.       # 确认回合条件
  49.       n = $game_temp.battle_turn
  50.       a = action.condition_turn_a
  51.       b = action.condition_turn_b
  52.       if (b == 0 and n != a) or
  53.          (b > 0 and (n < 1 or n < a or n % b != a % b))
  54.         next
  55.       end
  56.       # 确认 HP 条件
  57.       if self.hp * 100.0 / self.maxhp > action.condition_hp
  58.         next
  59.       end
  60.       # 确认等级条件
  61.       if $game_party.max_level < action.condition_level
  62.         next
  63.       end
  64.       # 确认开关条件
  65.       switch_id = action.condition_switch_id
  66.       if switch_id > 0 and $game_switches[switch_id] == false
  67.         next
  68.       end
  69.       # 符合条件 : 添加本行动
  70.       available_actions.push(action)
  71.       if action.rating > rating_max
  72.         rating_max = action.rating
  73.       end
  74.     end
  75.     # 最大概率值作为 3 合计计算(0 除外)
  76.     ratings_total = 0
  77.     for action in available_actions
  78.       if action.rating > rating_max - 3
  79.         ratings_total += action.rating - (rating_max - 3)
  80.       end
  81.     end
  82.     # 概率合计不为 0 的情况下
  83.     if ratings_total > 0
  84.       # 生成随机数
  85.       value = rand(ratings_total)
  86.       # 设置对应生成随机数的当前行动
  87.       for action in available_actions
  88.         if action.rating > rating_max - 3
  89.           if value < action.rating - (rating_max - 3)
  90.             self.current_action.kind = action.kind
  91.             self.current_action.basic = action.basic
  92.             self.current_action.skill_id = action.skill_id
  93.             if $data_skills[self.current_action.skill_id].power < 0
  94.               self.current_action.de
  95.             else
  96.               self.current_action.decide_random_target_for_enemy
  97.             end
  98.             return
  99.           else
  100.             value -= action.rating - (rating_max - 3)
  101.           end
  102.         end
  103.       end
  104.     end
  105.   end
  106. end
复制代码
心情大好呢
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-27 22:54

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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