tiwtterの方で宣言しましたが今日はちょっと愚痴記事とさせていただきます。w
この前作ったアイテムでスクリプト発動asmのアイテムである
どこでもNC、どこでもMO、どこでもFSを入手するイベントを作ろうと思ったのですが、
あれそのまま入手させると一部思いっきりゲームバランス崩壊させそうだったので(既に軽く壊れてるのは内緒)
ちょっと思いっきり高価に設定してそれを販売するイベントを組もうと思い立ったんですよ、
で、フラグとか人ID消去使うのも面倒ですし
●アイテム所持で条件分岐
47 $$ $$ II 00 21 0D 80 01 00 06 01 SS SS SS 08 ss 02
・アイテムをIIだけ持っていればSS SS SSのオフセットへ飛ぶ
・そうでなければssを実行
47 $$ $$ II 00 21 0D 80 01 00 06 01 SS SS SS 08 ss 02
・アイテムをIIだけ持っていればSS SS SSのオフセットへ飛ぶ
・そうでなければssを実行
のスクリプトを使って3つの追加アイテムを持ってるかどうかで判定するイベントを組みまして、
さらにここの販売イベントで
●はい/いいえのセリフ
0f 00 @@ @@ @@ 08 09 05 21 0D 80 01 00 06 01 YY YY YY 08(以降いいえの場合のスクリプト)
のスクリプトでそれぞれがはい、いいえで分岐するようにしまして、
はいを選んだら
●金をいくら持ってるかで条件分岐
92 KK KK KK KK 00 21 0D 80 00 00 06 01 SS SS SS 08 ss 02
・金額に満たない場合はSS SS SSのオフセットへ飛ぶ
・そうでなければssを実行
92 KK KK KK KK 00 21 0D 80 00 00 06 01 SS SS SS 08 ss 02
・金額に満たない場合はSS SS SSのオフセットへ飛ぶ
・そうでなければssを実行
これの06 01を 06 05に変更して金額持ってれば飛ぶように変更して
さらに分岐しまして、
ここでさらに電波を受信して
「最後の商品99万で売るけど最終的に80万まで値引きするようにしよう」
という謎の発想から所持金80万以上なら2回ほど断った時に値引きするイベントが発生するように仕込みまして、
結果としてどのくらいのスクリプトになったかというと・・・
B9F1FA~NCセリフ
B9F326~買わないセリフ
B9F356~金欠セリフ
B9F363~買ったセリフ
B9F386~MOセリフ
B9F46C~FSセリフ
B9F579~FS値切り1
B9F5A8~FS値切り2
B9F5E6~売り切れセリフ
B9F60F~NC買った
B9F61A~買った共通処理
B9F62C~NC金欠判定
B9F63D~金欠共通処理
B9F64B~本体スクリプト(ミスったので没)
B9F691~買わない共通処理
B9F69F~MO買った
B9F6B0~MO金欠判定
B9F6C7~MO本体
B9F6E0~FS99万で買った
B9F6E6~FS共通処理
B9F6F1~99万金欠判定
B9F708~FS90万で買った
B9F714~90万金欠判定
B9F72B~FS80万で買った
B9F737~80万金欠判定
B9F74E~FS本体
B9F78D~売り切れ
B9F79B~FS金欠スタート
B9F7B4~本体スクリプト修正
B9F326~買わないセリフ
B9F356~金欠セリフ
B9F363~買ったセリフ
B9F386~MOセリフ
B9F46C~FSセリフ
B9F579~FS値切り1
B9F5A8~FS値切り2
B9F5E6~売り切れセリフ
B9F60F~NC買った
B9F61A~買った共通処理
B9F62C~NC金欠判定
B9F63D~金欠共通処理
B9F64B~本体スクリプト(ミスったので没)
B9F691~買わない共通処理
B9F69F~MO買った
B9F6B0~MO金欠判定
B9F6C7~MO本体
B9F6E0~FS99万で買った
B9F6E6~FS共通処理
B9F6F1~99万金欠判定
B9F708~FS90万で買った
B9F714~90万金欠判定
B9F72B~FS80万で買った
B9F737~80万金欠判定
B9F74E~FS本体
B9F78D~売り切れ
B9F79B~FS金欠スタート
B9F7B4~本体スクリプト修正
とスクリプトミスで組み直して没になったの含めて一つのイベントだけで
セリフ含めて総使用領域1466バイト。セリフが長くそこが大部分を占めてますが
イベントだけでも421バイト。うちが過去組んだスクリプトの中では一応最長です。
・・・で、どれくらい分岐したかというと

・・・ところどころ端折りましたがごらんの有様だよ!w
これで最初に話しかけた時はどこでもNCを1万円で、
どこでもNCをもっていればどこでもMOを10万円で販売し、
どこでもMOをもっていればどこでもFSを99万円で販売しますがこの時80万円をもっていれば80万円まで二回にわけて値引き。
どこでもFSを持っていると売り切れを報告する・・・
という挙動のイベントができました。・・・すっごい疲れた・・・!orz
というわけで教訓です。皆さんイベント組むときは流石にここまで分岐させちゃダメだよ!
すっごいめんどくさいよ!w
ちなみにですがこのスクリプト、他のスクリプトとセリフとイベント内容が被る部分が多かったので
被ってる部分を共通処理として2回目以降同じ処理あったら
そこに05 xx xx xx 08で飛ばすという手の込んだ手抜きにも挑戦してみました。
5バイト以下の共通処理なら放置でいいですけど
6バイト以上使う共通処理があるなら05で飛ばした方が容量少なくなるよって話ですね。
今回は所持金更新+セリフ+所持金表示終了+ロック解除+終了とか
買わなかった場合のセリフ+所持金表示終了+ロック解除+終了とか
そういうところで共通処理が多かったので05で飛ばしまくってみましたが
導入こそめんどくさいですけど一回アドレス確定させちゃえば
以降はそこに飛ばすだけでいいのでだいぶ楽でした。
・・・なおこのイベント、ものすごい苦労した割に
本編には一切関係ないおまけイベントです!w
うん、どうしてうちはいつも割とどうでもいいところに全力なのか。w