设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 3597|回复: 14
打印 上一主题 下一主题

[已经解决] 游戏字体无法更改颜色怎么办?

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1422
在线时间
245 小时
注册时间
2019-1-18
帖子
190
跳转到指定楼层
1
发表于 2019-3-23 00:04:19 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
如图所示,字体无法显示原来的颜色,这是怎么回事???

评分

参与人数 1星屑 -20 收起 理由
VIPArcher -20 重复提问*2

查看全部评分

Lv3.寻梦者

梦石
0
星屑
1422
在线时间
245 小时
注册时间
2019-1-18
帖子
190
2
 楼主| 发表于 2019-3-23 14:46:50 | 只看该作者

【新人请教】为什么字体颜色显示不出来了

如图所示,本来"SP20"等字体都是蓝色的,但这里直接连颜色公式都显示出来了,这该怎么解决?
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
18
星屑
13525
在线时间
1708 小时
注册时间
2017-1-12
帖子
1771

开拓者

3
发表于 2019-3-24 09:03:50 | 只看该作者
好像这部分不能用控制符改?(没怎么变过这块不知道),如果脚本的Windows_Base里没有的话......推荐在论坛搜索“改变 字 颜色”。
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1422
在线时间
245 小时
注册时间
2019-1-18
帖子
190
4
 楼主| 发表于 2019-3-24 11:32:55 | 只看该作者

【新人请教】关于字体颜色错乱

本帖最后由 造小梦 于 2019-3-24 11:34 编辑

如图所示,技能所需的MP/TP都没颜色了,直接显示颜色代号
我加了几个关于技能扩展的脚本,会不会是这里出了问题??求大佬指点
回复 支持 反对

使用道具 举报

Lv6.析梦学徒

老鹰

梦石
40
星屑
33407
在线时间
6552 小时
注册时间
2012-5-26
帖子
3178

极短24评委极短23参与极短22参与极短21评委老司机慢点开短篇十吟唱者组别冠军开拓者剧作品鉴家

5
发表于 2019-3-24 12:41:07 | 只看该作者
大概你加了什么技能消耗的扩展,然后里面有定义绘制前加的转义符,于是你自己加了\c的转义符来修改颜色?
在你加的转义符那里,把 \c 改成 \ec 试试?
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1422
在线时间
245 小时
注册时间
2019-1-18
帖子
190
6
 楼主| 发表于 2019-3-24 14:26:58 | 只看该作者
百里_飞柳 发表于 2019-3-24 12:41
大概你加了什么技能消耗的扩展,然后里面有定义绘制前加的转义符,于是你自己加了\c的转义符来修改颜色?
...

我没加什么转义符啊,我直接导入脚本就用的

点评

那就去检查你加的脚本中的对于技能消耗的描绘有修改的,它们的设置中肯定有  发表于 2019-3-24 14:30
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1422
在线时间
245 小时
注册时间
2019-1-18
帖子
190
7
 楼主| 发表于 2019-3-24 14:44:43 | 只看该作者
造小梦 发表于 2019-3-24 14:26
我没加什么转义符啊,我直接导入脚本就用的

我找不到啊。。。这个是对技能消耗y
  1. module EXTRA_SKILL_COST
  2.   
  3.   #コストとしてアイテムを消費する場合の設定用ワード
  4.   
  5.   WORD1A  = "物品消耗"
  6.   
  7.   #コストとして有改动的脚本,您看看呗武器を消費する場合の設定用ワード
  8.   
  9.   WORD1B  = "武器消耗"
  10.   
  11.   #コストとして防具を消費する場合の設定用ワード
  12.   
  13.   WORD1C  = "防具消耗"
  14.   
  15.   #コストとして所持金を固定値消費する場合の設定用ワード
  16.   
  17.   WORD2A = "灵魂消耗"
  18.   
  19.   #コストとして所持金を割合消費する場合の設定用ワード
  20.   
  21.   WORD2B = "灵魂比例消耗"
  22.   
  23.   #コストとして所持金を消費する式を設定する場合の設定用ワード
  24.   
  25.   WORD2C = "所持金消費式"
  26.   
  27.   #コストとして変数の値を固定値消費する場合の設定用ワード
  28.   
  29.   WORD3A = "変数固定消費"
  30.   
  31.   #コストとして変数の値を割合消費する場合の設定用ワード
  32.   
  33.   WORD3B = "変数割合消費"
  34.   
  35.   #コストとして変数の値を消費する式を設定する場合の設定用ワード
  36.   
  37.   WORD3C = "変数消費式"
  38.   
  39.   #コストとしてHPを固定値消費する場合の設定用ワード
  40.   
  41.   WORD4A = "HP损耗"
  42.   
  43.   #コストとしてHPを割合消費する場合の設定用ワード
  44.   
  45.   WORD4B = "HP比例损耗"
  46.   
  47.   #コストとしてHPを最大値に対する一定割合分消費する式を設定する場合の設定用ワード
  48.   
  49.   WORD4C = "最大HP比例损耗"
  50.   
  51.   #コストとしてHPを消費する式を設定する場合の設定用ワード
  52.   
  53.   WORD4D = "HP消費式"
  54.   
  55.   #コストとしてMPを固定値消費する場合の設定用ワード
  56.   
  57.   WORD5A = "MP损耗"
  58.   
  59.   #コストとしてMPを割合消費する場合の設定用ワード
  60.   
  61.   WORD5B = "MP比例损耗"
  62.   
  63.   #コストとしてMPを最大値に対する一定割合分消費する式を設定する場合の設定用ワード
  64.   
  65.   WORD5C = "最大MP割合消費"
  66.   
  67.   #コストとしてMPを消費する式を設定する場合の設定用ワード
  68.   
  69.   WORD5D = "MP消費式"
  70.   
  71.   #コストとしてTPを固定値消費する場合の設定用ワード
  72.   
  73.   WORD6A = "TP损耗"
  74.   
  75.   #コストとしてTPを割合消費する場合の設定用ワード
  76.   
  77.   WORD6B = "TP比例损耗"
  78.   
  79.   #コストとしてTPを最大値に対する一定割合分消費する式を設定する場合の設定用ワード
  80.   
  81.   WORD6C = "最大TP比例损耗"
  82.   
  83.   #コストとしてTPを消費する式を設定する場合の設定用ワード
  84.   
  85.   WORD6D = "TP消費式"
  86.   
  87.   #消費HP軽減特徴の設定用ワード
  88.   
  89.   WORD7A = "消費HP軽減割合"
  90.   
  91.   #消費HP軽減無効スキルの設定用ワード
  92.   
  93.   WORD7B = "消費HP軽減無効"
  94.   
  95.   #消費MP軽減無効スキルの設定用ワード
  96.   
  97.   WORD8  = "消費MP軽減無効"
  98.   
  99.   #消費TP軽減特徴の設定用ワード
  100.   
  101.   WORD9A = "消費TP軽減割合"
  102.   
  103.   #消費TP軽減無効スキルの設定用ワード
  104.   
  105.   WORD9B = "消費TP軽減無効"
  106.   
  107.   #スキル使用時、消費HPによる戦闘不能を有効にするか否かの設定用ワード
  108.   
  109.   WORD10 = "戦闘不能許可"
  110.   
  111.   WORD11 ="暴击率"
  112.   
  113.   #HPのスキルコスト表示色(テキストカラーIDに準じる)
  114.   
  115.   HPCC   = 2
  116.   
  117.   #MPのスキルコスト表示色(テキストカラーIDに準じる)
  118.   
  119.   MPCC   = 23
  120.   
  121.   #TPのスキルコスト表示色(テキストカラーIDに準じる)
  122.   
  123.   TPCC   = 29
  124.   
  125.   #コストとして変数の値を消費する場合
  126.   #使用後、変数の値がマイナスになる場合でも使用可とするか
  127.   #true = 使用可能 false = 使用不可
  128.   
  129.   V_MIN1 = false
  130.   
  131.   #コストとして変数の値を消費する場合
  132.   #敵が使用する場合も判定を行うか
  133.   #true = 行う false = 行わない
  134.   
  135.   V_MIN2 = false
  136.   
  137.   #HP/MP/TPコストの表示形式
  138.   #0   デフォルト(HPは表示しない)
  139.   #1   HP/MP/TPを全て表示(表示形式は揃えない)
  140.   #2~ 数字分だけ区切って表示
  141.   
  142.   COST_D = 1
  143.   
  144.   #COST_Dが2以上の場合の表示設定
  145.   
  146.   #HPを表示するか(trueで表示 falseで非表示)
  147.   
  148.   HP_D   = true
  149.   
  150.   #MPを表示するか
  151.   
  152.   MP_D   = true
  153.   
  154.   #TPを表示するか
  155.   
  156.   TP_D   = true
  157.   
  158.   #スキルコストの対象表示(項目名の短縮名表示 trueで表示 falseで非表示)
  159.   
  160.   CTITLE = true
  161.   
  162.   #スキルリストの桁数
  163.   
  164.   COLMAX = 2
  165.   
  166.   #スキルコスト表示位置の調整
  167.   
  168.   COS_OX = 0#-2
  169.   
  170. end

  171. class Game_BattlerBase
  172.   
  173.   #MP・TPコストの計算に別名定義で変更
  174.   
  175.   alias skill_cost_payable_extra_cost? skill_cost_payable?
  176.   def skill_cost_payable?(skill)
  177.    
  178.     #元の処理を実行
  179.    
  180.     return false unless skill_cost_payable_extra_cost?(skill)
  181.    
  182.     #追加された消費系統の可否を判定
  183.    
  184.     return false unless skill_ex_cost_payble(skill)
  185.    
  186.     #全てクリアならtrueを返す
  187.    
  188.     return true
  189.   end
  190.   
  191.   #概念ごと新たに追加された消費系統の可否
  192.   
  193.   def skill_ex_cost_payble(skill)
  194.    
  195.     #アクターの場合のみ、アイテムと所持金のコスト判定を行う
  196.    
  197.     if self.actor?
  198.       
  199.       #アイテムのコスト可否判定
  200.       
  201.       return false unless skill_item_cost_payble(skill)
  202.       
  203.       #所持金のコスト可否判定
  204.       
  205.       return false unless skill_gold_cost_payble(skill)
  206.       
  207.     end
  208.    
  209.     #変数のコスト可否判定
  210.    
  211.     return false unless skill_var_cost_payble(skill)
  212.    
  213.     #HPのコスト可否判定
  214.    
  215.     return false unless skill_hp_cost_payble(skill)
  216.     return true
  217.   end
  218.   
  219.   #HP以外で新たに追加された消費系統の実行
  220.   
  221.   alias pay_skill_cost_extra_cost pay_skill_cost
  222.   def pay_skill_cost(skill)
  223.    
  224.     #元の処理を実行
  225.    
  226.     pay_skill_cost_extra_cost(skill)
  227.    
  228.     #アクターの場合のみ、アイテムと所持金のコスト消費を行う
  229.    
  230.     if self.actor?
  231.       
  232.       #アイテムのコスト処理
  233.       
  234.       pay_item_cost(skill)
  235.       
  236.       #所持金のコスト処理
  237.       
  238.       pay_gold_cost(skill)
  239.     end
  240.    
  241.     #変数のコスト処理
  242.    
  243.     pay_var_cost(skill)
  244.   end
  245.   
  246.   #総合アイテム消費可否
  247.   
  248.   def skill_item_cost_payble(skill)
  249.    
  250.     #アイテムコストが存在しない場合はtrueを返す
  251.    
  252.     return true if skill.item_cost.empty?
  253.    
  254.     #コスト別に判定
  255.    
  256.     skill.item_cost.each do |data|
  257.       case data[0]
  258.       when 0#アイテムの場合
  259.         item = $data_items[data[1]]
  260.       when 1#武器の場合
  261.         item = $data_weapons[data[1]]
  262.       when 2#防具の場合
  263.         item = $data_armors[data[1]]
  264.       end
  265.       
  266.       #指定された消費量より所持数が少ない場合はfalseを返す
  267.       
  268.       return false if $game_party.item_number(item) < data[2]
  269.     end
  270.    
  271.     #trueを返す
  272.    
  273.     return true
  274.   end
  275.   
  276.   #総合アイテム消費
  277.   
  278.   def pay_item_cost(skill)
  279.    
  280.     #アイテムコストが存在しない場合は処理しない
  281.    
  282.     return if skill.item_cost.empty?
  283.    
  284.     #コスト別に処理
  285.    
  286.     skill.item_cost.each do |data|
  287.       case data[0]
  288.       when 0#アイテムの場合
  289.         item = $data_items[data[1]]
  290.       when 1#武器の場合
  291.         item = $data_weapons[data[1]]
  292.       when 2#防具の場合
  293.         item = $data_armors[data[1]]
  294.       end
  295.       
  296.       #アイテム消費処理
  297.       
  298.       $game_party.lose_item(item, data[2])
  299.       
  300.     end
  301.   end
  302.   
  303.   #総合所持金消費可否
  304.   
  305.   def skill_gold_cost_payble(skill)
  306.    
  307.     #所持金が消費量以上か?
  308.    
  309.     $game_party.gold >= skill_gold_cost(skill)
  310.    
  311.   end
  312.   
  313.   #総合所持金消費
  314.   
  315.   def pay_gold_cost(skill)
  316.    
  317.     #所持金の消費処理
  318.    
  319.     $game_party.gain_gold(-skill_gold_cost(skill))
  320.   end
  321.   
  322.   #総合所持金消費量
  323.   
  324.   def skill_gold_cost(skill)
  325.    
  326.     #それぞれの所持金消費量計算をまとめた後、整数化する
  327.    
  328.     (gold_cost_fix(skill) + gold_cost_rate(skill) + gold_cost_eval(skill)).to_i
  329.    
  330.   end
  331.   
  332.   #所持金固定値消費
  333.   
  334.   def gold_cost_fix(skill)
  335.    
  336.     #スキルの所持金固定値消費を返す
  337.    
  338.     skill.gold_cost_fix
  339.    
  340.   end
  341.   
  342.   #所持金消費割合
  343.   
  344.   def gold_cost_rate(skill)
  345.    
  346.     #スキルの所持金消費割合と現在値をかけた後、0.01をかけた数字を返す
  347.    
  348.     skill.gold_cost_rate * $game_party.gold * 0.01
  349.    
  350.   end
  351.   
  352.   #所持金消費式
  353.   
  354.   def gold_cost_eval(skill)
  355.    
  356.     #スキルの所持金消費式を返す
  357.    
  358.     eval(skill.gold_cost_eval)
  359.   end
  360.   
  361.   #全ての消費変数の消費可否
  362.   
  363.   def skill_var_cost_payble(skill)
  364.    
  365.     #設定次第では、判定を無視する
  366.    
  367.     return true if EXTRA_SKILL_COST::V_MIN1
  368.    
  369.     #設定次第では、敵の場合は判定を無視する
  370.    
  371.     return true if !self.actor? && !EXTRA_SKILL_COST::V_MIN2
  372.    
  373.     #変数の固定値消費
  374.    
  375.     #変数の固定値消費が存在しない場合は飛ばす
  376.    
  377.     if !skill.var_cost_fix.empty?
  378.       
  379.       #消費データ別に判定
  380.       
  381.       skill.var_cost_fix.each do |data|
  382.       
  383.         #消費可否判定
  384.       
  385.         return false unless var_cost_fix_payble(data)
  386.         
  387.       end
  388.     end
  389.    
  390.     #変数の割合消費
  391.    
  392.     #変数の割合消費が存在しない場合は飛ばす
  393.    
  394.     if !skill.var_cost_rate.empty?
  395.       
  396.       #消費データ別に判定
  397.       
  398.       skill.var_cost_rate.each do |data|
  399.       
  400.         #消費可否判定
  401.       
  402.         return false unless var_cost_rate_payble(data)
  403.         
  404.       end
  405.     end
  406.    
  407.     #変数の消費式
  408.    
  409.     #変数の消費式が存在しない場合は飛ばす
  410.    
  411.     if !skill.var_cost_eval.empty?
  412.       
  413.       #消費データ別に判定
  414.       
  415.       skill.var_cost_eval.each do |data|
  416.       
  417.         #消費可否判定
  418.       
  419.         return false unless var_cost_eval_payble(data)
  420.         
  421.       end
  422.     end
  423.    
  424.     #全てクリアならtrueを返す
  425.    
  426.     return true
  427.   end
  428.   
  429.   #全ての消費変数の消費実行
  430.   
  431.   def pay_var_cost(skill)
  432.    
  433.     #設定次第では、敵の場合は処理をしない
  434.    
  435.     return if !self.actor? && !EXTRA_SKILL_COST::V_MIN2
  436.    
  437.     #変数の固定値消費
  438.    
  439.     #変数の固定値消費が存在しない場合は飛ばす
  440.    
  441.     if !skill.var_cost_fix.empty?
  442.       
  443.       #消費データ別に処理
  444.       
  445.       skill.var_cost_fix.each do |data|
  446.         
  447.         #消費処理
  448.         
  449.         pay_var_cost_fix(data)
  450.         
  451.       end
  452.     end
  453.    
  454.     #変数の割合消費
  455.    
  456.     #変数の割合消費が存在しない場合は飛ばす
  457.    
  458.     if !skill.var_cost_rate.empty?
  459.       
  460.       #消費データ別に処理
  461.       
  462.       skill.var_cost_rate.each do |data|
  463.         
  464.         #消費処理
  465.         
  466.         pay_var_cost_rate(data)
  467.         
  468.       end
  469.     end
  470.    
  471.     #変数の消費式
  472.    
  473.     #変数の消費式が存在しない場合は飛ばす
  474.    
  475.     if !skill.var_cost_eval.empty?
  476.       
  477.       #消費データ別に処理
  478.       
  479.       skill.var_cost_eval.each do |data|
  480.         
  481.         #消費処理
  482.         
  483.         pay_var_cost_eval(data)
  484.         
  485.       end
  486.     end
  487.   end
  488.   
  489.   #消費固定変数の可否
  490.   
  491.   def var_cost_fix_payble(data)
  492.    
  493.     #変数の値が消費値以上か否か
  494.    
  495.     $game_variables[data[0]] >= data[1]
  496.    
  497.   end
  498.   
  499.   #消費割合変数の可否
  500.   
  501.   def var_cost_rate_payble(data)
  502.    
  503.     #変数の値が消費割合で計算された消費値以上か否か
  504.    
  505.     $game_variables[data[0]] >= ($game_variables[data[0]] * data[1]) * 0.01
  506.    
  507.   end
  508.   
  509.   #消費変数式の可否
  510.   
  511.   def var_cost_eval_payble(data)
  512.    
  513.     #変数の値が消費式で計算された消費値以上か否か
  514.    
  515.     $game_variables[data[0]] >= eval(data[1])
  516.    
  517.   end
  518.   
  519.   #消費固定変数の消費
  520.   
  521.   def pay_var_cost_fix(data)
  522.    
  523.     #変数の固定値消費実行
  524.    
  525.     $game_variables[data[0]] -= data[1]
  526.    
  527.   end
  528.   
  529.   #消費割合変数の消費
  530.   
  531.   def pay_var_cost_rate(data)
  532.    
  533.     #変数の割合消費実行
  534.    
  535.     $game_variables[data[0]] -= (($game_variables[data[0]] * data[1]) * 0.01).to_i
  536.    
  537.   end
  538.   
  539.   #消費変数式の消費
  540.   
  541.   def pay_var_cost_eval(data)
  542.    
  543.     #変数の消費式実行
  544.    
  545.     $game_variables[data[0]] -= eval(data[1])
  546.    
  547.   end
  548.   
  549.   #総合消費HPの可否
  550.   
  551.   def skill_hp_cost_payble(skill)
  552.    
  553.     #スキルによる自滅が認められていない場合は現在HPが消費HP以上か否か。
  554.     #認められている場合はtrueを返す
  555.    
  556.     !skill.suicidable? ? self.hp > skill_hp_cost(skill) : true
  557.    
  558.   end
  559.   
  560.   #総合消費HP
  561.   
  562.   def skill_hp_cost(skill)
  563.    
  564.     #それぞれのHP消費をまとめた後、整数化する
  565.    
  566.     ((hp_cost_fix(skill) + hp_cost_rate(skill) + hp_cost_mrate(skill) + hp_cost_eval(skill)) * special_ex_hcr(skill)).to_i
  567.    
  568.   end
  569.   
  570.   #消費固定HP
  571.   
  572.   def hp_cost_fix(skill)
  573.    
  574.     #スキルの消費固定HPを返す
  575.    
  576.     skill.hp_cost_fix
  577.    
  578.   end
  579.   
  580.   #消費HP割合(現在値)
  581.   
  582.   def hp_cost_rate(skill)
  583.    
  584.     #スキルの消費HP割合と現在値をかけた後、0.01をかけた数字を返す
  585.    
  586.     skill.hp_cost_rate * self.hp * 0.01
  587.    
  588.   end
  589.   
  590.   #消費HP割合(最大値)
  591.   
  592.   def hp_cost_mrate(skill)
  593.    
  594.     #スキルの消費最大HP割合と最大値をかけた後、0.01をかけた数字を返す
  595.    
  596.     skill.hp_cost_mrate * self.mhp * 0.01
  597.   end
  598.   
  599.   #消費HP式
  600.   
  601.   def hp_cost_eval(skill)
  602.    
  603.     #スキルの消費HP割合式を返す
  604.    
  605.     eval(skill.hp_cost_eval)
  606.   end
  607.   
  608.   #消費HP軽減割合
  609.   
  610.   def special_ex_hcr(skill)
  611.    
  612.     #消費HP軽減特徴が無効の場合は消費HP軽減特徴の効果を反映させる
  613.    
  614.     return [(100.0 - ex_hcr)/100, 0].max unless skill.ex_hcr_zero?
  615.    
  616.     #消費HP軽減特徴が有効の場合は1.0を返す
  617.    
  618.     return 1.0
  619.   end
  620.   
  621.   #MP消費計算を別名定義で変更し、総合消費MPを計算
  622.   
  623.   alias skill_mp_cost_extra_cost skill_mp_cost
  624.   def skill_mp_cost(skill)
  625.    
  626.     #元のデータを取得する
  627.    
  628.     data = skill_mp_cost_extra_cost(skill)
  629.    
  630.     #元のデータに新規処理の総和を足す
  631.    
  632.     data += (mp_cost_fix(skill) + mp_cost_rate(skill) + mp_cost_mrate(skill) + mp_cost_eval(skill)) * special_mcr(skill)
  633.    
  634.     #整数化して返す
  635.    
  636.     return data.to_i
  637.   end
  638.   
  639.   #消費固定MP
  640.   
  641.   def mp_cost_fix(skill)
  642.    
  643.     #スキルの消費固定MPを返す
  644.    
  645.     skill.mp_cost_fix
  646.    
  647.   end
  648.   
  649.   #消費MP割合(現在値)
  650.   
  651.   def mp_cost_rate(skill)
  652.    
  653.     #スキルの消費MP割合と現在値をかけた後、0.01をかけた数字を返す
  654.    
  655.     skill.mp_cost_rate * self.mp * 0.01
  656.    
  657.   end
  658.   
  659.   #消費MP割合(最大値)
  660.   
  661.   def mp_cost_mrate(skill)
  662.    
  663.     #スキルの消費最大MP割合と最大値をかけた後、0.01をかけた数字を返す
  664.    
  665.     skill.mp_cost_mrate * self.mmp * 0.01
  666.    
  667.   end
  668.   
  669.   #消費MP式
  670.   
  671.   def mp_cost_eval(skill)
  672.    
  673.     #スキルの消費MP割合式を返す
  674.    
  675.     eval(skill.mp_cost_eval)
  676.    
  677.   end
  678.   
  679.   #消費MP軽減割合
  680.   
  681.   def special_mcr(skill)
  682.    
  683.     #消費MP軽減特徴が無効の場合は消費MP軽減特徴の効果を反映させる
  684.    
  685.     return mcr unless skill.mcr_zero?
  686.    
  687.     #消費MP軽減特徴が有効の場合は1.0を返す
  688.    
  689.     return 1.0
  690.    
  691.   end
  692.   
  693.   #TP消費計算を別名定義で変更し、総合消費TPを計算
  694.   
  695.   alias skill_tp_cost_extra_cost skill_tp_cost
  696.   def skill_tp_cost(skill)
  697.    
  698.     #元のデータを取得する
  699.    
  700.     data = skill_tp_cost_extra_cost(skill)
  701.    
  702.     #元のデータに新規処理の総和を足す
  703.    
  704.     data += tp_cost_fix(skill) + tp_cost_rate(skill) + tp_cost_mrate(skill) + tp_cost_eval(skill)
  705.    
  706.     #軽減特徴を適用
  707.    
  708.     data *= special_ex_tcr(skill)
  709.    
  710.     #整数化して返す
  711.    
  712.     return data.to_i
  713.   end
  714.   
  715.   #消費固定TP
  716.   
  717.   def tp_cost_fix(skill)
  718.    
  719.     #スキルの消費固定TPを返す
  720.    
  721.     skill.tp_cost_fix
  722.    
  723.   end
  724.   
  725.   #消費TP割合(現在値)
  726.   
  727.   def tp_cost_rate(skill)
  728.    
  729.     #スキルの消費TP割合と現在値をかけた後、0.01をかけた数字を返す
  730.    
  731.     skill.tp_cost_rate * self.tp * 0.01
  732.   end
  733.   
  734.   #消費TP割合(最大値)
  735.   
  736.   def tp_cost_mrate(skill)
  737.    
  738.     #スキルの消費最大TP割合と最大値をかけた後、0.01をかけた数字を返す
  739.    
  740.     skill.tp_cost_mrate * self.max_tp * 0.01
  741.   end
  742.   
  743.   #消費TP式
  744.   
  745.   def tp_cost_eval(skill)
  746.    
  747.     #スキルの消費TP割合式を返す
  748.    
  749.     eval(skill.tp_cost_eval)
  750.   end
  751.   
  752.   #消費TP軽減割合
  753.   
  754.   def special_ex_tcr(skill)
  755.    
  756.     #消費TP軽減特徴が無効の場合は消費MP軽減特徴の効果を反映させる
  757.    
  758.     return [(100.0 - ex_tcr)/100, 0].max unless skill.ex_tcr_zero?
  759.    
  760.     #消費TP軽減特徴が有効の場合は1.0を返す
  761.    
  762.     return 1.0
  763.   end
  764.   
  765.   #消費HP軽減割合の取得
  766.   
  767.   def ex_hcr
  768.    
  769.     #とりあえず0にする
  770.    
  771.     data = 0
  772.    
  773.     #特徴別に処理
  774.    
  775.     feature_objects.each do |f|
  776.    
  777.       #消費HP軽減割合を加算
  778.    
  779.       data += f.ex_hcr
  780.     end
  781.    
  782.     #データを返す
  783.    
  784.     return data
  785.   end
  786.   
  787.   #消費TP軽減割合の取得
  788.   
  789.   def ex_tcr
  790.    
  791.     #とりあえず0にする
  792.    
  793.     data = 0
  794.    
  795.     #特徴別に処理
  796.    
  797.     feature_objects.each do |f|
  798.    
  799.       #消費TP軽減割合を加算
  800.    
  801.       data += f.ex_tcr
  802.     end
  803.    
  804.     #データを返す
  805.    
  806.     return data
  807.   end
  808. end
  809. class Scene_Skill < Scene_ItemBase
  810.   
  811.   #スキル使用時のアクターへの効果のタイミングで
  812.   #HP消費の効果を反映させる。
  813.   
  814.   alias use_item_to_actors_extra_cost use_item_to_actors
  815.   def use_item_to_actors
  816.    
  817.     #使用者とスキルを取得。
  818.    
  819.     target = user
  820.     item = target.last_skill.object
  821.    
  822.     #本来の処理を実行。
  823.    
  824.     use_item_to_actors_extra_cost
  825.    
  826.     #スキルではない場合は処理を飛ばす。
  827.    
  828.     return unless item.is_a?(RPG::Skill)
  829.    
  830.     #スキル使用による戦闘不能が認められていて
  831.     #なおかつ使用者が生存している場合はHP消費を反映。
  832.     #認められていない場合は、HPの最低値を1としてHP消費を反映。
  833.     if target.alive? && target.hp > 0
  834.       if item.suicidable?
  835.         target.hp -= target.skill_hp_cost(item)
  836.       else
  837.         target.hp = [target.hp - target.skill_hp_cost(item), 1].max
  838.       end
  839.     end
  840.   end
  841. end
  842. class Scene_Battle < Scene_Base
  843.   
  844.   #スキル使用後のタイミングで
  845.   #HP消費の効果を反映させる。
  846.   
  847.   alias use_item_extra_cost use_item
  848.   def use_item
  849.    
  850.     #使用者とスキルを取得。
  851.    
  852.     target = @subject
  853.     item = target.current_action.item
  854.    
  855.     #本来の処理を実行。
  856.    
  857.     use_item_extra_cost
  858.    
  859.     #スキルではない場合は処理を飛ばす。
  860.    
  861.     return unless item.is_a?(RPG::Skill)
  862.    
  863.     #スキル使用による戦闘不能が認められていて
  864.     #なおかつ使用者が生存している場合はHP消費を反映。
  865.     #認められていない場合は、HPの最低値を1としてHP消費を反映。
  866.     if target.alive? && target.hp > 0
  867.       if item.suicidable?
  868.         
  869.         target.hp -= target.skill_hp_cost(item)
  870.         
  871.         #HP消費によって戦闘不能となった場合
  872.         #ログウィンドウにその旨を出力する。
  873.         
  874.         if !target.alive?
  875.           state = $data_states[1]
  876.           state_msg = target.actor? ? state.message1 : state.message2
  877.           target.perform_collapse_effect
  878.           @log_window.replace_text(target.name + state_msg)
  879.           @log_window.wait
  880.           @log_window.wait_for_effect
  881.         end
  882.       else
  883.         target.hp = [target.hp - target.skill_hp_cost(item), 1].max
  884.       end
  885.     end
  886.   end
  887. end
  888. class Window_Base < Window
  889.   
  890.   #新たな制御文字として\ALPHACを加える。
  891.   #\ALPHACは、文字色変更時に透過度を保持する。
  892.   
  893.   alias process_escape_character_extra_cost process_escape_character
  894.   def process_escape_character(code, text, pos)
  895.     if code.upcase == 'C'
  896.       alpha = contents.font.color.alpha
  897.       change_color(text_color(obtain_escape_param(text)))
  898.       contents.font.color.alpha = alpha
  899.       return
  900.     end
  901.     process_escape_character_extra_cost(code, text, pos)
  902.   end
  903.   
  904.   #コスト表示用に、制御文字付きの描写方法を新たに定義する。
  905.   #通常の制御文字付き文章描画と異なり、文体のリセットを行わない。
  906.   
  907.   def draw_text_ex_cost(x, y, text)
  908.     text = convert_escape_characters(text)
  909.     pos = {:x => x, :y => y, :new_x => x, :height => calc_line_height(text)}
  910.     process_character(text.slice!(0, 1), text, pos) until text.empty?
  911.   end
  912. end
  913. class Window_SkillList < Window_Selectable
  914.   
  915.   #桁数の変更
  916.   
  917.   alias col_max_extra_cost col_max
  918.   def col_max
  919.     data = col_max_extra_cost
  920.     data = EXTRA_SKILL_COST::COLMAX if data != EXTRA_SKILL_COST::COLMAX
  921.     return data
  922.   end
  923.   
  924.   #スキルコストの記述方法を変更。
  925.   
  926.   alias draw_skill_cost_extra_cost draw_skill_cost
  927.   def draw_skill_cost(rect, skill)
  928.       
  929.     #表示形式が0の場合は本来の処理を実行
  930.       
  931.     return draw_skill_cost_extra_cost(rect, skill) if EXTRA_SKILL_COST::COST_D == 0
  932.       
  933.     #HP/MP/TP消費量を取得。
  934.       
  935.     flag = [@actor.skill_hp_cost(skill),@actor.skill_mp_cost(skill),@actor.skill_tp_cost(skill)]
  936.       
  937.     #スキルの使用可否に応じて記述内容の透過度を設定する。
  938.       
  939.     contents.font.color.alpha = enable?(skill) ? 255 : translucent_alpha
  940.       
  941.     #文字列の長さを取得する為、二つの文字列データを作成する。
  942.    
  943.     text = ""
  944.    
  945.     sub_text = ""
  946.    
  947.     #HP
  948.    
  949.     if EXTRA_SKILL_COST::HP_D && (EXTRA_SKILL_COST::COST_D > 1 or flag[0] > 0)
  950.       t = EXTRA_SKILL_COST::CTITLE ? Vocab::basic(3) : ""
  951.       if EXTRA_SKILL_COST::COST_D > 1 && flag[0].to_s.length != EXTRA_SKILL_COST::COST_D
  952.         number = EXTRA_SKILL_COST::COST_D - flag[0].to_s.length
  953.         number.times do
  954.           t+= " "
  955.         end
  956.       end
  957.       t += flag[0].to_s
  958.       sub_text += t
  959.       text += hp_cost_color_text + t
  960.     end
  961.    
  962.     #MP
  963.    
  964.     if EXTRA_SKILL_COST::MP_D && (EXTRA_SKILL_COST::COST_D > 1 or flag[1] > 0)
  965.       if text != ""
  966.         text += "\\ALPHAC[0]/"
  967.         sub_text += "/"
  968.       end
  969.       t = EXTRA_SKILL_COST::CTITLE ? Vocab::basic(5) : ""
  970.       if EXTRA_SKILL_COST::COST_D > 1 && flag[1].to_s.length != EXTRA_SKILL_COST::COST_D
  971.         number = EXTRA_SKILL_COST::COST_D - flag[1].to_s.length
  972.         number.times do
  973.           t+= " "
  974.         end
  975.       end
  976.       t += flag[1].to_s
  977.       sub_text += t
  978.       text += mp_cost_color_text + t
  979.     end
  980.    
  981.     #TP
  982.    
  983.     if EXTRA_SKILL_COST::TP_D && (EXTRA_SKILL_COST::COST_D > 1 or flag[2] > 0)
  984.       if text != ""
  985.         text += "\\ALPHAC[0]/"
  986.         sub_text += "/"
  987.       end
  988.       t = EXTRA_SKILL_COST::CTITLE ? Vocab::basic(7) : ""
  989.       if EXTRA_SKILL_COST::COST_D > 1 && flag[2].to_s.length != EXTRA_SKILL_COST::COST_D
  990.         number = EXTRA_SKILL_COST::COST_D - flag[2].to_s.length
  991.         number.times do
  992.           t+= " "
  993.         end
  994.       end
  995.       t += flag[2].to_s
  996.       sub_text += t
  997.       text += tp_cost_color_text + t
  998.     end
  999.    
  1000.     #文字列の長さを取得し、描写を実行する。
  1001.    
  1002.     sub_x = text_size(sub_text).width
  1003.     x = rect.x + rect.width - sub_x + EXTRA_SKILL_COST::COS_OX
  1004.     y = rect.y
  1005.     draw_text_ex_cost(x, y, text)
  1006.    
  1007.   end
  1008.   
  1009.   #消費HP記述用のキャッシュを生成。
  1010.   
  1011.   def hp_cost_color_text
  1012.     return @hp_cost_color_set if @hp_cost_color_set != nil
  1013.     @hp_cost_color_set = "\\ALPHAC[" + EXTRA_SKILL_COST::HPCC.to_s + "]"
  1014.     return @hp_cost_color_set
  1015.   end
  1016.   
  1017.   #消費MP記述用のキャッシュを生成。
  1018.   
  1019.   def mp_cost_color_text
  1020.     return @mp_cost_color_set if @mp_cost_color_set != nil
  1021.     @mp_cost_color_set = "\\ALPHAC[" + EXTRA_SKILL_COST::MPCC.to_s + "]"
  1022.     return @mp_cost_color_set
  1023.   end
  1024.   
  1025.   #消費TP記述用のキャッシュを生成。
  1026.   
  1027.   def tp_cost_color_text
  1028.     return @tp_cost_color_set if @tp_cost_color_set != nil
  1029.     @tp_cost_color_set = "\\ALPHAC[" + EXTRA_SKILL_COST::TPCC.to_s + "]"
  1030.     return @tp_cost_color_set
  1031.   end
  1032.   
  1033. end
  1034. class RPG::BaseItem
  1035.   
  1036.   #消費HP軽減特徴。
  1037.   
  1038.   def ex_hcr
  1039.    
  1040.     #キャッシュがある場合はキャッシュを返す。
  1041.    
  1042.     return @feature_ex_hcr if @feature_ex_hcr != nil
  1043.    
  1044.     #メモ欄からデータを取得。
  1045.    
  1046.     memo = self.note.scan(/<#{EXTRA_SKILL_COST::WORD7A}[::](\S+)>/).flatten
  1047.    
  1048.     #データを取得出来無かった場合は0に設定する。
  1049.    
  1050.     @feature_ex_hcr = (memo != nil && !memo.empty?) ? memo[0].to_i : 0
  1051.    
  1052.     #データを返す。
  1053.    
  1054.     return @feature_ex_hcr
  1055.   end
  1056.   
  1057.   #消費TP軽減特徴。
  1058.   
  1059.   def ex_tcr
  1060.    
  1061.     #キャッシュがある場合はキャッシュを返す。
  1062.    
  1063.     return @feature_ex_tcr if @feature_ex_tcr != nil
  1064.    
  1065.     #メモ欄からデータを取得。
  1066.    
  1067.     memo = self.note.scan(/<#{EXTRA_SKILL_COST::WORD9A}[::](\S+)>/).flatten
  1068.    
  1069.     #データを取得出来無かった場合は0に設定する。
  1070.    
  1071.     @feature_ex_tcr = (memo != nil && !memo.empty?) ? memo[0].to_i : 0
  1072.    
  1073.     #データを返す。
  1074.    
  1075.     return @feature_ex_tcr
  1076.   end
  1077. end
  1078. class RPG::Skill < RPG::UsableItem
  1079.   
  1080.   #消費HP軽減無効。
  1081.   
  1082.   def ex_hcr_zero?
  1083.    
  1084.     #キャッシュがある場合はキャッシュを返す。
  1085.    
  1086.     return @ex_hcr_zero if @ex_hcr_zero != nil
  1087.    
  1088.     #メモ欄からデータを取得。
  1089.    
  1090.     @ex_hcr_zero = self.note.include?(EXTRA_SKILL_COST::WORD7B)
  1091.    
  1092.     #データを返す。
  1093.    
  1094.     return @ex_hcr_zero
  1095.   end
  1096.   
  1097.   #消費MP軽減無効。
  1098.   
  1099.   def mcr_zero?
  1100.    
  1101.     #キャッシュがある場合はキャッシュを返す。
  1102.    
  1103.     return @mcr_zero if @mcr_zero != nil
  1104.    
  1105.     #メモ欄からデータを取得。
  1106.    
  1107.     @mcr_zero = self.note.include?(EXTRA_SKILL_COST::WORD8)
  1108.    
  1109.     #データを返す。
  1110.    
  1111.     return @mcr_zero
  1112.   end
  1113.   
  1114.   #消費TP軽減無効。
  1115.   
  1116.   def ex_tcr_zero?
  1117.    
  1118.     #キャッシュがある場合はキャッシュを返す。
  1119.    
  1120.     return @ex_tcr_zero if @ex_tcr_zero != nil
  1121.    
  1122.     #メモ欄からデータを取得。
  1123.    
  1124.     @ex_tcr_zero = self.note.include?(EXTRA_SKILL_COST::WORD9B)
  1125.    
  1126.     #データを返す。
  1127.    
  1128.     return @ex_tcr_zero
  1129.   end
  1130.   def item_cost
  1131.    
  1132.     #キャッシュがある場合はキャッシュを返す。
  1133.    
  1134.     return @item_cost if @item_cost != nil
  1135.    
  1136.     @item_cost = []
  1137.    
  1138.     #メモ欄からデータを取得。
  1139.    
  1140.     self.note.each_line do |l|
  1141.    
  1142.       memo = l.scan(/<#{EXTRA_SKILL_COST::WORD1A}[::](\S+)>/).flatten
  1143.       
  1144.       #データを取得出来無かった場合は飛ばす。
  1145.       
  1146.       if memo != nil && !memo.empty?
  1147.         
  1148.         memo = memo[0].split(/\s*,\s*/)
  1149.       
  1150.         @item_cost.push([0, memo[0].to_i, memo[1] ? memo[1].to_i : 1])
  1151.       
  1152.       end
  1153.       
  1154.       memo = l.scan(/<#{EXTRA_SKILL_COST::WORD1B}[::](\S+)>/).flatten
  1155.       
  1156.       #データを取得出来無かった場合は飛ばす。
  1157.         
  1158.       if memo != nil && !memo.empty?
  1159.         
  1160.         memo = memo[0].split(/\s*,\s*/)
  1161.       
  1162.         @item_cost.push([1, memo[0].to_i, memo[1] ? memo[1].to_i : 1])
  1163.       
  1164.       end
  1165.    
  1166.       memo = l.scan(/<#{EXTRA_SKILL_COST::WORD1C}[::](\S+)>/).flatten
  1167.       
  1168.       #データを取得出来無かった場合は飛ばす。
  1169.         
  1170.       if memo != nil && !memo.empty?
  1171.         
  1172.         memo = memo[0].split(/\s*,\s*/)
  1173.       
  1174.         @item_cost.push([2, memo[0].to_i, memo[1] ? memo[1].to_i : 1])
  1175.       
  1176.       end   
  1177.     end
  1178.    
  1179.     #データを返す。
  1180.    
  1181.     return @item_cost
  1182.   end
  1183.   def gold_cost_fix
  1184.    
  1185.     #キャッシュがある場合はキャッシュを返す。
  1186.    
  1187.     return @gold_cost_fix if @gold_cost_fix != nil
  1188.    
  1189.     #メモ欄からデータを取得。
  1190.    
  1191.     memo = self.note.scan(/<#{EXTRA_SKILL_COST::WORD2A}[::](\S+)>/).flatten
  1192.    
  1193.     #データを取得出来無かった場合は0に設定する。
  1194.    
  1195.     @gold_cost_fix = (memo != nil && !memo.empty?) ? memo[0].to_i : 0
  1196.    
  1197.     #データを返す。
  1198.    
  1199.     return @gold_cost_fix
  1200.   end
  1201.   def gold_cost_rate
  1202.    
  1203.     #キャッシュがある場合はキャッシュを返す。
  1204.    
  1205.     return @gold_cost_rate if @gold_cost_rate != nil
  1206.    
  1207.     #メモ欄からデータを取得。
  1208.    
  1209.     memo = self.note.scan(/<#{EXTRA_SKILL_COST::WORD2B}[::](\S+)>/).flatten
  1210.    
  1211.     #データを取得出来無かった場合は0に設定する。
  1212.    
  1213.     @gold_cost_rate = (memo != nil && !memo.empty?) ? memo[0].to_i : 0
  1214.    
  1215.     #データを返す。
  1216.    
  1217.     return @gold_cost_rate
  1218.   end
  1219.   def gold_cost_eval
  1220.    
  1221.     #キャッシュがある場合はキャッシュを返す。
  1222.    
  1223.     return @gold_cost_eval if @gold_cost_eval != nil
  1224.    
  1225.     #メモ欄からデータを取得。
  1226.    
  1227.     memo = self.note.scan(/<#{EXTRA_SKILL_COST::WORD2C}[::](\S+)>/).flatten
  1228.    
  1229.     #データを取得出来無かった場合は0に設定する。
  1230.    
  1231.     @gold_cost_eval = (memo != nil && !memo.empty?) ? memo[0].to_s : "0"
  1232.    
  1233.     #データを返す。
  1234.    
  1235.     return @gold_cost_eval
  1236.   end
  1237.   def var_cost_fix
  1238.    
  1239.     #キャッシュがある場合はキャッシュを返す。
  1240.    
  1241.     return @var_cost_fix if @var_cost_fix != nil
  1242.    
  1243.     #配列を作成。
  1244.    
  1245.     @var_cost_fix = []
  1246.    
  1247.     #メモ欄からデータを取得。
  1248.    
  1249.     self.note.each_line do |l|
  1250.    
  1251.       memo = l.scan(/<#{EXTRA_SKILL_COST::WORD3A}[::](\S+)>/).flatten
  1252.       
  1253.       #データを取得出来無かった場合は飛ばす。
  1254.       
  1255.       if memo != nil && !memo.empty?
  1256.       
  1257.         memo = memo[0].split(/\s*,\s*/)
  1258.         
  1259.         @var_cost_fix.push([memo[0].to_i, memo[1].to_i])
  1260.         
  1261.       end
  1262.       
  1263.     end
  1264.    
  1265.     #データを返す。
  1266.    
  1267.     return @var_cost_fix
  1268.   end
  1269.   def var_cost_rate
  1270.    
  1271.     #キャッシュがある場合はキャッシュを返す。
  1272.    
  1273.     return @var_cost_rate if @var_cost_rate != nil
  1274.    
  1275.     #配列を作成。
  1276.    
  1277.     @var_cost_rate = []
  1278.    
  1279.     #メモ欄からデータを取得。
  1280.    
  1281.     self.note.each_line do |l|
  1282.    
  1283.       memo = l.scan(/<#{EXTRA_SKILL_COST::WORD3B}[::](\S+)>/).flatten
  1284.       
  1285.       #データを取得出来無かった場合は飛ばす。
  1286.       
  1287.       if memo != nil && !memo.empty?
  1288.       
  1289.         memo = memo[0].split(/\s*,\s*/)
  1290.         
  1291.         @var_cost_rate.push([memo[0].to_i, memo[1].to_i])
  1292.         
  1293.       end
  1294.       
  1295.     end
  1296.    
  1297.     #データを返す。
  1298.    
  1299.     return @var_cost_rate
  1300.   end
  1301.   def var_cost_eval
  1302.    
  1303.     #キャッシュがある場合はキャッシュを返す。
  1304.    
  1305.     return @var_cost_eval if @var_cost_eval != nil
  1306.    
  1307.     #配列を作成。
  1308.    
  1309.     @var_cost_eval = []
  1310.    
  1311.     #メモ欄からデータを取得。
  1312.    
  1313.     self.note.each_line do |l|
  1314.    
  1315.       memo = l.scan(/<#{EXTRA_SKILL_COST::WORD3C}[::](\S+)>/).flatten
  1316.       
  1317.       #データを取得出来無かった場合は飛ばす。
  1318.       
  1319.       if memo != nil && !memo.empty?
  1320.       
  1321.         memo = memo[0].split(/\s*,\s*/)
  1322.         
  1323.         @var_cost_eval.push([memo[0].to_i, memo[1].to_s])
  1324.         
  1325.       end
  1326.       
  1327.     end
  1328.    
  1329.     #データを返す。
  1330.    
  1331.     return @var_cost_eval
  1332.   end
  1333.   def hp_cost_fix
  1334.    
  1335.     #キャッシュがある場合はキャッシュを返す。
  1336.    
  1337.     return @hp_cost_fix if @hp_cost_fix != nil
  1338.    
  1339.     #メモ欄からデータを取得。
  1340.    
  1341.     memo = self.note.scan(/<#{EXTRA_SKILL_COST::WORD4A}[::](\S+)>/).flatten
  1342.    
  1343.     #データを取得出来無かった場合は0に設定する。
  1344.    
  1345.     @hp_cost_fix = (memo != nil && !memo.empty?) ? memo[0].to_i : 0
  1346.    
  1347.     #データを返す。
  1348.    
  1349.     return @hp_cost_fix
  1350.   end
  1351.   def hp_cost_rate
  1352.    
  1353.     #キャッシュがある場合はキャッシュを返す。
  1354.    
  1355.     return @hp_cost_rate if @hp_cost_rate != nil
  1356.    
  1357.     #メモ欄からデータを取得。
  1358.    
  1359.     memo = self.note.scan(/<#{EXTRA_SKILL_COST::WORD4B}[::](\S+)>/).flatten
  1360.    
  1361.     #データを取得出来無かった場合は0に設定する。
  1362.    
  1363.     @hp_cost_rate = (memo != nil && !memo.empty?) ? memo[0].to_i : 0
  1364.    
  1365.     #データを返す。
  1366.    
  1367.     return @hp_cost_rate
  1368.   end
  1369.   def hp_cost_mrate
  1370.    
  1371.     #キャッシュがある場合はキャッシュを返す。
  1372.    
  1373.     return @hp_cost_mrate if @hp_cost_mrate != nil
  1374.    
  1375.     #メモ欄からデータを取得。
  1376.    
  1377.     memo = self.note.scan(/<#{EXTRA_SKILL_COST::WORD4C}[::](\S+)>/).flatten
  1378.    
  1379.     #データを取得出来無かった場合は0に設定する。
  1380.    
  1381.     @hp_cost_mrate = (memo != nil && !memo.empty?) ? memo[0].to_i : 0
  1382.    
  1383.     #データを返す。
  1384.    
  1385.     return @hp_cost_mrate
  1386.   end
  1387.   def hp_cost_eval
  1388.    
  1389.     #キャッシュがある場合はキャッシュを返す。
  1390.    
  1391.     return @hp_cost_eval if @hp_cost_eval != nil
  1392.    
  1393.     #メモ欄からデータを取得。
  1394.    
  1395.     memo = self.note.scan(/<#{EXTRA_SKILL_COST::WORD4D}[::](\S+)>/).flatten
  1396.    
  1397.     #データを取得出来無かった場合は0に設定する。
  1398.    
  1399.     @hp_cost_eval = (memo != nil && !memo.empty?) ? memo[0].to_s : "0"
  1400.    
  1401.     #データを返す。
  1402.    
  1403.     return @hp_cost_eval
  1404.   end
  1405.   def mp_cost_fix
  1406.    
  1407.     #キャッシュがある場合はキャッシュを返す。
  1408.    
  1409.     return @mp_cost_fix if @mp_cost_fix != nil
  1410.    
  1411.     #メモ欄からデータを取得。
  1412.    
  1413.     memo = self.note.scan(/<#{EXTRA_SKILL_COST::WORD5A}[::](\S+)>/).flatten
  1414.    
  1415.     #データを取得出来無かった場合は0に設定する。
  1416.    
  1417.     @mp_cost_fix = (memo != nil && !memo.empty?) ? memo[0].to_i : 0
  1418.    
  1419.     #データを返す。
  1420.    
  1421.     return @mp_cost_fix
  1422.   end
  1423.   def mp_cost_rate
  1424.    
  1425.     #キャッシュがある場合はキャッシュを返す。
  1426.    
  1427.     return @mp_cost_rate if @mp_cost_rate != nil
  1428.    
  1429.     #メモ欄からデータを取得。
  1430.    
  1431.     memo = self.note.scan(/<#{EXTRA_SKILL_COST::WORD5B}[::](\S+)>/).flatten
  1432.    
  1433.     #データを取得出来無かった場合は0に設定する。
  1434.    
  1435.     @mp_cost_rate = (memo != nil && !memo.empty?) ? memo[0].to_i : 0
  1436.    
  1437.     #データを返す。
  1438.    
  1439.     return @mp_cost_rate
  1440.   end
  1441.   def mp_cost_mrate
  1442.    
  1443.     #キャッシュがある場合はキャッシュを返す。
  1444.    
  1445.     return @mp_cost_mrate if @mp_cost_mrate != nil
  1446.    
  1447.     #メモ欄からデータを取得。
  1448.    
  1449.     memo = self.note.scan(/<#{EXTRA_SKILL_COST::WORD5C}[::](\S+)>/).flatten
  1450.    
  1451.     #データを取得出来無かった場合は0に設定する。
  1452.    
  1453.     @mp_cost_mrate = (memo != nil && !memo.empty?) ? memo[0].to_i : 0
  1454.    
  1455.     #データを返す。
  1456.    
  1457.     return @mp_cost_mrate
  1458.   end
  1459.   def mp_cost_eval
  1460.    
  1461.     #キャッシュがある場合はキャッシュを返す。
  1462.    
  1463.     return @mp_cost_eval if @mp_cost_eval != nil
  1464.    
  1465.     #メモ欄からデータを取得。
  1466.    
  1467.     memo = self.note.scan(/<#{EXTRA_SKILL_COST::WORD5D}[::](\S+)>/).flatten
  1468.    
  1469.     #データを取得出来無かった場合は0に設定する。
  1470.    
  1471.     @mp_cost_eval = (memo != nil && !memo.empty?) ? memo[0].to_s : "0"
  1472.    
  1473.     #データを返す。
  1474.    
  1475.     return @mp_cost_eval
  1476.   end
  1477.   def tp_cost_fix
  1478.    
  1479.     #キャッシュがある場合はキャッシュを返す。
  1480.    
  1481.     return @tp_cost_fix if @tp_cost_fix != nil
  1482.    
  1483.     #メモ欄からデータを取得。
  1484.    
  1485.     memo = self.note.scan(/<#{EXTRA_SKILL_COST::WORD6A}[::](\S+)>/).flatten
  1486.    
  1487.     #データを取得出来無かった場合は0に設定する。
  1488.    
  1489.     @tp_cost_fix = (memo != nil && !memo.empty?) ? memo[0].to_i : 0
  1490.    
  1491.     #データを返す。
  1492.    
  1493.     return @tp_cost_fix
  1494.   end
  1495.   def tp_cost_rate
  1496.    
  1497.     #キャッシュがある場合はキャッシュを返す。
  1498.    
  1499.     return @tp_cost_rate if @tp_cost_rate != nil
  1500.    
  1501.     #メモ欄からデータを取得。
  1502.    
  1503.     memo = self.note.scan(/<#{EXTRA_SKILL_COST::WORD6B}[::](\S+)>/).flatten
  1504.    
  1505.     #データを取得出来無かった場合は0に設定する。
  1506.    
  1507.     @tp_cost_rate = (memo != nil && !memo.empty?) ? memo[0].to_i : 0
  1508.    
  1509.     #データを返す。
  1510.    
  1511.     return @tp_cost_rate
  1512.   end
  1513.   def tp_cost_mrate
  1514.    
  1515.     #キャッシュがある場合はキャッシュを返す。
  1516.    
  1517.     return @tp_cost_mrate if @tp_cost_mrate != nil
  1518.    
  1519.     #メモ欄からデータを取得。
  1520.    
  1521.     memo = self.note.scan(/<#{EXTRA_SKILL_COST::WORD6C}[::](\S+)>/).flatten
  1522.    
  1523.     #データを取得出来無かった場合は0に設定する。
  1524.    
  1525.     @tp_cost_mrate = (memo != nil && !memo.empty?) ? memo[0].to_i : 0
  1526.    
  1527.     #データを返す。
  1528.    
  1529.     return @tp_cost_mrate
  1530.   end
  1531.   def tp_cost_eval
  1532.    
  1533.     #キャッシュがある場合はキャッシュを返す。
  1534.    
  1535.     return @tp_cost_eval if @tp_cost_eval != nil
  1536.    
  1537.     #メモ欄からデータを取得。
  1538.    
  1539.     memo = self.note.scan(/<#{EXTRA_SKILL_COST::WORD6D}[::](\S+)>/).flatten
  1540.    
  1541.     #データを取得出来無かった場合は0に設定する。
  1542.    
  1543.     @tp_cost_eval = (memo != nil && !memo.empty?) ? memo[0].to_s : "0"
  1544.    
  1545.     #データを返す。
  1546.    
  1547.     return @tp_cost_eval
  1548.   end
  1549.   def suicidable?
  1550.    
  1551.     #キャッシュがある場合はキャッシュを返す。
  1552.    
  1553.     return @suicidable if @suicidable != nil
  1554.    
  1555.     #メモ欄からデータを取得。
  1556.    
  1557.     @suicidable = self.note.include?(EXTRA_SKILL_COST::WORD10)
  1558.    
  1559.     #データを返す。
  1560.    
  1561.     return @suicidable
  1562.   end
  1563. end
复制代码
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1422
在线时间
245 小时
注册时间
2019-1-18
帖子
190
8
 楼主| 发表于 2019-3-24 14:45:33 | 只看该作者
百里_飞柳 发表于 2019-3-24 12:41
大概你加了什么技能消耗的扩展,然后里面有定义绘制前加的转义符,于是你自己加了\c的转义符来修改颜色?
...

我找不到啊。。。这个是对技能消耗有改动的脚本,您看看呗
  1. module EXTRA_SKILL_COST
  2.   
  3.   #コストとしてアイテムを消費する場合の設定用ワード
  4.   
  5.   WORD1A  = "物品消耗"
  6.   
  7.   #コストとして武器を消費する場合の設定用ワード
  8.   
  9.   WORD1B  = "武器消耗"
  10.   
  11.   #コストとして防具を消費する場合の設定用ワード
  12.   
  13.   WORD1C  = "防具消耗"
  14.   
  15.   #コストとして所持金を固定値消費する場合の設定用ワード
  16.   
  17.   WORD2A = "灵魂消耗"
  18.   
  19.   #コストとして所持金を割合消費する場合の設定用ワード
  20.   
  21.   WORD2B = "灵魂比例消耗"
  22.   
  23.   #コストとして所持金を消費する式を設定する場合の設定用ワード
  24.   
  25.   WORD2C = "所持金消費式"
  26.   
  27.   #コストとして変数の値を固定値消費する場合の設定用ワード
  28.   
  29.   WORD3A = "変数固定消費"
  30.   
  31.   #コストとして変数の値を割合消費する場合の設定用ワード
  32.   
  33.   WORD3B = "変数割合消費"
  34.   
  35.   #コストとして変数の値を消費する式を設定する場合の設定用ワード
  36.   
  37.   WORD3C = "変数消費式"
  38.   
  39.   #コストとしてHPを固定値消費する場合の設定用ワード
  40.   
  41.   WORD4A = "HP损耗"
  42.   
  43.   #コストとしてHPを割合消費する場合の設定用ワード
  44.   
  45.   WORD4B = "HP比例损耗"
  46.   
  47.   #コストとしてHPを最大値に対する一定割合分消費する式を設定する場合の設定用ワード
  48.   
  49.   WORD4C = "最大HP比例损耗"
  50.   
  51.   #コストとしてHPを消費する式を設定する場合の設定用ワード
  52.   
  53.   WORD4D = "HP消費式"
  54.   
  55.   #コストとしてMPを固定値消費する場合の設定用ワード
  56.   
  57.   WORD5A = "MP损耗"
  58.   
  59.   #コストとしてMPを割合消費する場合の設定用ワード
  60.   
  61.   WORD5B = "MP比例损耗"
  62.   
  63.   #コストとしてMPを最大値に対する一定割合分消費する式を設定する場合の設定用ワード
  64.   
  65.   WORD5C = "最大MP割合消費"
  66.   
  67.   #コストとしてMPを消費する式を設定する場合の設定用ワード
  68.   
  69.   WORD5D = "MP消費式"
  70.   
  71.   #コストとしてTPを固定値消費する場合の設定用ワード
  72.   
  73.   WORD6A = "TP损耗"
  74.   
  75.   #コストとしてTPを割合消費する場合の設定用ワード
  76.   
  77.   WORD6B = "TP比例损耗"
  78.   
  79.   #コストとしてTPを最大値に対する一定割合分消費する式を設定する場合の設定用ワード
  80.   
  81.   WORD6C = "最大TP比例损耗"
  82.   
  83.   #コストとしてTPを消費する式を設定する場合の設定用ワード
  84.   
  85.   WORD6D = "TP消費式"
  86.   
  87.   #消費HP軽減特徴の設定用ワード
  88.   
  89.   WORD7A = "消費HP軽減割合"
  90.   
  91.   #消費HP軽減無効スキルの設定用ワード
  92.   
  93.   WORD7B = "消費HP軽減無効"
  94.   
  95.   #消費MP軽減無効スキルの設定用ワード
  96.   
  97.   WORD8  = "消費MP軽減無効"
  98.   
  99.   #消費TP軽減特徴の設定用ワード
  100.   
  101.   WORD9A = "消費TP軽減割合"
  102.   
  103.   #消費TP軽減無効スキルの設定用ワード
  104.   
  105.   WORD9B = "消費TP軽減無効"
  106.   
  107.   #スキル使用時、消費HPによる戦闘不能を有効にするか否かの設定用ワード
  108.   
  109.   WORD10 = "戦闘不能許可"
  110.   
  111.   WORD11 ="暴击率"
  112.   
  113.   #HPのスキルコスト表示色(テキストカラーIDに準じる)
  114.   
  115.   HPCC   = 2
  116.   
  117.   #MPのスキルコスト表示色(テキストカラーIDに準じる)
  118.   
  119.   MPCC   = 23
  120.   
  121.   #TPのスキルコスト表示色(テキストカラーIDに準じる)
  122.   
  123.   TPCC   = 29
  124.   
  125.   #コストとして変数の値を消費する場合
  126.   #使用後、変数の値がマイナスになる場合でも使用可とするか
  127.   #true = 使用可能 false = 使用不可
  128.   
  129.   V_MIN1 = false
  130.   
  131.   #コストとして変数の値を消費する場合
  132.   #敵が使用する場合も判定を行うか
  133.   #true = 行う false = 行わない
  134.   
  135.   V_MIN2 = false
  136.   
  137.   #HP/MP/TPコストの表示形式
  138.   #0   デフォルト(HPは表示しない)
  139.   #1   HP/MP/TPを全て表示(表示形式は揃えない)
  140.   #2~ 数字分だけ区切って表示
  141.   
  142.   COST_D = 1
  143.   
  144.   #COST_Dが2以上の場合の表示設定
  145.   
  146.   #HPを表示するか(trueで表示 falseで非表示)
  147.   
  148.   HP_D   = true
  149.   
  150.   #MPを表示するか
  151.   
  152.   MP_D   = true
  153.   
  154.   #TPを表示するか
  155.   
  156.   TP_D   = true
  157.   
  158.   #スキルコストの対象表示(項目名の短縮名表示 trueで表示 falseで非表示)
  159.   
  160.   CTITLE = true
  161.   
  162.   #スキルリストの桁数
  163.   
  164.   COLMAX = 2
  165.   
  166.   #スキルコスト表示位置の調整
  167.   
  168.   COS_OX = 0#-2
  169.   
  170. end

  171. class Game_BattlerBase
  172.   
  173.   #MP・TPコストの計算に別名定義で変更
  174.   
  175.   alias skill_cost_payable_extra_cost? skill_cost_payable?
  176.   def skill_cost_payable?(skill)
  177.    
  178.     #元の処理を実行
  179.    
  180.     return false unless skill_cost_payable_extra_cost?(skill)
  181.    
  182.     #追加された消費系統の可否を判定
  183.    
  184.     return false unless skill_ex_cost_payble(skill)
  185.    
  186.     #全てクリアならtrueを返す
  187.    
  188.     return true
  189.   end
  190.   
  191.   #概念ごと新たに追加された消費系統の可否
  192.   
  193.   def skill_ex_cost_payble(skill)
  194.    
  195.     #アクターの場合のみ、アイテムと所持金のコスト判定を行う
  196.    
  197.     if self.actor?
  198.       
  199.       #アイテムのコスト可否判定
  200.       
  201.       return false unless skill_item_cost_payble(skill)
  202.       
  203.       #所持金のコスト可否判定
  204.       
  205.       return false unless skill_gold_cost_payble(skill)
  206.       
  207.     end
  208.    
  209.     #変数のコスト可否判定
  210.    
  211.     return false unless skill_var_cost_payble(skill)
  212.    
  213.     #HPのコスト可否判定
  214.    
  215.     return false unless skill_hp_cost_payble(skill)
  216.     return true
  217.   end
  218.   
  219.   #HP以外で新たに追加された消費系統の実行
  220.   
  221.   alias pay_skill_cost_extra_cost pay_skill_cost
  222.   def pay_skill_cost(skill)
  223.    
  224.     #元の処理を実行
  225.    
  226.     pay_skill_cost_extra_cost(skill)
  227.    
  228.     #アクターの場合のみ、アイテムと所持金のコスト消費を行う
  229.    
  230.     if self.actor?
  231.       
  232.       #アイテムのコスト処理
  233.       
  234.       pay_item_cost(skill)
  235.       
  236.       #所持金のコスト処理
  237.       
  238.       pay_gold_cost(skill)
  239.     end
  240.    
  241.     #変数のコスト処理
  242.    
  243.     pay_var_cost(skill)
  244.   end
  245.   
  246.   #総合アイテム消費可否
  247.   
  248.   def skill_item_cost_payble(skill)
  249.    
  250.     #アイテムコストが存在しない場合はtrueを返す
  251.    
  252.     return true if skill.item_cost.empty?
  253.    
  254.     #コスト別に判定
  255.    
  256.     skill.item_cost.each do |data|
  257.       case data[0]
  258.       when 0#アイテムの場合
  259.         item = $data_items[data[1]]
  260.       when 1#武器の場合
  261.         item = $data_weapons[data[1]]
  262.       when 2#防具の場合
  263.         item = $data_armors[data[1]]
  264.       end
  265.       
  266.       #指定された消費量より所持数が少ない場合はfalseを返す
  267.       
  268.       return false if $game_party.item_number(item) < data[2]
  269.     end
  270.    
  271.     #trueを返す
  272.    
  273.     return true
  274.   end
  275.   
  276.   #総合アイテム消費
  277.   
  278.   def pay_item_cost(skill)
  279.    
  280.     #アイテムコストが存在しない場合は処理しない
  281.    
  282.     return if skill.item_cost.empty?
  283.    
  284.     #コスト別に処理
  285.    
  286.     skill.item_cost.each do |data|
  287.       case data[0]
  288.       when 0#アイテムの場合
  289.         item = $data_items[data[1]]
  290.       when 1#武器の場合
  291.         item = $data_weapons[data[1]]
  292.       when 2#防具の場合
  293.         item = $data_armors[data[1]]
  294.       end
  295.       
  296.       #アイテム消費処理
  297.       
  298.       $game_party.lose_item(item, data[2])
  299.       
  300.     end
  301.   end
  302.   
  303.   #総合所持金消費可否
  304.   
  305.   def skill_gold_cost_payble(skill)
  306.    
  307.     #所持金が消費量以上か?
  308.    
  309.     $game_party.gold >= skill_gold_cost(skill)
  310.    
  311.   end
  312.   
  313.   #総合所持金消費
  314.   
  315.   def pay_gold_cost(skill)
  316.    
  317.     #所持金の消費処理
  318.    
  319.     $game_party.gain_gold(-skill_gold_cost(skill))
  320.   end
  321.   
  322.   #総合所持金消費量
  323.   
  324.   def skill_gold_cost(skill)
  325.    
  326.     #それぞれの所持金消費量計算をまとめた後、整数化する
  327.    
  328.     (gold_cost_fix(skill) + gold_cost_rate(skill) + gold_cost_eval(skill)).to_i
  329.    
  330.   end
  331.   
  332.   #所持金固定値消費
  333.   
  334.   def gold_cost_fix(skill)
  335.    
  336.     #スキルの所持金固定値消費を返す
  337.    
  338.     skill.gold_cost_fix
  339.    
  340.   end
  341.   
  342.   #所持金消費割合
  343.   
  344.   def gold_cost_rate(skill)
  345.    
  346.     #スキルの所持金消費割合と現在値をかけた後、0.01をかけた数字を返す
  347.    
  348.     skill.gold_cost_rate * $game_party.gold * 0.01
  349.    
  350.   end
  351.   
  352.   #所持金消費式
  353.   
  354.   def gold_cost_eval(skill)
  355.    
  356.     #スキルの所持金消費式を返す
  357.    
  358.     eval(skill.gold_cost_eval)
  359.   end
  360.   
  361.   #全ての消費変数の消費可否
  362.   
  363.   def skill_var_cost_payble(skill)
  364.    
  365.     #設定次第では、判定を無視する
  366.    
  367.     return true if EXTRA_SKILL_COST::V_MIN1
  368.    
  369.     #設定次第では、敵の場合は判定を無視する
  370.    
  371.     return true if !self.actor? && !EXTRA_SKILL_COST::V_MIN2
  372.    
  373.     #変数の固定値消費
  374.    
  375.     #変数の固定値消費が存在しない場合は飛ばす
  376.    
  377.     if !skill.var_cost_fix.empty?
  378.       
  379.       #消費データ別に判定
  380.       
  381.       skill.var_cost_fix.each do |data|
  382.       
  383.         #消費可否判定
  384.       
  385.         return false unless var_cost_fix_payble(data)
  386.         
  387.       end
  388.     end
  389.    
  390.     #変数の割合消費
  391.    
  392.     #変数の割合消費が存在しない場合は飛ばす
  393.    
  394.     if !skill.var_cost_rate.empty?
  395.       
  396.       #消費データ別に判定
  397.       
  398.       skill.var_cost_rate.each do |data|
  399.       
  400.         #消費可否判定
  401.       
  402.         return false unless var_cost_rate_payble(data)
  403.         
  404.       end
  405.     end
  406.    
  407.     #変数の消費式
  408.    
  409.     #変数の消費式が存在しない場合は飛ばす
  410.    
  411.     if !skill.var_cost_eval.empty?
  412.       
  413.       #消費データ別に判定
  414.       
  415.       skill.var_cost_eval.each do |data|
  416.       
  417.         #消費可否判定
  418.       
  419.         return false unless var_cost_eval_payble(data)
  420.         
  421.       end
  422.     end
  423.    
  424.     #全てクリアならtrueを返す
  425.    
  426.     return true
  427.   end
  428.   
  429.   #全ての消費変数の消費実行
  430.   
  431.   def pay_var_cost(skill)
  432.    
  433.     #設定次第では、敵の場合は処理をしない
  434.    
  435.     return if !self.actor? && !EXTRA_SKILL_COST::V_MIN2
  436.    
  437.     #変数の固定値消費
  438.    
  439.     #変数の固定値消費が存在しない場合は飛ばす
  440.    
  441.     if !skill.var_cost_fix.empty?
  442.       
  443.       #消費データ別に処理
  444.       
  445.       skill.var_cost_fix.each do |data|
  446.         
  447.         #消費処理
  448.         
  449.         pay_var_cost_fix(data)
  450.         
  451.       end
  452.     end
  453.    
  454.     #変数の割合消費
  455.    
  456.     #変数の割合消費が存在しない場合は飛ばす
  457.    
  458.     if !skill.var_cost_rate.empty?
  459.       
  460.       #消費データ別に処理
  461.       
  462.       skill.var_cost_rate.each do |data|
  463.         
  464.         #消費処理
  465.         
  466.         pay_var_cost_rate(data)
  467.         
  468.       end
  469.     end
  470.    
  471.     #変数の消費式
  472.    
  473.     #変数の消費式が存在しない場合は飛ばす
  474.    
  475.     if !skill.var_cost_eval.empty?
  476.       
  477.       #消費データ別に処理
  478.       
  479.       skill.var_cost_eval.each do |data|
  480.         
  481.         #消費処理
  482.         
  483.         pay_var_cost_eval(data)
  484.         
  485.       end
  486.     end
  487.   end
  488.   
  489.   #消費固定変数の可否
  490.   
  491.   def var_cost_fix_payble(data)
  492.    
  493.     #変数の値が消費値以上か否か
  494.    
  495.     $game_variables[data[0]] >= data[1]
  496.    
  497.   end
  498.   
  499.   #消費割合変数の可否
  500.   
  501.   def var_cost_rate_payble(data)
  502.    
  503.     #変数の値が消費割合で計算された消費値以上か否か
  504.    
  505.     $game_variables[data[0]] >= ($game_variables[data[0]] * data[1]) * 0.01
  506.    
  507.   end
  508.   
  509.   #消費変数式の可否
  510.   
  511.   def var_cost_eval_payble(data)
  512.    
  513.     #変数の値が消費式で計算された消費値以上か否か
  514.    
  515.     $game_variables[data[0]] >= eval(data[1])
  516.    
  517.   end
  518.   
  519.   #消費固定変数の消費
  520.   
  521.   def pay_var_cost_fix(data)
  522.    
  523.     #変数の固定値消費実行
  524.    
  525.     $game_variables[data[0]] -= data[1]
  526.    
  527.   end
  528.   
  529.   #消費割合変数の消費
  530.   
  531.   def pay_var_cost_rate(data)
  532.    
  533.     #変数の割合消費実行
  534.    
  535.     $game_variables[data[0]] -= (($game_variables[data[0]] * data[1]) * 0.01).to_i
  536.    
  537.   end
  538.   
  539.   #消費変数式の消費
  540.   
  541.   def pay_var_cost_eval(data)
  542.    
  543.     #変数の消費式実行
  544.    
  545.     $game_variables[data[0]] -= eval(data[1])
  546.    
  547.   end
  548.   
  549.   #総合消費HPの可否
  550.   
  551.   def skill_hp_cost_payble(skill)
  552.    
  553.     #スキルによる自滅が認められていない場合は現在HPが消費HP以上か否か。
  554.     #認められている場合はtrueを返す
  555.    
  556.     !skill.suicidable? ? self.hp > skill_hp_cost(skill) : true
  557.    
  558.   end
  559.   
  560.   #総合消費HP
  561.   
  562.   def skill_hp_cost(skill)
  563.    
  564.     #それぞれのHP消費をまとめた後、整数化する
  565.    
  566.     ((hp_cost_fix(skill) + hp_cost_rate(skill) + hp_cost_mrate(skill) + hp_cost_eval(skill)) * special_ex_hcr(skill)).to_i
  567.    
  568.   end
  569.   
  570.   #消費固定HP
  571.   
  572.   def hp_cost_fix(skill)
  573.    
  574.     #スキルの消費固定HPを返す
  575.    
  576.     skill.hp_cost_fix
  577.    
  578.   end
  579.   
  580.   #消費HP割合(現在値)
  581.   
  582.   def hp_cost_rate(skill)
  583.    
  584.     #スキルの消費HP割合と現在値をかけた後、0.01をかけた数字を返す
  585.    
  586.     skill.hp_cost_rate * self.hp * 0.01
  587.    
  588.   end
  589.   
  590.   #消費HP割合(最大値)
  591.   
  592.   def hp_cost_mrate(skill)
  593.    
  594.     #スキルの消費最大HP割合と最大値をかけた後、0.01をかけた数字を返す
  595.    
  596.     skill.hp_cost_mrate * self.mhp * 0.01
  597.   end
  598.   
  599.   #消費HP式
  600.   
  601.   def hp_cost_eval(skill)
  602.    
  603.     #スキルの消費HP割合式を返す
  604.    
  605.     eval(skill.hp_cost_eval)
  606.   end
  607.   
  608.   #消費HP軽減割合
  609.   
  610.   def special_ex_hcr(skill)
  611.    
  612.     #消費HP軽減特徴が無効の場合は消費HP軽減特徴の効果を反映させる
  613.    
  614.     return [(100.0 - ex_hcr)/100, 0].max unless skill.ex_hcr_zero?
  615.    
  616.     #消費HP軽減特徴が有効の場合は1.0を返す
  617.    
  618.     return 1.0
  619.   end
  620.   
  621.   #MP消費計算を別名定義で変更し、総合消費MPを計算
  622.   
  623.   alias skill_mp_cost_extra_cost skill_mp_cost
  624.   def skill_mp_cost(skill)
  625.    
  626.     #元のデータを取得する
  627.    
  628.     data = skill_mp_cost_extra_cost(skill)
  629.    
  630.     #元のデータに新規処理の総和を足す
  631.    
  632.     data += (mp_cost_fix(skill) + mp_cost_rate(skill) + mp_cost_mrate(skill) + mp_cost_eval(skill)) * special_mcr(skill)
  633.    
  634.     #整数化して返す
  635.    
  636.     return data.to_i
  637.   end
  638.   
  639.   #消費固定MP
  640.   
  641.   def mp_cost_fix(skill)
  642.    
  643.     #スキルの消費固定MPを返す
  644.    
  645.     skill.mp_cost_fix
  646.    
  647.   end
  648.   
  649.   #消費MP割合(現在値)
  650.   
  651.   def mp_cost_rate(skill)
  652.    
  653.     #スキルの消費MP割合と現在値をかけた後、0.01をかけた数字を返す
  654.    
  655.     skill.mp_cost_rate * self.mp * 0.01
  656.    
  657.   end
  658.   
  659.   #消費MP割合(最大値)
  660.   
  661.   def mp_cost_mrate(skill)
  662.    
  663.     #スキルの消費最大MP割合と最大値をかけた後、0.01をかけた数字を返す
  664.    
  665.     skill.mp_cost_mrate * self.mmp * 0.01
  666.    
  667.   end
  668.   
  669.   #消費MP式
  670.   
  671.   def mp_cost_eval(skill)
  672.    
  673.     #スキルの消費MP割合式を返す
  674.    
  675.     eval(skill.mp_cost_eval)
  676.    
  677.   end
  678.   
  679.   #消費MP軽減割合
  680.   
  681.   def special_mcr(skill)
  682.    
  683.     #消費MP軽減特徴が無効の場合は消費MP軽減特徴の効果を反映させる
  684.    
  685.     return mcr unless skill.mcr_zero?
  686.    
  687.     #消費MP軽減特徴が有効の場合は1.0を返す
  688.    
  689.     return 1.0
  690.    
  691.   end
  692.   
  693.   #TP消費計算を別名定義で変更し、総合消費TPを計算
  694.   
  695.   alias skill_tp_cost_extra_cost skill_tp_cost
  696.   def skill_tp_cost(skill)
  697.    
  698.     #元のデータを取得する
  699.    
  700.     data = skill_tp_cost_extra_cost(skill)
  701.    
  702.     #元のデータに新規処理の総和を足す
  703.    
  704.     data += tp_cost_fix(skill) + tp_cost_rate(skill) + tp_cost_mrate(skill) + tp_cost_eval(skill)
  705.    
  706.     #軽減特徴を適用
  707.    
  708.     data *= special_ex_tcr(skill)
  709.    
  710.     #整数化して返す
  711.    
  712.     return data.to_i
  713.   end
  714.   
  715.   #消費固定TP
  716.   
  717.   def tp_cost_fix(skill)
  718.    
  719.     #スキルの消費固定TPを返す
  720.    
  721.     skill.tp_cost_fix
  722.    
  723.   end
  724.   
  725.   #消費TP割合(現在値)
  726.   
  727.   def tp_cost_rate(skill)
  728.    
  729.     #スキルの消費TP割合と現在値をかけた後、0.01をかけた数字を返す
  730.    
  731.     skill.tp_cost_rate * self.tp * 0.01
  732.   end
  733.   
  734.   #消費TP割合(最大値)
  735.   
  736.   def tp_cost_mrate(skill)
  737.    
  738.     #スキルの消費最大TP割合と最大値をかけた後、0.01をかけた数字を返す
  739.    
  740.     skill.tp_cost_mrate * self.max_tp * 0.01
  741.   end
  742.   
  743.   #消費TP式
  744.   
  745.   def tp_cost_eval(skill)
  746.    
  747.     #スキルの消費TP割合式を返す
  748.    
  749.     eval(skill.tp_cost_eval)
  750.   end
  751.   
  752.   #消費TP軽減割合
  753.   
  754.   def special_ex_tcr(skill)
  755.    
  756.     #消費TP軽減特徴が無効の場合は消費MP軽減特徴の効果を反映させる
  757.    
  758.     return [(100.0 - ex_tcr)/100, 0].max unless skill.ex_tcr_zero?
  759.    
  760.     #消費TP軽減特徴が有効の場合は1.0を返す
  761.    
  762.     return 1.0
  763.   end
  764.   
  765.   #消費HP軽減割合の取得
  766.   
  767.   def ex_hcr
  768.    
  769.     #とりあえず0にする
  770.    
  771.     data = 0
  772.    
  773.     #特徴別に処理
  774.    
  775.     feature_objects.each do |f|
  776.    
  777.       #消費HP軽減割合を加算
  778.    
  779.       data += f.ex_hcr
  780.     end
  781.    
  782.     #データを返す
  783.    
  784.     return data
  785.   end
  786.   
  787.   #消費TP軽減割合の取得
  788.   
  789.   def ex_tcr
  790.    
  791.     #とりあえず0にする
  792.    
  793.     data = 0
  794.    
  795.     #特徴別に処理
  796.    
  797.     feature_objects.each do |f|
  798.    
  799.       #消費TP軽減割合を加算
  800.    
  801.       data += f.ex_tcr
  802.     end
  803.    
  804.     #データを返す
  805.    
  806.     return data
  807.   end
  808. end
  809. class Scene_Skill < Scene_ItemBase
  810.   
  811.   #スキル使用時のアクターへの効果のタイミングで
  812.   #HP消費の効果を反映させる。
  813.   
  814.   alias use_item_to_actors_extra_cost use_item_to_actors
  815.   def use_item_to_actors
  816.    
  817.     #使用者とスキルを取得。
  818.    
  819.     target = user
  820.     item = target.last_skill.object
  821.    
  822.     #本来の処理を実行。
  823.    
  824.     use_item_to_actors_extra_cost
  825.    
  826.     #スキルではない場合は処理を飛ばす。
  827.    
  828.     return unless item.is_a?(RPG::Skill)
  829.    
  830.     #スキル使用による戦闘不能が認められていて
  831.     #なおかつ使用者が生存している場合はHP消費を反映。
  832.     #認められていない場合は、HPの最低値を1としてHP消費を反映。
  833.     if target.alive? && target.hp > 0
  834.       if item.suicidable?
  835.         target.hp -= target.skill_hp_cost(item)
  836.       else
  837.         target.hp = [target.hp - target.skill_hp_cost(item), 1].max
  838.       end
  839.     end
  840.   end
  841. end
  842. class Scene_Battle < Scene_Base
  843.   
  844.   #スキル使用後のタイミングで
  845.   #HP消費の効果を反映させる。
  846.   
  847.   alias use_item_extra_cost use_item
  848.   def use_item
  849.    
  850.     #使用者とスキルを取得。
  851.    
  852.     target = @subject
  853.     item = target.current_action.item
  854.    
  855.     #本来の処理を実行。
  856.    
  857.     use_item_extra_cost
  858.    
  859.     #スキルではない場合は処理を飛ばす。
  860.    
  861.     return unless item.is_a?(RPG::Skill)
  862.    
  863.     #スキル使用による戦闘不能が認められていて
  864.     #なおかつ使用者が生存している場合はHP消費を反映。
  865.     #認められていない場合は、HPの最低値を1としてHP消費を反映。
  866.     if target.alive? && target.hp > 0
  867.       if item.suicidable?
  868.         
  869.         target.hp -= target.skill_hp_cost(item)
  870.         
  871.         #HP消費によって戦闘不能となった場合
  872.         #ログウィンドウにその旨を出力する。
  873.         
  874.         if !target.alive?
  875.           state = $data_states[1]
  876.           state_msg = target.actor? ? state.message1 : state.message2
  877.           target.perform_collapse_effect
  878.           @log_window.replace_text(target.name + state_msg)
  879.           @log_window.wait
  880.           @log_window.wait_for_effect
  881.         end
  882.       else
  883.         target.hp = [target.hp - target.skill_hp_cost(item), 1].max
  884.       end
  885.     end
  886.   end
  887. end
  888. class Window_Base < Window
  889.   
  890.   #新たな制御文字として\ALPHACを加える。
  891.   #\ALPHACは、文字色変更時に透過度を保持する。
  892.   
  893.   alias process_escape_character_extra_cost process_escape_character
  894.   def process_escape_character(code, text, pos)
  895.     if code.upcase == 'C'
  896.       alpha = contents.font.color.alpha
  897.       change_color(text_color(obtain_escape_param(text)))
  898.       contents.font.color.alpha = alpha
  899.       return
  900.     end
  901.     process_escape_character_extra_cost(code, text, pos)
  902.   end
  903.   
  904.   #コスト表示用に、制御文字付きの描写方法を新たに定義する。
  905.   #通常の制御文字付き文章描画と異なり、文体のリセットを行わない。
  906.   
  907.   def draw_text_ex_cost(x, y, text)
  908.     text = convert_escape_characters(text)
  909.     pos = {:x => x, :y => y, :new_x => x, :height => calc_line_height(text)}
  910.     process_character(text.slice!(0, 1), text, pos) until text.empty?
  911.   end
  912. end
  913. class Window_SkillList < Window_Selectable
  914.   
  915.   #桁数の変更
  916.   
  917.   alias col_max_extra_cost col_max
  918.   def col_max
  919.     data = col_max_extra_cost
  920.     data = EXTRA_SKILL_COST::COLMAX if data != EXTRA_SKILL_COST::COLMAX
  921.     return data
  922.   end
  923.   
  924.   #スキルコストの記述方法を変更。
  925.   
  926.   alias draw_skill_cost_extra_cost draw_skill_cost
  927.   def draw_skill_cost(rect, skill)
  928.       
  929.     #表示形式が0の場合は本来の処理を実行
  930.       
  931.     return draw_skill_cost_extra_cost(rect, skill) if EXTRA_SKILL_COST::COST_D == 0
  932.       
  933.     #HP/MP/TP消費量を取得。
  934.       
  935.     flag = [@actor.skill_hp_cost(skill),@actor.skill_mp_cost(skill),@actor.skill_tp_cost(skill)]
  936.       
  937.     #スキルの使用可否に応じて記述内容の透過度を設定する。
  938.       
  939.     contents.font.color.alpha = enable?(skill) ? 255 : translucent_alpha
  940.       
  941.     #文字列の長さを取得する為、二つの文字列データを作成する。
  942.    
  943.     text = ""
  944.    
  945.     sub_text = ""
  946.    
  947.     #HP
  948.    
  949.     if EXTRA_SKILL_COST::HP_D && (EXTRA_SKILL_COST::COST_D > 1 or flag[0] > 0)
  950.       t = EXTRA_SKILL_COST::CTITLE ? Vocab::basic(3) : ""
  951.       if EXTRA_SKILL_COST::COST_D > 1 && flag[0].to_s.length != EXTRA_SKILL_COST::COST_D
  952.         number = EXTRA_SKILL_COST::COST_D - flag[0].to_s.length
  953.         number.times do
  954.           t+= " "
  955.         end
  956.       end
  957.       t += flag[0].to_s
  958.       sub_text += t
  959.       text += hp_cost_color_text + t
  960.     end
  961.    
  962.     #MP
  963.    
  964.     if EXTRA_SKILL_COST::MP_D && (EXTRA_SKILL_COST::COST_D > 1 or flag[1] > 0)
  965.       if text != ""
  966.         text += "\\ALPHAC[0]/"
  967.         sub_text += "/"
  968.       end
  969.       t = EXTRA_SKILL_COST::CTITLE ? Vocab::basic(5) : ""
  970.       if EXTRA_SKILL_COST::COST_D > 1 && flag[1].to_s.length != EXTRA_SKILL_COST::COST_D
  971.         number = EXTRA_SKILL_COST::COST_D - flag[1].to_s.length
  972.         number.times do
  973.           t+= " "
  974.         end
  975.       end
  976.       t += flag[1].to_s
  977.       sub_text += t
  978.       text += mp_cost_color_text + t
  979.     end
  980.    
  981.     #TP
  982.    
  983.     if EXTRA_SKILL_COST::TP_D && (EXTRA_SKILL_COST::COST_D > 1 or flag[2] > 0)
  984.       if text != ""
  985.         text += "\\ALPHAC[0]/"
  986.         sub_text += "/"
  987.       end
  988.       t = EXTRA_SKILL_COST::CTITLE ? Vocab::basic(7) : ""
  989.       if EXTRA_SKILL_COST::COST_D > 1 && flag[2].to_s.length != EXTRA_SKILL_COST::COST_D
  990.         number = EXTRA_SKILL_COST::COST_D - flag[2].to_s.length
  991.         number.times do
  992.           t+= " "
  993.         end
  994.       end
  995.       t += flag[2].to_s
  996.       sub_text += t
  997.       text += tp_cost_color_text + t
  998.     end
  999.    
  1000.     #文字列の長さを取得し、描写を実行する。
  1001.    
  1002.     sub_x = text_size(sub_text).width
  1003.     x = rect.x + rect.width - sub_x + EXTRA_SKILL_COST::COS_OX
  1004.     y = rect.y
  1005.     draw_text_ex_cost(x, y, text)
  1006.    
  1007.   end
  1008.   
  1009.   #消費HP記述用のキャッシュを生成。
  1010.   
  1011.   def hp_cost_color_text
  1012.     return @hp_cost_color_set if @hp_cost_color_set != nil
  1013.     @hp_cost_color_set = "\\ALPHAC[" + EXTRA_SKILL_COST::HPCC.to_s + "]"
  1014.     return @hp_cost_color_set
  1015.   end
  1016.   
  1017.   #消費MP記述用のキャッシュを生成。
  1018.   
  1019.   def mp_cost_color_text
  1020.     return @mp_cost_color_set if @mp_cost_color_set != nil
  1021.     @mp_cost_color_set = "\\ALPHAC[" + EXTRA_SKILL_COST::MPCC.to_s + "]"
  1022.     return @mp_cost_color_set
  1023.   end
  1024.   
  1025.   #消費TP記述用のキャッシュを生成。
  1026.   
  1027.   def tp_cost_color_text
  1028.     return @tp_cost_color_set if @tp_cost_color_set != nil
  1029.     @tp_cost_color_set = "\\ALPHAC[" + EXTRA_SKILL_COST::TPCC.to_s + "]"
  1030.     return @tp_cost_color_set
  1031.   end
  1032.   
  1033. end
  1034. class RPG::BaseItem
  1035.   
  1036.   #消費HP軽減特徴。
  1037.   
  1038.   def ex_hcr
  1039.    
  1040.     #キャッシュがある場合はキャッシュを返す。
  1041.    
  1042.     return @feature_ex_hcr if @feature_ex_hcr != nil
  1043.    
  1044.     #メモ欄からデータを取得。
  1045.    
  1046.     memo = self.note.scan(/<#{EXTRA_SKILL_COST::WORD7A}[::](\S+)>/).flatten
  1047.    
  1048.     #データを取得出来無かった場合は0に設定する。
  1049.    
  1050.     @feature_ex_hcr = (memo != nil && !memo.empty?) ? memo[0].to_i : 0
  1051.    
  1052.     #データを返す。
  1053.    
  1054.     return @feature_ex_hcr
  1055.   end
  1056.   
  1057.   #消費TP軽減特徴。
  1058.   
  1059.   def ex_tcr
  1060.    
  1061.     #キャッシュがある場合はキャッシュを返す。
  1062.    
  1063.     return @feature_ex_tcr if @feature_ex_tcr != nil
  1064.    
  1065.     #メモ欄からデータを取得。
  1066.    
  1067.     memo = self.note.scan(/<#{EXTRA_SKILL_COST::WORD9A}[::](\S+)>/).flatten
  1068.    
  1069.     #データを取得出来無かった場合は0に設定する。
  1070.    
  1071.     @feature_ex_tcr = (memo != nil && !memo.empty?) ? memo[0].to_i : 0
  1072.    
  1073.     #データを返す。
  1074.    
  1075.     return @feature_ex_tcr
  1076.   end
  1077. end
  1078. class RPG::Skill < RPG::UsableItem
  1079.   
  1080.   #消費HP軽減無効。
  1081.   
  1082.   def ex_hcr_zero?
  1083.    
  1084.     #キャッシュがある場合はキャッシュを返す。
  1085.    
  1086.     return @ex_hcr_zero if @ex_hcr_zero != nil
  1087.    
  1088.     #メモ欄からデータを取得。
  1089.    
  1090.     @ex_hcr_zero = self.note.include?(EXTRA_SKILL_COST::WORD7B)
  1091.    
  1092.     #データを返す。
  1093.    
  1094.     return @ex_hcr_zero
  1095.   end
  1096.   
  1097.   #消費MP軽減無効。
  1098.   
  1099.   def mcr_zero?
  1100.    
  1101.     #キャッシュがある場合はキャッシュを返す。
  1102.    
  1103.     return @mcr_zero if @mcr_zero != nil
  1104.    
  1105.     #メモ欄からデータを取得。
  1106.    
  1107.     @mcr_zero = self.note.include?(EXTRA_SKILL_COST::WORD8)
  1108.    
  1109.     #データを返す。
  1110.    
  1111.     return @mcr_zero
  1112.   end
  1113.   
  1114.   #消費TP軽減無効。
  1115.   
  1116.   def ex_tcr_zero?
  1117.    
  1118.     #キャッシュがある場合はキャッシュを返す。
  1119.    
  1120.     return @ex_tcr_zero if @ex_tcr_zero != nil
  1121.    
  1122.     #メモ欄からデータを取得。
  1123.    
  1124.     @ex_tcr_zero = self.note.include?(EXTRA_SKILL_COST::WORD9B)
  1125.    
  1126.     #データを返す。
  1127.    
  1128.     return @ex_tcr_zero
  1129.   end
  1130.   def item_cost
  1131.    
  1132.     #キャッシュがある場合はキャッシュを返す。
  1133.    
  1134.     return @item_cost if @item_cost != nil
  1135.    
  1136.     @item_cost = []
  1137.    
  1138.     #メモ欄からデータを取得。
  1139.    
  1140.     self.note.each_line do |l|
  1141.    
  1142.       memo = l.scan(/<#{EXTRA_SKILL_COST::WORD1A}[::](\S+)>/).flatten
  1143.       
  1144.       #データを取得出来無かった場合は飛ばす。
  1145.       
  1146.       if memo != nil && !memo.empty?
  1147.         
  1148.         memo = memo[0].split(/\s*,\s*/)
  1149.       
  1150.         @item_cost.push([0, memo[0].to_i, memo[1] ? memo[1].to_i : 1])
  1151.       
  1152.       end
  1153.       
  1154.       memo = l.scan(/<#{EXTRA_SKILL_COST::WORD1B}[::](\S+)>/).flatten
  1155.       
  1156.       #データを取得出来無かった場合は飛ばす。
  1157.         
  1158.       if memo != nil && !memo.empty?
  1159.         
  1160.         memo = memo[0].split(/\s*,\s*/)
  1161.       
  1162.         @item_cost.push([1, memo[0].to_i, memo[1] ? memo[1].to_i : 1])
  1163.       
  1164.       end
  1165.    
  1166.       memo = l.scan(/<#{EXTRA_SKILL_COST::WORD1C}[::](\S+)>/).flatten
  1167.       
  1168.       #データを取得出来無かった場合は飛ばす。
  1169.         
  1170.       if memo != nil && !memo.empty?
  1171.         
  1172.         memo = memo[0].split(/\s*,\s*/)
  1173.       
  1174.         @item_cost.push([2, memo[0].to_i, memo[1] ? memo[1].to_i : 1])
  1175.       
  1176.       end   
  1177.     end
  1178.    
  1179.     #データを返す。
  1180.    
  1181.     return @item_cost
  1182.   end
  1183.   def gold_cost_fix
  1184.    
  1185.     #キャッシュがある場合はキャッシュを返す。
  1186.    
  1187.     return @gold_cost_fix if @gold_cost_fix != nil
  1188.    
  1189.     #メモ欄からデータを取得。
  1190.    
  1191.     memo = self.note.scan(/<#{EXTRA_SKILL_COST::WORD2A}[::](\S+)>/).flatten
  1192.    
  1193.     #データを取得出来無かった場合は0に設定する。
  1194.    
  1195.     @gold_cost_fix = (memo != nil && !memo.empty?) ? memo[0].to_i : 0
  1196.    
  1197.     #データを返す。
  1198.    
  1199.     return @gold_cost_fix
  1200.   end
  1201.   def gold_cost_rate
  1202.    
  1203.     #キャッシュがある場合はキャッシュを返す。
  1204.    
  1205.     return @gold_cost_rate if @gold_cost_rate != nil
  1206.    
  1207.     #メモ欄からデータを取得。
  1208.    
  1209.     memo = self.note.scan(/<#{EXTRA_SKILL_COST::WORD2B}[::](\S+)>/).flatten
  1210.    
  1211.     #データを取得出来無かった場合は0に設定する。
  1212.    
  1213.     @gold_cost_rate = (memo != nil && !memo.empty?) ? memo[0].to_i : 0
  1214.    
  1215.     #データを返す。
  1216.    
  1217.     return @gold_cost_rate
  1218.   end
  1219.   def gold_cost_eval
  1220.    
  1221.     #キャッシュがある場合はキャッシュを返す。
  1222.    
  1223.     return @gold_cost_eval if @gold_cost_eval != nil
  1224.    
  1225.     #メモ欄からデータを取得。
  1226.    
  1227.     memo = self.note.scan(/<#{EXTRA_SKILL_COST::WORD2C}[::](\S+)>/).flatten
  1228.    
  1229.     #データを取得出来無かった場合は0に設定する。
  1230.    
  1231.     @gold_cost_eval = (memo != nil && !memo.empty?) ? memo[0].to_s : "0"
  1232.    
  1233.     #データを返す。
  1234.    
  1235.     return @gold_cost_eval
  1236.   end
  1237.   def var_cost_fix
  1238.    
  1239.     #キャッシュがある場合はキャッシュを返す。
  1240.    
  1241.     return @var_cost_fix if @var_cost_fix != nil
  1242.    
  1243.     #配列を作成。
  1244.    
  1245.     @var_cost_fix = []
  1246.    
  1247.     #メモ欄からデータを取得。
  1248.    
  1249.     self.note.each_line do |l|
  1250.    
  1251.       memo = l.scan(/<#{EXTRA_SKILL_COST::WORD3A}[::](\S+)>/).flatten
  1252.       
  1253.       #データを取得出来無かった場合は飛ばす。
  1254.       
  1255.       if memo != nil && !memo.empty?
  1256.       
  1257.         memo = memo[0].split(/\s*,\s*/)
  1258.         
  1259.         @var_cost_fix.push([memo[0].to_i, memo[1].to_i])
  1260.         
  1261.       end
  1262.       
  1263.     end
  1264.    
  1265.     #データを返す。
  1266.    
  1267.     return @var_cost_fix
  1268.   end
  1269.   def var_cost_rate
  1270.    
  1271.     #キャッシュがある場合はキャッシュを返す。
  1272.    
  1273.     return @var_cost_rate if @var_cost_rate != nil
  1274.    
  1275.     #配列を作成。
  1276.    
  1277.     @var_cost_rate = []
  1278.    
  1279.     #メモ欄からデータを取得。
  1280.    
  1281.     self.note.each_line do |l|
  1282.    
  1283.       memo = l.scan(/<#{EXTRA_SKILL_COST::WORD3B}[::](\S+)>/).flatten
  1284.       
  1285.       #データを取得出来無かった場合は飛ばす。
  1286.       
  1287.       if memo != nil && !memo.empty?
  1288.       
  1289.         memo = memo[0].split(/\s*,\s*/)
  1290.         
  1291.         @var_cost_rate.push([memo[0].to_i, memo[1].to_i])
  1292.         
  1293.       end
  1294.       
  1295.     end
  1296.    
  1297.     #データを返す。
  1298.    
  1299.     return @var_cost_rate
  1300.   end
  1301.   def var_cost_eval
  1302.    
  1303.     #キャッシュがある場合はキャッシュを返す。
  1304.    
  1305.     return @var_cost_eval if @var_cost_eval != nil
  1306.    
  1307.     #配列を作成。
  1308.    
  1309.     @var_cost_eval = []
  1310.    
  1311.     #メモ欄からデータを取得。
  1312.    
  1313.     self.note.each_line do |l|
  1314.    
  1315.       memo = l.scan(/<#{EXTRA_SKILL_COST::WORD3C}[::](\S+)>/).flatten
  1316.       
  1317.       #データを取得出来無かった場合は飛ばす。
  1318.       
  1319.       if memo != nil && !memo.empty?
  1320.       
  1321.         memo = memo[0].split(/\s*,\s*/)
  1322.         
  1323.         @var_cost_eval.push([memo[0].to_i, memo[1].to_s])
  1324.         
  1325.       end
  1326.       
  1327.     end
  1328.    
  1329.     #データを返す。
  1330.    
  1331.     return @var_cost_eval
  1332.   end
  1333.   def hp_cost_fix
  1334.    
  1335.     #キャッシュがある場合はキャッシュを返す。
  1336.    
  1337.     return @hp_cost_fix if @hp_cost_fix != nil
  1338.    
  1339.     #メモ欄からデータを取得。
  1340.    
  1341.     memo = self.note.scan(/<#{EXTRA_SKILL_COST::WORD4A}[::](\S+)>/).flatten
  1342.    
  1343.     #データを取得出来無かった場合は0に設定する。
  1344.    
  1345.     @hp_cost_fix = (memo != nil && !memo.empty?) ? memo[0].to_i : 0
  1346.    
  1347.     #データを返す。
  1348.    
  1349.     return @hp_cost_fix
  1350.   end
  1351.   def hp_cost_rate
  1352.    
  1353.     #キャッシュがある場合はキャッシュを返す。
  1354.    
  1355.     return @hp_cost_rate if @hp_cost_rate != nil
  1356.    
  1357.     #メモ欄からデータを取得。
  1358.    
  1359.     memo = self.note.scan(/<#{EXTRA_SKILL_COST::WORD4B}[::](\S+)>/).flatten
  1360.    
  1361.     #データを取得出来無かった場合は0に設定する。
  1362.    
  1363.     @hp_cost_rate = (memo != nil && !memo.empty?) ? memo[0].to_i : 0
  1364.    
  1365.     #データを返す。
  1366.    
  1367.     return @hp_cost_rate
  1368.   end
  1369.   def hp_cost_mrate
  1370.    
  1371.     #キャッシュがある場合はキャッシュを返す。
  1372.    
  1373.     return @hp_cost_mrate if @hp_cost_mrate != nil
  1374.    
  1375.     #メモ欄からデータを取得。
  1376.    
  1377.     memo = self.note.scan(/<#{EXTRA_SKILL_COST::WORD4C}[::](\S+)>/).flatten
  1378.    
  1379.     #データを取得出来無かった場合は0に設定する。
  1380.    
  1381.     @hp_cost_mrate = (memo != nil && !memo.empty?) ? memo[0].to_i : 0
  1382.    
  1383.     #データを返す。
  1384.    
  1385.     return @hp_cost_mrate
  1386.   end
  1387.   def hp_cost_eval
  1388.    
  1389.     #キャッシュがある場合はキャッシュを返す。
  1390.    
  1391.     return @hp_cost_eval if @hp_cost_eval != nil
  1392.    
  1393.     #メモ欄からデータを取得。
  1394.    
  1395.     memo = self.note.scan(/<#{EXTRA_SKILL_COST::WORD4D}[::](\S+)>/).flatten
  1396.    
  1397.     #データを取得出来無かった場合は0に設定する。
  1398.    
  1399.     @hp_cost_eval = (memo != nil && !memo.empty?) ? memo[0].to_s : "0"
  1400.    
  1401.     #データを返す。
  1402.    
  1403.     return @hp_cost_eval
  1404.   end
  1405.   def mp_cost_fix
  1406.    
  1407.     #キャッシュがある場合はキャッシュを返す。
  1408.    
  1409.     return @mp_cost_fix if @mp_cost_fix != nil
  1410.    
  1411.     #メモ欄からデータを取得。
  1412.    
  1413.     memo = self.note.scan(/<#{EXTRA_SKILL_COST::WORD5A}[::](\S+)>/).flatten
  1414.    
  1415.     #データを取得出来無かった場合は0に設定する。
  1416.    
  1417.     @mp_cost_fix = (memo != nil && !memo.empty?) ? memo[0].to_i : 0
  1418.    
  1419.     #データを返す。
  1420.    
  1421.     return @mp_cost_fix
  1422.   end
  1423.   def mp_cost_rate
  1424.    
  1425.     #キャッシュがある場合はキャッシュを返す。
  1426.    
  1427.     return @mp_cost_rate if @mp_cost_rate != nil
  1428.    
  1429.     #メモ欄からデータを取得。
  1430.    
  1431.     memo = self.note.scan(/<#{EXTRA_SKILL_COST::WORD5B}[::](\S+)>/).flatten
  1432.    
  1433.     #データを取得出来無かった場合は0に設定する。
  1434.    
  1435.     @mp_cost_rate = (memo != nil && !memo.empty?) ? memo[0].to_i : 0
  1436.    
  1437.     #データを返す。
  1438.    
  1439.     return @mp_cost_rate
  1440.   end
  1441.   def mp_cost_mrate
  1442.    
  1443.     #キャッシュがある場合はキャッシュを返す。
  1444.    
  1445.     return @mp_cost_mrate if @mp_cost_mrate != nil
  1446.    
  1447.     #メモ欄からデータを取得。
  1448.    
  1449.     memo = self.note.scan(/<#{EXTRA_SKILL_COST::WORD5C}[::](\S+)>/).flatten
  1450.    
  1451.     #データを取得出来無かった場合は0に設定する。
  1452.    
  1453.     @mp_cost_mrate = (memo != nil && !memo.empty?) ? memo[0].to_i : 0
  1454.    
  1455.     #データを返す。
  1456.    
  1457.     return @mp_cost_mrate
  1458.   end
  1459.   def mp_cost_eval
  1460.    
  1461.     #キャッシュがある場合はキャッシュを返す。
  1462.    
  1463.     return @mp_cost_eval if @mp_cost_eval != nil
  1464.    
  1465.     #メモ欄からデータを取得。
  1466.    
  1467.     memo = self.note.scan(/<#{EXTRA_SKILL_COST::WORD5D}[::](\S+)>/).flatten
  1468.    
  1469.     #データを取得出来無かった場合は0に設定する。
  1470.    
  1471.     @mp_cost_eval = (memo != nil && !memo.empty?) ? memo[0].to_s : "0"
  1472.    
  1473.     #データを返す。
  1474.    
  1475.     return @mp_cost_eval
  1476.   end
  1477.   def tp_cost_fix
  1478.    
  1479.     #キャッシュがある場合はキャッシュを返す。
  1480.    
  1481.     return @tp_cost_fix if @tp_cost_fix != nil
  1482.    
  1483.     #メモ欄からデータを取得。
  1484.    
  1485.     memo = self.note.scan(/<#{EXTRA_SKILL_COST::WORD6A}[::](\S+)>/).flatten
  1486.    
  1487.     #データを取得出来無かった場合は0に設定する。
  1488.    
  1489.     @tp_cost_fix = (memo != nil && !memo.empty?) ? memo[0].to_i : 0
  1490.    
  1491.     #データを返す。
  1492.    
  1493.     return @tp_cost_fix
  1494.   end
  1495.   def tp_cost_rate
  1496.    
  1497.     #キャッシュがある場合はキャッシュを返す。
  1498.    
  1499.     return @tp_cost_rate if @tp_cost_rate != nil
  1500.    
  1501.     #メモ欄からデータを取得。
  1502.    
  1503.     memo = self.note.scan(/<#{EXTRA_SKILL_COST::WORD6B}[::](\S+)>/).flatten
  1504.    
  1505.     #データを取得出来無かった場合は0に設定する。
  1506.    
  1507.     @tp_cost_rate = (memo != nil && !memo.empty?) ? memo[0].to_i : 0
  1508.    
  1509.     #データを返す。
  1510.    
  1511.     return @tp_cost_rate
  1512.   end
  1513.   def tp_cost_mrate
  1514.    
  1515.     #キャッシュがある場合はキャッシュを返す。
  1516.    
  1517.     return @tp_cost_mrate if @tp_cost_mrate != nil
  1518.    
  1519.     #メモ欄からデータを取得。
  1520.    
  1521.     memo = self.note.scan(/<#{EXTRA_SKILL_COST::WORD6C}[::](\S+)>/).flatten
  1522.    
  1523.     #データを取得出来無かった場合は0に設定する。
  1524.    
  1525.     @tp_cost_mrate = (memo != nil && !memo.empty?) ? memo[0].to_i : 0
  1526.    
  1527.     #データを返す。
  1528.    
  1529.     return @tp_cost_mrate
  1530.   end
  1531.   def tp_cost_eval
  1532.    
  1533.     #キャッシュがある場合はキャッシュを返す。
  1534.    
  1535.     return @tp_cost_eval if @tp_cost_eval != nil
  1536.    
  1537.     #メモ欄からデータを取得。
  1538.    
  1539.     memo = self.note.scan(/<#{EXTRA_SKILL_COST::WORD6D}[::](\S+)>/).flatten
  1540.    
  1541.     #データを取得出来無かった場合は0に設定する。
  1542.    
  1543.     @tp_cost_eval = (memo != nil && !memo.empty?) ? memo[0].to_s : "0"
  1544.    
  1545.     #データを返す。
  1546.    
  1547.     return @tp_cost_eval
  1548.   end
  1549.   def suicidable?
  1550.    
  1551.     #キャッシュがある場合はキャッシュを返す。
  1552.    
  1553.     return @suicidable if @suicidable != nil
  1554.    
  1555.     #メモ欄からデータを取得。
  1556.    
  1557.     @suicidable = self.note.include?(EXTRA_SKILL_COST::WORD10)
  1558.    
  1559.     #データを返す。
  1560.    
  1561.     return @suicidable
  1562.   end
  1563. end
复制代码
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1422
在线时间
245 小时
注册时间
2019-1-18
帖子
190
9
 楼主| 发表于 2019-3-24 14:46:24 | 只看该作者
百里_飞柳 发表于 2019-3-24 12:41
大概你加了什么技能消耗的扩展,然后里面有定义绘制前加的转义符,于是你自己加了\c的转义符来修改颜色?
...

还有这个
  1. module IS_USABLE
  2.   
  3.   #使用条件用ワード
  4.   
  5.   WORD_BASE = "使用条件"
  6.   
  7.   #アクター専用条件化
  8.   
  9.   WORD_ACTOR = "アクター用"
  10.   
  11.   #エネミー専用条件化
  12.   
  13.   WORD_ENEMY = "エネミー用"
  14.   
  15.   #条件の判別を味方全体化
  16.   
  17.   WORD_F_ALL = "*味全*"
  18.   
  19.   #条件の判別を敵全体化
  20.   
  21.   WORD_O_ALL = "*敵全*"
  22.   
  23.   #条件の判別を敵・味方全体化
  24.   
  25.   WORD_A_ALL = "*敵味全*"
  26.   
  27.   #条件の判別を味方全体化
  28.   
  29.   WORD_ACTOR_A = "A"
  30.   
  31.   #条件の判別を味方全体化
  32.   
  33.   WORD_PARTY_P = "P"
  34.   
  35.   #条件の判別を味方全体化
  36.   
  37.   WORD_ENEMY_E = "E"
  38.   
  39.   #条件の判別を味方全体化
  40.   
  41.   WORD_TROOP_T = "T"
  42.   
  43.   #能力値・変数の場合の設定
  44.   #~より上
  45.   
  46.   WORD_A = "超过"
  47.   
  48.   #~以上
  49.   
  50.   WORD_B = "以上"
  51.   
  52.   #~より下
  53.   
  54.   WORD_C = "未满"
  55.   
  56.   #~以下
  57.   
  58.   WORD_D = "以下"
  59.   
  60.   #~と同じ数値
  61.   
  62.   WORD_E = "相同"
  63.   
  64.   #~と同じ数値ではない
  65.   
  66.   WORD_F = "以外"
  67.   
  68.   #スイッチの場合の設定
  69.   #ONの場合
  70.   
  71.   WORD_G = "关闭"
  72.   
  73.   #OFFの場合
  74.   
  75.   WORD_H = "开启"
  76.   
  77.   #ステート・パーティの場合の設定
  78.   #ONの場合
  79.   
  80.   WORD_I = "前提"
  81.   
  82.   #OFFの場合
  83.   
  84.   WORD_J = "禁止"
  85.   
  86.   #数値単位の指定(現在HP・現在MP・現在TP関連のみ有効)
  87.   #ONの場合
  88.   
  89.   WORD_K = "数值"
  90.   
  91.   #OFFの場合
  92.   
  93.   WORD_L = "割合"
  94.   
  95.   #スクリプトの場合、エラーとなった際の設定
  96.   #ONの場合
  97.   
  98.   WORD_M = "OK"
  99.   
  100.   #OFFの場合
  101.   
  102.   WORD_N = "NG"
  103.   
  104.   #能力値名設定
  105.   #現在HP
  106.   
  107.   WORD1 = "HP"
  108.   
  109.   #現在MP
  110.   
  111.   WORD2 = "MP"
  112.   
  113.   #現在TP
  114.   
  115.   WORD3 = "TP"
  116.   
  117.   #最大HP
  118.   
  119.   WORD4 = "MHP"
  120.   
  121.   #最大MP
  122.   
  123.   WORD5 = "MMP"
  124.   
  125.   #攻撃力
  126.   
  127.   WORD6 = "ATK"
  128.   
  129.   #防御力
  130.   
  131.   WORD7 = "DEF"
  132.   
  133.   #魔法力
  134.   
  135.   WORD8 = "MAT"
  136.   
  137.   #魔法防御
  138.   
  139.   WORD9 = "MDF"
  140.   
  141.   #敏捷性
  142.   
  143.   WORD10 = "AGI"
  144.   
  145.   #運
  146.   
  147.   WORD11 = "LUK"
  148.   
  149.   #命中率
  150.   
  151.   WORD12 = "HIT"
  152.   
  153.   #回避率
  154.   
  155.   WORD13 = "EVA"
  156.   
  157.   #会心率
  158.   
  159.   WORD14 = "CRI"
  160.   
  161.   #会心回避率
  162.   
  163.   WORD15 = "CEV"
  164.   
  165.   #魔法回避率
  166.   
  167.   WORD16 = "MEV"
  168.   
  169.   #魔法反射率
  170.   
  171.   WORD17 = "MRF"
  172.   
  173.   #反撃率
  174.   
  175.   WORD18 = "CNT"
  176.   
  177.   #HP再生率
  178.   
  179.   WORD19 = "HRG"
  180.   
  181.   #MP再生率
  182.   
  183.   WORD20 = "MRG"
  184.   
  185.   #TP再生率
  186.   
  187.   WORD21 = "TRG"
  188.   
  189.   #狙われ率
  190.   
  191.   WORD22 = "TGR"
  192.   
  193.   #防御効果率
  194.   
  195.   WORD23 = "GRD"
  196.   
  197.   #回復効果率
  198.   
  199.   WORD24 = "REC"
  200.   
  201.   #薬の知識
  202.   
  203.   WORD25 = "PHA"
  204.   
  205.   #MP消費率
  206.   
  207.   WORD26 = "MCR"
  208.   
  209.   #TPチャージ率
  210.   
  211.   WORD27 = "TCR"
  212.   
  213.   #物理ダメージ率
  214.   
  215.   WORD28 = "PDR"
  216.   
  217.   #魔法ダメージ率
  218.   
  219.   WORD29 = "MDR"
  220.   
  221.   #床ダメージ率
  222.   
  223.   WORD30 = "FDR"
  224.   
  225.   #経験獲得率
  226.   
  227.   WORD31 = "EXR"
  228.   
  229.   #属性有効度
  230.   
  231.   WORD32 = "ELP"
  232.   
  233.   #弱体有効度
  234.   
  235.   WORD33 = "DBP"
  236.   
  237.   #ステート有効度
  238.   
  239.   WORD34 = "STP"
  240.   
  241.   #状态
  242.   
  243.   WORD35 = "STT"
  244.   
  245.   #开关
  246.   
  247.   WORD36 = "SWT"
  248.   
  249.   #変数
  250.   
  251.   WORD37 = "VAR"
  252.   
  253.   #敵で特定ステートにかかっている者の数
  254.   
  255.   WORD38 = "OPS"
  256.   
  257.   #味方で特定ステートにかかっている者の数
  258.   
  259.   WORD39 = "FRS"
  260.   
  261.   #敵で生存している者の数
  262.   
  263.   WORD40 = "OPA"
  264.   
  265.   #味方で生存している者の数
  266.   
  267.   WORD41 = "FRA"
  268.   
  269.   #敵で死亡している者の数
  270.   
  271.   WORD42 = "OPD"
  272.   
  273.   #味方で死亡している者の数
  274.   
  275.   WORD43 = "FRD"
  276.   
  277.   #敵で行動可能者の数
  278.   
  279.   WORD44 = "OPM"
  280.   
  281.   #味方で行動可能者の数
  282.   
  283.   WORD45 = "FRM"
  284.   
  285.   #敵で行動不能者の数
  286.   
  287.   WORD46 = "ONM"
  288.   
  289.   #味方で行動不能者の数
  290.   
  291.   WORD47 = "FNM"
  292.   
  293.   #敵の現在HP平均値
  294.   
  295.   WORD48 = "OHA"
  296.   
  297.   #味方の現在HP平均値
  298.   
  299.   WORD49 = "FHA"
  300.   
  301.   #敵の現在MP平均値
  302.   
  303.   WORD50 = "OMA"
  304.   
  305.   #味方の現在MP平均値
  306.   
  307.   WORD51 = "FMA"
  308.   
  309.   #敵の現在TP平均値
  310.   
  311.   WORD52 = "OTA"
  312.   
  313.   #味方の現在TP平均値
  314.   
  315.   WORD53 = "FTA"
  316.   
  317.   #敵の現在HP合計値
  318.   
  319.   WORD54 = "OHT"
  320.   
  321.   #味方の現在HP合計値
  322.   
  323.   WORD55 = "FHT"
  324.   
  325.   #敵の現在MP合計値
  326.   
  327.   WORD56 = "OMT"
  328.   
  329.   #味方の現在MP合計値
  330.   
  331.   WORD57 = "FMT"
  332.   
  333.   #敵の現在TP合計値
  334.   
  335.   WORD58 = "OTT"
  336.   
  337.   #味方の現在TP合計値
  338.   
  339.   WORD59 = "FTT"
  340.   
  341.   #パーティ/敵グループ内にいるかどうかの判定
  342.   #アクターの場合はパーティにいるか否かと戦闘メンバーにいるか否か
  343.   #エネミーの場合は敵グループにいるか否かと隠れているか否かを判定
  344.   
  345.   WORD60 = "API"
  346.   
  347.   #スクリプトを用いた特殊な判定
  348.   #スクリプトにある程度理解がある方向け
  349.   
  350.   WORD61 = "SCR"

  351. end

  352. class Game_BattlerBase
  353.   #--------------------------------------------------------------------------
  354.   # スキル/アイテムの共通使用可能条件チェック1
  355.   #--------------------------------------------------------------------------
  356.   alias usable_item_conditions_met_ex1? usable_item_conditions_met?
  357.   def usable_item_conditions_met?(item)
  358.    
  359.     #本来の処理と追加条件を判定する。
  360.     #両方の条件を満たしているか否かを返す。
  361.    
  362.     usable_item_conditions_met_ex1?(item) && usable_item_conditions_met_ex2?(item)
  363.    
  364.   end
  365.   #--------------------------------------------------------------------------
  366.   # スキル/アイテムの共通使用可能条件チェック2
  367.   #--------------------------------------------------------------------------
  368.   def usable_item_conditions_met_ex2?(item)
  369.    
  370.     #追加条件のハッシュを取得する。
  371.    
  372.     base_data = item.use_condition_array
  373.    
  374.     #追加条件が何も存在しない場合はtrueを返す。
  375.    
  376.     return true if base_data.empty?
  377.    
  378.     #追加条件をそれぞれ判定する。
  379.    
  380.     base_data.each {|use_condition|
  381.    
  382.     #データタイプを初期化する。
  383.    
  384.     data_type = 0
  385.    
  386.     #判定対象を取得する。
  387.    
  388.     case use_condition[:condition_target]
  389.    
  390.     #明確な設定が無い場合、まず対象用の空の配列を作成する。
  391.    
  392.     when 0;condition_target = []
  393.       
  394.       #アクター用配列が空ではない時
  395.       
  396.       if !use_condition[:array_a].empty?
  397.         
  398.         #配列の要素別に判定する。
  399.         
  400.         use_condition[:array_a].each {|i|
  401.         
  402.         #対象の配列に加える。
  403.         
  404.         condition_target.push($game_actors[i.to_i])
  405.         
  406.         }
  407.         
  408.       #パーティ用配列が空ではない時
  409.       
  410.       elsif !use_condition[:array_p].empty?
  411.         
  412.         #配列の要素別に判定する。
  413.         
  414.         use_condition[:array_p].each {|i|
  415.         
  416.         #該当者が存在しない場合は条件を満たさない物とする。
  417.         
  418.         return false unless $game_party.members[i.to_i - 1]
  419.         
  420.         #対象の配列に加える。
  421.         
  422.         condition_target.push($game_party.members[i.to_i - 1])
  423.         
  424.         }
  425.       
  426.       #エネミー用配列が空ではない時
  427.       
  428.       elsif !use_condition[:array_e].empty?
  429.         
  430.         #配列の要素別に判定する。
  431.         
  432.         use_condition[:array_e].each {|i|
  433.         
  434.         #該当するエネミーIDを持つ敵を選別する。
  435.         
  436.         tm = $game_troop.members.select {|m| m.enemy_id == i.to_i}
  437.         
  438.         #対象の配列に加える。
  439.         
  440.         condition_target = condition_target + tm unless tm.empty?
  441.         
  442.         }
  443.       
  444.       #敵グループ用配列が空ではない時
  445.       
  446.       elsif !use_condition[:array_t].empty?
  447.         
  448.         #配列の要素別に判定する。
  449.         
  450.         use_condition[:array_t].each {|i|
  451.         
  452.         #該当者が存在しない場合は条件を満たさない物とする。
  453.         
  454.         return false unless $game_troop.members[i.to_i - 1]
  455.         
  456.         condition_target.push($game_troop.members[i.to_i - 1] )
  457.         
  458.         }
  459.       
  460.       #どれにも該当しない時(自分のみ)
  461.       
  462.       else;condition_target.push(self)
  463.         
  464.       end
  465.       
  466.     #味方グループの場合
  467.    
  468.     when 1;condition_target = friends_unit.members
  469.       
  470.     #敵グループの場合
  471.    
  472.     when 2;condition_target = opponents_unit.members
  473.       
  474.     #敵グループと味方グループ全体の場合
  475.    
  476.     when 3;condition_target = friends_unit.members + opponents_unit.members
  477.       
  478.     end
  479.    
  480.     #該当者が存在しない場合はfalseを返す。
  481.    
  482.     return false if condition_target.empty?
  483.    
  484.     #判定対象別に条件を判定する。
  485.    
  486.     condition_target.each {|character|
  487.    
  488.     #対象が存在しない場合は飛ばす。
  489.    
  490.     next unless character
  491.    
  492.     #条件がアクター専用/エネミー専用か否かを判定し
  493.     #当てはまらない場合は処理を飛ばす。
  494.    
  495.     case use_condition[:user_type]
  496.    
  497.     #アクター専用
  498.    
  499.     when 1;next if !character.actor?
  500.    
  501.     #エネミー専用
  502.    
  503.     when 2;next if character.actor?
  504.    
  505.     end
  506.    
  507.     #条件の配列を取得する。
  508.    
  509.     array = use_condition[:array]
  510.    
  511.     #配列の1つ目の値で種類分けを行う。
  512.    
  513.     case array[0]
  514.    
  515.     #現在HP(データタイプ1)
  516.    
  517.     when IS_USABLE::WORD1;data_type = 1
  518.       
  519.       #配列の2番目の文字列で数値か割合かを判定。
  520.       
  521.       case array[1]
  522.       
  523.       #数値の場合
  524.       
  525.       when IS_USABLE::WORD_K;data = character.hp
  526.         
  527.       #割合の場合
  528.       
  529.       when IS_USABLE::WORD_L;data = character.hp_rate * 100
  530.         
  531.       end
  532.       
  533.     #現在MP(データタイプ1)
  534.    
  535.     when IS_USABLE::WORD2;data_type = 1
  536.       
  537.       #配列の2番目の文字列で数値か割合かを判定。
  538.       
  539.       case array[1]
  540.       
  541.       #数値の場合
  542.       
  543.       when IS_USABLE::WORD_K;data = character.mp
  544.         
  545.       #割合の場合
  546.         
  547.       when IS_USABLE::WORD_L;data = character.mp_rate * 100
  548.         
  549.       end
  550.       
  551.     #現在TP(データタイプ1)
  552.    
  553.     when IS_USABLE::WORD3;data_type = 1
  554.       
  555.       #配列の2番目の文字列で数値か割合かを判定。
  556.       
  557.       case array[1]
  558.       
  559.       #数値の場合
  560.       
  561.       when IS_USABLE::WORD_K;data = character.tp
  562.         
  563.       #割合の場合
  564.         
  565.       when IS_USABLE::WORD_L;data = character.tp_rate * 100
  566.         
  567.       end
  568.       
  569.     #最大HP(データタイプ0)
  570.    
  571.     when IS_USABLE::WORD4;data = character.param(0)
  572.       
  573.     #最大MP(データタイプ0)
  574.    
  575.     when IS_USABLE::WORD5;data = character.param(1)
  576.    
  577.     #攻撃力(データタイプ0)
  578.    
  579.     when IS_USABLE::WORD6;data = character.param(2)
  580.    
  581.     #防御力(データタイプ0)
  582.    
  583.     when IS_USABLE::WORD7;data = character.param(3)
  584.    
  585.     #魔法力(データタイプ0)
  586.    
  587.     when IS_USABLE::WORD8;data = character.param(4)
  588.    
  589.     #魔法防御(データタイプ0)
  590.    
  591.     when IS_USABLE::WORD9;data = character.param(5)
  592.    
  593.     #敏捷性(データタイプ0)
  594.    
  595.     when IS_USABLE::WORD10;data = character.param(6)
  596.    
  597.     #運(データタイプ0)
  598.    
  599.     when IS_USABLE::WORD11;data = character.param(7)
  600.    
  601.     #命中率(データタイプ0)
  602.    
  603.     when IS_USABLE::WORD12;data = character.xparam(0) * 100
  604.    
  605.     #回避率(データタイプ0)
  606.    
  607.     when IS_USABLE::WORD13;data = character.xparam(1) * 100
  608.    
  609.     #会心率(データタイプ0)
  610.    
  611.     when IS_USABLE::WORD14;data = character.xparam(2) * 100
  612.    
  613.     #会心回避率(データタイプ0)
  614.    
  615.     when IS_USABLE::WORD15;data = character.xparam(3) * 100
  616.    
  617.     #魔法回避率(データタイプ0)
  618.    
  619.     when IS_USABLE::WORD16;data = character.xparam(4) * 100
  620.    
  621.     #魔法反射率(データタイプ0)
  622.    
  623.     when IS_USABLE::WORD17;data = character.xparam(5) * 100
  624.    
  625.     #反撃率(データタイプ0)
  626.    
  627.     when IS_USABLE::WORD18;data = character.xparam(6) * 100
  628.    
  629.     #HP再生率(データタイプ0)
  630.    
  631.     when IS_USABLE::WORD19;data = character.xparam(7) * 100
  632.    
  633.     #MP再生率(データタイプ0)
  634.    
  635.     when IS_USABLE::WORD20;data = character.xparam(8) * 100
  636.    
  637.     #TP再生率(データタイプ0)
  638.    
  639.     when IS_USABLE::WORD21;data = character.xparam(9) * 100
  640.    
  641.     #狙われ率(データタイプ0)
  642.    
  643.     when IS_USABLE::WORD22;data = character.sparam(0) * 100
  644.    
  645.     #防御効果率(データタイプ0)
  646.    
  647.     when IS_USABLE::WORD23;data = character.sparam(1) * 100
  648.    
  649.     #回復効果率(データタイプ0)
  650.    
  651.     when IS_USABLE::WORD24;data = character.sparam(2) * 100
  652.    
  653.     #薬の知識(データタイプ0)
  654.    
  655.     when IS_USABLE::WORD25;data = character.sparam(3) * 100
  656.    
  657.     #MP消費率(データタイプ0)
  658.    
  659.     when IS_USABLE::WORD26;data = character.sparam(4) * 100
  660.    
  661.     #TPチャージ率(データタイプ0)
  662.    
  663.     when IS_USABLE::WORD27;data = character.sparam(5) * 100
  664.    
  665.     #物理ダメージ率(データタイプ0)
  666.    
  667.     when IS_USABLE::WORD28;data = character.sparam(6) * 100
  668.    
  669.     #魔法ダメージ率(データタイプ0)
  670.    
  671.     when IS_USABLE::WORD29;data = character.sparam(7) * 100
  672.    
  673.     #床ダメージ率(データタイプ0)
  674.    
  675.     when IS_USABLE::WORD30;data = character.sparam(8) * 100
  676.    
  677.     #経験獲得率(データタイプ0)
  678.    
  679.     when IS_USABLE::WORD31;data = character.sparam(9) * 100
  680.    
  681.     #属性有効度(データタイプ1)
  682.       
  683.     when IS_USABLE::WORD32;data_type = 1
  684.       
  685.       data = character.element_rate(array[1].to_i) * 100
  686.    
  687.     #弱体有効度(データタイプ1)
  688.    
  689.     when IS_USABLE::WORD33;data_type = 1
  690.       
  691.       data = character.debuff_rate(array[1].to_i) * 100
  692.    
  693.     #ステート有効度(データタイプ1)
  694.    
  695.     when IS_USABLE::WORD34;data_type = 1
  696.       
  697.       data = character.state_rate(array[1].to_i) * 100
  698.    
  699.     #ステート(データタイプ2)
  700.    
  701.     when IS_USABLE::WORD35;data_type = 2
  702.    
  703.     #スイッチ(データタイプ3)
  704.       
  705.     when IS_USABLE::WORD36;data_type = 3
  706.    
  707.     #変数(データタイプ1)
  708.       
  709.     when IS_USABLE::WORD37;data_type = 1
  710.       
  711.       data = $game_variables[(array[1]).to_i]
  712.    
  713.     #敵で特定ステートにかかっている者の数(データタイプ1)
  714.       
  715.     when IS_USABLE::WORD38;data_type = 1
  716.       
  717.       data = opponents_unit.members_state_check((array[1]).to_i)
  718.    
  719.     #味方で特定ステートにかかっている者の数(データタイプ1)
  720.       
  721.     when IS_USABLE::WORD39;data_type = 1
  722.       
  723.       data = friends_unit.members_state_check((array[1]).to_i)
  724.    
  725.     #敵で生存している者の数(データタイプ0)
  726.       
  727.     when IS_USABLE::WORD40;data = opponents_unit.alive_members.size
  728.    
  729.     #味方で生存している者の数(データタイプ0)
  730.       
  731.     when IS_USABLE::WORD41;data = friends_unit.alive_members.size
  732.    
  733.     #敵で死亡している者の数(データタイプ0)
  734.       
  735.     when IS_USABLE::WORD42;data = opponents_unit.dead_members.size
  736.    
  737.     #味方で死亡している者の数(データタイプ0)
  738.       
  739.     when IS_USABLE::WORD43;data = friends_unit.dead_members.size
  740.    
  741.     #敵で行動可能者の数(データタイプ0)
  742.       
  743.     when IS_USABLE::WORD44;data = opponents_unit.movable_members_ex.size
  744.    
  745.     #味方で行動可能者の数(データタイプ0)
  746.       
  747.     when IS_USABLE::WORD45;data = friends_unit.movable_members_ex.size
  748.    
  749.     #敵で行動不能者の数(データタイプ0)
  750.       
  751.     when IS_USABLE::WORD46;data = opponents_unit.not_movable_members_ex.size
  752.    
  753.     #味方で行動不能者の数(データタイプ0)
  754.       
  755.     when IS_USABLE::WORD47;data = friends_unit.not_movable_members_ex.size
  756.    
  757.     #敵の現在HP平均値(データタイプ1)
  758.       
  759.     when IS_USABLE::WORD48;data_type = 1
  760.       
  761.       #配列の2番目の文字列で数値か割合かを判定。
  762.       
  763.       case array[1]
  764.       
  765.       #数値の場合
  766.       
  767.       when IS_USABLE::WORD_K;data = opponents_unit.hp(0)
  768.         
  769.       #割合の場合
  770.         
  771.       when IS_USABLE::WORD_L;data = opponents_unit.hp(1)
  772.         
  773.       end
  774.    
  775.     #味方の現在HP平均値(データタイプ1)
  776.       
  777.     when IS_USABLE::WORD49;data_type = 1
  778.       
  779.       #配列の2番目の文字列で数値か割合かを判定。
  780.       
  781.       case array[1]
  782.       
  783.       #数値の場合
  784.       
  785.       when IS_USABLE::WORD_K;data = friends_unit.hp(0)
  786.         
  787.       #割合の場合
  788.         
  789.       when IS_USABLE::WORD_L;data = friends_unit.hp(1)
  790.         
  791.       end
  792.    
  793.     #敵の現在MP平均値(データタイプ1)
  794.       
  795.     when IS_USABLE::WORD50;data_type = 1
  796.       
  797.       #配列の2番目の文字列で数値か割合かを判定。
  798.       
  799.       case array[1]
  800.       
  801.       #数値の場合
  802.       
  803.       when IS_USABLE::WORD_K;data = opponents_unit.mp(0)
  804.         
  805.       #割合の場合
  806.         
  807.       when IS_USABLE::WORD_L;data = opponents_unit.mp(1)
  808.         
  809.       end
  810.    
  811.     #味方の現在MP平均値(データタイプ1)
  812.       
  813.     when IS_USABLE::WORD51;data_type = 1
  814.       
  815.       #配列の2番目の文字列で数値か割合かを判定。
  816.       
  817.       case array[1]
  818.       
  819.       #数値の場合
  820.       
  821.       when IS_USABLE::WORD_K;data = friends_unit.mp(0)
  822.         
  823.       #割合の場合
  824.         
  825.       when IS_USABLE::WORD_L;data = friends_unit.mp(1)
  826.         
  827.       end
  828.    
  829.     #敵の現在TP平均値(データタイプ1)
  830.       
  831.     when IS_USABLE::WORD52;data_type = 1
  832.       
  833.       #配列の2番目の文字列で数値か割合かを判定。
  834.       
  835.       case array[1]
  836.       
  837.       #数値の場合
  838.       
  839.       when IS_USABLE::WORD_K;data = opponents_unit.tp(0)
  840.         
  841.       #割合の場合
  842.         
  843.       when IS_USABLE::WORD_L;data = opponents_unit.tp(1)
  844.         
  845.       end
  846.    
  847.     #味方の現在TP平均値(データタイプ1)
  848.       
  849.     when IS_USABLE::WORD53;data_type = 1
  850.       
  851.       #配列の2番目の文字列で数値か割合かを判定。
  852.       
  853.       case array[1]
  854.       
  855.       #数値の場合
  856.       
  857.       when IS_USABLE::WORD_K;data = friends_unit.tp(0)
  858.         
  859.       #割合の場合
  860.         
  861.       when IS_USABLE::WORD_L;data = friends_unit.tp(1)
  862.         
  863.       end
  864.    
  865.     #敵の現在HP合計値(データタイプ0)
  866.    
  867.     when IS_USABLE::WORD54;data = opponents_unit.hptotal
  868.    
  869.     #味方の現在HP合計値(データタイプ0)
  870.    
  871.     when IS_USABLE::WORD55;data = friends_unit.hptotal
  872.    
  873.     #敵の現在MP合計値(データタイプ0)
  874.    
  875.     when IS_USABLE::WORD56;data = opponents_unit.mptotal
  876.    
  877.     #味方の現在MP合計値(データタイプ0)
  878.    
  879.     when IS_USABLE::WORD57;data = friends_unit.mptotal
  880.    
  881.     #敵の現在TP合計値(データタイプ0)
  882.    
  883.     when IS_USABLE::WORD58;data = opponents_unit.tptotal
  884.    
  885.     #味方の現在TP合計値(データタイプ0)
  886.    
  887.     when IS_USABLE::WORD59;data = friends_unit.tptotal
  888.    
  889.     #味方の現在TP合計値(データタイプ4)
  890.    
  891.     when IS_USABLE::WORD60;data_type = 4
  892.    
  893.     #スクリプト(データタイプ5)
  894.    
  895.     when IS_USABLE::WORD61;data_type = 5
  896.       
  897.     end
  898.    
  899.     #データタイプで分岐。
  900.    
  901.     case data_type
  902.    
  903.     #データタイプが0の場合、まず取得したデータを整数化してから処理を続行。
  904.    
  905.     when 0;data = data.to_i
  906.       
  907.       #配列内の3番目の文字列で分岐。
  908.       
  909.       case array[2]
  910.       
  911.       #超過
  912.       
  913.       when IS_USABLE::WORD_A;return false if data <= array[1].to_i
  914.       
  915.       #以上
  916.       
  917.       when IS_USABLE::WORD_B;return false if data < array[1].to_i
  918.       
  919.       #未満
  920.       
  921.       when IS_USABLE::WORD_C;return false if data >= array[1].to_i
  922.       
  923.       #以下
  924.       
  925.       when IS_USABLE::WORD_D;return false if data > array[1].to_i
  926.       
  927.       #同値
  928.       
  929.       when IS_USABLE::WORD_E;return false if data != array[1].to_i
  930.       
  931.       #以外
  932.       
  933.       when IS_USABLE::WORD_F;return false if data == array[1].to_i
  934.         
  935.       end
  936.    
  937.     #データタイプが1の場合、まず取得したデータを整数化してから処理を続行。
  938.    
  939.     when 1;data = data.to_i
  940.       
  941.       #配列内の4番目の文字列で分岐。
  942.       
  943.       case array[3]
  944.       
  945.       #超過
  946.       
  947.       when IS_USABLE::WORD_A;return false if data <= array[2].to_i
  948.       
  949.       #以上
  950.       
  951.       when IS_USABLE::WORD_B;return false if data < array[2].to_i
  952.       
  953.       #未満
  954.       
  955.       when IS_USABLE::WORD_C;return false if data >= array[2].to_i
  956.       
  957.       #以下
  958.       
  959.       when IS_USABLE::WORD_D;return false if data > array[2].to_i
  960.       
  961.       #同値
  962.       
  963.       when IS_USABLE::WORD_E;return false if data != array[2].to_i
  964.       
  965.       #以外
  966.       
  967.       when IS_USABLE::WORD_F;return false if data == array[2].to_i
  968.         
  969.       end
  970.    
  971.     #データタイプが2の場合
  972.    
  973.     when 2
  974.       
  975.       #ステートIDを取得。
  976.       
  977.       data = array[1].to_i
  978.       
  979.       #配列内の3番目の文字列で分岐。
  980.       
  981.       case array[2]
  982.       
  983.       #ステートにかかっているか?
  984.       
  985.       when IS_USABLE::WORD_I;return false unless character.state?(data)
  986.       
  987.       #ステートにかかっていないか?
  988.       
  989.       when IS_USABLE::WORD_J;return false if character.state?(data)
  990.       
  991.       end
  992.    
  993.     #データタイプが3の場合
  994.    
  995.     when 3
  996.       
  997.       #スイッチIDを取得。
  998.       
  999.       data = $game_switches[(array[1]).to_i]
  1000.       
  1001.       #配列内の3番目の文字列で分岐。
  1002.       
  1003.       case array[2]
  1004.       
  1005.       #スイッチがONか?
  1006.       
  1007.       when IS_USABLE::WORD_G;return false unless data
  1008.       
  1009.       #スイッチがOFFか?
  1010.       
  1011.       when IS_USABLE::WORD_H;return false if data
  1012.       
  1013.       end
  1014.    
  1015.     #データタイプが4の場合
  1016.    
  1017.     when 4
  1018.       
  1019.       #キャラクターがアクターかどうかを判定。
  1020.       
  1021.       if character.actor?
  1022.         
  1023.         #配列の2番目の文字列で分岐。
  1024.         
  1025.         case array[1]
  1026.         
  1027.         #PT内にいなければならないか?
  1028.         
  1029.         when IS_USABLE::WORD_I;
  1030.          
  1031.           return false unless $game_party.all_members.include?(character)
  1032.         
  1033.           #配列の3番目の文字列で分岐。
  1034.          
  1035.           case array[2]
  1036.          
  1037.           #戦闘メンバー内にいなければならないか?
  1038.          
  1039.           when IS_USABLE::WORD_I;return false unless $game_party.members.include?(character)
  1040.          
  1041.           #戦闘メンバー内にいてはならないか?
  1042.          
  1043.           when IS_USABLE::WORD_J;return false if $game_party.members.include?(character)
  1044.           end
  1045.          
  1046.         #PT内にいてはならないか?
  1047.         
  1048.         when IS_USABLE::WORD_J;return false if $game_party.all_members.include?(character)
  1049.         
  1050.         end
  1051.         
  1052.       else
  1053.         
  1054.         #配列の2番目の文字列で分岐。
  1055.         
  1056.         case array[1]
  1057.         
  1058.         #PT内にいなければならないか?
  1059.         
  1060.         when IS_USABLE::WORD_I;
  1061.          
  1062.           return false unless $game_troop.members.include?(character)
  1063.         
  1064.           #配列の3番目の文字列で分岐。
  1065.          
  1066.           case array[2]
  1067.          
  1068.           #戦闘メンバー内にいなければならないか?
  1069.          
  1070.           when IS_USABLE::WORD_I;return false unless character.hidden?
  1071.          
  1072.           #戦闘メンバー内にいてはならないか?
  1073.          
  1074.           when IS_USABLE::WORD_J;return false if character.hidden?
  1075.           end
  1076.          
  1077.         #PT内にいてはならないか?
  1078.         
  1079.         when IS_USABLE::WORD_J;return false if $game_troop.members.include?(character)
  1080.         
  1081.         end
  1082.       
  1083.       end
  1084.    
  1085.     #データタイプが5の場合
  1086.    
  1087.     when 5
  1088.       
  1089.       begin
  1090.         
  1091.         #配列の3番目の文字列をスクリプトとして実行。
  1092.         
  1093.         a = character
  1094.         
  1095.         return false unless eval(array[2])
  1096.         
  1097.       rescue
  1098.         
  1099.         #エラーとなった場合は、配列の2番目の文字列で分岐。
  1100.         
  1101.         case array[1]
  1102.         
  1103.         #OKの場合は次の条件の処理を行う。
  1104.         
  1105.         when IS_USABLE::WORD_M;next
  1106.         
  1107.         #NGの場合はfalseを返す。
  1108.         
  1109.         when IS_USABLE::WORD_N;return false
  1110.         end
  1111.         
  1112.       end
  1113.       
  1114.     end
  1115.     }
  1116.     }
  1117.    
  1118.     #全ての条件を満たすのでtrueを返す。
  1119.    
  1120.     true
  1121.    
  1122.   end
  1123. end
  1124. class Game_Unit
  1125.   #--------------------------------------------------------------------------
  1126.   # 隠れていないメンバーの配列取得
  1127.   #--------------------------------------------------------------------------
  1128.   def unhidden_members
  1129.     members.select {|member| member.hidden? == false}
  1130.   end
  1131.   #--------------------------------------------------------------------------
  1132.   # 行動可能なメンバーの配列取得
  1133.   #--------------------------------------------------------------------------
  1134.   def movable_members_ex
  1135.     unhidden_members.select {|member| member.movable?}
  1136.   end
  1137.   #--------------------------------------------------------------------------
  1138.   # 行動不能なメンバーの配列取得
  1139.   #--------------------------------------------------------------------------
  1140.   def not_movable_members_ex
  1141.     unhidden_members.select {|member| member.movable? == false}
  1142.   end
  1143.   #--------------------------------------------------------------------------
  1144.   # メンバーステートチェック
  1145.   #--------------------------------------------------------------------------
  1146.   def members_state_check(state_id)
  1147.    
  1148.     #初期値を取得。
  1149.    
  1150.     data = 0
  1151.    
  1152.     #メンバーが該当ステートを付与されている場合はデータに1加算。
  1153.    
  1154.     members.each {|i| data += 1 if i.state?(state_id)}
  1155.    
  1156.     #データを返す。
  1157.    
  1158.     data
  1159.   end
  1160.   #--------------------------------------------------------------------------
  1161.   # HPの平均値を計算
  1162.   #--------------------------------------------------------------------------
  1163.   def hp(type)
  1164.    
  1165.     #メンバー数が0の場合は0を返す。
  1166.    
  1167.     return 0 if members.size == 0
  1168.    
  1169.     #タイプが0の場合
  1170.    
  1171.     if type == 0;members.inject(0) {|r, member| r += member.hp} / members.size
  1172.    
  1173.     #タイプが1の場合
  1174.    
  1175.     elsif type == 1;members.inject(0) {|r, member| r += member.hp_rate * 100} / members.size
  1176.    
  1177.     end
  1178.   end
  1179.   #--------------------------------------------------------------------------
  1180.   # MPの平均値を計算
  1181.   #--------------------------------------------------------------------------
  1182.   def mp(type)
  1183.    
  1184.     #メンバー数が0の場合は0を返す。
  1185.    
  1186.     return 0 if members.size == 0
  1187.    
  1188.     #タイプが0の場合
  1189.    
  1190.     if type == 0;members.inject(0) {|r, member| r += member.mp} / members.size
  1191.    
  1192.     #タイプが1の場合
  1193.    
  1194.     elsif type == 1;members.inject(0) {|r, member| r += member.mp_rate * 100} / members.size
  1195.    
  1196.     end
  1197.   end
  1198.   #--------------------------------------------------------------------------
  1199.   # TPの平均値を計算
  1200.   #--------------------------------------------------------------------------
  1201.   def tp(type)
  1202.    
  1203.     #メンバー数が0の場合は0を返す。
  1204.    
  1205.     return 0 if members.size == 0
  1206.    
  1207.     #タイプが0の場合
  1208.    
  1209.     if type == 0;members.inject(0) {|r, member| r += member.tp} / members.size
  1210.    
  1211.     #タイプが1の場合
  1212.    
  1213.     elsif type == 1;members.inject(0) {|r, member| r += member.tp_rate * 100} / members.size
  1214.    
  1215.     end
  1216.   end
  1217.   #--------------------------------------------------------------------------
  1218.   # HPの合計値を計算
  1219.   #--------------------------------------------------------------------------
  1220.   def hptotal
  1221.     return 0 if members.size == 0
  1222.     members.inject(0) {|r, member| r += member.hp}
  1223.   end
  1224.   #--------------------------------------------------------------------------
  1225.   # MPの合計値を計算
  1226.   #--------------------------------------------------------------------------
  1227.   def mptotal
  1228.     return 0 if members.size == 0
  1229.     members.inject(0) {|r, member| r += member.mp}
  1230.   end
  1231.   #--------------------------------------------------------------------------
  1232.   # TPの合計値を計算
  1233.   #--------------------------------------------------------------------------
  1234.   def tptotal
  1235.     return 0 if members.size == 0
  1236.     members.inject(0) {|r, member| r += member.tp}
  1237.   end
  1238. end
  1239. class RPG::UsableItem < RPG::BaseItem
  1240.   #--------------------------------------------------------------------------
  1241.   # 使用条件の配列を作成
  1242.   #--------------------------------------------------------------------------
  1243.   def use_condition_array
  1244.    
  1245.     #キャッシュが存在する場合はキャッシュを返す。
  1246.    
  1247.     return @use_condition_array if @use_condition_array != nil
  1248.    
  1249.     #配列を作成する。
  1250.    
  1251.     @use_condition_array = []
  1252.    
  1253.     #メモ欄の各行からデータを取得。
  1254.    
  1255.     self.note.each_line {|line|
  1256.     array = line.scan(/<#{IS_USABLE::WORD_BASE}[::](\S+)>/).flatten
  1257.    
  1258.     #配列が存在しないか空の場合は空の配列にする。
  1259.     #そうでない場合は配列を分解した配列にする。
  1260.    
  1261.     array = array != nil && !array.empty? ? array[0].split(/\s*,\s*/) : []
  1262.    
  1263.     #配列の要素数が3より小さい、もしくは4より大きい場合は
  1264.     #無効と判断し、次の行の判定を開始する。
  1265.    
  1266.     next if array.size < 3 or array.size > 4
  1267.    
  1268.     #アクターのみ条件が発生する場合、条件タイプは1とする。
  1269.    
  1270.     if line.include?(IS_USABLE::WORD_ACTOR);user_type = 1
  1271.    
  1272.     #エネミーのみ条件が発生する場合、条件タイプは2とする。
  1273.    
  1274.     elsif line.include?(IS_USABLE::WORD_ENEMY);user_type = 2
  1275.    
  1276.     #誰でも条件が発生する場合、条件タイプは0とする。
  1277.    
  1278.     else;user_type = 0
  1279.    
  1280.     end
  1281.    
  1282.     #味方全体に条件が発生する場合、判定対象は1とする。
  1283.    
  1284.     if line.include?(IS_USABLE::WORD_F_ALL);condition_target = 1
  1285.    
  1286.     #敵全体に条件が発生する場合、判定対象は2とする。
  1287.    
  1288.     elsif line.include?(IS_USABLE::WORD_O_ALL);condition_target = 2
  1289.    
  1290.     #敵味方全体に条件が発生する場合、判定対象は3とする。
  1291.    
  1292.     elsif line.include?(IS_USABLE::WORD_A_ALL);condition_target = 3
  1293.    
  1294.     #自分のみに条件が発生する場合、判定対象は0とする。
  1295.    
  1296.     else;condition_target = 0
  1297.       array_a = line.scan(/~#{IS_USABLE::WORD_ACTOR_A}[::](\S+)~/).flatten
  1298.       array_a = array_a[0].split(/\s*,\s*/) if array_a != nil && !array_a.empty?
  1299.       array_p = line.scan(/~#{IS_USABLE::WORD_PARTY_P}[::](\S+)~/).flatten
  1300.       array_p = array_p[0].split(/\s*,\s*/) if array_p != nil && !array_p.empty?
  1301.       array_e = line.scan(/~#{IS_USABLE::WORD_ENEMY_E}[::](\S+)~/).flatten
  1302.       array_e = array_e[0].split(/\s*,\s*/) if array_e != nil && !array_e.empty?
  1303.       array_t = line.scan(/~#{IS_USABLE::WORD_TROOP_T}[::](\S+)~/).flatten
  1304.       array_t = array_t[0].split(/\s*,\s*/) if array_t != nil && !array_t.empty?
  1305.     end
  1306.    
  1307.     #条件配列、条件タイプ、判定対象のデータを元にハッシュを作成する。
  1308.    
  1309.     hash = {:array => array, :user_type => user_type, :condition_target => condition_target}
  1310.    
  1311.     #アクター・パーティ・エネミー・敵グループ用のデータを加える。
  1312.    
  1313.     hash[:array_a] = array_a != nil ? array_a : []
  1314.     hash[:array_p] = array_p != nil ? array_p : []
  1315.     hash[:array_e] = array_e != nil ? array_e : []
  1316.     hash[:array_t] = array_t != nil ? array_t : []
  1317.    
  1318.     #配列にハッシュを加える。
  1319.    
  1320.     @use_condition_array.push(hash)
  1321.     }
  1322.    
  1323.     #配列を返す。
  1324.    
  1325.     @use_condition_array
  1326.   end
  1327. end
复制代码

点评

懒得看,你可以脚本全局搜下 \c[23] 或 \c[29]  发表于 2019-3-24 16:06
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1422
在线时间
245 小时
注册时间
2019-1-18
帖子
190
10
 楼主| 发表于 2019-3-24 17:13:41 | 只看该作者
百里_飞柳 发表于 2019-3-24 12:41
大概你加了什么技能消耗的扩展,然后里面有定义绘制前加的转义符,于是你自己加了\c的转义符来修改颜色?
...

找不到。。。搜不到指定的文本
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-4-26 13:05

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表