Project1
标题:
求教如何获取敌方技能的mp消耗?
[打印本页]
作者:
存档不能
时间:
2013-10-15 09:59
标题:
求教如何获取敌方技能的mp消耗?
本帖最后由 存档不能 于 2013-10-15 16:57 编辑
我想在game_enemy里调用敌人
所拥有的技能中消耗的mp最少的那一个技能的mp数值
举例: 敌人A 所会的技能: 技能1 mp4 技能2mp3 技能3mp5(不论开关条件)
显而易见技能2消耗的mp是最少的,那么调用数值3
这样要如何做?
顺便说一下我的目的:xp默认系统的中,敌人mp为0时会发生卡死的bug,我想利用判断敌人自身最小消耗的技能来设定mp不足时的行动
现在的问题就是调用合适的数值(直接调用较小的数值的话很不灵活,还是容易出错的)
作者:
存档不能
时间:
2013-10-15 16:57
嗯,自己想来个稍微麻烦的方法解决了
作者:
芯☆淡茹水
时间:
2013-10-15 18:16
本帖最后由 芯☆淡茹水 于 2013-10-15 19:41 编辑
其实可以把 生成敌人行动 里改一下:如果所选择的特技不能使用,变为普通攻击。
class Game_Enemy < Game_Battler
#--------------------------------------------------------------------------
# ● 生成行动
#--------------------------------------------------------------------------
def make_action
# 清除当前行动
self.current_action.clear
# 无法行动的情况
unless self.movable?
# 过程结束
return
end
# 抽取现在有效的行动
available_actions = []
rating_max = 0
for action in self.actions
# 确认回合条件
n = $game_temp.battle_turn
a = action.condition_turn_a
b = action.condition_turn_b
if (b == 0 and n != a) or
(b > 0 and (n < 1 or n < a or n % b != a % b))
next
end
# 确认 HP 条件
if self.hp * 100.0 / self.maxhp > action.condition_hp
next
end
# 确认等级条件
if $game_party.max_level < action.condition_level
next
end
# 确认开关条件
switch_id = action.condition_switch_id
if switch_id > 0 and $game_switches[switch_id] == false
next
end
# 符合条件 : 添加本行动
available_actions.push(action)
if action.rating > rating_max
rating_max = action.rating
end
end
# 最大概率值作为 3 合计计算(0 除外)
ratings_total = 0
for action in available_actions
if action.rating > rating_max - 3
ratings_total += action.rating - (rating_max - 3)
end
end
# 概率合计不为 0 的情况下
if ratings_total > 0
# 生成随机数
value = rand(ratings_total)
# 设置对应生成随机数的当前行动
for action in available_actions
if action.rating > rating_max - 3
if value < action.rating - (rating_max - 3)
self.current_action.kind = action.kind
self.current_action.basic = action.basic
self.current_action.skill_id = action.skill_id
self.current_action.decide_random_target_for_enemy
######################################################
# 如果所选择的特技不能使用,改为普通攻击。
if self.current_action.kind == 1
unless self.skill_can_use?(self.current_action.skill_id)
self.current_action.kind = 0
self.current_action.basic = 0
end
end
######################################################
return
else
value -= action.rating - (rating_max - 3)
end
end
end
end
end
复制代码
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1