2024年01月11日
【ゲーム制作】3Dダンジョンロールプレイングゲーム 第85回
3Dダンジョンロールプレイングゲーム 第85回目です。
「BE」スクリプトの続きです。
イベント戦闘時は、逃走できなくします。
単純に「戦闘メニュー」から「にげる」を失くします。
要するに勝つか負けるかとなります。
ただ、負けてもゲームオーバーにならずイベント継続となるので、所謂「負けイベント」を組むことが出来ます。
また、「戦闘メニュー」に「ステータス」がなく、戦闘中、自分の残体力が分からないので、「戦闘メニュー」に、最低限のステータス表示を実装します。
あ、イベント戦闘で負けてもイベントが継続すると言う事は、イベント中にゲームオーバーに出来ないと言う事だ…。
今作はラスボスに負けたら普通に死亡なので、それはまずい。
と、言う訳で、次回、新スクリプト命令「PD」(PlayerDeth)と、「EG」(EndinG)を組んでいきます。
2024年01月10日
【ゲーム制作】3Dダンジョンロールプレイングゲーム 第84回
3Dダンジョンロールプレイングゲーム 第84回目です。
いよいよ、「ラスボス」用の「BE」スクリプトを組んでいきます。
命令
意味
記述
動作
BE
BattleEnemy
BE,e1,m1,m2
敵?F1とイベント戦闘を開始する。戦闘に勝てばメッセージm1へ、敗れればm2へ。
…と、ここで気付きました。
敵と遭遇時、一旦BASICへ戻ると言う事は、PUSHでスタックした内容を一旦吐き出さないといけない。
尚且つ、BASICから復帰した際、吐き出した内容を再度スタックへ取り込み、イベントの続きから再スタートしないといけない!
おぉ、なかなか難題だ。
正直、BASICに戻らなければ単純なので、もっと簡単に考えていました。
あちこち色々、ロジックの変更。
イベント戦闘フラグ(&HE026)をフラグにして、処理の流れをコントロール。
イベント戦闘開始時に、スタック内容を吐き出し変数に保存してBASICへ。(2個)
戦闘終了後、変数を再度スタックに取り込み(PUSH)、イベント処理へ。
書くは簡単、組むは難し…。
共通ロジックの残り容量少ないので、予想以上に大変です。
共通ロジックに組み込みたいところを、一部、あえてBASIC部に組んでいます。
何とか、完成しました!
戦闘終了後、イベントの続きから実行されるようになりました。
次回は、BASIC間とのやり取りは完成したので、「BE」のそれ以外を組んでいきます。
2024年01月09日
【ゲーム制作】3Dダンジョンロールプレイングゲーム 第83回
3Dダンジョンロールプレイングゲーム 第83回目です。
前回、敵の特殊攻撃で状態異常「毒」を受けるようになったので、状態異常効果を組んでいきます。
「どく」状態では、1歩歩く度に1のダメージを受けます。
毒を受けている事に気付かないといけないので、歩く度にメッセージエリアを赤くフラッシュさせ、ダメージを受けている事を知らせます。
当然体力が「0」になれば、死亡となります。
うーん、1歩1ダメージだと多いかな?
後日バランス調整しますね。
因みに、毒を受けていても戦闘時は特に影響ありません。
戦闘終了で毒がクリアされることはありません。
また、「宿屋」でもクリアされません。
アイテム「どくけしそう」か、魔法「どくけし」のみで、解毒可能です。
今作では関係ありませんが、他の状態異常を紹介。
「睡眠」は戦闘中のみ影響ありで、眠っている間行動できません。
放っておいても数ターン後に目覚めます。
戦闘終了と同時に目覚めます。
あと、パーティ制の場合になりますが、「石化」は探索・戦闘両方に影響します。
パーティメンバーに解除してもらうまで何もできません。
他にも、「麻痺」や「恐慌」、「混乱」、「呪い」、「魔封」など沢山あります。
フラッシュの色で被状態異常を判断します。
これで「状態異常効果」処理完了です。
さて、戦闘が完成したので、次回はスクリプトの残り「BE」イベント戦闘を組んでいきます。
2024年01月08日
【ゲーム制作】3Dダンジョンロールプレイングゲーム 第82.5回
3Dダンジョンロールプレイングゲーム 第82.5回目です。
.5なので、バグです。
今作での毒の効果は、ダンジョン探索時、歩く毎に「メッセージエリアが赤く点滅し」体力が減っていき、最後、「死亡」となります。
…と言う事は、
・画面の点滅効果(敵から攻撃を受けた時の白点滅と同じロジック)
・体力「0」時のプレイヤー死亡
この2処理は、戦闘中に必要であったため、戦闘ロジックに組んであります。
しかし、上記により探索中にも必要になったため、共通ロジックに組んで、探索、戦闘どちらからでも飛べるようにしないといけません。
と言う事で、ロジックの大幅な組み換えを行いました。
各ロジック、あちこちに点在しているので、戦闘ロジックに穴ぼこが空いてしまいました。
近いバイト数のサブルーチンを移動させ、空いた場所を詰めます。
うーん、今回のロジック移動で、共通ロジックの残り少ない容量を更に圧迫します。
無駄の無いよう、詰めて詰めて組んでいきます。
なかなか大変な作業となりました。
予想以上に時間がかかりましたが、何とか無駄なく詰められました…。
2024年01月07日
【ゲーム制作】3Dダンジョンロールプレイングゲーム 第82回
2024年01月06日
【ゲーム制作】3Dダンジョンロールプレイングゲーム 第81回
2024年01月05日
【ゲーム制作】3Dダンジョンロールプレイングゲーム 第80.5回
3Dダンジョンロールプレイングゲーム 第80.5回目です。
.5なのでバグです。
…と、いうか完全に失念していました。
敵の「魔法」処理を組もうとした時、「敵データの中に魔法データがない!」と、初めて気付きました。
本気で敵データに魔法情報を組み込むのをすっかり忘れていました。
偶然ですが、私が今作で選んだ「ドラクエ1」の敵、魔法をほとんど使わない敵でした。
魔力が小さい…。
とりあえず、敵データに使用魔法と、特殊攻撃の2バイト追加しました。
1バイト目が習得魔法、2バイト目が特殊能力(毒)です。
特殊能力は、攻撃受けた後に1/16の確率で状態異常を受けます。
今作では毒になります。
データ追加を受け、敵データ検索サブルーチン等、影響を受けるロジックを修正。
次回は、いよいよ敵ターンの最後、「魔法」処理を組んでいきます。
2024年01月04日
【ゲーム制作】3Dダンジョンロールプレイングゲーム 第80回
2024年01月03日
【ゲーム制作】3Dダンジョンロールプレイングゲーム 第79回
3Dダンジョンロールプレイングゲーム 第79回目です。
敵の「攻撃」処理を組んでいきます。
以前組んだ、「被ダメージ値算出」サブルーチンをコール。
条件
計算式
敵攻撃力-防御力/2≧敵攻撃力/2+1
(乱数*(敵攻撃力-防御力/2+1)/255+敵攻撃力-防御力/2)/4
敵攻撃力-防御力/2<0
または
敵攻撃力-防御力/2<敵攻撃力/2+1乱数*(敵攻撃力/2+1)/255+2
サブルーチンコールで、Aレジスタにダメージ値が返るので、それをダメージ値とします。
プレイヤーが「ぼうぎょ」している時(&HE024=「1」)は、ダメージ半減。(&HB41C)
ダメージを受けた時は、メッセージウィンドウが白く点滅します。
次回は体力=「0」、「死亡」処理を組んでいきます。