赞 | 1 |
VIP | 0 |
好人卡 | 0 |
积分 | 92 |
经验 | 0 |
最后登录 | 2024-10-20 |
在线时间 | 466 小时 |
Lv4.逐梦者
- 梦石
- 0
- 星屑
- 9163
- 在线时间
- 466 小时
- 注册时间
- 2015-5-8
- 帖子
- 866
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 taeckle 于 2022-8-3 04:06 编辑
大家好,
我这问题首先有两个状态, 这两个状态一个是5号状态,一个是8号状态,
5号状态在数据库里设置为经过20回合后100%自动解除, 8号状态一旦附加成功则直到战斗结束永远不会自动解除。
现在我想把默认脚本中的class Game_Battler的那个def add_state(state_id, force = false)稍微改一改,
从而达到若自身有5号状态且5号状态回合剩余数大于10的话则免疫8号状态的效果,
下面代码里第34行至44行是我自己为此写的, 也不知道对不对, 还请大家过目, 指点一二, 多谢了:
- def add_state(state_id, force = false)
- # 无效状态的情况下
- if $data_states[state_id] == nil
- # 过程结束
- return
- end
- # 无法强制附加的情况下
- unless force
- # 已存在的状态循环
- for i in @states
- # 新的状态和已经存在的状态 (-) 同时包含的情况下、
- # 本状态不包含变化为新状态的状态变化 (-)
- # (ex : 战斗不能与附加中毒同时存在的场合)
- if $data_states[i].minus_state_set.include?(state_id) and
- not $data_states[state_id].minus_state_set.include?(i)
- # 过程结束
- return
- end
- end
- end
- # 无法附加本状态的情况下
- unless state?(state_id)
- # 状态 ID 追加到 @states 序列中
- @states.push(state_id)
- # 选项 [当作 HP 0 的状态] 有效的情况下
- if $data_states[state_id].zero_hp
- # HP 更改为 0
- @hp = 0
- end
- # 所有状态的循环
- for i in 1...$data_states.size
- # 状态变化 (+) 处理
- if $data_states[state_id].plus_state_set.include?(i) #这是我自己改的
- if [8].include?(i) #这是我自己改的
- if self.state?(5) && self.states_turn[5]>=10 #这是我自己改的
- remove_state(i) #这是我自己改的
- else #这是我自己改的
- add_state(i) #这是我自己改的
- end #这是我自己改的
- else #这是我自己改的
- add_state(i) #这是我自己改的
- end #这是我自己改的
- end #这是我自己改的
- # 状态变化 (-) 处理
- if $data_states[state_id].minus_state_set.include?(i)
-
- remove_state(i)
-
- end
- end
- # 按比例大的排序 (值相等的情况下按照强度排序)
- @states.sort! do |a, b|
- state_a = $data_states[a]
- state_b = $data_states[b]
- if state_a.rating > state_b.rating
- -1
- elsif state_a.rating < state_b.rating
- +1
- elsif state_a.restriction > state_b.restriction
- -1
- elsif state_a.restriction < state_b.restriction
- +1
- else
- a <=> b
- end
- end
- end
- # 强制附加的场合
- if force
- # 设置为自然解除的最低回数 -1 (无效)
- @states_turn[state_id] = -1
- end
- # 不能强制附加的场合
- unless @states_turn[state_id] == -1
- # 设置为自然解除的最低回数
- @states_turn[state_id] = $data_states[state_id].hold_turn
- end
- # 无法行动的场合
- unless movable?
- # 清除行动
- @current_action.clear
- end
- # 检查 HP 及 SP 的最大值
- @hp = [@hp, self.maxhp].min
- @sp = [@sp, self.maxsp].min
- end
复制代码
|
|