赞 | 2 |
VIP | 0 |
好人卡 | 0 |
积分 | 64 |
经验 | 18218 |
最后登录 | 2024-6-19 |
在线时间 | 989 小时 |
Lv4.逐梦者
- 梦石
- 0
- 星屑
- 6388
- 在线时间
- 989 小时
- 注册时间
- 2010-12-3
- 帖子
- 45
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
因为有些技能不适合在清小怪的时候一直出现,所以想在随机技能那边加一个 限定使用的技能 或 限定不使用的技能
希望在较有研究的前辈能帮帮忙,谢谢
- #==============================================================================
- # ■ Game_Actor
- #------------------------------------------------------------------------------
- # AI模块
- #==============================================================================
-
- class Game_Battler
- attr_accessor :marks
- end
- class Game_Actor < Game_Battler
- AI = [1,2,3,4] # 需要自动攻击的角色编号
-
- # 物理攻击倾向指数 魔法攻击倾向指数 防御指数 什么都不做指数
- Action_Index = [50,50]
-
- IQ = 90 # 智商设定,90为标准值,IQ越高,越优先攻击生命值少,防御力小的
- Hp_Mark = [30,-10] # 生命值评分标准,[生命值最低的得分,步进值(负)]
- Df_Mark = [20,-10] # 防御值评分标准,[防御值最低的得分,步进值(负)]
-
- EQ = 90 # 情商设定,90为标准值,EQ越高,越优先使用对应魔法(属性有效度为准),
- def make_action
- $game_troop.enemies.each{|i|i.marks=50}
- $game_party.actors.each{|i|i.marks=50}
- # 先确认动作
- index = Action_Index
- skills = self.skills.inject([]){|a,b|a<<b if skill_can_use?(b);a}
- index[1] = 0 if skills == []
- index[0] *= IQ/90.0;index[1] *= IQ/90.0;index[1] *= EQ/90.0
- index[0].to_i;index[1].to_i
- all = index.inject(0){|a,b|a+b}.to_i
- value = rand(all)
- action = 0 # 默认攻击
- for i in 0...index.size
- if i > value
- action = i
- break
- else
- value -= index[i]
- end
- end
- # 目前动作为 action
- case action
- when 0 # 攻击
- # 智商检查
- enemies = $game_troop.enemies.inject([]){|a,b|a<<b if !b.hp0?;a}
- # 评分
- enemies.sort!{|a,b|a.hp<=>b.hp}
- for i in 0...enemies.size
- enemies[i].marks += (Hp_Mark[0] + i*Hp_Mark[1])*IQ/90
- end
- # 防御检查
- enemies.sort!{|a,b|a.pdef<=>b.pdef}
- for i in 0...enemies.size
- enemies[i].marks += (Df_Mark[0] + i*Df_Mark[1])*IQ/90
- end
- # 确认目标
- value = rand(enemies.inject(0){|a,b|a+b.marks})
- tag = nil
- for i in enemies
- if i.marks > value
- tag = i
- break
- else
- value -= i.marks
- end
- end
- # 目标确认 tag
- @current_action.kind = 0
- @current_action.basic = 0
- return @current_action.target_index = 0 unless tag
- @current_action.target_index = $game_troop.enemies.index(tag)
- when 1 # 魔法
- # 魔法分类,对敌/对己(加持)/附着状态/解除状态
- @current_action.kind = 0
- return @current_action.basic = 1 if skills == []
- @current_action.kind = 1
- # 随机技能
- @current_action.skill_id = skills[rand(skills.size)]
- # 确认对象
- scope = $data_skills[@current_action.skill_id].scope
- @current_action.target_index = 0
- case @scope
- when 1 # 敌单体
- # 智商检查
- enemies = $game_troop.enemies.inject([]){|a,b|a<<b if !b.hp0?;a}
- # 属性有效度评分
- table = [0,50,25,10,0,-10,-20]
- for i in 0...enemies.size
- enemies[i].marks += enemies[i].element_ranks[@current_action.skill_id]
- end
- # 确认目标
- value = rand(enemies.inject(0){|a,b|a+b.marks})
- tag = nil
- for i in enemies
- if i.marks > value
- tag = i
- break
- else
- value -= i.marks
- end
- end
- @current_action.target_index = $game_troop.enemies.index(tag) if tag
- when 3
- # 智商检查
- enemies = game_party.actors.inject([]){|a,b|a<<b if !b.hp0?;a}
- # 属性有效度评分
- table = [0,50,25,10,0,-10,-20]
- for i in 0...enemies.size
- enemies[i].marks += enemies[i].element_ranks[@current_action.skill_id]
- end
- # 确认目标
- value = rand(enemies.inject(0){|a,b|a+b.marks})
- tag = nil
- for i in enemies
- if i.marks > value
- tag = i
- break
- else
- value -= i.marks
- end
- end
- @current_action.target_index = game_party.actors.index(tag) if tag
- end
- when 2 # 防御
- @current_action.basic = 0
- @current_action.basic = 1
- end
- end
- end
- class Scene_Battle
- #--------------------------------------------------------------------------
- # ● 转到输入下一个角色的命令
- #--------------------------------------------------------------------------
- def phase3_next_actor
- # 循环
- begin
- # 角色的明灭效果 OFF
- if @active_battler != nil
- @active_battler.blink = false
- end
- # 最后的角色的情况
- if @actor_index == $game_party.actors.size-1
- # 开始主回合
- start_phase4
- return
- end
- # 推进角色索引
- @actor_index += 1
- @active_battler = $game_party.actors[@actor_index]
- @active_battler.blink = true
- # 如果角色是在无法接受指令的状态就再试
- end until @active_battler.inputable?
- # $
- if Game_Actor::AI.include?(@active_battler.id)
- #AI同伴
- @actor_command_window.active = false
- @actor_command_window.visible = false
- @active_battler.make_action
- phase3_next_actor
- else
- # 设置角色的命令窗口
- phase3_setup_command_window
- end
- end
- #--------------------------------------------------------------------------
- # ● 转向前一个角色的命令输入
- #--------------------------------------------------------------------------
- def phase3_prior_actor
- # 循环
- begin
- # 角色的明灭效果 OFF
- if @active_battler != nil
- @active_battler.blink = false
- end
- # 最初的角色的情况下
- if @actor_index == 0
- # 开始同伴指令回合
- start_phase2
- return
- end
- # 返回角色索引
- @actor_index -= 1
- @active_battler = $game_party.actors[@actor_index]
- @active_battler.blink = true
- # 如果角色是在无法接受指令的状态就再试
- end until @active_battler.inputable?
- # 设置角色的命令窗口
- if Game_Actor::AI.include?(@active_battler.id)
- #AI同伴
- phase3_prior_actor
- else
- phase3_setup_command_window
- end
- end
- end
复制代码 |
|