| 現在、より実用的なFE風の武器劣化インクルードを作成しているのですが、壁に当たったので皆さんの意見を聞きたく思い、質問させていただきます。
基本的な構造としては、現在、まず武器効果を持った「鉄の剣」とかのアイテムに「使用回数Lv」という特殊能力を持たせてから、以下のように判定するところまでこぎつけました。
Incr 武器使用回数[ItemID] If 武器使用回数[ItemID] >= Info(アイテム,対象ユニット使用武器,特殊能力レベル,使用回数) Then RemoveItem 対象ユニット 対象ユニット使用武器 Talk $(対象ユニット使用武器)は砕け散りました。 End EndIf
そして実際にテストした際には、最低限テストしたステージにおいて、使用回数Lvを超えて武器が使用された際、その武器が消失するところまで成功しました。
……で、ここから壁にぶち当たったのですが、それはまず第一に、暫定的なローカル変数「ItemID」と上に置いてますよね?
始めはヘルプにもあったシステム変数「対象ユニット使用武器番号」だったんですが、これの場合だと、例えば「鉄の剣」だったら全部のアイテム・鉄の剣が同じグローバル変数を参照してしまう状態になったのです。 つまり、武器使用回数[対象ユニット使用武器番号]としておいて攻撃後イベントを使ったのですが、キャラAで鉄の剣で攻撃した際、
武器使用回数[1] = 1
となり、アイテムとして全く別の鉄の剣を持ったキャラBが同じように鉄の剣を使用した際に、
武器使用回数[1] = 2
となってしまって、区別できていない、ということです。
そしてそれだけでなく、どうもこのシステム変数「対象ユニット使用武器番号」はそのステージにおけるローカル変数みたいなようでして、例えば「鋼の剣」⇒「鉄の剣」の順で使用しますと、
武器使用回数[1] が鋼の剣 武器使用回数[2] が鉄の剣
に対応してしまい、順番によって全く流動的になっています。
したがって、ステージをまたいでの「武器劣化度」を表現するためには、同じ名称のアイテムでも区別する方法が必要である、という結論に至りました。
一応、セーブデータに保存されているアイテムは、同じ名称でも番号で区別されているのですが、ヘルプを読みましてもこれを参照するシステム変数の類は見つかりませんでした。
ですので、皆様にお聞きしたいのは、このセーブデータに保存されているいわゆる「アイテムID」とでも言えるものの呼び出し方があればその方法。そしてもし無ければ、そのほかのやり方では、ステージをまたいだ武器劣化はどう表現できるか、の二点です。
よろしくお願いします。長文、失礼しました。
|