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回目

今回は火の族長が勝ったようです。
大体、属性補整の基礎はそんな感じ。
後はバグつぶしと、ダメージの算出がピーキーなので、後で修正する予定。
補整値もバランス調整で、変更されていくと思う。