Hextrategy 調整とバグ取りが進行中


2018年 11月21日
 
 
 調整とバグ取りが進んだので動画 2回目です。

 18分05秒 : 36MB
 
 

 今回修正したのは次の通り

出現率を修正
魔法が出るように修正
ユニット戦力値を残HP率で変化
ユニットセレクト画面を修正
アイテムセレクト画面を修正
ターン始めのHP回復率を全HPの1/3に
防御側のキャラを反転表示
空白に攻め込むと部隊が消滅するバグを修正
領主の自動配置時の登録漏れバグを修正
攻め込んだ後、戦力値を算出
ターン終了時に自領の戦力値を算出
装備をはずすと再装備できないバグを修正
アイテム装備時の別キャラ所持時の装備解除バグを修正
装備を取られたユニットの能力値を再計算
キュア(状態異常回復)系の効果発動ユニットを先頭順に、エフェクトを効果発動時のみに変更
作って無かった、弓、銃、アイテム類の能力値を設定
ヒール系魔法のエフェクトを効果発動時のみに変更
初期魔法の必要INTを下方修正
戦略アルゴリズム改定(以下記事)
アイテム回復を実装
アイテム状態異常回復を実装
攻撃アイテム実装
配備した時に配備元のユニットが配備解除されないバグを修正
新規ユニットの戦力値評価しないバグを修正
 
 
 
戦略アルゴリズム改定

 まず次のように考えて

1 その国の周りに、ヒーロー国が2国以上の場合
 脅威値(隣接国の最大MP(戦力値))以上の残戦力(見配備の戦力)があれば弱国から攻め込む

2 その国の周りに、ヒーロー国が1国の場合
 a 脅威値以上の残戦力があれば弱国から攻め込む
 b ヒーロー国以上の戦力があればヒーロー国に攻め込む

3 その国の周りに、ヒーロー国が無い場合
 弱国が戦力値以下なら攻め込む
 
 
 まとめると次のようになりました

 自国の強順に攻め込む

1 ヒーロー国無い場合、戦力値以下の国へ攻め込む
2 ヒーロー国が1国で、その国以上の戦力があれば攻め込む
3 脅威値以上の残戦力があれば弱国から攻め込む
 
 
 改定前は全隣接国の弱順に攻められないかの順でしたが、今回は自領の強順になりスッキリしました。
 
 

	dim hdn,26		; マップ脅威値
	dim hdm,26		; 自領の強順列、行動順に使う
	hds=0			; 隣接する最弱国

; 自領の強順列

	 repeat 25 : hdm(cnt)=0 : loop ; 強順列のリセット

	 hdmc=0 ; 自領数
	 repeat 25,1 : m=cnt ; 国No.
	  if mpl(m)!pn : continue ; 勢力国では無い
	   hdmc+

	  pn1=m
	  repeat 25 ; 自領の強順列のソート
	   if hdm(cnt)=0 : hdm(cnt)=pn1 : break  ; 空白なら入れて終わり
	   if mp(hdm(cnt))>=mp(pn1) : continue	; 値比較
	   pn2=hdm(cnt) : hdm(cnt)=pn1 : pn1=pn2 ; 入れ替え
	  loop
	 loop


; 攻め込む

	 repeat hdmc : m=hdm(cnt) ; 自領の強固順
	  if mainf!5 : break ; ゲームオーバー

	  f=0		; 隣国に敵国があるか
	  hdmf=0	; 隣国のヒーロー国数
	  hds=0		; 隣国の最弱国
	  hdn(m)=0	; 最脅威値

	  repeat 6,1
	   n=hmv(m,cnt) ; 隣接する国があるか
	    if n=0 or map(n)=0 or mpl(n)=pn : continue	; 敵領で無い
	   f=1 ; 敵国がある

	   if mpl(n)>0 { ; 隣国がヒーロー国
			hdmf+ : hdh=n
			if hdn(m)<mp(n) : hdn(m)=mp(n)	; 一番大きな脅威値
	   }

	   if hds=0 or mp(n)<mp(hds) : hds=n	; 隣接する最弱国
	  loop
	  if f=0 : continue ; 敵国が無い

	  if hdmf=0 : if mp(m)>mp(hds)*4/2	 : war m,hds : continue	; 隣接するヒーロー国が0国
	  if hdmf=1 : if mp(m)>mp(hdh)*4/2	 : war m,hdh : continue	; 隣接するヒーロー国が1国
	  if mp3>hdn(m) and mp(m)>mp(hds)*4/2: war m,hds : continue	; 隣接するヒーロー国が2国以上

	 loop

 
 
 m = 国のマップNo.です
 hdm = 自領の強い順
 mp3 = 残戦力値(未配備のユニット)です
 hmv = 隣接する HEXのマップ No.を返します
 war = 戦闘処理に入ります

 if mp(m)>mp(hds)*4/2 = この時点では一応敵戦力値の 2倍の戦力が無いと攻め込まない仕様になってますが、たぶんマナポイント制(戦力値分消費して攻め込む)を導入すれば同等以上で良いかもしれません、以後の調整次第。
 
 
 まだこれ以外にも必要なアルゴリズム状況があるので追加していきます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です