Project1

标题: 多类型状态(给状态设置分类) [打印本页]

作者: chd114    时间: 2017-11-21 16:39
标题: 多类型状态(给状态设置分类)
看到MV区的ye屁插件整合清单就对着做了


【汉化】YEP.89 – State Categories - 简书
http://www.jianshu.com/p/35004d654cc6
这个插件允许你设置状态的分类,他们可以属于一个分类,也可以是多个甚至没有。
这样,这个插件就可以提供通过分类来消除状态的功能,或者忽略特定状态,
例如死亡自动移除或者全体恢复



VA数据库里,状态没有分类,用这个脚本可以给你的状态增加分类(这种分类如果放到DOTA2的话,就是可以驱散、仅强驱散、无法驱散)
添加多类型状态以后可以用这个脚本里面设定好的方法移除包含指定类型的状态

state类方法
types:输出指定状态包含的所有类型的数组
types_n:输出指定状态包含的所有类型的名字的数组

battler类方法
remove_state_type(tid):移除指定单位所持有状态中属于tid类型的状态(tid为该类型的编号)

RUBY 代码复制
  1. =begin
  2. 给一个状态多种类型分类
  3. =end
  4. module Vocab
  5.   STATE_TYPE_NAME=["增益状态","减益状态","物理","魔法"]
  6. end
  7. module State
  8.   Type = {
  9.   1=>[2],
  10.   20=>[0,3],
  11.   }
  12. end
  13. (1..999).each{|i|State::Type[i]||=[]}
  14. class RPG::State
  15.   def types
  16.     State::Type[self.id].uniq
  17.   end
  18.   def types_n
  19.     n=[]
  20.     self.types.each{|i|n.push(Vocab::STATE_TYPE_NAME[i])}
  21.     n
  22.   end
  23. end
  24. #==============================================================================
  25. # ■ Game_Battler
  26. #------------------------------------------------------------------------------
  27. #  处理战斗者的类。Game_Actor 和 Game_Enemy 类的父类。
  28. #==============================================================================
  29.  
  30. class Game_Battler < Game_BattlerBase
  31.   #--------------------------------------------------------------------------
  32.   # ● 解除指定类型的状态
  33.   #--------------------------------------------------------------------------
  34.   def remove_state_type(tid)
  35.     states.each{|i|
  36.     if state?(i.id) and i.types.include?(tid)
  37.       revive if i.id == death_state_id
  38.       erase_state(i.id)
  39.       refresh
  40.       @result.removed_states.push(i.id).uniq!
  41.     end
  42.     }
  43.   end
  44. end






欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1