属性補整ができた


2017年 10月25日
 
 
 思った以上に複雑だった。

 属性が単だったら簡単だけど、複数の属性を持った同士が想定されるので難解だ。
 
 
 属性相関図

 本ゲームでは、

 火は、炎と熱、火傷。
 地は、大地と植物、地震、重力、スタン(気絶)。
 風は、突風やカマイタチ、雷、マヒ。
 水は、水、冷気、フリーズ(氷化による鈍化)。
 光は、聖なる、4属性に弱い、ターンアンデッド。
 闇は、邪悪、4属性に強い、毒。

 と言う取り決めに今の所なってるが、魔法などでどれだけ生かされるかは、まだ分からない。

 

 という訳でソース。

; 属性補整 --------------------------------

	zk1=0 ; 種族補整 -------
	if ud(ug+7)=1 { ; 火
		if ud(eg+7)=4 or ud(eg+7)=5 : zk1=20	; +20%
		if ud(eg+7)=2 or ud(eg+7)=6 : zk1=-20	; -20%
	}
	if ud(ug+7)=2 { ; 水
		if ud(eg+7)=1 or ud(eg+7)=5 : zk1=20	; +20%
		if ud(eg+7)=3 or ud(eg+7)=6 : zk1=-20	; -20%
	}
	if ud(ug+7)=3 { ; 風
		if ud(eg+7)=2 or ud(eg+7)=5 : zk1=20	; +20%
		if ud(eg+7)=4 or ud(eg+7)=6 : zk1=-20	; -20%
	}
	if ud(ug+7)=4 { ; 地
		if ud(eg+7)=3 or ud(eg+7)=5 : zk1=20	; +20%
		if ud(eg+7)=1 or ud(eg+7)=6 : zk1=-20	; -20%
	}
	if ud(ug+7)=5 { ; 光
		if 1<=ud(eg+7) and ud(eg+7)<4 : zk1=-20 ; 4属
		if ud(eg+7)=6 : zk1=20 ; 闇
	}
	if ud(ug+7)=6 { ; 闇
		if 1<=ud(eg+7) and ud(eg+7)<4 : zk1=20 ; 4属
		if ud(eg+7)=5 : zk1=-20 ; 光
	}


	zk2=0 : k1=120 : k2=80 ; アイテム補整 -------

	if ud(ug+31)>0 { ; 火
	 n=ud(ug+31)-ud(eg+32)+ud(eg+34)-ud(eg+36)+ud(eg+35) ; 火値-水+地-闇+光
	  if n>ud(ug+31) : n=ud(ug+31)	; 最大値
	  if n<0 and n<ud(ug+31) : n=-ud(ug+31)	; 最小値

	 if ud(eg+7)=4 or ud(eg+7)=5 { ; 地、光。+%
		if n>0 : n=n*k1/100 : else : n=n*k2/100
	 }
	 if ud(eg+7)=2 or ud(eg+7)=6 { ; 水、闇。-%
		if n>0 : n=n*k2/100 : else : n=n*k1/100
	 }
	 zk2+=n
	}

	if ud(ug+32)>0 { ; 水
	 n=ud(ug+32)-ud(eg+33)+ud(eg+31)-ud(eg+36)+ud(eg+35) ; 水値-風+火-闇+光
	  if n>ud(ug+32) : n=ud(ug+32)	; 最大値
	  if n<0 and n<ud(ug+32) : n=-ud(ug+32)	; 最小値

	 if ud(eg+7)=1 or ud(eg+7)=5 { ; 火、光。+%
		if n>0 : n=n*k1/100 : else : n=n*k2/100
	 }
	 if ud(eg+7)=3 or ud(eg+7)=6 { ; 風、闇。-%
		if n>0 : n=n*k2/100 : else : n=n*k1/100
	 }
	 zk2+=n
	}

	if ud(ug+33)>0 { ; 風
	 n=ud(ug+33)-ud(eg+34)+ud(eg+32)-ud(eg+36)+ud(eg+35) ; 風値-地+水-闇+光
	  if n>ud(ug+33) : n=ud(ug+33)	; 最大値
	  if n<0 and n<ud(ug+33) : n=-ud(ug+33)	; 最小値

	 if ud(eg+7)=2 or ud(eg+7)=5 { ; 水、光。+%
		if n>0 : n=n*k1/100 : else : n=n*k2/100
	 }
	 if ud(eg+7)=4 or ud(eg+7)=6 { ; 地、闇。-%
		if n>0 : n=n*k2/100 : else : n=n*k1/100
	 }
	 zk2+=n
	}

	if ud(ug+34)>0 { ; 地
	 n=ud(ug+34)-ud(eg+31)+ud(eg+33)-ud(eg+36)+ud(eg+35) ; 地値-火+風-闇+光
	  if n>ud(ug+34) : n=ud(ug+34)	; 最大値
	  if n<0 and n<ud(ug+34) : n=-ud(ug+34)	; 最小値

		if ud(eg+7)=3 or ud(eg+7)=5 { ; 風、光。+%
			if n>0 : n=n*k1/100 : else : n=n*k2/100
		}
		if ud(eg+7)=1 or ud(eg+7)=6 { ; 火、闇。-%
			if n>0 : n=n*k2/100 : else : n=n*k1/100
		}
		zk2+=n
	}

	if ud(ug+35)>0 { ; 光
	 n=0
	 repeat 4
	  if ud(eg+31+cnt)>0 : n+=ud(eg+31+cnt)
	 loop
	 nn=ud(ug+35)-n+ud(eg+36)
	  if nn>ud(ug+35) : nn=ud(ug+35)	; 最大値
	  if nn<0 and nn<ud(ug+35) : nn=-ud(ug+35)	; 最小値

	 if 1<=ud(eg+7) and ud(eg+7)<=4 { ; 4属、+%
		if nn>0 : nn=nn*k2/100 : else : nn=nn*k1/100
	 }
	 if ud(eg+7)=6 { ; 闇、-%
		if nn>0 : nn=nn*k1/100 : else : nn=nn*k2/100
	 }
	 zk2+=nn
	}

	if ud(ug+36)>0 { ; 闇
	 n=0
	 repeat 4
	  if ud(eg+31+cnt)>0 : n+=ud(eg+31+cnt)
	 loop
	 nn=ud(ug+36)+n-ud(eg+35)
	  if nn>ud(ug+36) : nn=ud(ug+36)	; 最大値
	  if nn<0 and nn<ud(ug+36) : nn=-ud(ug+36)	; 最小値

	 if 1<=ud(eg+7) and ud(eg+7)<=4 { ; 4属、+%
		if nn>0 : nn=nn*k1/100 : else : nn=nn*k2/100
	 }
	 if ud(eg+7)=5 { ; 光、-%
		if nn>0 : nn=nn*k2/100 : else : nn=nn*k1/100
	 }
	 zk2+=nn
	}


; ダメージ計算 ---------------------------------

	atkg=atkn*(gensui+zk1)/100 ; 攻撃力

	atn=0 : repeat 2 : atn+=rnd(atkg+1) : loop	; 攻撃値
	dfn=0 : repeat 2 : dfn+=rnd(ud(eg+12)+1) : loop	; 防御値

	dm=atn-dfn : if dm<0 : dm=0 ; 基礎ダメージ

	dm=dm+(zk2*gensui/100) ; ダメージ+属性ダメージ

	if dm=0 : n=dm  : cn=0
	if dm>0 : n=dm  : cn=1
	if dm<0 : n=-dm : cn=4
	if fs=1 : dmp_set n,3+et,cn ; ダメージ表示
	if fs=2 : dmp_set n,et,cn

	repeat 1 ; HP処理
	 ud(eg+26)-=dm : if ud(eg+26)>0 : break
	 ud(eg+26)=0
	loop

	return

 
 
 zk1=属性補整 1は種族に対する種族の属性補整なので、単なので簡単だ。

 これはダメージの減衰率に足す事によって、ダメージの%を操作する。
 
 
 zk2=アイテムの属性補整で、装備によって色々な属性を持つので、その全てを計算する。

 最大値はその属性の値。

 弱点属性で -の値になった場合は回復になる。

 その属性の最終値は、相手の種族属性の %補整を受ける。

 zk2はダメージ計算に +する形なので、ダメージが 0でもアイテム属性のダメージは入る仕様にした。
 
 
 
 テスト

 選手 1、ダークエルフ
 種族は闇、アイテムの属性補整は、火 10。


 
 
 選手 2、ジェネラル
 種族は風、アイテムの属性補整は、火 15、水22。


 
 
 ジェネラルの攻撃。

 闇に対する風の種族で種族補整 zk1=-20%。

 火属性の 15は、火の闇種族に対する弱点補整から -20%減の 12。

 水属性は 29と出てるけど zk2は足し算なので、29-12=17の値。
 水属性の 22は、水の闇種族に対する弱点補整から -20%減の 17となる。

 合計値、zk2=29がアイテムの属性補整値。

 ダメージが 26だったので、26に29を足して 55が最終ダメージとなる。
 
 
 テスト2

 選手 1、ウォーロック
 種族は地、アイテムの属性補整は、水 10。


 
 
 選手 2、火の族長
 種族は火、アイテムの属性補整は、風 15。


 
 
 ファイト!

 火に対する地の種族で種族補整 zk1=-20%。

 アイテム属性補整は、水 10の風 15に対して、弱点補整なので最大値の-10となるが、水は火の種族に強いので、この場合-20%の修正(不利が軽減される)で-8となる。

 つまり -の場合はダメージでは無く、相手への回復になる。

 ダメージが 30、回復が -8で、22ダメ-ジ。
 
 
 2回目

 地に対する火の種族で種族補整 zk1=+20%。

 アイテム属性補整は、風 15の水 10に対して、有利補整なので最大値の 15、風属性は地属性に弱いので-20%の種族補整で 12となる。
 
 
 3回目

 ダメージは 0だが、アイテム属性補整が付いて 12ダメージ。
 
 
 4回目

 ダメージが 0なので、そのまま回復になっている。
 
 
 4回目

 今回は火の族長が勝ったようです。
 
 
 
 大体、属性補整の基礎はそんな感じ。

 後はバグつぶしと、ダメージの算出がピーキーなので、後で修正する予定。
 補整値もバランス調整で、変更されていくと思う。
 
 

コメントを残す

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