ステータス魔法を追加する


2017年 11月17日
 
 
 前回より 2週間の時間が経ちました。
 
 
 いやあ、今回も大変だった(こればっか)

 何が大変だったかと言うと、ステータスを変化した値をどこに格納して参照するか。

 ud、ユニットデータに格納すれば事は簡単なのだが、これだとステータスの変数が例えば 30種類だったとして、200ユニット作るとデータが 6000増える、6kバイト?いや、一つの変数はたぶん 4バイト、つまり 2バイトで最大値 65536だから、いくつかはめんどくさいので計算しないが、4バイトだとそれ以上の最大値で、それを確保してるはずだから・・・、まあいいや、とにかく 6000*4で 24Kバイト、1000ユニット作ったら、ええと・・・。

 まあとにかくユニットデータに余分なデータを格納すると、死にデータ領域が増えるし、オーバーフローで動かなくなる可能性が。

 と言っても最近のスマホなら気にしなくても大丈夫なんだろうか?

 

 と言う訳で戦闘中のステータス変動データはその場限りの 6人分で確保。

 bsb=21 ; データ数
 dim bs,6*bsb ; 6人分の 1次配列変数

 例によって 2次配列は使わない、そのためデータ参照もややこしくててこずった。
 先頭の 0、21,42・・・の場所に un(ユニットNo.)を格納して、調べて選択するようにした。

 言うのは簡単だが、その方法を思考錯誤して確定するまでが大変だ。
 
 
 それでは恐怖のソースを

 
 
 ぎぃやぁぁあああってくらい増えてる感じはするが、まだ途中だ。

 ちなみに左端にピッタリよせてあるコードは、デバッグモニター用の余計なコードだ。
 pkeyというのはスペースキーを押すまで停止する自作命令で、確認しやすいようにしている。

 最初の部分で bs(ステータス変数)を定義している。

 初期化は戦闘の始め *fightの始めの方でオール 0リセットとunNO.の格納をしている。

 最後に「魔法効果半減処理」というのがあって、1ターン終わると 2分の1になるようにした。

 つまり今の所、効果は累積する。
 
 
 
 それではテストを
 
 
 火の魔女はバーサーク(味方 1体の攻撃力を強化)を


 
 
 火の民はバトルソング(味方全員の攻撃力を強化)を


 
 
 戦闘開始、上の白い数字がステータス変数。


 
 
 ユニット1、火の魔女がバーサークを使った所。
 上の白い部分、ユニット7、つまりファイヤードラゴンの攻撃力補整が 10になってる。
 バーサークのかける相手はランダム。


 
 
 つづいて火の民のバトルソング。
 こちらは味方全員にかかる。
 効果が累積しているのが分かると思う。


 
 
 1ターンの終わりに半減する。


 
 
 ファイヤードラゴンの攻撃。
 左の緑のデバッグ表示を見て欲しい。

 dmgn(元の攻撃力)に攻撃効果(ステータス補整)が足されたものが、atkg(最終攻撃力)になってる。

 さらに zk1は種族補整で +20%している。
 今回は防御されている。


 
 
 再び火の魔女のバーサーク。
 今度は自分にかけている。


 
 
 再びバトルソング。


 
 
 そして半減。


 
 
 そんな感じだ。
 
 
 
 今回はエンチャントウエポンも作ったが、記事が長くなるので割愛する。
 こちらは zk2の処理の時足される。
 前回から zk2_syoの内容が少し足されていると思う。
 
 
 という訳で、今の所火の魔法は終わった。
 ソースの中に火の魔法の分岐場所があると思うので、一応それで一揃い。

 今回は割愛したが、アイテムエディッターで全魔法アイテムを一揃い作ったし、その関連でアイテムデータ(id)に 2データ要素付け足しもしている。
 
 
 と言う訳で、流石にこれで戦闘の基礎部分はできたと思うし、作業は加速されると思いますが、どうでしょうね。
 
 

コメントを残す

メールアドレスが公開されることはありません。