アイテム鑑定システム

p-sight: Annex - Appraise Item System

Tag: システム関連

説明

「未鑑定アイテム」を作成し、 特定のアイテムを使うことでそのアイテムを鑑定できるようにするシステムです。
※導入の際に任意の属性を計算から除外するを導入しておかないと属性計算に不具合が生じます。

設定可能な項目

APPRAISE_ELEMENT

アイテムを鑑定する効果を持つ道具につける属性。
また、この属性のついた道具は鑑定することはできません。 この属性のアイテムはどういう設定にしても戦闘中は使用不可能となります。

APPRAISE_ELEMENT = "効果:鑑定"

UNJUDGE_ITEM

鑑定が必要なアイテムにつける属性です。

UNJUDGE_ITEM = "要:鑑定"

CAN_USE_UNJUDGE

鑑定前のアイテムも使用可能にできるかどうかの設定です。
アイテムの効果は全て鑑定後のアイテムを参照しており、 鑑定前も鑑定後もまったく使用効果は同じです。

CAN_USE_UNJUDGE = true

FORCE_USE_ITEM

未鑑定品の使用を強制するかどうかの設定です。
これをtrueにすると、例えば未鑑定品がHP回復アイテムで、対象のHPが最大だとしても、 アイテムの使用が可能になります。
つまり、未鑑定品が消耗品であれば、たとえ効果が発揮されなくても消耗されます。

FORCE_USE_ITEM = true

CAN_EQUIP_UNJUDGE

未鑑定品も装備可能か否かの設定です。
通常の装備品と同様に、未鑑定品の装備後のパラメータ等の先読みは行われますし、 装備可能なキャラクターの装備候補にしか未鑑定品は表示されません。

CAN_EQUIP_UNJUDGE = true

CAN_SELL_UNJUDGE

未鑑定品も店に売ることができるかどうかの設定です。
未鑑定品の値段は、そのアイテムに設定した「価格」を参照します。
つまり、鑑定後のアイテムと鑑定前のアイテムの価格は別に設定可能です。

CAN_SELL_UNJUDGE = true

REPEAT_UNJUDGE

未鑑定品の重複表示設定です。
これをfalseにすると、同じアイテムを多数持っている場合も、 それぞれ1つずつ持っているとして表示されます。
例えば、鑑定すると「ポーション」になる「液状の薬物」というアイテムを7つ、
鑑定すると「フルポーション」になる「液状の薬物」というアイテムを5つ持っている場合、
この設定がtrueならば「液状の薬物 : 7」と「液状の薬物 : 5」の二つがアイテム欄に表示されます。
falseの場合は「液状の薬物 : 1」が12個表示される、という形になります。

REPEAT_UNJUDGE = false

JUDGE_SUCCESS_SE / JUDGE_FAILURE_SE

鑑定した時のSE。
JUDGE_SUCCESS_SE は アイテムの鑑定が成功した場合に、 JUDGE_FAILURE_SE は アイテムの鑑定が失敗した場合に流されます。
「["SE名", ボリューム, ピッチ]」の順の配列形式で書いてください。
nilとすると効果音が鳴らなくなります。

JUDGE_SUCCESS_SE = ["056-Right02", 70, 100] # 鑑定成功
JUDGE_FAILURE_SE = ["039-Switch08", 70, 100] # 鑑定失敗

使い方

※上記の設定を行った後、武器の属性を設定しますが、便宜上すべての設定可能な項目は初期値通りであると仮定します。

「システム」から属性「効果:鑑定」を追加してください。
この属性のついたアイテムは戦闘中は使用不可能なので、使用を「戦闘中のみ」に設定すると使えなくなります。

未鑑定アイテムの属性に「要:鑑定」をつけてください。
この時、鑑定前のアイテム種別と鑑定後のアイテム種別は必ず同じにしてください。
鑑定した結果、ポーションなどの道具を作る場合は、 道具に「要:鑑定」の属性を持たせ、設定するようにしてください。

鑑定前のアイテムは以下の三点のみ、鑑定前のアイテムから参照し、 それ以外は全て鑑定後のアイテムの値をコピーします。
つまり、「防具」欄で新たに作ったアイテムでさえあれば、 鑑定前後に置いて装備部位に矛盾が生じていても、鑑定後のアイテムを参考するため、 鑑定後に設定されている装備部位にのみ装備可能となります。

  • 名前
  • 説明
  • 価格

鑑定後のアイテムは下記の法則で設定することが出来ます。
つまり数値が設定可能で、価格のすぐ次に設定できるもの、と覚えて結構でしょう。
その数字に設定したものの数字をIDとした同じ種別のアイテムが鑑定後のものとなります。
(HP回復率の場合は100までしか設定不可能なのでHP回復量になりますが)

アイテム種別 参照する部分
道具 HP回復量
武器 攻撃力
防具 物理防御

例えば「要:鑑定」の属性がついた「ポーション」のHP回復量が「4」に設定されている場合、
同じく道具のIDが4のもの、つまりデフォルトでは「パフューム」として処理されます。

また、鑑定後のアイテムが既に99個の場合は、アイテム鑑定に失敗します。

スクリーンショット

アイテム鑑定 / 成功時

アイテムの鑑定に成功すると上の図のようにウィンドウで鑑定結果が表示されます。

アイテム鑑定 / 失敗時

アイテムの鑑定に失敗した場合は上の図のように「鑑定に失敗しました。」と表示されます。

他のスクリプトとの競合について

再定義しているメソッド

正常に動作しない場合は、以下のメソッドが他のRGSS素材で再定義されていないかなどを確認してください。

class Window_Item < Window_Selectable
 def refresh

class Window_ShopSell < Window_Selectable
 def refresh

class Window_EquipItem < Window_Selectable
 def refresh

class Window_ShopStatus < Window_Base
 def refresh

また、下記のクラスはスクリプトエディタからは直接確認できません。
RPGツクールXPのヘルプを参照してください。

class Weapon
 def animation1_id
 def animation2_id
 def atk
 def pdef
 def mdef
 def str_plus
 def dex_plus
 def agi_plus
 def int_plus
 def element_set
 def plus_state_set
 def minus_state_set

class Armor
 def kind
 def auto_state_id
 def pdef
 def mdef
 def str_plus
 def dex_plus
 def agi_plus
 def int_plus
 def eva
 def guard_element_set
 def guard_state_set

aliasを使って再定義しているメソッド

正常に動作しない場合は、以下のメソッドが他のRGSS素材で再定義されていないかなどを確認してください。

class Game_Party
def item_can_use?(item_id)

class Game_Battler
def item_effect(item)

class Game_Actor < Game_Battler
def equippable?(item)

class Window_Item < Window_Selectable
 def draw_item(index)

class Window_ShopSell < Window_Selectable
 def draw_item(index)

class Window_EquipItem < Window_Selectable
 def draw_item(index)

class Window_ShopNumber < Window_Base
 def set(item, max, price)

class Scene_Item
 def update
 def update_item
 def update_target

class Scene_Shop
 def update_sell

ソースと導入方法

導入方法

スクリプトの「Scene_Shop」より下、「Main」よりも上に以下のソースを丸々挿入してください。

ソースと更新履歴

Appraise Item System: ソース

更新履歴

2009 12/06 一番最後の鑑定後に画面が更新されないバグを修正。
変更点は以下の通り。

  # 鑑定結果のアイテムを表示する
  @result_window.set_item(new_item)

の下に新たに下記二行追加。

  # アイテム描画画面更新
  @item_window.refresh


2006 11/28 公開。


This page is written in Japanese(Shift_JIS)
(c) T-Akf, in p-sight