赞 | 0 |
VIP | 13 |
好人卡 | 65 |
积分 | 1 |
经验 | 58644 |
最后登录 | 2017-10-23 |
在线时间 | 1281 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 50
- 在线时间
- 1281 小时
- 注册时间
- 2006-8-27
- 帖子
- 590
|
本帖最后由 wbsy8241 于 2011-12-15 20:11 编辑
- #--------------------------------------------------------------------------
- # ● 生成战斗行动
- #--------------------------------------------------------------------------
- def make_action
- @action.clear
- return unless movable?
- available_actions = []
- rating_max = 0
- for action in enemy.actions #循环所有行动
- next unless conditions_met?(action) #跳过条件不足项
- if action.kind == 1
- next unless skill_can_use?($data_skills[action.skill_id]) #跳过不能使用技能的情况
- end
- available_actions.push(action) #添加到可用行动列表
- rating_max = [rating_max, action.rating].max #取所有值中间的最大优先值
- end
- ratings_total = 0
- rating_zero = rating_max - 3 #设定最小优先值是最大优先值-3
- for action in available_actions #循环所有可用行动
- next if action.rating <= rating_zero #跳过优先值小于最小优先值项
- ratings_total += action.rating - rating_zero #总随机数+(此技能优先值-最小优先值)
- end
- return if ratings_total == 0
- value = rand(ratings_total) #随机取值
- for action in available_actions #循环所有可用行动
- next if action.rating <= rating_zero #跳过优先值小于最小优先值项
- if value < action.rating - rating_zero #随机值小于(此技能优先值-最小优先值)
- @action.kind = action.kind #的情况判断为使用这个技能
- @action.basic = action.basic
- @action.skill_id = action.skill_id
- @action.decide_random_target
- return
- else
- value -= action.rating - rating_zero #随机值-(此技能优先值-最小优先值)
- end
- end
- end
复制代码 例:
A:3
B:4
C:5
D:5
E:6
最大值为6
最小值为 6-3 = 3
排除优先值为 3 包括3以下的可能
重设技能的优先值
B = 4-3 = 1 (概率1/8)
C = 5-3 = 2 (概率2/8)
D = 5-3 = 2 (概率2/8)
E = 6-3 = 3 (概率3/8)
随机总值= 1+ 2+2+3 = 8
然后就根据我上面的回复计算得到用什么技能
我以前粗略看了没发现会排除 小于最大可能性-3的可能
证例3
【例3】行动优先级为[5][3][3]时
[5]为60%、[3][3]各为20%(60%的1/3)。
最小值是5-3 = 2
实际用于计算各值为
[5] = 5-2 = 3 (概率3/5 = 60%)
[3] = 3-2 = 1 (概率1/5 = 20%)
[3] = 3-2 = 1 (概率1/5 = 20%)
|
评分
-
查看全部评分
|