2017年 10月25日
思った以上に複雑だった。
属性が単だったら簡単だけど、複数の属性を持った同士が想定されるので難解だ。
属性相関図
本ゲームでは、
火は、炎と熱、火傷。
地は、大地と植物、地震、重力、スタン(気絶)。
風は、突風やカマイタチ、雷、マヒ。
水は、水、冷気、フリーズ(氷化による鈍化)。
光は、聖なる、4属性に弱い、ターンアンデッド。
闇は、邪悪、4属性に強い、毒。
と言う取り決めに今の所なってるが、魔法などでどれだけ生かされるかは、まだ分からない。
という訳でソース。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 |
; 属性補整 -------------------------------- 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回目
今回は火の族長が勝ったようです。
大体、属性補整の基礎はそんな感じ。
後はバグつぶしと、ダメージの算出がピーキーなので、後で修正する予定。
補整値もバランス調整で、変更されていくと思う。